DKIM(DomainKeys Identified Mail, 도메인키 인증 메일)은 SPF와 마찬가지로 메일 발신자가 발송 정보를 위장할 수 없도록 하는 기술 표준입니다. SPF가 메일의 발신자가 정상적으로 등록된 서버인지 확인해준다면, DKIM은 메일이 실제 도메인으로부터 발송되었는지 확인하여 이메일 위변조 여부를 판별합니다. SPF 자세히보기
더 간단히 설명하면 DKIM은 메일을 보내는 메일 서버에서 메일이 발송된 시점부터 메일 내용이 변경되지 않았음을 보증하는 방법인데요. 스팸 필터링 기술을 적용하고 있는 업체들은 메일 처리 프로세스에 DKIM 인증을 사용하여 스팸, 피싱, 이메일 스푸핑을 방지하고 있습니다.
DKIM 작동 원리
DKIM은 메일 변조를 방지하기 위한 ‘DKIM-Signature’를 사용합니다. 이메일이 발송되면 발신자 측의 메일 서버에서는 메시지 내용과 발신자의 Private Key를 기반으로 DKIM-Signature를 생성하며, 이는 발송되는 메일 헤더에 첨부됩니다.
DKIM-Signature가 첨부된 메일을 수신한 수신 측 메일 서버는 서명을 해독할 Public Key를 DNS 서버에서 확인합니다. Public Key를 사용하면 DKIM-Signature가 Private Key를 사용한 실제 도메인 소유자로부터 발송된 메일인지 알 수 있습니다. 만약 메시지 내용이 변경된 경우 서명의 유효성에 대한 검사 결과가 ‘DKIM Fail’로 표시되며, 수신자의 메일 서버가 해당 메일을 스팸으로 차단할 수 있습니다.
다음은 DKIM-Signature의 예시입니다. DKIM을 사용하려면 DKIM-Signature를 생성하여 도메인 DNS TXT 레코드를 업데이트해야 합니다.
DKIM-Signature: v=1; a=rsa-sha256; d=example.net; s=brisbane;c=relaxed/simple; q=dns/txt; l=1234; t=1117574938; x=1118006938; h=from:to:subject:date:keywords:keywords; bh=MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTI=; b=dzdVyOfAKCdLXdJOc9G2q8LoXSlEniSbav+yuU4zGeeruD00lszZVoG4ZHRNiYzR
위 서명에서 v는 버전을, a는 서명 알고리즘을, d는 도메인을 의미합니다. 이처럼 DKIM-Signature는 “tag=value” 형태로 구성되어 있습니다. 메일 수신자는 이 정보를 토대로 헤더의 해시 값을 해독하고, 메일 본문의 해시 값을 다시 계산합니다. 두 값이 일치하면 전송 중에 메일이 변조되지 않았음을 의미합니다.
DKIM-Signature Tag
Tag | Description |
v | Version |
a | Signing Algorithm |
d | Domain |
s | Selector |
c | Canonicalization algorithm for the header and body |
q | Default query method |
l | Length of the canonicalized part of the signed message body |
t | Signature timestamp |
x | Expiration time |
h | List of signed header fields (repeated for fields that occur multiple times |
직접 DKIM-Signature를 생성하길 원하거나, DKIM의 원리 및 프로토콜 요소에 대한 자세한 내용이 궁금하다면 다음 공식 사이트에서 더 자세한 내용을 확인할 수 있습니다.