Masalah akhir baris adalah masalah tingkat byte. Menyalin pesan ke editor, melihat baris yang sama dan menyimpulkan bahwa tidak ada perubahan bukanlah hal yang dapat diandalkan DKIM penyelidikan. Pertahankan representasi asli dan identifikasi apakah konversi terjadi sebelum penandatanganan, saat transit, atau hanya selama pengumpulan bukti.
Tetapkan bentuk yang diharapkan
Surat internet menggunakan pemisah baris CRLF. RFC 6376 §5.3 mengharuskan penandatangan untuk mengubah konvensi CR atau LF lokal menjadi urutan CRLF standar SMTP sebelum penandatanganan. Konversi harus diterapkan pada pesan yang dikirimkan, bukan hanya pada salinan pribadi yang diteruskan ke algoritma penandatanganan. Menandatangani satu representasi dan mengirimkan representasi lainnya mengundang ketidaksepakatan dalam verifikasi.
kanonikalisasi memiliki aturan yang lebih sempit daripada normalisasi teks umum. Kanonikalisasi tubuh sederhana mengabaikan baris kosong yang tertinggal dan menyediakan CRLF akhir yang diperlukan. Kanonikalisasi tubuh yang santai juga menghapus spasi di akhir baris dan mengompresi rangkaian spasi atau tab dalam satu baris. Biasanya tidak menghapus jeda baris yang berarti atau menggabungkan teks yang dibungkus. Algoritme header dan body dapat berbeda, jadi bacalah kedua bagian c daripada mengasumsikan mode tunggal.
Lindungi buktinya terlebih dahulu
Kumpulkan file pesan mentah dari penandatangan dan penerima menggunakan metode transformasi yang Anda pahami. Simpan file asli dan hash yang hanya dapat dibaca dari file tersebut. Dalam copy pekerjaan, periksa jumlah CRLF, bare LF, dan bare CR menggunakan alat yang peka terhadap byte. Tampilan penampil teks saja tidak cukup: banyak pemirsa yang merender setiap formulir sebagai jeda baris.
Tanyakan bagaimana sampel diperoleh. Pengaturan arsip, pipa shell, atau kontrol sumber dapat menormalkan akhir setelah pengiriman. Perbedaan dalam file yang diekspor tidak menunjukkan bahwa pesan SMTP itu sendiri berubah. Jika memungkinkan, bandingkan hasil tangkapan independen pada batas wilayah yang sama dan pertahankan prosedur ekspor dengan bukti yang ada.
Gunakan kotak kecil yang terkontrol
Masukan ilustrasi: suatu benda terdiri dari alfa, CRLF, beta, dan CRLF terakhir. Menambahkan baris kosong khusus CRLF di bagian akhir akan dinormalisasi oleh algoritma isi standar. Mengganti jeda baris antara alfa dan beta dengan spasi akan mengubah konten dan bukan operasi yang sama. Menambahkan spasi di akhir garis alfa berbeda pada kanonikalisasi isi sederhana tetapi dinormalisasi dengan kanonikalisasi isi santai.
Contoh-contoh ini menjelaskan aturannya; ini bukan pengganti untuk memverifikasi tanda tangan yang lengkap. Sah hash tubuh hanyalah salah satu bagian dari verifikasi DKIM . Pemilihan header, pengambilan kunci publik dan tanda tangan kriptografi juga harus berhasil.
Temukan dan perbaiki tahap yang bertanggung jawab
Jika penandatangan menerima data lokal khusus LF, periksa tahap serialisasi sebelum penandatanganan. Jika keluaran penandatangan benar tetapi tangkapan mentah selanjutnya berbeda, selidiki perilaku konversi atau pembangunan kembali hop tersebut. Jika hanya bukti yang Anda ekspor saja yang berbeda, perbaiki metode pengambilan daripada mengubah DNS atau kunci produksi.
Buat perubahan dengan cakupan sempit yang memastikan penanda tangan dan pesan yang dikirimkan menggunakan representasi normal yang sama. Jangan membuat pemverifikasi khusus yang menerima transformasi garis sewenang-wenang agar sampel lolos. Verifikator tersebut tidak lagi menguji aturan DKIM yang telah diterbitkan.
Verifikasi lebih dari satu pesan
Setelah perubahan, kirim rangkaian kecil yang mencakup teks biasa, baris tambahan kosong, HTML, dan lampiran. Catat kanonikalisasi yang dipilih, hash file mentah yang dikumpulkan, dan hasil verifikasi penerima tepercaya. Pertahankan representasi keluaran yang diharapkan sebagai perlengkapan regresi. Resolusi yang berguna mengidentifikasi konversi yang bertanggung jawab dan menunjukkan bahwa pesan baru sampai ke penerima dalam bentuk yang diinginkan.
Pisahkan jumlah byte dari kesimpulan
Untuk bodi sintetis alfa<CRLF>beta<CRLF>, badan bentuk jaringan terdiri dari 13 oktet: lima huruf, dua oktet pemisah, empat huruf, dan dua oktet pemisah akhir. Ekspor LF saja dari garis terlihat yang sama adalah 11 oktet. Perbedaan jumlah tersebut merupakan alasan untuk menyelidiki pengumpulan atau serialisasi, bukan bukti bahwa surat yang dikirimkan rusak. Simpan file asli dan metode pengumpulannya, lalu bandingkan dengan tangkapan tepercaya pada batas yang relevan. Label CRLF dalam tanda kurung mewakili byte, bukan teks literal.