일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- Amazon VPC
- Backend
- Python
- Kubernetis
- AWS Security Hub
- DaemonSet
- Terraform state
- Amazon GuardDuty
- Amazon RDS
- taint
- classmethod
- ReplicaSet
- DevOps
- ansible
- SSL 인증서
- ConfigMap
- AWS
- Heartbleed
- deployment
- Industry Week 2023
- Terraform
- k8s
- Amazon DynamoDB
- CI CD
- Amazon Route 53
- Cognito
- mariaDB
- staticmethod
- docker
- AWS EC2
- Today
- Total
Nubes et Stella
Openssl 본문
01. Openssl이란?
Openssl은 현재 널리 사용되는 암호화 알고리즘을 대부분 지원하는 C언어 기반 암호화 라이브러리이다. 현재 TTL/SSL 프로토콜과 관련된 대부분의 기능을 지원하고 있으며, 사실상의 표준으로 봐도 무방하다.
현재 서버-클라이언트 통신해서 주로 사용되는 HTTPS 통신 역시 http프로토콜에 SSL로 보안을 강화한 것이기에, 많이 쓰여지고 있는 라이브러리이다.
현재 Openssl에서 지원하는 암호화 알고리즘 종류는 아래와 같다. (출처. 나무위키)
- 대칭키 암호: AES, Blowfish, Cmellia, ChaCha20, SEED[k], DES, 3-DES ARIA,[k] RC2, RC4, RC5, SM4
-
비대칭키 암호: RSA, DSA, DH(디피-헬만 키 교환), 타원곡선 암호, X25519, Ed25519, X448, SM2
02. 하트블리드(Heart bleed) 취약점
Openssl 개념을 다루는데에 있어서, 하트블리드 취약점을 언급하지 않을 수 없다. 하트 블리드 취약점은 2014년 스웨덴의 보안회사인 코데노미콘에서 발표한 Openssl 취약점이다.
하트 블리드의 취약점을 잘 묘사한 그림이 있어서 아래와 같이 첨부한다.
클라이언트에서 서버에 **하트비트 패킷을 전달하는데, 이 때 실제 보내는 패킷의 크기과 패킷에 명시한 패킷의 크기가 다를 경우 발생한다.
예를 들어 실제로 1바이트를 보내면서 64바이트를 보냈다고 서버에 전달하면, 서버는 실제 받은건 1바이트지만 패킷에 명시된 64바이트를 클라이언트에게 보낼려고 하게 된다. 이 때 나머지 바이트를 채우기 위해 메모리에 저장된 다른 데이터를 끌고 와서 클라이언트에게 전달하게 된다.
(**하트비트 패킷 : heartbeat 패킷의 목적은, 송신 응용 프로그램이 잘 돌아가고 있음을 수신자에게 알려주는 패킷이다.)
단순히 위 원리만 보면 버그로 생각할 수도 있지만, 서버에서 클라이언트에게 전달된 나머지 데이터가 패스워드와 같은 기밀 정보라면 큰 문제가 되기 때문이다. 이 원리를 이용하여 request를 지속적으로 보내게 되면 언젠가는 단순 더미데이터 뿐만 아니라, 보안과 관련된 중요 데이터가 노출 될 수도 있다.