Bitcoin İyileştirme Önerisi BIP 0069 Nedir?
BIP, yani Bitcoin İyileştirme Önerisi, Bitcoin’in kodunu geliştirmek için sunulan bir değişiklik önerisidir. Her kullanıcı bu tür önerilerde bulunabilir ve topluluk tarafından tartışılıp onaylandıktan sonra kabul edilip uygulanabilir. BIP’ler genellikle önemli güncellemeleri kapsar (hata düzeltmeleri gibi küçük değişiklikler büyük çaplı tartışmalara sunulmaz).
Bu yazıda, 0069 seri numarasına sahip özel bir BIP’yi inceleyecek ve neden önemli olduğunu açıklayacağız. Bu güncelleme, Bitcoin işlemlerinin analizlere karşı daha dayanıklı olmasını sağlayarak güvenliği artırmayı amaçlar.
Hangi veriler analiz ediliyor?
BIP 0069’un ne önerdiğini tam olarak anlamak için, Bitcoin ağında varlıkların nasıl transfer edildiğini bilmek gerekir. Her işlemin girdileri (input) ve çıktıları (output) bulunur; ancak bunlardan herhangi bir şeyin fiziksel olarak aktığı düşünülmemelidir. Aslında, bunlar Bitcoin’lerin nereden nereye gönderildiğini kaydeder. Girdiler, önceki işlemlerin çıktıları olan harcanmamış işlem çıktıları (UXTO) ile bağlantılıdır. Bu biraz karmaşık gelebilir, bu yüzden bir örnekle açıklayalım.
Bitcoin’deki işlemleri, nakit para ile yapılan ödemelerle karşılaştıralım. Örneğin, arkadaşınızdan bir şey almak için 15 BTC ödemek istiyorsunuz. Daha önce 10’ar BTC’lik iki işlem aldınız ve cüzdanınızda her biri “10” değerinde iki banknotunuz var. Her banknotun üzerinde, onu nereden aldığınız kurşun kalemle yazılı. Bunlar, yeni işleminizin girdileri olur. İki banknot olduğu için iki giriş vardır.
Şimdi bu banknotları alıp, üzerlerine “Peter’dan Charlie’ye” yazabilir ve arkadaşınıza verebilirsiniz. Bu mesaj, işlemin ilk çıktısı olur. Arkadaşınız size para üstü vermek zorunda olduğundan, cüzdanından 5 BTC çıkarır, üzerine “Peter’a Charlie’den para üstü” yazar – bu da para üstü için ikinci bir çıktı oluşturur – ve size verir.
Süreci oldukça basitleştirdik ve işlemde sadece üç banknot yer aldı. 20 BTC’nizi “bozuk para” şeklinde de alabilirsiniz; bu durumda iki büyük işlem yerine birçok küçük işlem oluşur. Böylece çok daha fazla giriş ve çıkış meydana gelir.
Güvenlik sorunu
Sorun, girdilerin ve çıktının nasıl sıralandığıyla ilgilidir. Bu verilerin kaydedilmesi için standart bir yöntem yoktur; her cüzdan kendi sıralama yöntemini kullanabilir. Bazıları önce harcanan girdileri, ardından para üstü çıktısını listeler ve bu da gözlemcilerin gönderici ve alıcı cüzdanlardaki fonlar hakkında bilgi edinmesini sağlar. Diğerleri girdileri cüzdana eklenme tarihine göre sıralar ve bu şekilde devam eder. Bu da, belirli bir cüzdan ya da servise özgü kalıpların veri analiziyle tespit edilebileceği anlamına gelir.
Kripto cüzdan geliştirme sürecinde başka bir potansiyel sorun daha vardır. BIP 0069’un yazarı Kristov Atlas, bir saldırganın (örneğin bir geliştirici) cüzdanın koduna erişimi olduğu bir senaryoda, girdiler ve çıktılar özel anahtarın bitlerine göre sıralanacak şekilde kodu değiştirdiğini varsaymıştır. Bu değişiklik, saldırganın sadece işlemleri izleyerek özel anahtarı bulmasını sağlar ve bu “implant” tespit edilmesi çok zor bir açık olurdu.
Sorun nasıl çözülebilir?
İşlemlerin girdileri ve çıktıları öyle bir şekilde sıralanırsa ki herhangi bir kalıp oluşmasın, bu zafiyet ortadan kalkar. BIP 0069, sıralamanın belirlenemez (nondeterministic) bir şekilde yapılmasını öneriyor; yani, belirli bir girdiden yola çıkarak sıralama tahmin edilemez. Üstelik bunun için karmaşık algoritmalara gerek yok; verileri sadece sözlük sırasına (artan alfabetik sıraya) göre düzenlemek yeterli.
Tangem Wallet bu yaklaşımı zaten kullanıyor. Evet, iOS ve Android cihazlar için mevcut.