Data publikacji:

SPF, DKIM, DMARC odczarowane

Dwa wydarzenia z drugiej połowy 2023 roku sprawiły, że w powszechnej świadomości użytkowników poczty elektronicznej pojawiły się tajemniczo brzmiące skróty tj. SPF, DKIM czy DMARC. Choć najstarsze z nich (SPF) ma już kilkanaście lat a najmłodsze (DMARC) 9 lat to dopiero zaktualizowane przez Google „wymagania dla nadawców poczty” oraz polska „Ustawa o zwalczaniu nadużyć w komunikacji elektronicznej” zwiększyły ich znaczenie w codziennej korespondencji pocztowej.  
 
Z niniejszego artykułu dowiesz się:
  • Czy komunikacja e-mail jest bezpieczna?
  • Jak domena i e-mail ma się do reputacji mojej firmy.
  • W jakim celu stosuje się SPF, DKIM i DMARC?
 

Czy e-mail jest bezpieczny?

E-mail w formie jaką znamy obecnie funkcjonuje od ponad 50 lat. Początkowo służył do wymiany prostych tekstowych komunikatów pomiędzy pracownikami jednego ośrodka naukowego. Dzisiaj jest jednym z podstawowych narzędzi w prowadzeniu biznesu. Wiadomości transakcyjne ze sklepów internetowych czy systemów płatności to ważny element w komunikacji z klientami. Zależy nam aby takie wiadomości docierały do odbiorców i aby nie były traktowane jako spam.
 
Czy klient może mieć pewność, że wiadomość, którą otrzymał naprawdę pochodzi od nas? Czy treść nie została po drodze zmieniona? Czy jesteśmy w stanie to zagwarantować a odbiorca jest w stanie to zweryfikować?
 
E-mail powstał w czasach kiedy internet był małą społecznością i wszyscy sobie ufali. Wraz ze wzrostem popularności maili pojawił się spam i phishing czyli wiadomości, w których ktoś podszywa się pod znane marki czy instytucje, korzysta z Twoich logotypów, grafik i nakłania Twoich klientów do określonych czynności. Z pewnością spotkałeś się z takimi wiadomościami albo dotarły do Ciebie kampanie uświadamiające od banków czy innych poważnych instytucji. Podszyć tak naprawdę można się pod każdego.
 
Czekaj? Czyli ktoś obcy może wysłać wiadomość rzekomo w moim imieniu? TAK. Ale przecież w ten sposób narażona jest moja reputacja. W takich wiadomościach mogą być nieodpowiednie treści, próby wyłudzenia płatności lub nakłanianie do innych, niebezpiecznych zachowań. Otóż to.
 
Czy możesz się przed tym bronić? Odpowiedź brzmi: TAK.
 

Słów kilka o protokołach

Działanie całego internetu opisane jest szeregiem dokumentów zwanych RFC (Request for Comments). Nie inaczej jest z pocztą e-mail. Poczynając od tego jak zbudowany jest adres e-mail, z jakich elementów składa się wiadomość, sposobu komunikacji (protokół SMTP) czy sposobu przekazywania załączników (standard MIME). Wraz z rozwojem internetu zmieniały się również poszczególne standardy. Nowsze wersje zastępowały starsze. Pojawiły się rozszerzenie np. konieczność stosowania loginu i hasła przed wysłaniem wiadomości (SASL), szyfrowanie komunikacji (SSL/TLS) czy szyfrowanie end-to-end tj. PGP lub S/MIME. Każdy z tych dodatków niwelował wady protokołu SMTP jednak nadal istniała możliwość podszywania się pod domeny zaufanych nadawców. Aby temu zaradzić opracowano 3 nowe zabezpieczenia, bohaterów tego tekstu: SPF, DKIM i DMARC.
 
Najpierw przyjrzyjmy się jednak temu jak zbudowana jest wiadomość e-mail. Najprościej będzie posłużyć się analogią do zwykłego papierowego listu:
  • Koperta zawiera informacje, z których korzysta operator pocztowy. Musi się tam znaleźć adres odbiorcy. W przypadku niektórych listów musi być również adres nadawcy. Ponadto operator pocztowy może dodać swoje informacje np. numer listu czy jego priorytet.
  • Wewnątrz koperty znajduje się właściwy list, który poza treścią może zawierać informację o nadawcy i odbiorcy listu, datę czy podpis.
 
W dużym uproszczeniu e-mail składa się z takich samych elementów: koperty (envelope) i treści (body). Informacje z danych kopertowych używane są przez systemy pocztowe do przekazywania wiadomości i są ukryte przed odbiorcą. Informacje z treści wyświetlane są w programie pocztowym. Każdy z popularnych programów pocztowych pozwala podejrzeć pełne źródło wiadomości, w którym możemy podejrzeć wszystkie nagłówki z koperty jak i treść.
 
Podobnie jak w przypadku papierowych listów nadawca wiadomości umieszczony na kopercie i nadawca widniejący w treści listu mogą się różnić. W przypadku wiadomości e-mail nadawca z koperty znajduje się najczęściej w nagłówku „Returt-Path” i jest niewidoczny w programach pocztowych. Nadawca z treści znajduje się w nagłówku „From” i jest wyświetlany przez programy pocztowe. Wiedza ta będzie nam potrzebna w dalszej części do zrozumienia działania mechanizmów SPF, DKIM i DMARC.
 

Domena jest najważniejsza

Domena internetowa to aktualnie jeden z najcenniejszych zasobów przedsiębiorstwa. Jej nazwa, często taka sama jak nazwa firmy, powinna być chroniona a ochrona nie powinna się kończyć na zadbaniu o bezpieczeństwo usługi WWW. Każda wiadomość e-mail wysłana przez nas zawiera w adresie nadawcy nasza nazwę domeny. To świetny sposób do budowania świadomości marki ale też odpowiedzialność za treść.
 
Właśnie dlatego operatorzy poczty e-mail postanowili wykorzystać domenę jako byt, który należy chronić. Informacja o tym na jakich serwerach WWW jest obsługiwana domena, gdzie dostarczać dla niej pocztę itd. przechowywana jest w serwerach DNS, które odpowiadają m.in. za tłumaczenie nazw na adresy IP używane przez serwery. Zarządzać informacjami zawartymi w DNS może tylko właściciel domeny.
 
Najprostsze rozwiązania są najlepsze… Skoro już wiemy, że domena jest ważna i że tylko my możemy zarządzać serwerem DNS na którym się ona znajduje zatem możemy wykorzystać ten fakt i w serwerze DNS umieścić informacje które mogą pomóc odbiorcy w autoryzacji naszych wiadomości. Ta koncepcja to podstawa wszystkich trzech omawianych mechanizmów.
 

SPF – Sender Policy Framework

Skoro każdy może wysłać wiadomość e-mail używając naszej domeny to dajmy odbiorcy znać jakie adresy IP są do tego uprawnione a informację tę umieśćmy w publicznie dostępnych serwerach DNS. Jeśli odbiorca otrzyma wiadomość z innego adresu IP ma prawo taką wiadomość odrzucić. Tak powstał mechanizm SPF. Informacja o uprawnionych adresach IP przechowywana jest w dedykowanych rekordach TXT na serwerach DNS. Przykładowy rekord TXT dla Twojej domeny zawierający informacją dla SPF może wyglądać tak:
  • v=spf1 a mx ip4:1.2.3.4 -all"
 
Na jego podstawie serwer odbierający pocztę wie, że wysyłka jest dozwolona z serwera na który kieruje rekord A Twojej domeny (najczęściej jest to Twój serwer WWW, czasami też serwer pocztowy), serwera na który kieruje rekord MX Twojej domeny oraz serwera o IP 1.2.3.4. Na końcu jest informacja jaką przyjąć politykę jeśli IP nie pasuje do listy. W tym przykładzie wiadomości z innych lokalizacji mają być odrzucane.
 
Pomysł genialny w swej prostocie. W praktyce okazało się, że samodzielnie to rozwiązanie nie jest doskonałe:
  • Jeśli po drodze wiadomość zostanie przekierowana (forward) z jednego adresu e-mail na inny to z dużym prawdopodobieństwem warunki SPF nie będą spełnione. Dla strony odbierającej będzie oryginalna domena nadawcy oraz adres IP serwera przekazującego a nie oryginalnego. Rozwiązaniem tego problemu jest standard SRS (Sender Rewriting Scheme) jednak nie jest on powszechnie stosowany.
  • Prawo do wysyłki dla domeny jest weryfikowane dla domeny z koperty. Wiemy już, że adres kopertowy może się różnić od adresu „From”, który widzi odbiorca. Fakt ten został wykorzystany przed przestępców, którzy w adresie kopertowym używają „swoich” domen lub domen należących do innych ale bez rekordów SPF lub z nierestrykcyjną polityką.
 

DKIM – Domain Keys Identified Mail

Twórcom mechanizmu DKIM przyświecał inny cel. Zadanie polegało na użyciu kryptografii do cyfrowego podpisania treści wiadomości i wybranych nagłówków np. tematu, nadawcy czy daty. Podpis realizowany jest po stronie serwera wysyłającego pocztę z wykorzystaniem klucza prywatnego. Klucz publiczny przechowywany jest w serwerze DNS dzięki czemu serwer odbierający może dokonać weryfikacji czy treść i wybrane nagłówki nie uległy zmianie. Podobną funkcjonalność podpisu można zrealizować np. za pomocą PGP ale każdy z naszych odbiorców musiałby importować nasz klucz publiczny. W przypadku DKIM cały proces odbywa się masowo po stronie serwerów bez udziału nadawcy i jego odbiorców.
 
Upraszczając DKIM gwarantuje integralność i niezmienność treści wiadomości e-mail.
 
Aby istniała możliwość wysyłki z wielu źródeł bez potrzeby dostarczania kluczy prywatnych w DKIM wprowadzono selektory. Każda domena może posiadać wiele selektorów i odpowiadających im par kluczy prywatny-publiczny. Co do zasady wysyłane wiadomości mogą zostać podpisane certyfikatem dla innej niż Twoja domena pod warunkiem, że serwer wysyłający ma odpowiedni klucz.
 
Przeglądając źródło podpisanych wiadomości znajdziesz nagłówek „DKIM-Signature” który wśród różnych tagów zawiera tag „s=” informujący o nazwie selektora oraz tag „d=” informujący o nazwie domeny. Klucz publiczny z kolei znajduje się w DNS pod adresem ._domainkey.
 
O ile DKIM gwarantuje, że treść wiadomości nie uległa zmianie to serwer odbierający nie wie czy wiadomości z Twojej domeny powinny być cyfrowo podpisane. Zweryfikować poprawność podpisu DKIM można tylko dla wiadomości, które takowy posiadają. Z pomocą przychodzi kolejny bohater naszego tekstu:
 

DMARC – Domain-based Message Authentication and Conformance

Dostawcy poczty postanowili wykorzystać zalety SPF i DKIM i połączyć je w jeden mechanizm ochronny. Znając słabe strony obu rozwiązań wymyślono jak skutecznie je wyeliminować.
 
Założenia jakie legły u podstaw DMARC to wykorzystanie domeny z adresu „From”, który uznawany jest za faktyczny adres nadawcy i powiązanie go z domeną z adresu używanym przez SPF (nagłówek „Return-Path”) i domeną z tagu „d=” mechanizmu DKIM. Owo powiązanie zakłada, że musi wystąpić dopasowanie (alignment) pomiędzy tymi domenami to znaczy muszą być takie same albo podobne (subdomeny).
 
Dodatkowo mechanizm DMARC daje możliwość otrzymywania raportów od serwerów odbierających pocztę z informacją o poprawnych i błędnych wysyłkach. Jako właściciel domeny masz również możliwość określić politykę czyli co ma się dziać z wiadomościami, które nie spełniają warunków DMARC: przepuszczać, umieszczać w kwarantannie lub odrzucać.
Przykładowy rekord DMARC w DNS może wyglądać tak:
  • Nazwa rekordu: _dmarc.
  • Zawartość: v=DMARC1; p=quarantine; rua=mailto:dmarc@domena.pl

Co oznacza, że wiadomości nie przechodzące poprawnie testu DMARC mają być umieszczanie w kwarantannie (najczęściej folder Spam) a raporty mają być wysyłane na adres dmarc@domena.pl.
 
Najprościej działanie DMARC wytłumaczyć na podstawie algorytmu weryfikacji po stronie serwerów odbierających pocztę:
  1. Dokonaj weryfikacji jeśli domena z adresu „From” w DNS posiada rekord DMARC
  2. Sprawdź czy dla domeny z nagłówka „Return-Path” istnieje rekord SPF oraz czy adres IP serwera wysyłającego pocztę znajduje się na liście uprawnionych.
  3. Sprawdź czy domena z nagłówka „Return-Path” jest taka sama lub podobna do domeny z nagłówka „From” (sposób dopasowania zależy od tagu „aspf”)
  4. Jeśli wynik testu z punktu 2 jest poprawny oraz mamy dopasowanie w punkcie 3 to spełniamy warunek poprawności SPF.
  5. Sprawdź czy wiadomość zawiera poprawny podpis cyfrowy DKIM i czy weryfikacja za pomocą klucza publicznego przechodzi poprawnie.
  6. Sprawdź czy domena z tagu „d=” podpisu DKIM jest taka sama lub podobna do domeny z nagłówka „From” (sposób dopasowania zależy od tagu „adkim”).
  7. Jeśli wynik testu z punktu 5 jest poprawny oraz mamy dopasowanie w punkcie 6 to spełniamy warunek poprawności DKIM.
  8. Jeśli poprawnie przeszliśmy weryfikację SPF i zgodność domen (punkt 4) lub poprawnie przeszliśmy weryfikację DKIM i zgodność domen (punkt 7) to wynik DMARC jest pozytywny.
 

Podsumowanie

Jednoczesne wykorzystanie SPF, DKIM i DMARC przez operatorów serwerów wysyłających i odbierających pocztę w znaczący sposób niweluje możliwość podszywania się pod nasze domeny oraz gwarantuje, że treść wiadomości nie została mieniona. Dzięki tym mechanizmom odbiorca może mieć pewność, że wiadomości nadane z Twojej domeny rzeczywiście pochodzą od Ciebie.

Przestępcy nadal będą mogli próbować podszywać się pod Ciebie ale identyfikacja takich wiadomości będzie dużo prostsza. Wystarczy weryfikacja domeny z adresu „From”. Przestępca będzie musiał użyć innej niż Twoja domeny. W tej sposób możesz budować swój przekaz do klientów informując, że wiadomości od Ciebie pochodzą tylko z Twoich domen.
 
 

Autor: Maciej Polewczyński

> Od ponad 20 lat projektuje systemy pocztowe. Integrator, tłumacz rzeczy trudnych, miłośnik progresywnej muzyki.