UDP veri yükleri bir CRC içermeli mi?


16

Eskiden çalıştığım bir şirket için, bazı özel sensör donanımlarından yerel bir bağlantı üzerinden çoğunlukla UDP formunda veri alan bir soket alıcısı uygulamak zorunda kaldım. Söz konusu veriler iyi oluşturulmuş bir UDP paketiydi, ancak ilginç bir şekilde, veri yükü her zaman verilerin geri kalanı kullanılarak oluşturulan bir CRC16 sağlama toplamıyla sona erdi.

Şartnameye göre kontrolü ucumda uyguladım, ancak her zaman bunun gerekli olup olmadığını merak ettim. Sonuçta, UDP protokolünün kendisi 16 bitlik bir CRC taşımıyor mu? Bu nedenle, UDP paketleri kaybolabilir veya arızalı olsa da, işletim sisteminin işlemlerine ulaşmadan ağ donanımı tarafından atılmadan bozulamayacakları izlenimindeydim. Yoksa kaçırdığım özel bir kullanım durumu var mı?

Savunma endüstrisinde çalıştığımı eklemeye değer, ki tahmin edebileceğiniz gibi, bunun gibi her şey hakkında çok açık olmayı seviyor, bu yüzden bunun sadece bir "güvenlik OKB'si" vakası olup olmadığını merak ediyorum. ..


2
Güvenlik amaçlıysa, sadece yanlışlıkla bozulmayı önlemekle ilgili değilse, bir sağlama toplamının anahtar karşılığı olan bir MAC kullanmanız gerekir.
CodesInChaos

1
UDP sağlama toplamı yalnızca UDP paketine enjekte edilen veriler için iyidir. Gerçekte sağlama toplamı nedir? Sağlama toplamını ne kullanır? UDP paketi oluşturulmadan veya belki de diğer sistemlerden geçerken bütünlüğünü koruduğundan emin olmak için paketle birlikte taşınmadan önce bütünlüğü sağlamak için kullanılıyor mu? Sisteminizin bileşenlerini ve verilerin nasıl oluşturulduğunu, dönüştürüldüğünü ve kullanıldığını daha iyi anlamadan, sorunuzun yanıtlanacağından emin değilim.
Thomas Owens

@ThomasOwens Veriler, kaynak aygıttan arka arkaya alıcı donanıma gönderilmiştir. Orta adam yok. Kontrol toplamı gönderen tarafından gönderilmeden önceki son adım olarak oluşturuldu.
Ekim'deki Xenoprimate

Yanıtlar:


23

UDP protokol mesajları veya teslim veya hiç teslim edilir garanti etmez, ancak bu mesajlar sağlamak gelmez do teslim almak otomatik olarak 16 bit sağlama dahil ederek tam ve değiştirilmemiştir. Bu, uygulama katmanına 16 bitlik başka bir sağlama toplamı eklemenin genellikle gereksiz olduğu anlamına gelir.

...genelde....

İlk olarak, IPv4 (IPv6 değil) ile sağlama toplamı isteğe bağlıdır . Bu, sağlama toplamı oluşturma ve doğrulama yapmayan egzotik bir yapılandırma kullanıyor olabileceğiniz anlamına gelir (ancak bu durumda, bunu uygulama katmanında jüri yapmak yerine ağ yığınınızı düzeltmeniz gerekir).

İkincisi, 16 bitlik bir sağlama toplamı ile, 65536'da tamamen rastgele bir mesajın geçerli bir sağlama toplamına sahip olma şansı vardır. Bu hata payı kullanım durumunuz için çok büyük olduğunda (ve savunma endüstrisinde nerede olduğunu birkaç hayal edebiliyorum), başka bir CRC-16 sağlama toplamı eklemek daha da azaltacaktır. Ancak bu durumda, CRC-16 yerine SHA-256 gibi uygun bir mesaj özeti kullanmayı düşünebilirsiniz. Ya da sonuna kadar gidin ve gerçek bir kriptografik imza kullanın. Bu sadece rastgele yolsuzluğa karşı değil, aynı zamanda bir saldırganın kasıtlı yolsuzluğuna karşı da koruma sağlar.

Üçüncüsü, verilerin nereden geldiğine ve nereye gittiğine bağlı olarak, ağ üzerinden gönderilmeden önce veya sonra bozulabilir. Bu durumda, iletinin içindeki ek sağlama toplamı, iletinin bütünlüğünü iki ağ ana bilgisayarı arasındakinden daha fazla koruyabilir.


3
Neden kriptografik ? Şifreleme karmalarının tasarımında kullanılan kısıtlamalar, iletimde kullanılan bir karma tasarımında kullanılanlarla aynı değildir (örneğin, kaynak yoğun olması şifreleme karmaları ve iletimde sorun için bir özelliktir).
AProgrammer

1
@AProgrammer Kelime seçiminin yanıltıcı olabileceğini itiraf ediyorum. "Doğru mesaj özeti" ile değiştirdim. Mesaj özeti işlevleri çok daha uzundur ve kazayla çarpışmaların pratik amaçlar için imkansız olduğu düşünülemez.
Philipp

2
Bu girişimleri mesajlar değişmemiş olduğundan emin olmak için, ancak UDP kullanılan sağlama toplamı oldukça zayıftır. Geçerli bir sağlama toplamına sahip rastgele bir mesaj alma şansı gerçekten de tüm 16-bit sağlama toplamları için 65536'da 1 olsa da, daha yararlı önlemler, rastgele veya bir patlamada düzenlenmiş algılanabilir bit çevirme sayısını içerir ve tüm sağlama toplamları eşit şekilde performans göstermez bu metrik.
Ben Voigt

1
@AProgrammer Şifreleme karmaları (MD5, SHA-1/2/3, ...), çarpışma direnci gibi güvenlik özelliklerini sağlarken mümkün olduğunca ucuz olmayı hedefler. Genellikle saniyede birkaç yüz MB işleyebilirler, bu nedenle Gbit bağlantılarından daha az bir darboğaz foranı olmamalıdırlar. Hala çarpışma direnci olması gerekmeyen kriptografik olmayanlardan daha yavaşlar. Yalnızca parola karmaları (PBKDF2, bcrypt, scrypt, Argon, ...) hesaplamak pahalı olur.
CodesInChaos

12

Ancak UDP bir sağlama toplamı sağlar.

  1. UDP sağlama toplamı sadece 16 bittir. Bu, 65536'da 1'in sağlama toplamını geçme olasılığının bozuk olduğu anlamına gelir.
  2. IPv4 üzerinden UDP'de sağlama toplamı isteğe bağlıdır, böylece bir gönderici teorik olarak sağlama toplamı olmadan bir paket gönderebilir.
  3. Sağlama toplamı verilerin yanı sıra IP / bağlantı noktası bilgilerini de kapsar. Bu, bozuk adreslere sahip paketleri bırakmak için yararlı olsa da, paket bir NAT'dan geçerse sağlama toplamının NAT tarafından yeniden hesaplanması gerektiği anlamına gelir.
  4. Sağlama toplamı yalnızca UDP paketinde seyahat ederken verileri korur. Uygulama düzeyinde bir sağlama toplamı, daha karmaşık bir sistemden geçerken verileri uçtan uca koruyabilir.
  5. UDP sağlama toplamı açıkça paketin bir UDP uygulaması tarafından oluşturulduğunu söyler. Sensörünüzden geldiğini söylemez. Uygulama düzeyinde bir sağlama toplamı, geçerli UDP olan ancak başka bir kaynaktan gelen paketlerin reddedilmesine yardımcı olabilir.

Bu yüzden UDP sağlama toplamına güvenmemek, ancak UDP sağlama toplamına güvenmemek ve daha sonra uygulama düzeyinde benzer şekilde zayıf bir sağlama toplamı uygulamak garip görünüyor.

Protokolü tasarlayan kişinin UDP'nin sağlama toplamı sağladığını veya protokolün aslında sağlama toplamı sağlamayan bir ortam üzerinde çalışmak üzere tasarlanmış olanın hafif bir varyantı olduğunu bilmemesi olasılığı vardır.

PS, bu yazı güvenlik etiketli olduğundan, söz konusu sağlama toplamlarının yanlışlıkla değişikliklere karşı korumak için tasarlandığını unutmayın. Kasıtlı modifikasyon veya kimlik sahtekarlığına karşı koruma, hem kasıtlı çarpışmalara / ön görüntülere karşı dirençli kriptografik karma işlevlerinin kullanılmasını hem de karmaların kendilerinin değiştirilmediğini doğrulamak için bazı mekanizmaların (örn. Ortak anahtar kullanılarak yapılan imzalar) kullanılmasını gerektirir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.