반응형

0. 들어가며


이메일은 기업과 개인 모두에게 핵심적인 커뮤니케이션 도구입니다. 중요한 비즈니스 거래, 개인 정보, 금융 거래 등이 이메일을 통해 주고받아지며, 이 과정에서 이메일의 무결성과 신뢰성이 보장되어야 합니다.

 

그러나 이메일은 오랜 시간 동안 스팸, 피싱, 도메인 위변조, 스푸핑 등 다양한 보안 위협에 노출되어 왔습니다. 예를 들어, 악의적인 공격자가 실제 도메인 소유자를 가장하여 이메일을 발송하면, 수신자는 이를 진짜 이메일로 오인하여 민감한 정보를 노출할 수 있습니다.

 

이러한 보안 위협을 막기 위해 이메일 인증 기술인 SPF, DKIM, DMARC가 도입되었습니다. 이 글에서는 이메일 도메인 보안의 핵심 기술인 SPF, DKIM, DMARC의 기본 개념, 동작 원리, 그리고 각각의 기술이 악의적인 공격을 어떻게 방어할 수 있는지를 살펴보겠습니다.

 

1. 이메일 보안의 필요성과 위협


1.1 이메일 보안 위협

이메일은 중요한 정보를 포함하고 있으므로, 공격자들은 이를 목표로 다양한 보안 공격을 시도합니다. 주요 위협에는 다음과 같은 것들이 있습니다.

 

스푸핑 및 도메인 위변조

  • 공격자는 발신자 주소를 조작하여, 자신이 아닌 다른 도메인 소유자의 이메일처럼 보이도록 할 수 있습니다. 이를 통해 피싱 공격이나 스팸 메일이 발생하게 됩니다. 예를 들어, support@google.com과 같이 신뢰받는 도메인의 이메일 주소를 도용하여 사용자의 금융 정보를 탈취하는 경우가 발생합니다.

피싱 공격

  • 공격자는 합법적인 이메일처럼 보이게 만들어, 수신자가 악성 링크를 클릭하거나 민감한 정보를 입력하도록 유도합니다. 피싱 메일은 종종 위조된 도메인 정보를 사용하기 때문에, 수신 서버가 이를 검증할 수 있어야 합니다.

중간자 공격(MITM)

  • 네트워크 상에서 이메일이 전송되는 동안 공격자가 데이터를 가로채고, 변경하거나 도청하는 경우입니다. 평문으로 전송된 이메일은 중간자 공격에 취약합니다.

이러한 위협에 대응하기 위해, 수신 서버는 이메일 발신 서버가 실제로 도메인 소유자의 허가를 받은 서버에서 발송되었고, 전송 도중 내용이 변경되지 않았음을 확인해야 합니다.

 

1.2 이메일 인증 기술의 기본 역할

이를 위해 도입된 주요 이메일 인증 기술은 다음과 같습니다.

 

SPF (Sender Policy Framework):

  • 도메인 소유자가 자신이 이메일을 보낼 수 있는 서버의 IP 주소를 DNS에 등록하여, 수신 서버가 발신 IP를 검증할 수 있도록 합니다.

DKIM (DomainKeys Identified Mail):

  • 이메일에 디지털 서명을 추가하여, 전송 도중 이메일 내용이 변조되지 않았음을 보증합니다.

DMARC (Domain-based Message Authentication, Reporting & Conformance):

  • SPF와 DKIM 검사 결과를 종합해, 이메일이 인증에 실패할 경우 수신 서버가 취할 조치를 정의합니다.

 

이 기술들은 각각 독립적으로 작동하지만, 함께 사용될 때 이메일의 진위와 무결성을 효과적으로 보장하는 강력한 보안 체계를 형성합니다.

 

2. SPF (Sender Policy Framework)


2.1 SPF의 개념과 작동 원리

SPF는 도메인 소유자가 자신이 이메일을 보낼 수 있는 서버의 IP 주소를 미리 DNS의 TXT 레코드에 등록하는 방식입니다. 예를 들어, "google.com" 도메인의 SPF 레코드는 보통 다음과 같이 구성됩니다.

v=spf1 include:_spf.google.com ~all
  • v=spf1: SPF의 버전을 나타냅니다.
  • include:_spf.google.com: 구글이 이메일 발송에 사용하는 IP 주소 범위를 포함합니다.
  • ~all: 지정되지 않은 서버에서 발송된 이메일에 대해 soft fail(유예 처리)을 적용합니다.

 

이 방식은 공격자가 다른 서버를 이용하여 이메일을 발송할 경우, 수신 서버가 DNS를 통해 해당 도메인의 SPF 레코드를 조회함으로써, 실제 발신 IP가 허용된 범위에 있는지 확인할 수 있도록 합니다.

 

2.2 SPF가 필요한 이유와 방어 메커니즘

SPF는 이메일 스푸핑과 도메인 위변조를 방지하는 첫 번째 방어선입니다. 공격자는 발신자 주소를 위조하여, 사용자가 신뢰하는 도메인에서 이메일이 발송된 것처럼 보이게 할 수 있습니다. 그러나, 수신 서버가 SPF 검증을 수행하면, 이메일이 실제로 도메인 소유자가 지정한 서버에서 발송된 것인지 확인할 수 있습니다.

  • 공격 시나리오: 만약 공격자가 "google.com" 도메인을 도용해 이메일을 보낸다면, 수신 서버는 "google.com"의 SPF 레코드를 조회하여 발신 IP가 허용된 목록에 있는지 확인합니다. 허용되지 않은 IP에서 발송되었다면, SPF 검증이 실패하고, 이메일은 스팸으로 분류되거나 차단됩니다.

이러한 방식으로 SPF는 이메일 발신자의 진위를 검증하고, 스푸핑 공격을 효과적으로 방어할 수 있습니다.

 

2.3 SPF 검증 과정

수신 서버는 SMTP 세션 중 발신자의 MAIL FROM에 포함된 도메인을 기준으로 DNS에서 SPF 레코드를 조회합니다. 그리고, 실제 이메일을 전송한 서버의 IP 주소와 SPF 레코드에 지정된 허용 IP 목록을 비교합니다. 이 과정은 다음과 같이 진행됩니다.

  1. DNS TXT 레코드 조회
    • SMTP 세션 중, 수신 서버는 MAIL FROM 도메인에 대한 SPF 정보를 가져오기 위해 DNS에 질의합니다.
  2. IP 주소 확인
    • 발신 IP 주소가 SPF 레코드에 명시된 범위에 포함되어 있는지 확인합니다.
  3. 결과 판단:
    • IP가 허용 범위에 포함되어 있으면 SPF 인증이 성공하고, 그렇지 않으면 인증 실패로 처리되어 이메일이 스팸으로 분류되거나 거부됩니다.

 

2.4 구글 도메인을 통한 SPF 예제

터미널에서 구글 도메인의 SPF 레코드를 확인하는 예제를 살펴보겠습니다. 다음 명령어를 실행합니다.

dig google.com TXT

 

dig _spf.google.com TXT

 

dig _netblocks.google.com TXT

 

SPF 레코드를 따라가본 결과 마지막에 spf1 ip4:{ip주소,…} 로 되어있는 것을 확인할 수 있고, 구글의 SPF 설정이 올바르게 구성되어 있음을 확인할 수 있습니다. 이메일 수신 측은 이렇게 SPF 레코드를 확인한 뒤 발신자의 IP 주소와 비교하여 SPF 위반 여부를 확인합니다. 이를 위반할 경우 이메일이 스푸핑으로 판단되어 차단될 가능성이 있음을 알 수 있습니다.

 

3. DKIM (DomainKeys Identified Mail)


3.1 DKIM의 개념과 기본 원리

DKIM은 이메일 발송 시, 이메일의 특정 부분(주로 헤더와 본문)에 대해 디지털 서명을 추가하는 기술입니다. 발신 서버는 이메일 내용을 해시한 후, 자신의 비밀 개인 키로 이 해시 값을 암호화한 디지털 서명을 생성합니다. 이 서명은 이메일의 DKIM-Signature 헤더에 포함되어 수신 서버로 전송됩니다.

 

DKIM 서명에는 여러 가지 정보가 포함됩니다.

  • d=도메인: 서명이 적용된 도메인 정보를 나타내며, 이는 발신 도메인을 확인하는 데 사용됩니다.
  • s=선택자(selector): DNS에서 공개 키를 찾기 위한 식별자입니다. 일반적으로 "default"와 같은 이름이 사용됩니다.
  • bh=본문 해시: 이메일 본문에 대한 해시 값을 Base64로 인코딩한 값입니다.
  • b=서명 값: 발신 서버의 개인 키로 암호화된 해시 값입니다.

 

3.2 DKIM의 필요성과 방어 메커니즘

DKIM은 이메일 내용의 무결성을 보장하는 중요한 기술입니다. 공격자가 이메일 전송 도중 내용을 변조하면, 수신 서버는 DKIM 서명을 복호화한 후 재계산한 해시 값과 비교하여 변조 여부를 감지할 수 있습니다. 이 과정이 성공하면, 이메일은 전송 도중 변경되지 않았다는 것을 보증할 수 있습니다.

  • 공격 시나리오: 만약 공격자가 이메일 본문을 수정한다면, 수신 서버는 재계산한 해시 값과 DKIM-Signature에 포함된 해시 값이 일치하지 않음을 발견할 수 있습니다. 이 경우, 이메일의 무결성이 깨졌다고 판단하여, 해당 이메일을 스팸으로 처리하거나 거부할 수 있습니다.

 

3.3 DKIM 검증 과정

수신 서버는 이메일의 DKIM-Signature 헤더에서 발신 도메인(d)과 선택자(s) 정보를 추출합니다. 그런 다음, DNS에서 selector._domainkey.domain.com 형태의 공개 키를 조회하여, 이 공개 키로 서명을 복호화합니다. 복호화된 값과, 이메일 본문 및 헤더를 해시한 값이 일치하면 DKIM 검증이 성공한 것으로 판단합니다.

 

3.4 구글 도메인을 통한 DKIM 예제

구글 도메인의 DKIM 설정을 확인하기 위해 터미널에서 다음 명령어를 실행합니다.

dig {지정한 selector}._domainkey.google.com TXT

 

출력 결과에 DKIM 공개 키가 포함된 TXT 레코드가 나타나면, 구글의 DKIM 서명이 정상적으로 구성되어 있음을 알 수 있습니다. 이를 통해 수신 서버는 구글의 이메일이 전송 도중 변조되지 않았음을 검증할 수 있습니다.

 

4. DMARC


4.1 DMARC의 개념과 기본 원리

DMARC는 SPF와 DKIM 검사 결과를 종합하여, 이메일의 진위와 무결성을 평가하는 정책을 정의합니다. 도메인 소유자는 DMARC 정책을 DNS TXT 레코드에 등록하며, 이를 통해 수신 서버가 이메일이 인증에 실패한 경우 어떤 조치를 취할지(예: 거부, 격리, 허용)를 결정합니다.

예를 들어, "google.com"의 DMARC 정책은 다음과 같이 설정될 수 있습니다.

v=DMARC1; p=reject; rua=mailto:reports@google.com; pct=100
  • v=DMARC1: DMARC의 버전을 나타냅니다.
  • p=reject: SPF나 DKIM 검사 결과가 실패한 이메일은 거부하도록 지시합니다.
  • rua=mailto:reports@google.com: DMARC 리포트를 받을 이메일 주소입니다.
  • pct=100: 전체 이메일의 100%에 정책을 적용함을 의미합니다.

 

5. SPF, DKIM, DMARC의 상호 보완적 역할

이제까지 설명한 SPF, DKIM, DMARC는 각각 이메일 보안을 강화하는 개별 기술이지만, 이들이 함께 사용될 때 강력한 보안 체계를 형성합니다.

5.1 기술별 역할 정리

1. SPF

이메일 발송 시, 수신 서버는 발신자의 MAIL FROM 도메인을 기준으로 DNS에서 SPF 레코드를 조회합니다. 실제 발신 IP 주소가 SPF 레코드에 명시된 허용 목록에 포함되어 있는지를 확인함으로써, 도메인 위변조 및 스푸핑 공격을 방지합니다.

 

2. DKIM

발신 서버는 이메일에 디지털 서명을 추가하여, 전송 도중 이메일 내용이 변조되지 않았음을 보증합니다. 수신 서버는 DKIM-Signature 헤더와 DNS에서 조회한 공개 키를 사용해 서명을 검증하며, 이를 통해 이메일의 무결성을 확인합니다.

 

3. DMARC

DMARC는 SPF와 DKIM 검사 결과를 종합하고, 인증 검사 결과가 불일치하면, DMARC 정책에 따라 이메일을 거부하거나 격리하는 등의 조치를 취합니다.

 

5.2 상호 보완적 작용

각 기술은 다음과 같이 상호 보완적으로 작용합니다.

  • SPF만으로는 발신 IP의 검증만 가능하지만, 이메일 본문이나 헤더의 내용 변조는 확인할 수 없습니다. DKIM은 이를 보완하여, 이메일 내용이 전송 도중 변조되지 않았음을 확인합니다.
  • DMARC는 SPF와 DKIM 검사 결과를 종합하고, 정책 위반시 어떻게 처리할 지에 대한 내용을 정의해둡니다.

이와 같이 SPF, DKIM, DMARC는 서로를 보완하며, 발신 서버와 수신 서버 간의 신뢰할 수 있는 이메일 전송을 보장합니다. 이 기술들이 효과적으로 작동하면, 공격자가 이메일을 위조하거나 변조하더라도 수신 서버는 이를 검증하여 안전한 이메일만을 사용자에게 전달할 수 있습니다.

 

'Dev.' 카테고리의 다른 글

[Redis] Redis RedLock에 대하여.  (0) 2025.03.03
[Git] Merge 전략에 대하여.  (1) 2022.12.27
복사했습니다!