이메일 보안
이메일은 왜 취약한가
이메일 프로토콜(SMTP)은 1980년대 초에 설계되었다. 당시 인터넷은 학술 연구용으로, 사용자들이 서로 신뢰하는 작은 커뮤니티였다. 보안은 고려 대상이 아니었다.
그 결과 기본 SMTP는 평문으로 전송된다. 네트워크를 지나가는 이메일을 누구나 읽을 수 있다. 또한 발신자 인증이 없다. 누구든 From 헤더를 조작해서 다른 사람인 척 이메일을 보낼 수 있다.
이런 취약점을 악용한 피싱, 스팸, 비즈니스 이메일 사기(BEC)가 현재도 심각한 문제다.
이메일 보안의 세 가지 목표
안전한 이메일 통신을 위해서는 세 가지가 필요하다.
기밀성(Confidentiality)은 의도한 수신자만 이메일 내용을 읽을 수 있어야 한다는 것이다. 무결성(Integrity)은 이메일이 전송 중에 변조되지 않았음을 보장한다. 인증(Authentication)은 발신자가 정말 그 사람인지 확인할 수 있어야 한다.
이메일 암호화: PGP와 S/MIME
이메일 본문을 암호화하는 두 가지 주요 방식이 있다.
PGP(Pretty Good Privacy)
Phil Zimmermann이 1991년 개발한 암호화 소프트웨어다. 공개키 암호화와 대칭키 암호화를 조합해서 사용한다.
동작 방식은 다음과 같다. 먼저 임의의 대칭키(세션 키)를 생성해서 이메일 본문을 암호화한다. 그 다음 수신자의 공개키로 세션 키를 암호화한다. 마지막으로 암호화된 본문과 암호화된 세션 키를 함께 전송한다.
왜 이렇게 복잡하게 할까? 공개키 암호화는 연산이 느리다. 긴 이메일을 직접 공개키로 암호화하면 시간이 오래 걸린다. 대신 빠른 대칭키로 본문을 암호화하고, 짧은 세션 키만 공개키로 암호화하면 효율적이다.
PGP는 신뢰의 그물(Web of Trust) 모델을 사용한다. 중앙 CA 없이 사용자들이 서로의 공개키에 서명해서 신뢰를 확장한다.
S/MIME(Secure/Multipurpose Internet Mail Extensions)
기업 환경에서 더 많이 사용되는 표준이다. PGP와 기술적으로 유사하지만, CA 기반의 인증서를 사용한다.
이메일 클라이언트에 기본적으로 지원되는 경우가 많다. Outlook, Thunderbird 등에서 S/MIME을 설정하면 자동으로 암호화/복호화가 이루어진다.
디지털 서명으로 발신자 인증
암호화만으로는 발신자를 확인할 수 없다. 디지털 서명이 필요하다.
발신자는 이메일 본문의 해시를 계산하고, 자신의 개인키로 해시를 암호화해서 서명을 생성한다. 수신자는 발신자의 공개키로 서명을 복호화하고, 직접 계산한 해시와 비교해서 일치하면 발신자가 진짜이며 내용이 변조되지 않았음을 확인한다.
암호화와 서명을 함께 사용하면 기밀성, 무결성, 인증을 모두 달성할 수 있다.
현대 이메일 보안 기술
PGP와 S/MIME은 사용자가 직접 설정해야 해서 보급률이 낮다. 대신 인프라 수준에서 이메일 보안을 강화하는 기술들이 도입되었다.
SPF(Sender Policy Framework)
도메인 소유자가 "이 도메인에서 이메일을 보낼 수 있는 서버" 목록을 DNS에 등록한다. 수신 서버는 이메일이 온 서버가 목록에 있는지 확인한다. 목록에 없으면 스푸핑으로 판단할 수 있다.
DKIM(DomainKeys Identified Mail)
발신 서버가 이메일에 디지털 서명을 추가한다. 공개키는 DNS에 게시된다. 수신 서버가 서명을 검증해서 이메일이 실제로 해당 도메인에서 왔는지 확인한다.
DMARC(Domain-based Message Authentication, Reporting & Conformance)
SPF와 DKIM을 조합해서 사용하는 정책 프레임워크다. 인증에 실패한 이메일을 어떻게 처리할지(거부, 격리, 아무것도 안 함) 도메인 소유자가 지정할 수 있다.
전송 계층 보안: STARTTLS
PGP/S/MIME은 종단 간 암호화다. 발신자와 수신자 사이의 모든 구간에서 이메일이 암호화된다.
STARTTLS는 전송 구간 암호화다. 메일 서버 간의 통신을 TLS로 암호화한다. 설정이 간단하고 투명하게 동작하지만, 서버에서는 이메일이 평문으로 저장된다.
현재 대부분의 메일 서버가 STARTTLS를 지원한다. Gmail은 2020년 기준 수신 이메일의 90% 이상이 TLS로 암호화되어 전송된다고 보고했다.
실무적 고려사항
어떤 보안 방식을 선택할지는 상황에 따라 다르다.
일반 사용자는 Gmail, Outlook 같은 대형 이메일 서비스를 사용하면 STARTTLS, SPF, DKIM, DMARC가 자동으로 적용된다. 추가 설정 없이 기본적인 보안을 얻을 수 있다.
기업 환경에서 민감한 정보를 주고받는다면 S/MIME을 도입하는 것이 좋다. 인증서 관리 부담이 있지만, 이메일 클라이언트와의 통합이 잘 되어 있다.
최고 수준의 보안이 필요하면(기자, 활동가, 내부고발자 등) PGP를 사용한다. 설정이 복잡하고 상대방도 PGP를 써야 하지만, 서버를 신뢰하지 않아도 되는 종단 간 암호화를 제공한다.