Pesan yang ditandatangani tetap bisa berupa spam. Domain penandatangannya juga bisa berbeda dari alamat yang ditampilkan kepada penerima.
Apa yang dicakup oleh tanda tangan DKIM?
Tanda tangan DKIM melindungi field header yang dipilih dan hash dari body.
Tag h= mencantumkan field header yang ditandatangani. Tag bh= menyimpan hash body. Server pengirim menghasilkan tanda tangan dengan kunci privatnya. Penerima memverifikasinya dengan kunci publik yang sesuai.
Penerima menghitung ulang hash body. Penerima juga memverifikasi tanda tangan atas header yang dipilih dan header tanda tangan, yang berisi hash tersebut.
RFC 6376 mewajibkan penandatanganan header From. Field header lain boleh tetap tidak ditandatangani. Menambahkan Reply-To yang tidak ditandatangani karenanya dapat membuat DKIM tetap valid.
Header yang berulang memerlukan penanganan terpisah. Penandatangan dapat mencantumkan nama header lebih banyak dari jumlah kemunculannya untuk mencegah penambahan kemunculan baru tanpa terdeteksi.
Di mana penerima menemukan kunci publik?
Penerima menemukan kunci publik menggunakan domain penandatangan dan selector, nama yang mengidentifikasi kunci tersebut. Tag d= memberikan domain. Tag s= memberikan selector.
Untuk d=example.com dan s=foo.bar, nama pencarian adalah foo.bar._domainkey.example.com. Selector memungkinkan kunci yang berbeda di bawah domain penandatangan yang sama.
Saat rotasi, publikasikan kunci pengganti sebelum menandatangani dengannya. Pertahankan kunci verifikasi lama tetap tersedia selama pesan yang ditandatangani dengannya masih dalam pengiriman. Menghapusnya terlalu dini mencegah penerima memverifikasi pesan-pesan tersebut.
Mengapa perubahan format dapat merusak tanda tangan?
Kanonisasi, normalisasi yang diterapkan sebelum penandatanganan dan verifikasi, menentukan perubahan format mana yang ditoleransi DKIM.
Tag c= memilih algoritma header dan body secara terpisah. Di relaxed/relaxed, keduanya menggunakan normalisasi relaxed.
| Algoritma | Perilaku header | Perilaku body |
|---|---|---|
simple | Mempertahankan format header | Mengabaikan baris kosong di akhir |
relaxed | Menormalisasi huruf besar/kecil nama header, folding, dan spasi | Menormalisasi spasi dan baris kosong di akhir |
Header yang di-fold berlanjut ke baris berikutnya. Pemrosesan header relaxed mentoleransi folding tersebut. Pemrosesan simple dapat gagal setelah server melakukan re-fold pada header yang sama.
Bandingkan konten yang ditandatangani sebelum dan sesudah relay yang gagal, karena perubahan format yang tidak terlihat dapat menjelaskan hasilnya.
Algoritma penandatanganan apa yang didukung DKIM?
DKIM mendukung algoritma penandatanganan RSA dan Ed25519, keduanya dikombinasikan dengan SHA-256.
RSA memiliki ukuran kunci minimum 1024 bit berdasarkan RFC 8301. Kunci yang lebih pendek memberikan ketahanan yang tidak memadai terhadap kompromi kunci.
Ukuran RSA yang direkomendasikan minimal 2048 bit, memberikan ketahanan lebih terhadap kompromi kunci. Pilih ukuran tersebut jika sistem penandatanganan Anda mendukungnya. Spesifikasi melarang rsa-sha1 untuk penandatanganan dan verifikasi.
RFC 8463 menambahkan ed25519-sha256. Sebuah pesan dapat membawa tanda tangan RSA dan Ed25519 sekaligus untuk kompatibilitas dengan penerima yang mendukung algoritma berbeda.
Panduan Yahoo juga mewajibkan kunci DKIM minimum 1024 bit.
Apa yang terjadi ketika mailing list mengedit pesan?
Pengeditan dapat membatalkan DKIM ketika mengubah konten yang dicakup oleh tanda tangan.
Penerusan tidak dengan sendirinya mengubah konten yang ditandatangani. Tanda tangan yang utuh dapat bertahan saat diteruskan. Footer yang ditambahkan dapat mengubah hash body. Subject yang ditandatangani lalu ditulis ulang dapat membatalkan tanda tangan header.
Tag opsional l= membatasi cakupan body ke jumlah byte tertentu. Dengan l=100, konten setelah 100 byte ternormalisasi pertama tidak dilindungi. Menambahkan teks yang menyesatkan karenanya dapat membuat tanda tangan tetap valid.
Hindari batas tersebut jika Anda membutuhkan seluruh body terlindungi. ARC memungkinkan perantara menyimpan bukti autentikasi yang ditandatangani sebelum pengeditan mereka.
Bagaimana cara mengonfigurasi DKIM dengan Bird?
Anda mempublikasikan rekaman DKIM yang dikembalikan saat Anda mendaftarkan domain pengirim.
Field dkim.mode pada API default-nya adalah txt. Dengan mode tersebut, publikasikan kunci publik dalam rekaman TXT. Skema juga mencantumkan delegated. Nilai tersebut mengembalikan HTTP 422 saat Anda mendaftarkan domain pengirim, jadi gunakan txt.
Bird membuat kunci dan selector terpisah untuk setiap organisasi yang menggunakan domain pengirim. Organisasi yang menggunakan domain yang sama tidak perlu berbagi kunci penandatanganan.
Panduan autentikasi menjelaskan rekaman yang dikembalikan.
Apakah tanda tangan yang lolos membuktikan bahwa pesan itu aman?
Tanda tangan yang lolos menetapkan tanggung jawab atas konten yang ditandatangani. Tanda tangan tersebut tidak menetapkan apakah pesan itu diinginkan atau dapat dipercaya.
Tanda tangan juga tidak mewajibkan domain penandatangan cocok dengan domain From yang terlihat. DMARC menyediakan aturan pencocokan tersebut melalui alignment. Reputasi pengirim, penilaian penerima terhadap lalu lintas pengirim, tetap menjadi pertimbangan terpisah.
Singkatnya
Hanya konten yang dipilih yang dilindungi.
DKIM mencakup field header yang tercantum dan hash body. Konten yang tidak dilindungi dapat berubah tanpa membatalkan tanda tangan.
Selector menemukan kunci verifikasi.
Selector dan domain penandatangan mengidentifikasi rekaman DNS yang berisi kunci publik.
Normalisasi memengaruhi verifikasi.
Algoritma simple dan relaxed memperlakukan perubahan format secara berbeda.
Penerusan tidak menjamin kelulusan.
Tanda tangan yang utuh dapat bertahan saat diteruskan, tetapi perubahan pada konten yang ditandatangani dapat merusaknya.