SSL/TLS와 암호에 대한 개념과 원리에서 빠지지 않는 항목이 있는데 바로 PFS (Perfect Foward Secrecy) 입니다. SSL/TLS의 암호화 슈트 (Cipher Suite) 나 IPSEC VPN의 암호 알고리즘을 선택 할 때 PFS라는 항목은 항상 우리앞에 노출됩니다. no PFS라는 항목도 있구요.

  1. PFS가 하는 역활은 어떻게 되며
  2. IPSEC VPN 등을 설정 할 때, DH Group (Diffie Hellman Group) 에서 no-pfs라는 옵션이 왜 제공되는지. 이것은 왜 하필 DH Group 에 포함되어 있는지

알아보도록 하죠~

 

PFS (Perfect Forward Secrecy) 의 원리와 목적

TLS/SSL을 통해서 대칭키를 교환하고 암호화 하는 과정은 암호화 슈트 (Cipher Suite) 라는 항목에 정의되어 있습니다. 일반적으로 우리가 암호화를 진행 할 때, 암호화 슈트 (Cipher Suite)에서 꼭 확인해야 할 요소가 있는데 바로 PFS 입니다.

암호화 된 암호문이 누군가를 통하여 도감청 및 암호문 저장이 진행되고 있다고 가정 합시다. 이런 상황에서 서버/클라이언트간 사용하던 비밀키가 노출이 된다면 공격자는 이 비밀키를 이용하여 기존에 저장된 암호문을 모두 해독해 버릴 수 있을 것입니다. PFS는 이런식으로 비밀키가 노출되었을 경우에도 기존 암호문을 노출된 비밀키로 해독 할 수 없도록 해주며, 때문에 PFS의 적용여부가 주요한 이슈가 되는 것이지요.

TLS/SSL 은 서버/클라이언트간 비밀키를 이용하여 암호문을 송수신 하게 되는데, 이 때 이 비밀키를 가지고 해당 서버와 클라이언트(브라우저) 만 알고 있는 “세션 키” 를 만듭니다. 이 때 PFS를 사용하게 되면 서버가 생성한 세션키의 수명이 굉장히 짧아집니다. 쉽게 말해 세션키를 일정시간에 따라 지속적으로 변경하게 됩니다. 이 때 TLS/SSL을 해독 할 수 있는 비밀키를 해커가 얻는다고 가정했을 때 이 비밀키로 특정 과거시점의 세션키를 얻을 수 없다면 과거의 기록된 암호화된 데이터는 영구적으로 보호 받을 수 있습니다. 이를 PFS라고 이야기 합니다. 

보시다시피 암호화 키를 교환하기 위한 알고리즘은 ECDHE (Elliptic Curve 및 Ephermeral 을 지원하는 디피 헬만 (Diffie Hellman) 방식) 만 PFS 특성을 지원하고 있음을 알 수 있습니다. Ephermeral 이란 DH단계에서 도출되는 키를 필요한 특정 암호화 작업이 끝나면 파기시키고 필요 할 때 다시 새로운 키를 만드는 특성 입니다. DH가 기지는 키를 역산 할 수 없는 속성과 Ephermeral 이 지원하는 새로운 키를 주기적으로 만드는 특성이 바로 PFS를 만드는 성향인 것이지요.

디피 헬만 (Diffie Hellman) 키 교환 알고리즘은 기본적으로 PFS성향을 지니게 되는데 (보통 DH 알고리즘 자체가 PFS 성향을 지원하다고 하죠) 이는 rsec.kr 의 포스팅 디피 헬만 키 (Diffie-Hellman Key) 를 2048 bit 로 바꿔야 하는 이유 를 참고하시기 바랍니다. 

 

결론

SSL/TLS 암호화 통신을 목적으로 서버나 시스템을 구축 하게 될 때, 도감청이 가능하고 또 비밀키가 노출 되었을 때 과거의 데이터를 보안성을 보장하는 목적으로 PFS는 필수로 적용되어야 합니다. 따라서 SSL/TLS 기반 웹사이트를 구축 할 때는 PFS가 지원되는 Cipher Suite를 사용하고 (옛날 브라우저와 OS를 지원하지 않을꺼라는 가정하에) IPSEC VPN 등을 구축 할 때도 no-pfs 옵션은 사용하지 않는 것이 권장됩니다.

하지만 이는 서버/클라이언트간 암호화 통신이 잘 이루어져 있으며, 중간에 Man in the Middle 공격같은 SSL/TLS 공격이 이루어지지 않는다는 가정하에 보안성이 보장되는 것입니다. 만약 SSL Forward Proxy 기반의 보안장비나 해커가 세션키를 탈취하고 해독한다면 실시간으로 감청은 가능하겠죠?

팔로알토 방화벽 등 여러 SSL Decypted 를 지원하는 솔루션들이 PFS를 지원하는 암호화 세션도 복호화가 가능하도록 개선되고 있습니다. 따라서 PFS가 만병통치약은 아니겠지만 그래도 최대한의 보안성을 향상시키는 것이 시스템과 인프라를 운영 할 때 항시 권장 될 것입니다 🙂

감사합니다.