Information Security ˗ˋˏ ♡ ˎˊ˗

Security/Network

[Network] SSL/TLS (자세히)

토오쓰 2020. 9. 14. 23:03

 

대칭키/비대칭키  => 키동기화 방식 => SSL/TLS => SSL MITM

 

 

1. 대칭키/비대칭키 정의 및 차이점

 

대칭키(비밀키)

비대칭키(공개키)

정의

송신자와 수신자가 같은 키를 사용하는 암/복호화 알고리즘

- 스트림 암호: 연속적인 비트/바이트를 계속해서 입력 받아, 그에 대응하는 암호화 비트/바이트를 생성하는 방식

- 블록암호: 정해진 한 단위(블록)을 입력 받아 그에 대응하는 암호화 블록을 생성하는 방식

송신자는 외부에 공개된 키로 암호화하여 송신하고 수신자는 개인키로 복호화 하는 알고리즘

KEY

하나의 키로 암호화와 하고 같은 키로 복호화를 진행한다

키는 외부에 노출되면 안되므로 비밀키 라고도 한다.

송신자: 외부에 공개된 공개키(Public Key)

수신자: 개인키(Private Key)

KEY 길이

주로 64비트, 128비트의 작은 길이

주로 512, 1024, 2048비트 등 큰 길이

평문 길이

제한 없음

제한 있음

방식

특징

기밀성, 인증 부분적으로 가능, 무결성 부분적으로 가능, 부인방지 불가능

기밀성, 인증, 무결성, 부인방지 가능

장점

계산속도 빠르다

공개키로 암호화된 메시지는 수신자의 개인키로만 해독이 가능하기 때문에 안전하게 상대방에게 전달 가능

단점

비밀키 하나만 알아내면 암호화된 내용을 해독 가능하기 때문에 안전하지 않다.

속도가 느리기 때문에(대칭키의 약 1000배) 긴 문서의 암호화하는 경우보다 대칭키 알고리즘의 키 값에 대한 암호에 사용된다.

암호화 종류

DES, 3-DES, AES, SEED, ARIA, MASK

- RSA(공개 키 및 개인 키가 하나의 수 체계를 형성), Elgamal

- 전자서명: 일상생활에서 신분증처럼 신원을 확인하는 도구로 인터넷상에서 사용자가 누구인지 신원을 확인할 때 사용한다.

 

 

2. 키동기화 방식

 

Manual 방식

Key Wrapping 방식

(Hybrid Cryptography)

정의

직접 키를 전달하여 동기화

ex) 무선의 AP의 WEP 키

비 대칭 암호화 알고리즘을 이용하여 Session Key를 동기화 시킨 후, Session Key로 통신

종류

Diffie-Hellman 방식: 실제 Key 값을 전송하지 않고 Key를 생성하는데 필요한 값만 전달

Session Key: 일회성 키, 해당 세션에만 유효한 키, 라이프타임의 성격부여(짧을수록 보안성 우수)

-> 중간에 공격자가 세션키를 만들어 보내면 해킹이 가능

 

 

3. 대칭키/비대칭키 취약점

대칭키의 취약점

- 키 배송 문제(key distribution problem): 수신자에게 키를 도청당하지 않고 어떻게 안전하게 배송하는가?

- 문제 해결 방법

1) 키의 사전 공유: 키를 사전에 건네 주는 것, 통신대상이 다른 나라에 있을 경우에는 이러한 방법을 사용할 수 없으며 키의 사전 공유가 가능하더라도 인원이 많아지면 통신을 위한 키의 수가 방대해진다.

2) 키 배포센터 (Key distribution center: KDC): 암호 통신이 필요할 때마다 통신용의 키를 배포센터에 요청해서 개인과 키 배포센터 사이에서만 키를 사전에 공유한다. 하지만 사용자가 많아질수록 키 배포센터의 부하가 커지고, 해커가 키 배포센터에 침입하여 키의 데이터베이스를 복사해가면 모든 암호 통신 전부가 해커에 의해 해독된다.

3) Diffie-Hellman 키 교환에 의한 해결: 이산대수 문제를 풀기 어렵다는데 기반을 두고 있다. 하지만 서비스 거부 공격에 취약하며 중간자 공격에 취약하다. 현재 Diffie-Hellman 기법 기반의 대칭키 분배는 중간자 공격과 DoS 공격 취약점을 보완하여 IPsec, SSL 등 다양한 인터넷 보안 프로토콜에 광범위하게 적용되고 있다.

4) 공개키 암호에 의한 해결

 

공개키의 취약점

- 시나리오: 만일 공격자가 다른 사람인 척하면서 자신의 공개키를 준다면 피해자는 중요 문서를 공격자의 공개키로 암호화해서 보내게 된다. 공격자는 자신의 개인키로 복호화 해서 보면 된다. 즉 인증에 대한 문제가 발생한다.

- 해결방안: CA(인증 기관), 자신에게 암호화해서 보내 달라고 요청한 사람이 진짜 그 사람인지 인증을 해주는 신뢰 기관을 두는 것이다.

 

정의

X.509

암호학에서 공개키 인증서와 인증알고리즘의 표준 가운데에서 공개 키 기반(PKI)의 ITU-T(국제전기통신연합 전기통신표준화부문) 표준

CA (certificate authority or certification authority)

인증서를 발행하는 역할

- X.509 시스템에서 CA는 규약에 따라 공개키를 가진 인증서를 발행

 

 

4. SSL (Secure Socket Layer) 및 TLS (Transport Layer Security)=안전 소켓 계층, 전송계층 보안

- 정의: 전송계층 상에서 클라이언트, 서버에 대한 인증 및 데이터 암호화 수행, 클라이언트와 서버 양단 간 응용계층 및 TCP 전송 계층 사이에 안전한 보안 채널을 형성해주는 역할을 수행하는 보안 프로토콜이다.

- 주요 응용: HTTP (HTTPS), FTP (FTPS), TELNET, SMTP, SIP, POP, IMAP 등에서 사용하며, Netscape사에서 웹 브라우저와 웹 서버 사이의 안전한 보안 채널을 제공하기 위해 만든 암호화 프로토콜이다.

- 주요 기능

>> 상호인증: 공개키 인증서를 이용하여 서버, 클라이언트의 상호 인증을 한다. 클라이언트/서버 두 응용 간에 상대방에 대한 인증을 한다.

>> 메시지 압축: 디폴트는 NULL이다.

>> 메시지 인증(메시지 무결성): 메시지 인증코드 HMAC에 의한 메시지 무결성을 제공한다.

>> 암호화용 세션 키 생성을 위한 키 교환: RSA, Diffie-Hellman

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

 

- 특징

설명

종류

클라이언트/서버 기반의 프로토콜

 

응용 프로그램(어플리케이션)
자체 구현 가능

대부분의 다른 보안 프로토콜(EAP, IPsec 등)은 운영체제 등에 밀접하게 관련이 있다.

인증 구조: X.509

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

키 교환 방식

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

대칭키 암호화 방식

 

해시 알고리즘

Null, MD5, SHA-1

 

- IPsec: 기존의 IP 프로토콜에 인증과 암호화 기능을 추가한 것이다. OSI 7 Layer 중 3계층(Network Layer)에서 동작하기 때문에 IP를 통해 전송되는 모든 트래픽을 암호화한다. 서로 다른 네트워크 대역을 마치 로컬 대역처럼 접근할 수 있도록 하기 위해 암/복호화 장치가 필요하다.

>> IPsec 장비 사이에만 데이터가 암/복호화 됨으로 실제 내부에서의 데이터 보안성은 장담X

 

 

5.  HTTPS: 하이퍼 텍스트 프로토콜 보안(Hyper Text Protocol Secure, HTTPS)

- 정의: 증명서를 통해 서버 또는 클라이언트의 신원을 확인하고, 데이터를 암호화, 인증, 안정성 보호를 할 수 있는 프로토콜이다. HTTP 통신에 소켓 연결 부분을 SSL Layer로 대체하고 있을 뿐이다. SSL을 사용하면 성능이 조금 느리다는 점이 있지만, 보안이 중요하기 때문에 세계적으로 HTTPS 사용을 권장

- 예) 로그인 과정에서 해커는 암호화된 데이터밖에 얻을 수밖에 없으므로, HTTPS를 사용하는 사이트는 신뢰성 있는 사이트가 되는 것

 

 

- 위치: HTTPS는 SSL 위에서 동작한다. 원래는 TCP와 Application 계층 사이에 어떠한 계층이 존재하지 않는데 HTTPS 프로토콜을 보면 그 사이에 SSL 계층이 존재한다. SSL은 일종의 보안 계층으로 동작하는데, 그 이유는 소켓이 SSL과 연결되어 SSL이 보안 기능을 제공하기 때문이다.

 

- SSL 인증서의 목적

>> 클라이언트가 접속하려는 웹 사이트(서버)가 신뢰할 수 있는 사이트인지 보장한다. 클라이언트가 접속하려는 사이트가 공인된 기관(CA)으로부터 SSL인증서를 발급받았는지를 통해 신뢰할 수 있는 사이트인지를 보장

>> SSL 통신에 사용할 공개키를 클라이언트(브라우저)에게 제공한다.

 

 

6. SSL MITM

- SSL Handshaking(동작과정): Client Certificate Request는 중요한 것이 아니면 전송되지 않고, 서버에서 설정 안하면 Request 하지 않는다. 공개키로 세션키를 암호화하고 세션키로 데이터를 암호화 시켜서 Server에게 전달한다.

 

- SSL MITM Attack

>> 취약점: 암호화를 해서 보내지만 중간자 공격으로 공격자가 조작한다면 사용자의 정보를 받아올 수 있다.

>> 공격원리: Symmetric Cryptography를 사용함으로 키 동기화 과정이 필요하다. 키 동기화 방식은 Key Wrapping 방식을 사용한다. 공개키를 인증하기 위해 인증서를 사용한다.

 

 

7. SSL Strip

- 정의: 중간자 공격을 통해 HTTPS 통신을 HTTP로 변경하는 행위를 말한다. SSL 통신을 하고 있는 네트워크 상에서 SSL 암호 프로토콜을 사용하지 못하도록 평문으로 전송되는 HTTP 프로토콜을 바꾸어서 전송하는 공격기법이다. 공격이 시작되면 http://로 접속하게 된다.

- 공격방법: 로그인을 할 때, 서버는 SSL 통신이 이루어질 수 있도록 HTTPS로 사용자를 유도한다. 공격자는 서버로부터 전달받은 URL을 HTTPS가 아닌 HTTP로 변조하여 사용자에게 전달한다. 결국 사용자는 HTTP를 통해 로그인을 하게 되고 공격자가 사용자의 계정정보를 Sniffing 할 수 있다.

 

 

8. SSL/TLS 모니터링 방안(관제입장)

운영하는 웹사이트에 대해서 지속적으로 정상적인 접속 가능 상태를 유지하는지 체크하여 웹사이트 운영자에게 알림을 제공해야 한다. 알림을 통하여, 웹사이트 운영자는 자신이 운영하는 웹사이트의 보안상 이상 유무를 최단 시간 내에 확인 및 조치를 취해야 한다.

 

 

 

참고

https://galid1.tistory.com/338 -> 대칭키/비대칭키

https://gaeko-security-hack.tistory.com/123 ->대칭키/비대칭키

https://kimdongwook.tistory.com/entry/%EC%95%94%ED%98%B8%ED%95%99-%EA%B8%B0%EC%B4%88-1

-> 키 동기화 방식

https://www.crocus.co.kr/1233 -> 키 동기화 방식

https://m.blog.naver.com/PostView.nhn?blogId=kookh1&logNo=120188828510&proxyReferer=https:%2F%2Fwww.google.com%2F -> 대칭키 취약점

https://medium.com/@jang.wangsu/x-509-%EA%B3%B5%EC%9D%B8%EC%9D%B8%EC%A6%9D%EC%84%9C-ca-%EC%8B%9C%EA%B7%B8%EB%8B%88%EC%B2%98-%EA%B0%9C%EC%9D%B8%ED%82%A4-%EA%B3%B5%EA%B0%9C%ED%82%A4-%EC%9D%B8%EC%A6%9D%EC%84%9C-ae0609786d67 -> X.509

http://www.ktword.co.kr/abbr_view.php?m_temp1=1957 -> SSL/TLS

https://victorydntmd.tistory.com/95-> HTTPS

https://wayhome25.github.io/cs/2018/03/11/ssl-https/  -> HTTPS

https://kimdongwook.tistory.com/entry/SSL-MITM -> SSL MITM

https://m.blog.naver.com/lsh5601/220124860996 -> SSL MITM

http://blog.naver.com/skinfosec2000/220601267742  -> SSL Strip