1. Altibase SSL/TLS 소개#
이 장은 Altibase SSL/TLS의 개념 및 특징에 대해 설명한다.
SSL/TLS란#
이 절은 Altibase SSL/TLS의 기본 개념을 설명한다.
SSL/TLS 프로토콜 소개#
보안 소켓 계층(Secure Socket Layer, 이하 SSL)은 넷스케이프사에 의해 개발된 표준 네트워크 보안 프로토콜이다.
SSL1.0은 공개된 적이 없고, 2.0버전이 릴리즈 되었지만 많은 보안 결함이 있어서 1996년에 완전히 새로운 3.0 버전으로 릴리즈하였다. 그 후 IETF(Internet Engineering Task Force)는 RFC 2246의 SSL 3.0에 기반한 보안 프로토콜인 TLS 1.0을 발표하였다. TLS 프로토콜에 대한 자세한 사항은 'RFC-2246 The TLS Protocol'을 참조하기 바란다.
암호화와 인증서#
대칭키 알고리즘은 송신측과 수신측간의 동일한 비밀키를 공유함으로써 통신 보안을 가능하게 한다. 이 비밀키는 효과적인 알고리즘으로 평문을 암호화하고, 암호문을 복호화하는데 사용된다. 그러나 송신자와 수신자간의 통신시 비밀키를 안전하게 공유하는데에는 한계가 있다.
이러한 문제를 해결하기 위해 비대칭키(또는 공개키) 암호화 알고리즘이 등장한다. 비대칭키 암호화 알고리즘은 공개키와 개인키를 한 쌍으로 하여 암호화와 복호화를 할 수 있다. 누구나 자유롭게 얻을 수 있는 공개키를 사용해 암호화된 메시지는 공개키와 매칭되는 개인키를 가진 사람만 복호화를 할 수 있도록 하며, 개인키로 암호화된 메시지 역시 공개키로 복호화할 수 있다.
즉 대칭키 알고리즘에서 사용하던 비밀키 대신 비대칭키 알고리즘을 사용함으로써, 비밀키를 상대방의 공개키로 암호화하여 개인키를 가지고 있는 상대방에게 보낸다. 그러면 개인키를 갖고 있는 상대방은 암호화된 비밀키를 자신의 개인키를 이용하여 비밀키를 복호화할 수 있다. 그 후에는 비밀키를 이용하여 서로 메시지를 암호화 및 복호화하여 통신을 할 수 있다.
그럼에도 불구하고, 중간공격자(Man-In-The-Middle attacker, MITM attacker)가 서버와 클라이언트를 가장하여, 통신 보안을 위협할 수 있다. 즉 클라이언트의 공개키 요청을 중간에서 가로채서 자신의 공개키를 대신 보내는 경우가 발생할 수 있다.
따라서 제 3의 신뢰할 수 있는 공식 인증 기관(Certificate Authority, 이하 CA)은 공개키 인증서(이하 인증서)를 발급하여 공개키의 소유권을 확인한다. 예를 들어, WWW(World Wide Web)과 같은 개방된 시스템 환경에서는 통신 보안을 위해 공개 인증서를 사용하는 것은 중요하다. 반면에 개인 인증서는 비공식 인증 기관(Non-official CA)에서 서명하고 발급한 인증서를 말한다. 개인 인증서는 자유롭게 사용하고, 필요할 때 마다 생성할 수 있기 때문에 폐쇄된 시스템 환경에서 유용하다.
Altibase의 통신 보안#
Altibase는 데이터를 암호화 및 복호화하기 위하여 대칭키 알고리즘과 인증을 위한 공개키(public key)/개인 키(private key)의 한 쌍을 안전하게 교환하기 위한 비대칭 알고리즘을 이용하는 SSL/TLS(이하 SSL)를 채택하고 있다.
따라서 클라이언트가 SSL 통신으로 Altibase에 접속할 때에는 아래의 순서로 SSL 핸드쉐이크를 수행한다.
-
클라이언트와 서버는 보안이 된 연결을 위해 SSL 프로토콜 버전, 데이터를 주고 받을 때 사용할 암호화 알고리즘 등과 같은 정보를 교환한다.
-
만약 클라이언트에게 서버 인증이 필요한 경우, 서버는 클라이언트에게 자신의 인증서를 전송하고 클라이언트는 전송받은 인증서로 서버를 확인한다.
-
서버가 클라이언트의 인증을 요청하면 클라이언트는 서버에게 자신의 인증서를 보낸다. 그리고 서버는 클라이언트에게서 받은 인증서로 클라이언트를 확인한다.
-
클라이언트와 서버는 SSL 통신에 필요한 정보를 비대칭키 알고리즘으로 교환하고, 데이터의 암복호화와 무결성 검증을 위해 사용될 세션키를 생성한다.
-
클라이언트와 서버는 교환될 메시지가 세션키로 암호화되고 핸드쉐이크가 완료되었는지 여부를 서로 통신한다.
Altibase의SSL 특징#
SSL 통신으로 Altibase를 사용할 때 다음과 같은 특징이 있다.
-
Altibase 는 OpenSSL 라이브러리에서 지원하는 TLS 1.0, 1.2, 1.3 프로토콜을 사용한다.
-
Altibase는 서버 전용 인증과 상호 인증을 지원한다.
- 서버 전용 인증 : 서버만 인증서를 가지고 있고, 클라이언트에게 인증서를 제공한다.
- 상호 인증 : 클라이언트와 서버 둘 다 인증서가 필요하며, 서로 상대방의 인증서를 확인한다.
-
Altibase 서버는 SSL 통신을 위해 기존에 사용하던 통신 포트 외에 별도의 포트를 사용하여 서비스한다(예를 들어, HTTPS를 위한 443 port). Altibase는 TCP 접속을 할 때 비보안에서 보안으로 접속 전환이 허용되지 않기 때문이다.
-
보안 연결을 사용하려면 모든 클라이언트 애플리케이션이 Java 1.8 이상에 포함된 Java Secure Socket Extension(JSSE) API가 필요하다. JSSE는 데이터 암호화, 서버 인증, 메시지 무결성과 선택적 클라이언트 인증 뿐만 아니라 SSL2.0, 3.0과 TLS 1.0, 1.2, 1.3 프로토콜 구현을 제공한다.
-
Altibase는 SSL 통신을 위해 JDBC와 ODBC를 통한 인터페이스를 제공하며, 현재는 인텔 계열의 리눅스에서만 사용할 수 있다.