Risk Özet Fonksiyonu Değildir. Kendi İki Uygulamamızın Bayt Bayt Uyuşmak Zorunda Olmasıdır.

Burada anlatılan risk tamamen bizimdir ve seçtiğimiz ilkel yapıyla hiçbir ilgisi yoktur.

Özet fonksiyonu seçimi neden en az ilginç karar

Bir özet fonksiyonu, herhangi bir girdiyi sabit boyutlu bir değere çevirir; öyle ki aynı değere sahip iki girdi bulmak kimsenin erişebileceğinin ötesindedir ve değer girdi hakkında hiçbir şey açığa vurmaz.

Modern özet fonksiyonları bunda iyidir ve iyi olanları çoğu amaç için birbirinin yerine geçer. Kullandığımız fonksiyon açıktır, yaygın olarak benimsenmiştir, hızlıdır ve bilinen pratik bir saldırısı yoktur. Onu seçmek hiçbir zekâ gerektirmedi ve bunun için pay istemek tuhaf olurdu.

Yani özet seçimini uzun uzun anlatan bir satıcı, sisteminin en güvenli kısmını anlatıyordur. Fark etmeye değer, çünkü oraya harcanan dikkat, gerçekten çöken kısımlara harcanmayan dikkattir.

Riskin gerçekte yaşadığı yer

Bizim iki bağımsız uygulamamızın aynı baytları üretmesi gerekiyor.

Düğümümüz bir dilde, yayımladığımız SDK başka bir dilde yazılmıştır. İkisi de bir işlem için imzalanacak baytları hesaplar. O iki hesap herhangi bir yerde tek bir bayt farklıysa, bir tarafın geçerli saydığı bir işlemi diğer taraf reddeder.

Alan sıralaması. Tamsayı kodlaması. Bir isteğe bağlı alan yokken nasıl temsil edildiği. Metin normalleştirmesi. Bunların hiçbiri özetleme değildir. Hepsi özetlemeden öncedir ve özet, herhangi bir uyuşmazlığı sadakatle iki tamamen farklı değere çevirir, hangi baytın buna sebep olduğuna dair hiçbir ipucu vermeden.

Bu, bizim konumumuzdaki sistemlerin çökmesinin klasik yoludur ve sessizce çöker: geçerli görünen girdi, doğru görünen imza, reddedilen işlem, işe yarar hata yok.

Taşınabilir olan genel ders

Tek bir şartnamenin iki uygulamasından kurulmuş sistemlerde, ürün şartnamedir ve kod onun bir kopyasıdır. İkisi farklı diller konuşan farklı insanlarca yazıldığı her seferde, aralarındaki boşluk kusurların yaşadığı yerdir.

Yani işe yarayan soru asla "hangi özet" değil, "bayt düzeyindeki tam tanım nedir ve iki uygulamayı onun üzerinde nasıl tutuyorsunuz?"dur. Bu soru satıcıları hızla ayırır, çünkü çoğu tanımı hiç yazmamıştır.

SDK yayımlayan bir satıcıya sorulacaklar

"Düğümünüzün dışında bir şey imza baytlarınızı hesaplıyor mu?" Evetse, öyle adlandırsınlar ya da adlandırmasınlar, tek bir tanımın iki uygulaması vardır.

"O tanım, uygulanmış olmasından ayrı olarak nerede yazılı?" Ya iki tarafın da karşısında kontrol edildiği bir şartname vardır ya da kod şartnamedir ve kopyalar ayrışır.

"İkisini yalnızca birer vektöre karşı değil, birbirine karşı test ediyor musunuz?" Bunlar farklı testlerdir. Bizimki özel bir testle değil uçtan uca yolla kapsanıyor.

"Bir uyuşmazlık bana nasıl görünür?" Genellikle açıklaması olmayan bir ret olarak, ki bu olmadan önce bilinmeye değer.

Bu karar için ne anlama geliyor

Bağımsız olarak incelenmiş işlem işleme ihtiyacınız varsa, bizimki incelenmedi ve alttaki standart bir özet fonksiyonu bunu değiştirmez.

Kendi çökme biçimlerimizi anlayıp anlamadığımıza karar veriyorsanız, dürüst sıralama şudur: ilkel yapı sistemdeki en güvenli bileşendir, risk iki uygulamamızın uyuşmayı sürdürmesidir ve bunun için özel bir testimiz değil uçtan uca kanıtımız var.

Okumaya devam edin

Risk Özet Fonksiyonu Değildir. Kendi İki Uygulamamızın Bayt Bayt Uyuşmak Zorunda Olmasıdır. · Solidus