Nubes et Stella

Openssl 본문

Knowledge/Security

Openssl

SeongYeong Han 2023. 9. 30. 19:55

01. Openssl이란?

Openssl은 현재 널리 사용되는 암호화 알고리즘을 대부분 지원하는 C언어 기반 암호화 라이브러리이다. 현재 TTL/SSL 프로토콜과 관련된 대부분의 기능을 지원하고 있으며, 사실상의 표준으로 봐도 무방하다.

 

현재 서버-클라이언트 통신해서 주로 사용되는 HTTPS 통신 역시 http프로토콜에 SSL로 보안을 강화한 것이기에, 많이 쓰여지고 있는 라이브러리이다.

 

현재 Openssl에서 지원하는 암호화 알고리즘 종류는 아래와 같다. (출처. 나무위키)

 

 

 

02. 하트블리드(Heart bleed) 취약점

Openssl 개념을 다루는데에 있어서, 하트블리드 취약점을 언급하지 않을 수 없다. 하트 블리드 취약점은 2014년 스웨덴의 보안회사인 코데노미콘에서 발표한 Openssl 취약점이다.

 

하트 블리드의 취약점을 잘 묘사한 그림이 있어서 아래와 같이 첨부한다.

클라이언트에서 서버에 **하트비트 패킷을 전달하는데, 이 때 실제 보내는 패킷의 크기과 패킷에 명시한 패킷의 크기가 다를 경우 발생한다.

 

예를 들어 실제로 1바이트를 보내면서 64바이트를 보냈다고 서버에 전달하면, 서버는 실제 받은건 1바이트지만 패킷에 명시된 64바이트를 클라이언트에게 보낼려고 하게 된다. 이 때 나머지 바이트를 채우기 위해 메모리에 저장된 다른 데이터를 끌고 와서 클라이언트에게 전달하게 된다. 

(**하트비트 패킷 : heartbeat 패킷의 목적은, 송신 응용 프로그램이 잘 돌아가고 있음을 수신자에게 알려주는 패킷이다.)

 

단순히 위 원리만 보면 버그로 생각할 수도 있지만, 서버에서 클라이언트에게 전달된 나머지 데이터가 패스워드와 같은 기밀 정보라면 큰 문제가 되기 때문이다. 이 원리를 이용하여 request를 지속적으로 보내게 되면 언젠가는 단순 더미데이터 뿐만 아니라, 보안과 관련된 중요 데이터가 노출 될 수도 있다.

'Knowledge > Security' 카테고리의 다른 글

SSL 인증서  (0) 2023.09.30