OpenSSL-1부- SSL(Secure Socket Layer) 보안 소켓 계층 이해
1. SSL/TLS 의 개요
보안통신을 위해서 양쪽 통신노드 간의 암호화 통신을 위한 별도의 암호화 체계가 필요 했습니다. SSL/TLS는, 브라우저 같은 클라이언트가 공개된 인터넷 망을 통해 웹서버와 커뮤니케이션할 때, 여러 가지 보안 메커니즘을 제공하여 원하는 상대와 안전하게 연결될 수 있도록 도와주는 인터넷 프로토콜입니다.
SSL과 TLS는 모두 네트워크를 통해 작동하는 서버, 머신 및 애플리케이션 (예 : 웹 서버에 연결하는 클라이언트)간에 인증 및 데이터 암호화를 제공하는 암호화 프로토콜입니다.
예전에는 SSL(Secure Socket Layer)라고 하였고, 네트웍 전송 계층의 암호화를 일컬어 TLS(Transport Layer Security)라고 합니다. 일반적인 표기에 따라 SSL/TLS로 표기로 합니다.
SSL 1.0은 1995 년에 Netscape가 처음 개발되었지만 심각한 보안 결함으로 인해 출시되지 않았습니다. SSL 2.0이 그다지 나아지지는 않았고 이후 SSL 3.0이 출시되었습니다만 보안 취약점이 남아 있었습니다.
SSL 2.0과 3.0은 각각 2011 년과 2015 년에 IETF라고도 하는 Internet Engineering Task Force에 의해 더 이상 사용되지 않습니다 . 수년 동안 취약성은 더 이상 사용되지 않는 SSL 프로토콜 (예 : POODLE , DROWN ) 에서 발견되었으며 계속해서 발견되었습니다 .
TLS 1.1은 7 년 후 2006 년에 출시되었고 2008 년에는 TLS 1.2로 대체되었습니다.
TLS 1.3은 이전 버전보다 크게 개선되었으며 현재 인터넷의 주요 업체들 ( Microsoft, Apple, Google, Mozilla,Cloudflare) 을 통해 확산을 추진하고 있습니다. 2020 년 1 월에 TLS 1.0과 TLS 1.1을 모두 중단 할 계획을 발표 합니다.
따라서 웹서버들은 앞으로 SSL 2.0 및 3.0 및 TLS 1.0 비활성화를 해야 합니다.
SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
웹페이지의 내용을 서버에서 전달할때 HTTP 전송 데이터를 암호화하여 TCP/IP형태로 클라이언트 브라우저에 전달하려면 클라이언트는 TCP/IP 로 받은 데이터를 복호화 하고 다시 브라우저로 전달하면서 내용을 볼수 있게 되고, 서버와 클라이언트 간의 데이터는 암호화 되어 주고 받게 됩니다. 이것을 일종의 터널링처럼 소켓을 열어두고 지속적인 암호화를 통해 주고 받는 과정으로 핸드 셰이크(Hand-Shaking)이라는 것을 통해 클라이언트와 서버는 신뢰 있는 통신이 가능해 집니다.
TLS 1.3은 핸드 셰이크를 더욱 개선했습니다. 단일 왕복으로 수행 할 수 있으며 제로 왕복 재개 (0-RTT)를 사용할 수 있습니다. 이를 수행하는 방법의 일부는 4 개의 알고리즘에서 2 개로 지원하는 암호 제품군의 수를 줄였습니다.
2. SSL의 기본적인 계층 구조
1. SSL(Secure Sockets Layer): 보안 소켓 계층
SSL은 웹사이트와 브라우저(혹은, 두 서버) 사이에 전송된 데이터를 암호화하여 인터넷 연결을 보안을 유지하는 표준 기술입니다. 이는 해커가 개인 정보 및 금융 정보를 포함한 전송되는 모든 정보를 열람하거나 훔치는 것을 방지합니다.
2. TLS(Transport Layer Security): 전송 계층 보안
TLS는 가장 최신 기술로 더 강력한 버전의 SSL입니다. 그러나 SSL이 더 일반적으로 사용되는 용어이기에, 여전히 보안 인증서는 SSL이라 불립니다. DigiCert에서 SSL을 구매하시면 가장 높은 신뢰성을 가진 최신 TLS 인증서를 획득 하시게 됩니다.
3. HTTPS(Hyper Text Protocol Secure): 하이퍼 텍스트 프로토콜 보안
HTTPS는 웹사이트를 SSL/TLS 인증서로 보안하는 경우 URL 창에 표시됩니다. 사용자는 브라우저 바의 잠금 기호를 클릭하여 인증서 발행, 웹사이트 소유 기업명을 포함한 인증서의 세부 내용을 확인할 수 있습니다.
통신을 위한 다양한 프로토콜(HTTP, FTP, Mail, XMPP 등)과 SSL/TLS간의 관계를 아래 그림과 같이 표현합니다.
3.TLS 핸드 셰이크
TLS 핸드 셰이크는 API 호출 및 HTTPS를 통한 DNS 쿼리를 포함하여 다른 통신이 HTTPS를 사용할 때마다 발생합니다.
- 'client hello'메시지 : 클라이언트는 서버에 "hello"메시지를 전송하여 핸드 셰이크를 시작합니다. 메시지에는 클라이언트가 지원하는 TLS 버전, 지원되는 암호화 제품군 및 "클라이언트 임의"라고하는 임의 바이트 문자열이 포함됩니다.
- 'server hello'메시지 : 클라이언트 hello 메시지에 대한 응답으로 서버는 서버의 SSL 인증서 , 서버가 선택한 암호화 제품군 및 서버에서 생성 한 또 다른 임의의 바이트 문자열 인 "서버 임의" 가 포함 된 메시지를 보냅니다 .
- 인증 : 클라이언트는 발급 한 인증 기관을 통해 서버의 SSL 인증서를 확인합니다. 이것은 서버가 말하는 사람이고 클라이언트가 도메인의 실제 소유자와 상호 작용하고 있음을 확인합니다.
- 프리 마스터 시크릿 : 클라이언트는 "프리 마스터 시크릿"이라는 임의의 바이트 문자열을 하나 더 보냅니다. 프리 마스터 비밀은 공개 키로 암호화되며 서버에서 개인 키로 만 해독 할 수 있습니다. (클라이언트는 서버의 SSL 인증서에서 공개 키를 가져옵니다.)
- 사용 된 개인 키 : 서버가 사전 마스터 암호를 해독합니다.
- 생성 된 세션 키 : 클라이언트와 서버 모두 클라이언트 랜덤, 서버 랜덤 및 사전 마스터 비밀에서 세션 키를 생성합니다. 동일한 결과에 도달해야합니다.
- 클라이언트가 준비 됨 : 클라이언트가 세션 키로 암호화 된 "완료"메시지를 보냅니다.
- 서버가 준비 됨 : 서버가 세션 키로 암호화 된 "완료"메시지를 보냅니다.
- 안전한 대칭 암호화 : 핸드 셰이크가 완료되고 세션 키를 사용하여 통신이 계속됩니다.
www.cloudflare.com/ko-kr/learning/ssl/what-is-an-ssl-certificate/
-
서버에서는 비대칭 공개 키의 복사본을 브라우저로 전송합니다.
-
브라우저에서는 대칭 세션 키를 만들어 서버의 비대칭 공개 키로 암호화한 다음 이를 서버로 전송합니다.
-
서버는 대칭 세션 키를 얻기 위해 비대칭 비공개 키를 사용하여 암호화된 세션 키를 해독합니다.
-
이제 서버와 브라우저에서 대칭 세션 키를 사용하여 전송된 모든 데이터를 암호화 및 해독합니다. 브라우저와 서버에만 대칭 세션 키에 대한 정보가 있으며 세션 키는 해당하는 특정 세션에만 사용되기 때문에 채널 보안이 보장됩니다. 다음날 브라우저가 동일한 서버에 다시 연결되면 새로운 세션 키가 생성됩니다.
SSL 인증서 작동 방식
1. 인증
사용자가 웹사이트에서 새로운 세션을 시작할 때마다 사용자의 브라우저와 웹사이트 서버는 서로 간 SSL 인증서를 교환하고 검증하게 됩니다.
2.암호화
서버는 브라우저와 퍼블릭 키를 공유하며 브라우저는 이를 사용하여 예비 마스터 키를 생성하고 암호화합니다. 이를 키 교환이라고 부릅니다.
3.암호 해독
서버에서는 자체 개인 키를 사용하여 예비 마스터 키를 해독하고 세션이 지속되는 동안 사용되는 안전하고 암호화된 연결을 구축합니다.
SSL을 사용할 수 있는 시스템
간단히 말해, SSL은 모든 기기와 시스템에서 사용할 수 있습니다. 최신형 컴퓨터, 태블릿, 핸드폰을 위한 모든 주요 운영 시스템에서는 SSL/TLS 프로토콜을 지원하고 있습니다. 구형 기기의 호환성에 관한 문의는 당사 지원팀으로 연락해주시기 바랍니다.
브라우저
웹사이트가 기기 및 브라우저에 무관하게 설계되는 것과 같이, SSL/TLS는 모든 주요 웹브라우저를 지원하고 있습니다.
서버
SSL 인증서는 모든 종류의 서버를 지원합니다. 핸드셰이크 프로세스가 이루어지는 동안, 서버의 보안은 브라우저에 달려있습니다.
이메일
대부분의 클라우드 기반 이메일 제공자는 SSL 암호화를 사용하고 있습니다. 기관에서는 SSL 인증서를 설치하여 비공개 이메일 서버를 보호할 수 있습니다.
주요 관련 용어
ㄱ
공개 키 기반 구조(Public key infrastructure, PKI): 인증 기반의 공개 키 암호 시스템의 구현 및 운영을 일괄적으로 지원하는 아키텍처, 기관, 기술, 사례 및 절차. PKI는 공개 키 암호화 시스템 및 기타 관련 서비스를 제공하고 구현하기 위해 협력하는 시스템으로 구성되어 있습니다
기관 검증 SSL 인증서(OV SSL): 도메인의 소유권 및 그 뒤에 존재하는 기관을 검증하는 SSL 인증의 한 유형.
ㄷ
대칭 암호화: 암호화 및 암호 해독 프로세스가 진행되는 동안 동일한 키를 사용하는 암호화 방식.
* 대칭비대칭 암호화 참고 : www.digicert.com/resources/SSL_Cryptography_Explained.pdf
도메인 검증 SSL 인증서(DV SSL) : 가장 기본적인 단계의 SSL 인증서 발급 인증시 요청된 도메인 소유권을 검증합니다.
ㅁ
마스터 보안 암호화 키 : MAC 보안, 초기화 벡터의 생성에 사용되는 키 재료입니다.
메시지 인증 코드(Message Authentication Code, MAC) : 메시지와 보안에 존재하는 단방향 해시 함수
ㅂ
보안 서버 : SSL 혹은 TLS를 사용하여 호스트 웹페이지를 보호하는 서버. 보안 서버를 사용중인 경우, 서버가 사용자에게 인증됩니다. 웹브라우저의 SSL 프로토콜에 의해 사용자 정보가 인터넷으로 전송되기 전 암호화됩니다. 정보는 이를 요청한 호스트 사이트에서만 해독될 수 있습니다.
비대칭 암호화 : 암호화 및 암호 해독 프로세스 중 2개의 키로 이루어진 한 쌍을 의미하는 암호화 키. SSL 및 TLS에서 이는 공개 및 비공개 키라고 불립니다.
ㅅ
SAN(Subject Alternative Name, 주체 대체 이름) SSL 인증 :하나의 SSL 인증서로 다수의 도메인을 보안하는 인증의 유형
SSL 보안 소켓 계층(Secure Sockets Layer): 인터넷으로 전송된 데이터의 인증, 암호화, 암호 해독을 가능하게 하는 웹브라우저와 서버의 프로토콜
SSL 인증서 : 서버를 사용자에게 인증하고 서버와 사용자 간 전송된 데이터를 암호화 할 수 있게 하는 서버 인증서.
SSL 핸드셰이크 : 보안 협상을 목적으로 하는 SSL 내에서 사용되는 프로토콜.
ㅇ
암호화 : 읽을 수 있는(평문) 데이터를 난해한 형식(암호문)으로 전환하는 프로세스로, 이를 통해 오리지널 데이터를 복구할 수 없게 되거나(단방향 암호화) 역방향 해독 프로세스(양방향 암호화)를 사용해야만 복구할 수 있게 됩니다.
암호화 키 조합 : 키 교환 프로토콜의 조합으로, SSL 프로토콜 내에서 사용되는 인증, 암호화, 메시지 인증 알고리즘을 포함하고 있습니다.
연결 오류 : 사용자가 사이트에 액세스를 시도할 때 보안 세션을 방지하는 보안 문제가 표시됩니다.
와일드카드 SSL 인증서 : 다양한 하위 도메인의 보안을 유지하는데 사용되는 인증서 유형.
인증 기관(Certificate authority, CA) : CPS(인증 업무 준칙, Certification Practice Statement)에 따라 인증을 발급, 중지, 갱신, 취소할 수 있는 기관. 인증 기관은 발행한 모든 인증 및 CRL 상의 사용자 식별 명칭으로 확인됩니다. 인증 기관이 1차 인증 기관(PCA, Primary Certification Authority)에 종속된 경우, 반드시 공개 키를 알리거나 공개 키의 유효성을 증명하기 위해 상위 인증 기관에서 발급한 인증을 제공해야 합니다. DigiCert는 1차 인증 기관(PCA)입니다.
인증서 서명 요청(Certificate Signing Request, CSR) : CSR은 Certificate Signing Request (인증서 서명 요청)이란 뜻으로, 인증서 발급을 위한 필요한 정보를 담고 있는 인증서 신청 형식 데이터입니다. CSR에 포함되는 내용으로는 개인키 생성 단계에서 만들어진 개인키(Private Key)와 공개키(Public Key)의 키쌍 중에서 공개키가 포함되며, 인증서가 적용되는 도메인에 대한 정보 등이 포함됩니다.
일반명(CN) : 인증서 식별 명칭 내의 속성 값입니다. SSL 인증의 경우 일반명은 보안이 이루어지는 사이트의 DNS 호스트명입니다. 소프트웨어 퍼블리셔 인증의 경우, 일반명은 기관명입니다.
ㅋ
키 교환 : 사용자와 서버가 세션에서 안전하게 예비 마스터 보안을 구축합니다.
ㅌ
타원 곡선 암호화(Elliptic Curve Cryptography, ECC) : 공개/비공개 키 쌍에서 곡선 상의 점을 사용한다는 발상을 기반으로 암호화 키를 생성합니다. 해커가 자주 이용하는 브루트 포스 공격을 사용한 침입이 매우 어려워지며, 순수한 RSA 체인 암호화보다 더 낮은 연산 성능으로 더 빠른 솔루션을 제공합니다.
TCP 모든 네트워크의 주요 프로토콜 중 하나인 전송 제어 프로토콜(Transmission control protocol).
ㅎ
확장 검증 SSL 인증서(EV SSL) 가장 종합적인 형태의 보안 인증입니다. 도메인이 검증되며 기업 혹은 기관이 엄격한 인증 프로세스를 거치게 됩니다.
참고 : OpenSSL/TLS 2부- SSL인증서 만들기와 nginx와 Tomcat 연동하기 nginx tomcat with SSL/TLS
'InfraPlatform' 카테고리의 다른 글
[꿀팁] 고성능 Nginx를위한 튜닝 - (3) TCP 관련 처리량 늘리기-리눅스커널튜닝 (4) | 2020.12.28 |
---|---|
[꿀팁] 고성능 Nginx를위한 튜닝 - (2) 프로세스 처리량 늘리기 (0) | 2020.12.27 |
[꿀팁] grubby를 이용한 grub2 커널 부팅 순서 변경하기 (0) | 2020.12.26 |
OpenSSL/TLS 2부- SSL인증서 만들기와 nginx와 Tomcat 연동하기 (0) | 2020.12.13 |
[리눅스 꿀팁] fdisk 사용하기 (전문가모드) (0) | 2020.11.30 |
[셀스크립트 응용] ICONV 을 이용한 파일 인코딩(Encoding) (0) | 2020.11.29 |
[셀스크립트 응용] ICONV와 SED 를 활용하여 파일의 문자셋(charset)을 변환 하는 방법 (0) | 2020.11.29 |