SSL 프로토콜 ①

일반입력 :2002/07/28 00:00

배진석

SSL은 인터넷 웹상의 네트워크 보안을 강화하기 위해 가장 널리 사용되는 프로토콜이다. SSL은 관련 코드가 공개 소스 방식에 따라 일반에게 공개됐기 때문에 서버와 클라이언트간의 안전한 채널을 생성해 암호 통신이 가능하게 해준다. SSL은 구현된 공개 소스가 존재해 암호 관련 프로그램에 유용하게 응용할 수 있다. 1. SSL 프로토콜의 개요SSL(Secure Socket Layer)는 넷스케이프에서 개발한 보안 프로토콜로 전송 프로토콜(ex, TCP/IP)상에서 송수신자간에 통신의 비밀성과 데이터 무결성을 제공하는 것을 목적으로 한다.현재 인터넷은 SSL2.0, SSL3.0, TLS1.0이 함께 사용되고 있으며 넷스케이프와 익스플로러에서 이를 지원하고 있다.웹서버에서 SSL을 가장 쉬운 보안 프로토콜로 채택하고 있는 이유는 사용자가 특별한 프로그램을 다운로드 받지 않아도 넷스케이프와 익스플로러가 자동으로 보안 채널을 연결해주기 때문이다. 즉, 웹서버 설치시 SSL과 인증서를 포팅하면 된다.미국에서 생산된 웹서버나 인증서는 1999년 중반까지 암호 수출 정책의 영향을 받았기 때문에 암호 프로토콜 이용시 키 길이가 대칭키 40비트, 비대칭키 512비트로 제한됐었다. 현재는 이같은 제한이 완화돼 넷스케이프 4.72, 익스플로러 5.01 이상은대칭키 128비트, 비대칭키 1024비트를 사용할 수 있다. 하지만 새로운 정책이 적용된 인증서를 이용하지 않고 있는 웹사이트는 여전히 많은 편이다.2. SSL 프로토콜의 구조SSL은 크게 핸드세이크 프로토콜과 레코드 프로토콜로 되어있다. 핸드세이크 프로토콜은 다시 체인지 사이퍼 스펙 프로토콜(Change cipher spec protocol), 얼러트 프로토콜(Alert Protocol), 핸드세이크 프로토콜로 나뉘어 진다.SSL은 클라이언트와 서버간에 핸드세이크 프로토콜을 수행해 암호화된 하나의 세션을 성립하게 된다. 이 세션 동안 보안 서비스를 위한 세션키, 암호 알고리즘, 인증서 등과 같은 변수 등을 서로 공유해야 하며, 이 정보를 이용해 레코드 프로토콜에서 실질적인 보안 서비스를 제공한다. 여기에 이용되는 세션 정보는 다음과 같다.

  • 세션 식별자 : 세션 상태가 active상태인지 resemble상태인지를 식별하기 위해 임의로 선택된 일련의 바이트.
  • 인증서 : 서버와 클라이언트 X509.v3 인증서
  • 압축방법 : 데이터 압축을 위해 사용한 알고리즘
  • Cipher spec : 암호 알고리즘( DES etc.)과 MAC 알고리즘( MD5 or SHA), hash_size등의 알고리즘 관련 정보
  • master secret : 클라이언트와 서버 사이에 공유하는 48바이트의 비밀 정보
  • 보류여부 : 세션 재 연결 시 세션 정보를 재 사용할 지 여부 표기
  • 세션 정보 중 한 세션 동안에만 이용되는 정보는 다음과 같다.
  • 서버-클라이언트 난수: 서버와 클라이언트의 연결을 위해 선택된 일련의 바이트
  • server write MAC secret : 서버가 데이터에 MAC 연산을 적용할 때 사용한 비밀
  • client write MAC secret : 클라이언트가 데이터에 MAC연산을 적용할 때 사용한 비밀
  • 서버 키(server write key): 서버가 암호화하고 클라이언트가 복호화할 때 사용하기 위한 암호키
  • 클라이언트 키(client write key): 클라이언트가 암호화하고 서버가 복호화할 때 사용하기 위한 암호키
  • 초기화 벡터 : CBC모드에서 블럭을 암호화할 때 각 키에 초기화 벡터(IV)가 포함된다. 이 필드는 SSL 핸드쉐이크 프로토콜에 의해 초기화된다. 각 레코드의 마지막 암호문은 이후의 레코드와 함께 사용하기 위해 보존.
  • 순서 번호(sequence numbers): 송수신되는 각 메시지에 대한 순서 번호
  • @