문서 편집 권한이 없습니다. 다음 이유를 확인해주세요: 요청한 명령은 다음 권한을 가진 사용자에게 제한됩니다: 사용자. 문서의 원본을 보거나 복사할 수 있습니다. [[분류: 네트워크 보안]] == 개요 == SSL [Secure Socket Layer] (SSL version 3는 흔히들 TLS라 불리운다.)는 기밀성, 데이터 무결성, 서버 인증과 클라이언트 인증을 통해 [[TCP]]를 향상시킴으로써 안전한 정보 전달을 가능하게 한다. SSL은 응용 계층에 존재하나 개발자의 관점에서는 보안 서비스로 강화된 TCP 서비스를 제공하는 전송 [[프로토콜]]이다. == SSL 의 작동 방식 == === SSL 핸드셰이크 === [[파일:SSL.png|섬네일]] # 클라이언트와 서버는 TCP 연결을 설립한다. # 클라이언트는 넌스와 함께 자신의 지원하는 암호화 알고리즘의 목록을 보낸다. # 목록으로부터 서버는 [[대칭키]] 알고리즘, [[공개키]] 알고리즘 그리고 [[MAC]] 알고리즘을 선택한다. 서버는 이 결과와 인증서, 서버 넌스를 클라이언트에게 돌려준다. # 클라이언트는 인증서를 확인하고 서버의 공개키를 알아낸 후 PMS (Pre-Master Secret)를 생성한다. 이 PMS를 서버의 공개키로 암호화한 후 서버로 보낸다. # 클라이언트와 서버는 같은 키 유도 함수를 사용하여 PMS와 넌스로부터 독립적으로 MS를 생성한다. MS는 두개의 세션키와 두개의 MAC키를 생성하기 위해 분할 된다. 만약 IV를 요구한다면 IV또한 MS로부터 얻는다. # 클라이언트는 모든 핸드셰이크 메시지의 MAC을 전송한다. # 서버는 모든 핸드셰이크 메시지의 MAC을 전송한다. (암호화 되지 않은 상태에서 성립된 핸드셰이크가 훼손되는 것을 방지한다.) SSL에서 넌스는 "[[연결 재생 공격]]"에 대응하기 위해 사용되고 순서번호는 진행중인 세션에서 개별 패킷들의 재생에 대응하기 위해 사용된다. === 데이터 전송 === SSL은 데이터 스트림을 레코드로 쪼개고 각 레코드에 무결성 검사를 위한 MAC을 덧붙인 후 이 "레코드 + MAC"을 암호화 한다. 이 모든 과정은 서로 나눈 대칭키를 이용하여 이루어 진다. 또한 순서번호는 SSL에서 세그먼트의 순서를 바꾸거나 재생하지 못하도록 추가된다. === SSL 레코드 === 타입 | 버전 | 길이 | (데이터 | MAC) <= () 부분은 대칭키를 이용하여 암호화 된다. MAC은 레코드 전체의 해시함수이다. === 연결 종료 === 단순히 TCP FIN을 이용해 연결을 종료하면 [[절단 공격]]을 허용하게 됨으로, 레코드의 타입필드에 그 레코드가 SSL 세션 종료를 수행할 것인지 확인하도록 하여서 정말로 송신측에서 원해서 TCP FIN을 날린것인지 확인한다. Secure socket layer 문서로 돌아갑니다.