67. SSL/TLS 인증서 및 통신 구간 암호화 취약점 감리

⚠️ 이 문서는 웹 브라우저나 스마트폰 앱이 서버와 통신할 때, 중간에서 해커가 데이터를 가로채서(Sniffing) 고객의 비밀번호나 금융 정보를 훔쳐보지 못하도록 모든 통신 구간에 필수적으로 적용해야 하는 SSL/TLS 인증서의 유효성과 암호화 수준의 적정성을 점검하는 핵심 보안 감리 지침을 다룹니다.

핵심 인사이트 (3줄 요약)

  1. 본질: 인터넷이라는 투명한 유리관을, 내용물이 보이지 않는 두꺼운 검은색 철제 파이프(HTTPS/TLS 터널)로 교체하여 데이터를 전송하는 행위가 제대로 구현되었는지 기술적으로 입증하는 것이다.
  2. 가치: 개인정보보호법 및 ISMS-P 인증에서 '고유식별정보(주민번호), 비밀번호, 바이오 정보'를 송수신할 때는 반드시 안전한 암호화 통신을 적용하도록 법으로 강제하고 있으며, 위반 시 서비스 중단 및 과태료 대상이 된다.
  3. 기술 체계: 단순히 HTTPS를 켰다고 끝나는 것이 아니라, 낡고 뚫린 프로토콜(SSL v3.0, TLS 1.0, 1.1)을 서버 설정에서 완벽히 비활성화하고 오직 TLS 1.2 이상만을 강제하도록(Downgrade 공격 방어) 웹 서버 환경설정을 점검한다.

Ⅰ. 통신 구간 평문(Plaintext) 전송의 공포

비밀번호를 해시 암호화해서 DB에 잘 저장했더라도, 가는 길이 평문이면 헛수고다.

  1. 스니핑 (Sniffing) 공격:
    • HTTP 통신은 데이터를 평문으로 날린다. 카페의 공용 와이파이를 쓸 때, 해커가 와이파이 공유기 근처에서 무료 패킷 캡처 도구(Wireshark 등)만 켜놓으면 당신이 입력하는 아이디와 비밀번호가 화면에 그대로 영문자로 뜬다.
  2. 법적 의무 사항:
    • 감리인은 시스템의 로그인 화면, 회원가입 화면, 결제 화면 등 개인정보가 단 한 건이라도 날아가는 폼(Form)의 action URLhttp://로 시작하는지 https://로 시작하는지 소스코드 레벨에서 샅샅이 뒤져 적발해 낸다.
  3. HTTP 80번 포트 리다이렉션:
    • 사용자가 주소창에 무심코 http://www.bank.com을 치고 들어왔을 때, 서버가 이를 허용하면 안 된다. 감리인은 시스템이 즉각 HTTP 301/302 Redirect를 통해 강제로 https:// (포트 443)로 전환시키는지 점검한다.

📢 섹션 요약 비유: 현금 10억 원(비밀번호)을 은행 금고(DB)에 완벽하게 보관할 준비를 해놓고, 정작 집에서 은행까지 현금을 가져올 때는 투명한 비닐봉지(HTTP)에 담아 오토바이를 타고 오는 멍청한 짓을 막기 위해, 반드시 무장 현금 수송 차량(HTTPS)을 이용하도록 강제하는 법률적 통제입니다.


Ⅱ. 인증서의 유효성과 취약한 알고리즘 점검

자물쇠를 채웠더라도 자물쇠가 녹슬어 있으면 의미가 없다.

  1. 공인된 CA(인증기관) 및 유효기간 점검:
    • 개발 편의를 위해 발급한 '사설 인증서(Self-signed Certificate)'가 운영 서버에 그대로 남아있는지 검사한다. 브라우저가 "안전하지 않은 연결"이라는 경고를 띄우면 사용자는 피싱 사이트로 오해하고 이탈한다.
    • 또한, 인증서의 만료일(Expiration Date)이 지나지 않았는지, 혹은 배포 직전에 갱신 주기가 짧은 인증서(Let's Encrypt 등)의 자동 갱신 스크립트가 잘 도는지 점검한다.
  2. 낡은 프로토콜의 비활성화 (POODLE, BEAST 공격 방어):
    • SSL v2, v3와 TLS 1.0, 1.1은 이미 수학적 암호 체계가 해커들에게 박살(크랙)난 지 오래된 낡은 프로토콜이다.
    • 감리인은 Nginx, Apache, Tomcat 같은 웹 서버의 ssl_protocols 설정 파일을 열어, 이 낡은 프로토콜들이 주석 처리되거나 명시적으로 비활성화되어 있고 TLS 1.2와 TLS 1.3만 허용되어 있는지 확인한다.

📢 섹션 요약 비유: 현금 수송 차량을 샀더라도, 문짝 자물쇠가 30년 전 동네 철물점에서 산 싸구려(SSL 3.0)라면 해커가 철사 하나로 3초 만에 열어버립니다. 감리인은 그 낡은 자물쇠를 완전히 폐기하고, 최신 티타늄 전자 잠금장치(TLS 1.3)만 쓰도록 차량 옵션을 직접 세팅했는지 검사하는 자동차 정비 검사관입니다.


Ⅲ. HSTS와 중간자 공격 (MitM) 방어 감리

해커가 수송 차량 자체를 빼돌리려는 시도를 막아야 한다.

  1. 다운그레이드 공격 (Downgrade Attack):
    • 해커가 중간에 끼어들어(MitM), 클라이언트와 서버 양쪽을 속여 "나 구형 컴퓨터라 TLS 1.2 지원 안 되는데 평문(HTTP)이나 낡은 SSL 3.0으로 통신하자"고 협상을 강제하여 암호를 풀어버리는 공격이다.
  2. HSTS (HTTP Strict Transport Security) 헤더 점검:
    • 감리인은 서버의 HTTP 응답 헤더에 Strict-Transport-Security 구문이 포함되어 있는지 확인한다.
    • 이 헤더가 브라우저에 한 번 캐싱되면, 브라우저는 앞으로 1년(max-age) 동안 이 사이트 접속 시 **"절대로 HTTP 통신은 시도하지도 않고 무조건 HTTPS로만 직행"**하게 되며, 해커가 다운그레이드를 시도해도 브라우저가 통신 자체를 거부해 버린다.
  3. 오픈 API 및 모바일 앱 통신 점검:
    • 웹 브라우저뿐만 아니라, 스마트폰 앱 안에서 백엔드 서버로 쏘는 REST API 통신(Retrofit, Alamofire 등) 역시 평문을 쓰지 않고 TLS를 탔는지 모바일 패킷 프록시(Burp Suite 등) 도구를 이용해 실증 테스트를 수행한다.

📢 섹션 요약 비유: HSTS는 현금 수송 기사(웹 브라우저)에게 "앞으로 이 은행(서버)에 갈 때는 무조건 터널(HTTPS)로만 가고, 중간에 누군가 길이 막혔다며 일반 도로(HTTP)로 우회하라고 지시해도 절대 그 말을 믿지 말고 차를 세워라"라고 뇌에 깊숙이 세뇌(헤더 설정)시켜 납치를 원천 차단하는 최강의 세뇌 기법입니다.