작업물2011. 3. 4. 21:00

OpenSSL 은 네트워크를 통한 데이터 통신에 쓰이는 보안 프로토콜인 TLS (Transport Layer Security, 전송계층 보안) 와 SSL (Secure Socket Layer, 보안 소켓 계층) 의 오픈소스 구현판이다 (@위키피디아).

TLS 는 넷스케이프 사에서 전자상거래 등의 보안을 위해 개발한 SSL 이 이후 IETF 에서 표준화 되면서 바뀐 이름이며 때문에 먼저 TLS 에 대해 간략하게 알아본다.

 

TLS (@IBM Developer Networks - OpenSSL API를 이용한 보안 프로그래밍, Part 1: API의 개요 (한글))

C/S 응용 프로그램이 네트워크로 통신하는 과정에서 도청, 간섭, 위조당하는 것을 방지하기 위해 설계되었다. 암호화를 통해 최종단의 인증, 통신 기밀성을 유지시켜 주기도 한다.

 

TLS 의 3단계 기본 절차

  1. 지원 가능한 알고리듬 서로 교환 : C/S 가 암호 Suite 를 교환, 키 교환 및 인증에 사용될 암호화 방법, 메시지 인증 코드 (MAC) 가 결정된다.
  2. 키 교환, 인증
  3. 대칭키 암호로 암호화하고 메시지 인증

 

왜 OpenSSL 인가?

SSL 툴킷의 종류에는 OpenSSL 말고도 GNU General Public License 하에 배포되는 GNU TLS 와 Mozilla Network Security Services (NSS) 도 있다고 한다. 그럼에도 불구하고 OpenSSL 이 많이 쓰이는 이유는 라이센싱이나 상위버전에 대한 지원, 외부 라이브러리 종속성 등 때문이라고 한다.

 

OpenSSL 을 사용하기 위해 필요한 것

  • 최신버전의 OpenSSL : OpenSSL 의 공식 사이트 에서 최신 버전 (혹은 버전별) 소스 코드를 다운 받을 수 있다. 이 소스 코드를 다운 받을 경우 라이브러리를 사용하기 위해서 직접 컴파일을 해야한다. 다른 방법으로 서드 파티가 컴파일하여 배포하는 바이너리 라이브러리를 사용해도 되며 이때는 물론 컴파일 하는 수고를 할 필요가 없다.
Posted by cloim