보안 인증을 위한 서버 구축은 크게 [응용프로그램 방식]과 [SSL 방식]으로 구분할 수 있는데 응용프로그램 방식은 웹서버에 접속한 사용자 PC에 보안 프로그램이 설치된 이후에야 사용이 가능하지만 SSL 방식은 별도의 다운로드와 설치 과정 없이 웹서버에 설치된 전자 인증서를 이용해 개인정보를 암호화하여 송수신하게 됩니다. 다음의 내용은 그 중 대표적인 공개키 암호화 알고리즘에 대해 간략히 소개합니다.
맨 처음 D.D.D.자동 전화기를 예로 들어 보안에 대한 문제점을 이야기하였습니다. 즉 도청과 감청의 문제를 해결하기 위해 군용통신장비는 송신 내용을 암호화하여 전송하고 수신기는 이것을 같은 방법으로 풀어 내야만 합니다. 같은 원리로 HTTPS는 소켓 통신에서 개인정보(주민등록번호,이메일,아이디,비밀번호 등)를 포함한 중요한 데이터의 유출과 변조를 차단하기 위해 일반 텍스트(Plaintext)로 송수신 하는 대신, 암호화 알고리즘을 이용하여 변조하거나 판독이 불가능한 암호화 텍스트(Ciphertext)를 만들어야 합니다.
이러한 기술의 핵심 요소는 웹브라우저와 서버간 송수신하는 데이터를 암호화(Encryption)/암호 해독(Decryption) 할 수 있는 알고리즘과 한 쌍의 키 교환, 제3자가 네트워크 상에서 신원을 확인해 줄 수 있는 서명된 전자 인증서를 포함한 인증 도구, 즉 이러한 일련의 인증 과정을 통해서만(over SSL) 가능합니다.
▼ 비대칭(Asymmetric) 공개 키(Public Key) 암호화(Encryption) :
※ 이미지 출처 : Max's Chips and Dips: Elliptic Curve Cryptography.
RSA 방식의 공개키 암호화 알고리즘의 인증 과정을 간략하게 설명한 그림입니다. 암호화 알고리즘(encryption algorithm)의 종류는 60여가지가 넘지만 대표적인 RSA 방식만 살펴봐도 SSL의 흐름을 이해하는데 도움이 됩니다. 위 그림이 어려워 보이지만 절대 그렇지 않습니다. RSA란 이름이 붙은 것은 단순하게도 최초로 공개키 암호화 시스템을 개발한 로널드 라이베스트(Ron Rivest), 아디 샤미르(Adi Shamir), 레오널드 애들먼(Leonard Adleman) 이들 3명의 이름 앞글자를 딴 것 뿐입니다.
위 과정에서 주의깊게 살펴볼 내용은 ①공개 키(Public Key)와 ②개인 키(Private Key) 그리고 ③인증서(Certificate)가 하는 일입니다. 우선 위 그림에는 없지만 비밀 키(Secret Key)라는 것도 있습니다. 비밀 키는 암복호화 할 데이터를 단순히 같은 키로, 즉 비밀 키 하나로 활용하는 방법입니다. 따라서 이것을 대칭 키(Symmetric key)라고도 부르고 작업 속도가 매우 빠른 장점이 있지만 공유된(shared) 비밀 키는 이브(Eve, 성서에 나오는 아담의 아내로 아담에게 선과 악(the Knowledge of Good and Evil)을 알게하는 나무의 열매를 함께 먹도록 꾀어 에덴동산에서 추방되었기 때문에 유혹과 뱀을 연상시키는 의미로 자주 사용됨)에게 매우 좋은 유혹(Temptation)의 대상이기 때문에 결코 안전하지 않습니다.
이러한 문제점을 해결하기 위해서 공개 키 기반구조(Public Key Infrastructure, PKI)의 비대칭 암호화(Asymmetric Encryption)방식이 더 선호되는 것입니다. 비대칭이라는 뜻은 암복호화에 각각 다른 키를 사용한다는 뜻입니다. 즉 ①공개 키(Public Key)는 말 그대로 누구에게나 공개 된 키입니다. 심지어 이브(Eve)도 가질 수 있지만 이 키가 하는 일은 데이터를 암호화(Encryption)하는 일입니다. 암호화된 텍스트(Ciphertext)는 반드시 각자가 비밀스럽게 잘 보관한 ②개인 키(Private Key)로 풀어야 합니다. 하지만 이브(Eve)가 얼마나 똑똑한지 공개 키를 이용해 텍스트를 변조할 수도 있습니다. 하지만 너무 걱정할 필요는 없습니다. 공개 키의 길이가 충분히 크다면 단지 몇몇의 이브만이 암호화된 텍스트(Ciphertext)를 해독 할 수 있을 뿐이고(Anyone can use the public key to encrypt a message, but with currently published methods, if the public key is large enough, only someone with knowledge of the prime factors can feasibly decode the message.) 해독이 된 시점에는 이미 다른 새로운 키를 사용하고 있을 것입니다.
키 크기(Key Size) : 가능한 키 조합(Possible Key Combinations)
2-bit 2^2 2x2 = 4
3-bit 2^3 2x2x2 = 8
4-bit 2^4 2x2x2x2 = 16
5-bit 2^5 2x2x2x2x2 = 32
...
40-bit 2^40 2x2x2x2x2x2x2x2x2x2 ... 2x2x2x2x2x2x2x2x2x2... = 1 trillion (1,097,728,000,000)
128-bit 2^128 2x2x2x2x2x2x2x2x2x2 ... 2x2x2x2x2x2x2x2x2x2... = 339,000,000,000,000,000,000,000,000,000,000,000
따라서 데이터의 내용이 올바르게 잘 전달 되었는지, 이브에 의해서 변조되지는 않았는지를 최종적으로 검증할 수 있는 제3의 인증기관(Certificate Authority, CA)이 함께 보증하는 전자 서명된(Signed) ③인증서(Certificate)가 반드시 필요한 것입니다.
인증서 파일은 데이터를 암호화하는 자물쇠 역할을 하며, 키(Keys)의 소유자의 신원 확인과 소유자 정보, 인증 만료일, 발급자(CA)의 전자서명과 같이 중요한 정보를 포함시켜, 서버(A)에 접속한 클라이언트(B)에게 보내준 공개 키가 과연 A가 보내 준 것인지 확인할 수 있도록 검증해 주고, 서버(A)는 접속 요청하는 암호화 데이터의 주인(B)이 과연 B가 맞는지 신원을 확인할 수 있도록 하는 디지털 서명(Digital Signatures) 인증서를 첨부하게 됩니다.
참고로 하이브리드 암호화(Hybrid Encryption)는 공개 키 방식에 비밀 키를 포함시켜 전송하는 방식으로 대칭 키의 효율성과 공개 키의 편의를 결합한 방식이며, 암호화 된 데이터 전송시 임의 키를 생성하여 단 한번만 사용하고 버리는 세션 키(Session Key)를 활용하기도 합니다. 세션 키는 전송 데이터마다 매번 다른 키를 사용하기 때문에 안정성은 크지만 과정에 따른 비용은 상당히 크다고 볼 수 있습니다.
결론적으로 SSL 인증서란, 클라이언트 PC와 서버 사이의 통신 과정에서 전송계층 종단간 보안과 데이터 무결성, 최종단의 인증, 통신의 기밀성을 확보하기 위한 암호화 알고리즘의 인증 규약(TLS/SSL 암호 규약)을 가리키며, HTTPS(Hypertext Transfer Protocol over Secure Socket Layer) 프로토콜을 지칭하기도 하고, 보안 프로토콜 안에서 반드시 통과해야만 하는 전자 인증서(digital certificates), 즉 보안 서버 인증서를 가리킵니다.
관련자료 :
※ 출처 : SSL 보안서버인증 적용하기(http://xeschool.com/xe/step2_62)