본문 바로가기

Network

[Network] OpenSSL

openssl : 웹브라우저와 서버 간의 통신을 암호화하는 오픈소스 라이브러리


보통의 경우 웹서비스에 https를 적용할 경우 SSL인증서를 VeriSign라는 곳에서 발급받아야 하는데, 이때 비용이 발생하기 때문에 실제 운영서버가 아니면 발급 받기에 부담이 될 수 있다.

이 때 OpenSSL을 사용하여 인증기관을 직접 만들고, Self Signed Certificate 를 생성하고, SSL인증서를 발급하면 된다.

발급된 SSL인증서는 Apache httpd 등의 웹서버에 설치해서 쉽게 https의 서비스를 이용할 수 있다.

 

 

1. SSL (Secure Socket Layer) TLS (Transport Layer Security)


SSL? : Secure Socket Layer로 월드 와이드 웹 브라우저(www)와 웹 서버 간에 데이터를 안전하게 주고받기 위한 업계 표준 프로토콜을 의미한다.

 

전송계층 상에서 클라이언트,서버에 대한 인증 및 데이터 암호화 수행

- 클라이언트와 서버 양단 간 응용계층 및 TCP 전송계층 사이에서 안전한 보안 채널을

형성해 주는 역할을 수행하는 보안용 프로토콜

 

주요 응용

- 웹 브라우저와 웹 서버 사이의 안전한 보안 채널을 제공하기 위해 많이 사용됨

. HTTP (HTTPS), FTP, SMTP, SIP 등 에서도 사용 가능

 

3. SSL/TLS 주요 기능

 

상호 인증 : 공개키 인증서를 이용한 서버,클라이언트의 상호 인증

- 클라이언트/서버 두 응용 간에 상대방에 대한 인증

 

메세지 압축

- 디폴트 Null (압축 알고리즘은 미리 정해지지 않고 협상으로 지정 가능)

 

메세지 인증 (메세지 무결성)

- 메세지 인증 코드 HMAC에 의한 메세지 무결성 제공 (HMAC MD5, HMAC SHA-1 )

 

암호화용 세션 키 생성(대칭 키 합의)을 위한 키 교환

- RSA : 두 키(공개 키 및 개인 키)가 하나의 수 체계를 형성 (서버 공개 키 사용)

- Diffie-Hellman : Diffie-Hellman 프로토콜을 기반으로 한 키 교환 방식

 

생성된 공유 비밀키에 의해 암호화된 종단간 안전한 연결 통로 제공

- 스트림 암호화 : 40, 128 비트의 RC4

- 블록 암호화 : IDEA, 40,56 비트의 DES, 168 비트의 3DES

 

4. SSL/TLS 보안 특징

 

인증 구조 : X.509

- X.509에서 규정된 공개키 인증서 교환에 의해 상대방에 대한 인증 수행

키 교환 방식 : (협상 선택 가능)

- Null, RSA 공개 키 교환, Anonymous Diffie-Hellman 키 교환,

Ephermeral Diffie-Hellman 키 교환, Fixed Diffie-Hellman 키 교환, Fortezza

 

대칭키 암호화 방식 : (협상 선택 가능)

- RC2 (40), RC4 (40), RC4 (128), DES, Triple DES, IDEA

 

해쉬 알고리즘 : (협상 선택 가능)

- Null, MD5, SHA-1

 

 

 

5. SSL/TLS 프로토콜 스택

 

전송계층 TCP 위에서 `보안 소켓/보안 채널/터널링`을 구성

 

- 응용계층에서 생성된 데이터에 대한 보안(인증,무결성,기밀성),압축 등의 서비스를 제공

 

- SSL/TLS 보안 터널을 위한 TCP/UDP 포트번호

. ) 보안 HTTP를 위한 포트번호 443 (HTTPS)

 

- 한편, UDP 상에서도 가능한 버젼으로,

. DTLS (Datagram Transport Layer Security) RFC 6347(2012)가 있음

 

 

프로토콜 스택 SSL/TLS 구성 프로토콜 참조

 

6. TLS 핸드세이크 단계

 

초기 협상 단계

- 클라이언트,서버 간에 Client Hello,Server Hello 메세지 교환

- 클라이언트가 서버에게 Cipher Suite(사용 가능 암호화,해싱 방식 등)을 보내고

서버 인증서를 요구

 

인증 단계

- 서버에서 공개키,서버명,인증기관 주소 등을 포함한 인증서를 클라이언트에게 전송

- 이때, 서버는 클라이언트가 제시한 것 중 자신이 선택한 암호화 방식 및 인증서를 보냄

- 필요시 클라이언트는, 인증서를 발급한 인증기관 서버에 접속하여 서버 인증서의 유효성 확인

 

보안 채널 형성

- 클라이언트는 보안 채널 형성에 필요한 세션키를 만들기 위해,

- 서버의 공개키를 이용하여 임의의 수(Pre Master Key)를 암호화시켜 서버에게 전송하고,

- 서버는 자신의 비밀키(개인키)로 이를 해독(역암호화)하게 됨

- 이때 임의의 수(Pre Master Key)로부터 Master Key를 유도하고,

- Master Key로부터 양측은 암호화,복호화에 필요한 세션키를 생성함

 

상호 암호화 통신 시작

- , 보안성이 확립된 TLS 터널 내에서 상호 통신

 

 

 

7. SSL/TLS 핸드세이크 프로토콜


Application 데이터의 교환 이전의 세션 초기화 중에 이루어짐

- 서버와 클라이언트가 상호 인증

- `암호 키 교환` `암호화 알고리즘` 협상 및 확립을 도모하기 위한 정보 교환

- DES 알고리즘 등에 기반하여 세션키를 생성

 

주요 협상 내용

- 키 교환 방식 협상

- 암호화 방식 협상

- HMAC 방식 협상

- 압축 방식 협상

 

클라이언트/서버 간에 공유 암호 키를 만들기 위해 공개 키 방식을 활용

- `데이터 암호화`를 위한 공유 암호 키를 정의 함

- `메세지 인증`을 위한 메세지 인증 코드(TLS : HMAC 코드) 생성

 

메세지 종류 (Handshake type)

- Hello request (0)

- Client Hello (1) (클라이언트 서버)

. 주요 정보 : Version, Client Random Number, Session ID, Cipher Suite,

Compression Method

. Cipher Suite 이란?

.. 클라이언트가 지원 가능한 보안 방식들을 2 바이트 코드 값으로 열거한 것

.. 키 교환 방식, 암호화 방식, MAC 코드(Message Authentication Code) 방식

- Server Hello (2) (서버 클라이언트)

. 주요 정보 : Version, Server Random Number, Session ID,

Selected Cipher Set, Selected Compression Method

- Certificate (11) : 서버,클라이언트가 송신하는 X.509 v3 인증서가 이에 수납됨

- Server Key Exchange (12)

- Certificate Request (13)

- Server Hello Done (14)

- Certificate Verify (15)

- Client Key Exchange (16)

- Finished (20)

 

 

8. Change Cipher Spec 프로토콜

 

상호 암호 통신을 수행키 위해 필요한 일련의 보안 알고리즘 정보를 사전에 협의하기

위한 일련의 보안 매개변수(암호학적 비밀)를 상대에게 신속하게 전송하는데 사용

 

 

9. Alert 프로토콜

 

핸드세이크 과정에서 상대방이 제시한 암호화 방식을 지원할 수 없을 때 등의

오류 발생시 상대방에게 오류 통보 기능 수행

 

10. Record 프로토콜 (또는 데이터 교환 프로토콜)


주요 기능

- 메세지 분할(Fragmentation) : 214 또는 그 이하의 블록으로 데이터를 나눔

- 메세지 압축(Compression)

- 메세지 무결성(Message Integrity)

- 메세지 인증(Message Authentication)

- 메세지 암호화(Encryption)

 

제공 보안서비스 : 기밀성, 무결성

- 기밀성 : DES 등과 같은 암호화 방식을 선택하여 이를 이용하여 보안성을 제공

- 무결성 : 매 메세지별 HMAC 이용

 

계층 위치

- TCP 전송계층 바로 위에 위치

. 양단간 통신 연결 시 보안 제공

 

상위 메세지 종류 (content type)

- Change Cipher Soec 프로토콜 (20)

- Alert 프로토콜 (21)

- Handshake 프로토콜 (22)

- Application Data (23)

 

특징

- 상위계층 프로토콜들인 핸드세이크,Change Cipher Spec,Alert 프로토콜 등의

제어 메세지 및 Application 메세지들을 수납하여,

레코드 단위(TLS record)로 운반하는 프로토콜


[참조]http://vipeveloper.tistory.com/29

[참조]http://www.ktword.co.kr/abbr_view.php?m_temp1=1957&m_search=ssl

'Network' 카테고리의 다른 글

[Network]무선LAN  (0) 2020.10.14
[Network] 방화벽이란?  (0) 2018.11.01