Jak DKIM znajduje klucz
Podpis DKIM w wiadomości wskazuje domenę (d=) i selektor (s=). Serwer odbierający łączy je w selector._domainkey.domain, odczytuje znajdujący się tam rekord TXT i używa klucza publicznego ze znacznika p= do weryfikacji podpisu. Jedna domena może publikować dowolną liczbę selektorów, dzięki czemu każda usługa wysyłająca może mieć własny klucz, a klucze można zmieniać bez przestojów.
Narzędzie potrzebuje selektora, ponieważ DNS nie umożliwia wyświetlenia listy selektorów domeny. Nie ma czego skanować, selektor pochodzi z podpisu prawdziwej wiadomości.
Kiedy klucz jest słaby lub nieprawidłowy
RFC 8301 określa, że klucze RSA muszą mieć co najmniej 1024 bity, a zalecana długość to 2048 bitów. Weryfikator może zignorować krótszy klucz, nasze narzędzie również go ignoruje, dlatego klucz 512-bitowy jest traktowany tak samo jak całkowity brak podpisu. Klucze Ed25519 (RFC 8463) są z założenia krótkie i bezpieczne, ale nie każdy odbiorca potrafi je jeszcze weryfikować. Z tego powodu zwykle publikuje się je obok klucza RSA, a nie zamiast niego.
Narzędzie dekoduje cały klucz, ponieważ rekord nieprawidłowo podzielony między ciągi TXT albo zapis base64, którego nie da się zdekodować, jest kluczem, którego żaden odbiorca nie może użyć. Puste p= oznacza, że klucz został celowo unieważniony. t=y oznacza domenę, która nadal prowadzi testy, a RFC 6376 §3.6.1 nakazuje weryfikatorom traktować jej wiadomości dokładnie tak samo jak wiadomości bez podpisu.
Pytania
Jak znaleźć selektor DKIM i sprawdzić, czy DKIM jest włączony?
Wyślij wiadomość do siebie i otwórz nagłówki odebranej kopii. Nagłówek DKIM-Signature oznacza, że wiadomość została podpisana: selektor to wartość s=, a domena to d=. Brak takiego nagłówka oznacza, że usługa użyta do wysyłki nie podpisuje wiadomości. Każda usługa wysyłkowa podpisuje własnym selektorem, dlatego newsletter i wiadomość ze skrzynki pocztowej mogą mieć różne selektory.
Klucz jest poprawny, ale DKIM kończy się błędem „body hash did not verify”. Dlaczego?
Zwykle wiadomość została zmieniona po podpisaniu, na przykład lista mailingowa dodała stopkę albo brama bezpieczeństwa przepisała link. Klucz może potwierdzić tylko treść, która została podpisana. Pełny test pokazuje rzeczywisty wynik weryfikacji wiadomości.
Pełny poradnik: DKIM fail
Długość klucza DKIM: 1024 czy 2048 bitów?
Klucz 1024-bitowy przechodzi weryfikację wszędzie i jest dozwolony przez RFC 8301. To jednak nadal minimalna długość, dlatego przy następnej rotacji kluczy przejdź na 2048 bitów.
Czy domena może mieć więcej niż jeden rekord DKIM?
Tak, po jednym dla każdego selektora. Wiele domen ma ich kilka: jeden dla dostawcy skrzynki pocztowej oraz po jednym dla każdej usługi newsletterów lub rozliczeń. Sprawdzaj je pojedynczo. Usunięcie klucza z DNS powoduje błąd weryfikacji każdej nadal podpisanej nim wiadomości.
Jak często należy rotować klucze DKIM?
M3AAWG zaleca rotację co najmniej raz na sześć miesięcy oraz natychmiast, jeśli klucz prywatny mógł wyciec. Opublikuj nowy klucz pod nowym selektorem, przełącz na niego podpisywanie i usuń stary rekord dopiero wtedy, gdy przestaną przychodzić wiadomości podpisane starym kluczem. Nadawcy ponawiają próby przez cztery do pięciu dni, dlatego odczekaj około tygodnia.