Cara DKIM menemukan kunci
Tanda tangan DKIM dalam pesan mencantumkan domain (d=) dan selector (s=). Penerima menggabungkannya menjadi selector._domainkey.domain, membaca record TXT di sana, lalu menggunakan kunci publik dalam tag p= untuk memverifikasi tanda tangan. Satu domain dapat memublikasikan selector dalam jumlah berapa pun, sehingga setiap layanan pengiriman dapat memiliki kuncinya sendiri dan kunci dapat dirotasi tanpa waktu henti.
Pemeriksa memerlukan selector karena DNS tidak menyediakan cara untuk menampilkan daftar selector yang dimiliki domain. Tidak ada yang dapat dipindai, selector berasal dari tanda tangan pesan yang sebenarnya.
Penyebab kunci lemah atau rusak
RFC 8301 menyatakan bahwa kunci RSA harus berukuran minimal 1024 bit dan sebaiknya 2048 bit. Verifikator dapat mengabaikan kunci yang lebih pendek, dan alat kami juga melakukannya, sehingga kunci 512 bit dianggap tidak memiliki tanda tangan sama sekali. Kunci Ed25519 (RFC 8463) memang dirancang pendek dan tetap kuat, tetapi belum semua penerima memverifikasinya. Karena itu, kunci ini biasanya dipublikasikan bersama kunci RSA, bukan sebagai penggantinya.
Alat pemeriksa mendekode kunci secara lengkap karena record yang terpecah secara keliru di antara string TXT, atau base64 yang tidak dapat didekode, menghasilkan kunci yang tidak dapat digunakan oleh penerima mana pun. p= yang kosong berarti kunci sengaja dicabut. t=y menandai domain yang masih dalam pengujian, dan RFC 6376 §3.6.1 meminta verifikator memperlakukan emailnya sama seperti email tanpa tanda tangan.
Pertanyaan
Bagaimana cara menemukan selector DKIM saya, dan apakah DKIM sudah aktif?
Kirim email ke alamat Anda sendiri, lalu buka header pada salinan yang diterima. Adanya header DKIM-Signature berarti pesan telah ditandatangani: selector adalah nilai s= dan domain adalah d=. Jika header tersebut tidak ada, layanan yang Anda gunakan untuk mengirim tidak menandatangani pesan. Setiap layanan pengiriman menggunakan selector sendiri, jadi newsletter dan pesan dari kotak surat Anda dapat menggunakan selector yang berbeda.
Kuncinya valid, tetapi DKIM gagal dengan "body hash did not verify". Mengapa?
Biasanya pesan diubah setelah ditandatangani, misalnya footer ditambahkan oleh mailing list atau tautan ditulis ulang oleh gateway keamanan. Kunci hanya dapat mengonfirmasi konten yang ditandatangani. Pengujian lengkap menunjukkan hasil verifikasi sebenarnya untuk pesan Anda.
Panduan lengkap: DKIM fail
Panjang kunci DKIM: 1024 atau 2048 bit?
Kunci 1024 bit dapat diverifikasi di semua layanan, dan RFC 8301 mengizinkannya. Namun, itu tetap merupakan ukuran minimum, jadi gunakan 2048 bit saat Anda merotasi kunci berikutnya.
Apakah sebuah domain dapat memiliki lebih dari satu record DKIM?
Ya, satu untuk setiap selector, dan banyak domain memiliki beberapa: satu untuk penyedia kotak surat dan satu untuk setiap layanan newsletter atau penagihan. Periksa satu per satu. Kunci yang telah dihapus dari DNS akan menyebabkan setiap pesan yang masih ditandatangani dengan kunci tersebut gagal.
Seberapa sering saya harus merotasi kunci DKIM?
M3AAWG menyarankan rotasi setidaknya setiap enam bulan, dan segera jika ada kemungkinan kunci privat bocor. Publikasikan kunci baru dengan selector baru, alihkan penandatanganan ke kunci tersebut, lalu hapus record lama hanya setelah email yang ditandatangani dengan kunci lama berhenti masuk. Pengirim mencoba kembali selama empat hingga lima hari, jadi tunggu sekitar satu minggu.