DKIM (DomainKeys Identified Mail)

Poczta i bezpieczeństwo
Metoda uwierzytelniania poczty dodająca podpis cyfrowy do wiadomości, aby odbiorca mógł sprawdzić, czy nie została zmieniona.
← Wróć do słownika

Czym jest DKIM?

DKIM (DomainKeys Identified Mail) to metoda uwierzytelniania poczty elektronicznej, która pozwala serwerowi wysyłającemu cyfrowo podpisywać wiadomości wychodzące. Serwer odbierający może następnie zweryfikować ten podpis za pomocą klucza publicznego opublikowanego w DNS, potwierdzając, że wiadomość nie została zmodyfikowana podczas transmisji i rzeczywiście pochodzi z deklarowanej domeny.

Jak działa DKIM

1. Generowanie kluczy: Właściciel domeny generuje parę klucza publicznego i prywatnego

2. Publikacja w DNS: Klucz publiczny jest publikowany jako rekord TXT

3. Podpisywanie wiadomości: Wiadomości wychodzące są podpisywane kluczem prywatnym

4. Weryfikacja podpisu: Serwer odbierający pobiera klucz publiczny i sprawdza podpis

Proces podpisywania

Po wysłaniu wiadomości:

1. Mail server calculates a hash of message headers and body

2. Hash is encrypted with the private key (creating the signature)

3. Signature is added as a DKIM-Signature header

4. Email is transmitted

Proces weryfikacji

Po odebraniu wiadomości:

1. Server extracts the DKIM-Signature header

2. Finds selector and domain (s=selector; d=domain.com)

3. Queries DNS for selector._domainkey.domain.com TXT record

4. Uses public key to decrypt the signature

5. Calculates its own hash of the message

6. Compares: match = pass, mismatch = fail

Format rekordu DKIM

Rekordy DKIM są rekordami TXT publikowanymi w określonej subdomenie:

selector._domainkey.example.com.    IN    TXT    "v=DKIM1; k=rsa; p=MIGfMA0..."

Składniki rekordu

TagOpisPrzykład
vWersjav=DKIM1
kTyp kluczak=rsa
pKlucz publiczny (base64)p=MIGfMA0GCSqG...
tFlagi (opcjonalne)t=y (testing mode)
hAlgorytmy skrótuh=sha256

Selektory

Selektory pozwalają utrzymywać wiele kluczy DKIM dla jednej domeny:

google._domainkey.example.com       # Google Workspace

s1._domainkey.example.com # Sendgrid

mailchimp._domainkey.example.com # Mailchimp

Każda usługa pocztowa udostępnia własny selektor i klucz.

Nagłówek podpisu DKIM

Podpis DKIM może wyglądać tak:

DKIM-Signature: v=1; a=rsa-sha256; d=example.com; s=google;

c=relaxed/relaxed; q=dns/txt;

h=from:to:subject:date:message-id;

bh=2jUSOH9NhtVGCQWNr9BrIAPreKQjO6Sn7XIkfJVOzv8=;

b=AuUoFEfDxTDkHlLXSZEpZj79...

Najważniejsze pola:

Konfiguracja DKIM

Google Workspace

1. Przejdź do Admin Console → Apps → Gmail → Authenticate email

2. Wygeneruj klucz DKIM (zalecany 2048-bitowy)

3. Dodaj rekord TXT przekazany przez Google

4. Włącz podpisywanie DKIM

Usługi zewnętrzne

Większość usług pocztowych (SendGrid, Mailchimp itd.) udostępnia:

1. Rekord CNAME do dodania (dla zarządzanego przez usługę klucza)

2. Albo rekord TXT z kluczem publicznym

Przykład (SendGrid):

s1._domainkey.example.com    CNAME    s1.domainkey.sendgrid.net

Weryfikacja DKIM

Wyślij wiadomość testową do usługi, która pokazuje nagłówki (Gmail wyświetla wyniki uwierzytelniania). Z wiersza poleceń:
dig google._domainkey.example.com TXT
Za pomocą DomScan:
curl "https://domscan.net/v1/health?domain=example.com"

# Reports DKIM status based on common selectors

Najlepsze praktyki DKIM

Używaj kluczy 2048-bitowych

Starsze klucze 1024-bitowe są coraz bardziej podatne na ataki. Większość dostawców domyślnie używa dziś kluczy 2048-bitowych.

Regularnie rotuj klucze

Rotuj klucze DKIM co roku lub po incydencie bezpieczeństwa. Opublikuj nowy klucz z nowym selektorem przed przełączeniem podpisywania.

Podpisuj ważne nagłówki

Dopilnuj, aby w podpisach uwzględniane były nagłówki From, To, Subject, Date i Message-ID.

Nie modyfikuj podpisanych wiadomości

Listy mailingowe i usługi przekazujące, które modyfikują treść, unieważnią DKIM. W przypadku przekazywanej poczty użyj ARC (Authenticated Received Chain).

Ograniczenia DKIM

Sam DKIM nie zapobiega podszywaniu się pod nadawcę, a jedynie potwierdza, że wiadomość nie została zmieniona. Domena może mieć prawidłowy DKIM, podczas gdy atakujący wysyłają niepodpisane wiadomości podszywające się pod nadawcę. DMARC rozwiązuje ten problem, określając sposób obsługi wiadomości bez prawidłowego uwierzytelnienia.

Wykorzystaj tę wiedzę w praktyce

Użyj API DomScan, aby sprawdzić dostępność domen, ich kondycję i więcej.