TLS Hanshake(1.0, 1.2) overview
TLS 를 사용할 경우 매 세션 성립 시 마다 인증서를 주고받고, 확인하면 세션 성립까지 시간이 오래 걸리기 때문에, 최초 세션 성립을 위해서만 full handshake를 수행하고 다음부터는 일부 과정을 생략한 세션 성립(abbreviated handshake) 를 수행한다. 아래는 TLS 프로토콜 및 세션 성립을 위한 절차(full handshake, abbreviated handshake)를 보고자 한다. 아래는 RFC5246 문서의 내용 중 일부인 TLS handshake 과정을 번역한 내용이다. TLS 는 handshake protocol에 의해 성사되며, 요약을하면 아래와 같다. 클라이언트가 ClientHello 메시지를 보내면 서버는 ServerHello 메시지로 반드시 응답을 줘야하며, 그렇지 않을 경우 치명적인 에러가 발생하고 세션 연결이 실패할 것이다. ClientHello 와 ServerHello는 클라이언트와 서버 간 향상된 보안기능(security enhancement capabilities)을 설정하기 위해서 사용된다. ClientHello 와 ServerHello는 프로토콜 버전, 세션 ID, Cipher Suite, 압축 방법의 속성들을 설정한다. 추가적으로, ClientHello.random, ServerHello.random 의 두 랜덤 값을 생성하고 교환한다. 키 교환을 위해서는 다음의 4가지 메시지를 사용한다. (서버)Certificate, ServerKeyExchange, (클라이언트)Certificate, ClientKeyExchange. 새로운 키 교환 방법은 위 4가지 메시지의 형식을 지정하여 클라이언트와 서버가 공유 비밀(shared secret)에 합의 할 수 있도록 메시지의 사용을 정의하여 만들 수 있다. 이 비밀은 반드시 길어야 한다.(현재 정의된 키 교환 방법은 46 bytes 이상의 비밀(secrets)을 교환한다.) 클라이언트와 서버 간 주고받는 Hello 메시지들 다음으로, 인증을 해야...