이메일 발신자 인증이란?

이메일 발신자 인증 기법인 SPF, DKIM, DMARC는 내 도메인을 도용하여 스팸이나 피싱 메일을 발송하는 이메일 스푸핑(Spoofing)을 막기 위한 3대 핵심 표준 기술입니다. 이 세 가지 기술은 “발신자 IP 검증(SPF) → 메일 위변조 검증(DKIM) → 인증 실패 시 정책 결정(DMARC)” 순으로 서로 보완하며 작동합니다.

■ 3대 이메일 인증 기술 차이점 비교
구분 SPF
(Sender Policy Framework)
DKIM
(DomainKeys Identified Mail)
DMARC
(Domain-based Message Authentication,
Reporting and Conformance)
핵심 역할 “이 IP가 메일을 보낼 자격이 있는가?” “메일 내용이나 헤더가 중간에 변조되지 않았는가?” “SPF/DKIM 실패 시 메일을 어떻게 처리할 것인가?”
인증 방식 발신 서버의 IP 주소 목록 비교 메일 헤더에 전자서명(공개키 암호화) 첨부 SPF 및 DKIM 검증 결과를 종합하여 정책 적용
주요 보호 대상 도메인 무단 도용(IP 레벨) 메일 본문/헤더 위변조 및 스푸핑 브랜딩 도용, 종합적인 피싱/스팸 방지
설치 위치 DNS(TXT 레코드) DNS(TXT 레코드) + 메일 서버/솔루션 DNS(TXT 레코드)
■ 각 기술별 원리 및 기본 설정 방법
  1. SPF(Sender Policy Framework)
    • 원리: 메일 수신 서버가 메일을 받았을 때, 발신 도메인의 DNS를 조회하여 “등록된 발신 IP 목록”에 메일을 보낸 서버 IP가 포함되어 있는지 확인합니다.
    • 설정 형식:
      • 호스트 이름(Host/Name): @ (또는 빈칸)
      • 레코드 타입: TXT
      • 값(Value):
        v=spf1 ip4:211.123.45.67 include:_spf.google.com ~all
        
        • v=spf1: SPF 버전 1 사용 선언
        • ip4:211.123.45.67: 발신을 허용할 자체 서버 IP
        • include:_spf.google.com: Google Workspace 등 외부 메일 서비스의 SPF 포함
        • ~all: 목록에 없는 IP에서 온 메일은 SoftFail(스팸함 이동 권장) 처리 (-all 설정 시 HardFail/차단)
  2. DKIM(DomainKeys Identified Mail)
    • 원리: 메일 발신 서버가 비대칭키 쌍을 생성하여 비밀키(Private Key)로 메일에 전자서명을 입혀 발송합니다. 수신 서버는 DNS에 등록된 공개키(Public Key)로 이 서명을 검증하여 변조 여부를 파악합니다.
    • 설정 형식:
      • 호스트 이름(Host/Name): google._domainkey(서비스마다 고유한 선택자(Selector) 지정)
      • 레코드 타입: TXT
      • 값(Value):
        v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQ... (긴 공개키 문자열)
        
        • v=DKIM1: DKIM 버전 선언
        • k=rsa: 사용된 암호화 알고리즘 (RSA, Ed25519 등)
        • p=…: 수신 서버가 검증할 때 사용할 공개키(Public Key)
    • 작동 절차:
      1. 발신 서버: 비밀키로 서명 생성하기
        발신 서버가 메일을 보낼 때, 메일 본문 전체를 암호화하면 용량이 너무 커집니다. 그래서 메일의 주요 내용(해시값)만 추출하여 비밀키로 암호화(서명)합니다.
        [메일 헤더 일부 (From, To, Subject 등)] + [메일 본문 (Body)]
                                   │
                                   ▼
                         1. 해시 함수 (SHA-256)
                                   │
                                   ▼
                            [원본 해시값 A]
                                   │
                                   ▼
                      2. 발신 서버의 비밀키로 암호화
                                   │
                                   ▼
                             [전자 서명값]
                                   │
                                   ▼
                   3. 메일 헤더(DKIM-Signature)에 첨부하여 발송
        
        • 해시값 추출: 발신 서버는 메일의 주요 헤더(From, To, Subject 등)와 메일 본문(Body)을 하나로 묶어 SHA-256 해시 함수에 넣습니다. 그러면 메일의 고유한 지문인 [원본 해시값 A]가 생성됩니다.
        • 비밀키 암호화: 발신 서버는 자기만 가지고 있는 [DKIM 비밀키]로 이 [원본 해시값 A]를 암호화합니다. 이 암호화된 결과물이 바로 ‘전자서명’입니다.
        • DKIM 헤더 추가: 생성된 서명값을 메일 헤더의 DKIM-Signature: 항목에 포함시켜 수신 서버로 발송합니다.
      2. 수신 서버: 공개키로 검증하고 변조 여부 판단하기
        메일을 받은 수신 서버는 발신 도메인의 DNS에서 [DKIM 공개키]를 가져와 서명을 검증합니다.
        [수신된 메일 헤더 & 본문]                     [DKIM-Signature 헤더 속 서명값]
                  │                                                  │
                  ▼                                                  ▼
        1. 해시 함수 (SHA-256)                        2. DNS에서 가져온 공개키로 복호화
                  │                                                  │
                  ▼                                                  ▼
           [계산된 해시값 B]                                  [복호화된 해시값 A]
                  │                                                  │
                  └───────────────── 3. 두 해시값 비교 ──────────────┘
                                            │
                                 ┌──────────┴──────────┐
                              [일치]                [불일치]
                                 │                     │
                          ⭕ 변조 안 됨!          ❌ 메일 변조됨!
        
        • 재계산: 수신 서버는 자신이 받은 메일의 헤더와 본문을 똑같은 SHA-256 해시 함수에 넣어 [계산된 해시값 B]를 새로 만들어냅니다.
        • 복호화 (공개키 활용): 수신 서버는 DKIM-Signature 헤더에 적힌 도메인과 selector 정보를 확인하여, 발신 도메인의 DNS TXT 레코드에서 [공개키]를 조회합니다. 이 공개키로 메일 헤더에 첨부되어 온 전자서명을 복호화하여 [복호화된 해시값 A]를 확보합니다.
        • 비교 및 변조 판단: [계산된 해시값 B]와 [복호화된 해시값 A]가 일치하는지 확인합니다. 일치하면 무결성이 입증된 것이고, 불일치하면 “메일이 중간에 변조되었다”고 판단합니다.
  3. DMARC(Domain-based Message Authentication, Reporting, and Conformance)
    • 원리: 도메인의 소유자는 SPF와 DKIM 인증이 실패했을 때 수신 서버가 메일을 어떻게 처리할지(통과, 스팸, 격리, 차단) 지침을 부여하고, 인증 결과를 도메인 관리자에게 리포트로 보고받는 규칙입니다.
    • 설정 형식:
      • 호스트 이름(Host/Name): _dmarc
      • 레코드 타입: TXT
      • 값(Value):
        v=DMARC1; p=quarantine; rua=mailto:dmarc-reports@yourdomain.com; pct=100
        
        • v=DMARC1: DMARC 버전 선언
        • p=: 인증 실패 시 메일 처리 정책
          -p=none: 아무 조치 안 함 (모니터링 모드)
          -p=quarantine: 스팸함/격리소로 이동
          -p=reject: 메일 수신 자체를 즉시 거부(차단)
        • rua=mailto:…: DMARC 분석 요약 리포트를 받을 이메일 주소
        • pct=100: 정책을 적용할 메일의 비율 (100%)

You may also like...

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다