. SMTP의 보안 시스템 :: SPF, DKIM, DMARC 란?
본문 바로가기
프로그래밍 공부/Web

SMTP의 보안 시스템 :: SPF, DKIM, DMARC 란?

by 불냥이_ 2021. 6. 7.

회사에서 SPF, DKIM, DMARC 에 대한 이야기가 나왔다.

나는 개찐따였기때문에 하나도 모르고 그냥 그런갑다하고 이야기만 들었다.

그래도 모르고 지나갈 수는 없기에 한번 정리해보고자 한다. 

 

 

https://docs.sophos.com/central/Customer/help/ko-kr/central/Customer/concepts/EmailSenderChecks.html

 

보낸 사람 확인의 작동 원리

보낸 사람 확인은 이메일 출처의 인증을 확인하는 데 사용됩니다. 이 항목은 Sophos Email이 불법 이메일로부터 사용자를 보호하는 데 사용하는 보낸 사람 확인 유형을 지정합니다. 주 이 항목은 보

docs.sophos.com

 

 

예를 들어, 구글 서비스의 비밀번호를 변경하기 위해서 IP : 111.111.111.111 로부터 메일이 왔다고 하자. 메일의 발송인에 From : abc@google.com 라고 표시되어 있다고 한다. 그런데 이 메일이 진짜 구글로부터 온 것일까? 어떤 해커가 사기칠려고 구글로 위장해서 메일을 보낸 것이라면 어떻게 이를 알 것인가?

 

 이를 확인 할 수 있는 것이 SPF, DKIM, DMARC를 통한 검증이다. 

 

 

1. SPF (Sender Policy Framework)

https://en.wikipedia.org/wiki/Sender_Policy_Framework

 

Sender Policy Framework - Wikipedia

From Wikipedia, the free encyclopedia Jump to navigation Jump to search Simple email-validation system designed to detect email spoofing Sender Policy Framework (SPF) is an email authentication method designed to detect forging sender addresses during the

en.wikipedia.org

 

그림 1. SPF 인증 절차 (출처 : https://postmarkapp.com/guides/spf) 

1.1 SPF란?

 SPF는 누군가(google.com)로부터 메일이 발송되었을 때, 이 메일의 발송지(111.111.111.111)가 진짜 google.com으로부터 발송된 메일인지 확인하는 시스템이다. 만약 이 주소가 진짜라면 google.com은 DNS 서버에 '이 IP로 보낸 것은 저(google.com)입니다.' 라고 등록한다. 이를 SPF record (혹은 TXT record)라고 한다. 

 

 즉, 특정 도메인이 DNS 서버에 자신의 메일 서버를 등록시키고, 메일 수신자가 발송 서버를 검증할 수 있도록 만든 것이다.

 

 

1.2 SPF를 쓰는 이유는?

 이런 일이 있을 수 있겠다. 어떤 스팸 업자가 자신의 제품을 홍보하기 위해서 구글의 이름을 사칭한다고 하자. 즉, 발송 도메인을 spam@google.com이라고 위조하는 것이다. SPF가 없을 때, 대다수의 사용자들은 이 스팸 메일을 받아도 "구글에서 보낸 것이니 믿을만 하겠지?" 라고 생각해서 열어보게 될 것이다.

 

 이를 방지하기 위해서 수신 메일 서버들은 어떤 송신 메일 서버로부터 어떤 메일을 수신했을 때, 이 도메인에 해당 송신 메일 서버가 유효한 서버인지 검증하는 것이다.

 

 사실 지금은 유저 수신자의 입장에서 서술하고 있지만, 실은 어떤 도메인의 소유자를 위한 보안이라 할 수 있겠다. 예를 든 google같은 경우에는 얼마나 많은 스팸업자들이 google을 사칭하고 싶어하겠는가? 그래서 google은 DNS 서버에 자신이 허가한 메일 송신 서버를 등록해둠으로서 스팸업자들이 자신을 사칭하는 것을 예방할 수 있는 것이다. 

 

 

1.3 SPF의 절차는?

위 그림 1에 설명이 잘 나와있다. 만약, IP 1.2.3.4에서 이메일이 도착했다고 하자. 이 메일의 Return Path(반송처;메일에 답장을 보냈을 때, 답장이 도착하는 주소)는 bounces@example.com이다. 수신 서버는 이 메일을 받았을 때, example.com에 1.2.3.4에게 자신의 도메인(example.com)을 사용할 수 있도록 했는지 검증해봐야한다. 만약 1.2.3.4가 example.com의 허가를 받은 메일 서버라면 SPF Record에 1.2.3.4가 등록되어있을 것이다. 그래서, 등록되어있다면 SPF를 통과할 것이다. 

 

 

1.4 왜 Return Path 를 검증하는가?

 사실 SPF는 Mail From (실제 메일을 보낸 주소)을 검증하는 것이 아니라 Return Path 를 검증한다. Return Path는 기본적으로 Mail From 과 동일하게 설정되어있고 대부분의 경우에도 동일하지만, 다른 경우에는 왜 Mail From을 검증하는 것이 아니라 Return Path를 검증하는 것일까?

 

만약 이런 일 있을 수 있겠다. A라는 고객이 B라는 쇼핑몰을 이용하고 있는데, 회원 가입를 위해 B쇼핑몰이 개인정보 인증을 권위가 있고 신뢰할 수 있는 인증사이트 C를 통해 인증을 받도록 한다고 하자. A는 B로부터 메일을 받게 되겠지만 반송처는 C 인증사이트로 개인정보를 보내게 될 것이다.

 

 C라는 곳은 믿을만 하지만 B쇼핑몰은 새로 생겨서 딱히 믿을만한 곳인지 모르겠다. 이럴 때, SPF를 통해 C에게 B가 믿을 만한 곳인지 확인할 수 있는 것이다. (만약 예제 활용이 틀렸다면 언제든지 댓글로 알려주세요.)

 

 

 

2. DomainKeys Indetified Mail (DKIM) 

https://en.wikipedia.org/wiki/DomainKeys_Identified_Mail

 

DomainKeys Identified Mail - Wikipedia

From Wikipedia, the free encyclopedia Jump to navigation Jump to search Email authentication method designed to detect email spoofing DomainKeys Identified Mail (DKIM) is an email authentication method designed to detect forged sender addresses in email (e

en.wikipedia.org

2.1 DKIM 이란?

 DKIM 은 메일이 전송 중에 다른 사람(해커 등)에 의해서 변조되지 않았는지를 검증하는 절차이다.

 

 

2.2 왜 DKIM을 사용하는가?

 도메인 사용자가 메일을 전송했는데, 중간에 변조되어 스팸메일이나 악성 메일이 되어버린다면 영락없이 도메인 사용자가 죄를 뒤집어 쓰게 될 것이다. 이를 위해 도메인 사용자는 DKIM을 사용하여 수신자가 메일을 받았을 때 이 메일이 변조되지 않았다는 것을 확인하고, 이를 증명해야한다(마치 옛날에 밀랍으로 편지를 봉인함으로써 중간에 편지가 다른 사람에 의해 바뀌지 않았다는 것을 증명했듯이).

 

 

2.3 DKIM의 절차는?

  DKIM은 공개키/사설키를 사용하여 진행된다.

도메인이 메일을 발송할 때, 발송 서버는 사설키로 해시값을 만들고 이를 헤더에 넣어 발송한다. 메일 수신 서버가 메일을 받으면 발송자의 도메인의 DNS에 있는 공개키로 복호화한다. 복호화한 해시값을 확인하여 메일이 중간에 변조되었는지를 확인할 수 있다.

 

 

 

3. DMARC (Domain-based Message Authentication, Reporting and Conformance)

https://en.wikipedia.org/wiki/DMARC

 

DMARC - Wikipedia

From Wikipedia, the free encyclopedia Jump to navigation Jump to search System to prevent email fraud This article is about an email validation system. For the telephony junction point, see demarcation point. DMARC (Domain-based Message Authentication, Rep

en.wikipedia.org

3.1 DMARC란?

 DMARC는 spoofing (발신자 정보를 위조하는 것)을 예방하기 위해 만들어진 보안 방법이다. DMARC는 위에서 소개한 SPF와 DKIM에다가 Reporting을 추가하였다. 

 

 

3.1 Reporting이란? 

 DMARC를 채택한다면 일반적으로 하루에 한 번 종합 보고서;Aggregate reports 를 받게 된다. 이 보고서는 XML 파일로 보내지며 해당 도메인으로부터 보내진 (혹은 보내졌다고 위조된) 메일들이 DMARC 인증 절차를 통과했는지를 알려준다. 이를 통해 발신측은 정상 메시지 중 인증 실패 비율이나 얼마나 많은 사칭 메일이 발송되고 있는가를 파악할 수 있게한다.

(참고 : DMARC 리포트 (jeesub.github.io))

 

 

3.2 DMARC를 쓰는 이유

 SPF 와 DKIM은 좋은 인증 방식이지만 각각에는 허점이 있다. SPF는 중간에 메일이 변조되어서 피싱 메일로 바뀌어도 이를 검증할 수 없고, DKIM의 경우는 해당 메일 자체가 피싱 사이트에서 왔어도 검증할 수 없다. 그래서 DMARC 는 이 둘을 모두 사용하여 1. 메일이 제대로 된 곳에서 왔는지 2. 메일이 위/변조 되지 않았는지를 검증한다. 

 

 

 

뒤로 가면 갈수록 짧아지는 것은 기분탓이다. -.-

 

참고자료)

 

https://ichi.pro/ko/spf-dkim-mich-dmarce-daehan-jjalb-eun-ibmunseo-167297216886173

 

SPF, DKIM 및 DMARC에 대한 짧은 입문서

더 많은 약어가 없으면 기술이 될 수 없습니다! 오늘 버전의 Buzzword Soup에서 SPF, DKIM 및 DMARC를 살펴보고받은 편지함을 괴롭히는 피싱 재앙을 막는 데 어떻게 도움이 될 수 있는지 살펴 보겠습니다

ichi.pro

 

https://medium.com/tresorit-engineering/securing-your-corporate-e-mail-system-ab302e68980c

 

Securing your corporate e-mail system

The problem with e-mails

medium.com

https://postmarkapp.com/guides/spf

https://postmarkapp.com/guides/dkim

https://postmarkapp.com/guides/dmarc

 

DKIM: What is it and why is it important?

DKIM is an email security standard designed to make sure messages weren’t altered in transit between the sending and recipient servers.

postmarkapp.com

 

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=aepkoreanet&logNo=222009758877 

 

이메일 보안을 위한 DMARC

DMARC(Domain-based Message Authentication, Reporting and Conformance)는 이메일 Validation...

blog.naver.com

 

 

'프로그래밍 공부 > Web' 카테고리의 다른 글

[정리예정] OpenId란  (0) 2021.06.14
Http request 구조  (0) 2021.05.18
[21.05.18] 공부할 것  (0) 2021.05.18

댓글