Satır sonu problemi bayt seviyesinde bir problemdir. Bir mesajı editöre kopyalamak, aynı satırları görmek ve hiçbir şeyin değişmediği sonucuna varmak güvenilir değildir. DKIM soruşturma. Orijinal beyanı koruyun ve dönüşümün imzalamadan önce mi, nakliye sırasında mı yoksa yalnızca kanıt toplama sırasında mı gerçekleştiğini belirleyin.
Beklenen formu oluşturun
İnternet postası CRLF satır ayırıcılarını kullanır. RFC 6376 §5.3 imzalayanın, imzalamadan önce yerel çıplak CR veya LF kurallarını SMTP standardı CRLF dizisine dönüştürmesini gerektirir. Dönüşüm yalnızca imzalama algoritmasına aktarılan özel bir kopyaya değil, iletilen mesaja da uygulanmalıdır. Bir beyanın imzalanması ve diğerinin iletilmesi, doğrulama sırasında anlaşmazlığa davetiye çıkarır.
Kanonikleştirme genel metin normalleştirmesinden daha dar kurallara sahiptir. Basit gövde kanonikleştirmesi sondaki boş satırları yok sayar ve gerekli son CRLF'yi sağlar. Rahat vücut kanonikleştirmesi ayrıca satır sonundaki boşlukları kaldırır ve bir satır içindeki boşluk veya sekme dizilerini sıkıştırır. Genellikle anlamlı satır sonlarını silmez veya sarılmış metni birleştirmez. Başlık ve gövde algoritmaları farklı olabilir; bu nedenle tek bir mod varsaymak yerine c'nin her iki bölümünü de okuyun.
Önce kanıtları koruyun
Dönüşümlerini anladığınız yöntemleri kullanarak imzalayandan ve alıcıdan ham mesaj dosyalarını toplayın. Bu dosyaların salt okunur orijinallerini ve karmalarını saklayın. Çalışan bir kopyada, bayta duyarlı bir araç kullanarak CRLF, çıplak LF ve çıplak CR sayımlarını inceleyin. Bir metin görüntüleyicinin ekranı yeterli değildir: birçok görüntüleyici her formu satır sonu olarak işler.
Numunenin nasıl elde edildiğini sorun. Bir arşiv, kabuk işlem hattı veya kaynak kontrolü ayarı, teslimattan sonra sonları normalleştirebilir. Dışa aktarılan dosyalardaki farklılık, SMTP mesajının kendisinin değiştiğini göstermez. Mümkün olduğunda, aynı sınırdaki bağımsız yakalamaları karşılaştırın ve ihracat prosedürünü kanıtlarla birlikte saklayın.
Küçük kontrollü bir kasa kullanın
Açıklayıcı girdi: bir gövde şunlardan oluşur: alfa, bir CRLF, betave son bir CRLF. Sona boş bir yalnızca CRLF satırı eklemek, standart gövde algoritmaları tarafından normalleştirilir. Alfa ve beta arasındaki satır sonunu bir boşlukla değiştirmek içeriği değiştirir ve aynı işlem değildir. Alfa çizgisinin sonuna boşluk eklemek, basit gövde kanonikleştirmesinde farklılık gösterir ancak rahat vücut kanonikleştirmesiyle normalleştirilir.
Bu örnekler kuralları açıklamaktadır; bunlar tam bir imzanın doğrulanmasının yerine geçmez. geçerli vücut karması DKIM doğrulamasının yalnızca bir parçasıdır. Başlık seçimi, genel anahtar alımı ve kriptografik imza da başarılı olmalıdır.
Sorumlu aşamayı bulun ve düzeltin
İmzalayan kişi yalnızca LF yerel verilerini alırsa imzalamadan önce serileştirme aşamasını inceleyin. İmzalayan çıktısı doğruysa ancak daha sonraki bir ham yakalama farklıysa, bu atlama noktasının dönüştürme veya yeniden oluşturma davranışını araştırın. Yalnızca dışa aktarılan kanıtlarınız farklıysa üretim DNS veya anahtarlarını değiştirmek yerine yakalama yöntemini onarın.
İmzalayanın ve iletilen mesajın aynı normalleştirilmiş gösterimi kullanmasını sağlayan dar kapsamlı bir değişiklik yapın. Numune geçişini sağlamak için rastgele hat dönüşümlerini kabul eden özel bir doğrulayıcı icat etmeyin. Böyle bir doğrulayıcı artık yayınlanan DKIM kurallarını test etmeyecektir.
Bir mesajın ötesini doğrulayın
Değişiklikten sonra düz metin, boş sondaki satırlar, HTML ve ekleri kapsayan küçük bir paket gönderin. Seçilen kanonikleştirmeyi, toplanan ham dosya karmalarını ve güvenilir alıcının doğrulama sonucunu kaydedin. Beklenen çıktı gösterimini bir regresyon fikstürü olarak tutun. Yararlı bir çözüm, sorumlu dönüşümü tanımlar ve yeni mesajların alıcıya amaçlanan biçimde ulaştığını gösterir.
Bayt sayılarını sonuçlardan ayrı tutun
Sentetik gövde için alfa<CRLF>beta<CRLF>ağ biçimindeki gövde 13 sekizliden oluşur: beş harf, iki ayırıcı sekizli, dört harf ve iki son ayırıcı sekizli. Aynı görünür çizgilerin yalnızca LF'ye aktarımı 11 oktettir. Bu sayı farkı, iletilen postanın zarar gördüğünün kanıtı değil, toplama veya serileştirmeyi araştırmak için bir nedendir. Orijinal dosyaları ve toplama yöntemlerini saklayın ve ardından ilgili sınırda güvenilir bir yakalamayla karşılaştırın. Parantez içindeki CRLF etiketi, gerçek metni değil baytları temsil eder.