Son günlerde, Bitcoin geliştiricisi Antoine Poinsot, "Büyük Konsensüs Temizliği" adlı bir soft fork önerisi sundu. Bu öneri, Bitcoin protokolündeki uzun zamandır var olan birkaç açığı ve zayıflığı düzeltmeyi amaçlıyor; bunlar arasında son zamanlarda tartıştığımız tekrar eden işlem sorunu ve bu makalede daha ayrıntılı olarak ele alınacak daha ciddi "zaman bükme saldırısı" açığı da bulunmaktadır.
Bitcoin Blok Zaman Damgası Koruma Mekanizması
Zaman çarpıtma saldırılarını tartışmadan önce, mevcut zaman manipülasyonu koruma kurallarını anlamamız gerekiyor:
Medyan geçmiş zamanı (MPT) kuralı: Blok zaman damgası, önceki 11 bloğun medyan zamanından daha geç olmalıdır.
Gelecek blok zaman kuralı: Blok zaman damgası, düğüm eşdeğerlerinin medyan zamanından 2 saatten fazla olmamalıdır. Düğüm zamanının yerel sistem saatiyle maksimum izin verilen farkı 90 dakikadır.
MPT kuralları, blok zaman damgalarının geçmişten çok uzaklaşmasını önlerken, gelecekteki blok kuralları zaman damgalarının aşırı şekilde geleceğe girmesini sınırlar. Dikkat edilmesi gereken bir nokta, geçmiş zaman damgalarını engellemek için gelecekteki blok kurallarına benzer bir mekanizmanın uygulanamaz olmasıdır, çünkü bu, başlangıç blok zinciri senkronizasyonunu etkileyebilir. Zaman çarpıtma saldırısı, sahte antik zaman damgalarının olasılığını kullanmaktadır.
Satoshi Nakamoto'nun "bir eksik" hatası
Bitcoin'in zorluk ayarlama döngüsü 2016 blok içermektedir, hedef blok oluşturma süresi 10 dakika olarak hesaplandığında, yaklaşık iki haftadır. Madencilik zorluğunu ayarlarken, protokol ilgili 2016 blok penceresindeki ilk ve son blok arasındaki zaman damgası farkını hesaplayacaktır. Bu 2016 blok penceresi aslında 2015 blok aralığı içermektedir (yani 2016'dan 1 çıkar). Bu nedenle, doğru hedef süre 60 saniye × 10 dakika × 2015 aralığı = 1,209,000 saniye olmalıdır. Ancak, Bitcoin protokolü hedefi hesaplamak için 2016 sayısını kullanmaktadır: 60 saniye × 10 dakika × 2016 = 1,209,600 saniye. Bu tipik bir bir eksik hata olup, Satoshi Nakamoto'nun bloklar ile blok aralıkları kavramını karıştırmış olabileceğini göstermektedir.
Bu hata, hedef zamanın olması gerekenin %0.05 daha uzun olmasına neden oldu. Aslında, Bitcoin'in hedef blok aralığı 10 dakika değil, 10 dakika 0.3 saniyedir. Bu açıkça önemsiz görünen bu hata, Bitcoin'in lansmanından bu yana ortalama blok aralığının 9 dakika 36 saniye olduğu ve bu sürenin belirgin şekilde 10 dakikadan az olduğu gerçeği ile çelişiyor. Bunun başlıca nedeni, 2009'dan bu yana ortalama hash gücünün sürekli artış göstermesidir. Bu aynı zamanda, son yarılanma olayının 2024 Nisanında gerçekleşmesinin nedeninin 2025 Ocak değil olduğu konusunda da bir açıklama sunmaktadır. Gerçekten de, süreci hızlandırmış olduk. Uzun vadede, fiyat ve hash gücü stabilize olduğunda, bu 0.3 saniyelik hata, bizi belirlenen programa yeniden döndürmede yardımcı olabilir.
Zaman Çarpıtma Saldırısı
Zaman bükme saldırısı yaklaşık 2011 yılında keşfedildi ve Satoshi'nin zorluk hesaplamasındaki bir hatayı kullanıyor. Madenciliğin tamamen merkezileşmiş olduğunu varsayalım, madenciler protokolün izin verdiği aralıkta istedikleri zaman damgasını ayarlayabilirler. Saldırgan, çoğu bloğun zaman damgasını bir önceki bloktan yalnızca bir saniye öne ayarlayarak blok zincirinin zamanını olabildiğince yavaş ilerletir ve MTP kurallarına uyar. Zamanın ilerlemesini en aza indirmek için, madenciler altı blok boyunca aynı zaman damgasını koruyabilir, ardından yedinci blokta zamanı bir saniye artırabilir ve bu döngüyü sürdürebilir.
Bu saldırı, blok zincirinin zamanının giderek gerçek zamanın gerisinde kalmasına ve zorluğun sürekli artmasına neden olur, bu da madenciliği giderek daha zor hale getirir. Ancak, saldırının etkisini artırmak için, her zorluk ayarlama döngüsündeki son blokta, madenciler zaman damgasını gerçek dünya zamanına ayarlarlar. Ardından, yeni zorluk ayarlama döngüsündeki ilk bloğun zaman damgası, bir önceki döngünün sondan bir önceki bloğundan sadece bir saniye önceki bir zamana geri ayarlanır. Bu işlem hala MTP kurallarına uymaktadır çünkü tek bir anomali, 11 bloğun medyanını etkilemez.
Bu saldırı uygulandıktan sonra, ilk dönemin zorluğu etkilenmeyecek. Ancak ikinci ayarlama döneminden itibaren, zorluk aşağıya çekilmeye başlayacak. Bu noktada, madenciler blokları çok hızlı bir şekilde oluşturabilir, kısa bir süre içinde büyük miktarda Bitcoin üretebilir ve böylece haksız kazanç elde edebilirler.
Saldırının Fizibilitesi ve Zorlukları
Teorik olarak bu tür bir saldırı yıkıcı olabilir, ancak pratikte uygulanması birden fazla zorlukla karşı karşıya kalır:
Çoğu hesaplama gücünü kontrol etmeniz gerekebilir.
Dürüst madencilerin varlığı saldırı zorluğunu artırır.
MTP kuralları ve dürüst madencilerin zaman damgaları, kötü niyetli zaman damgalarının geriye dönük etkisini sınırlayacaktır.
Eğer dürüst madenciler herhangi bir zorluk ayarlama penceresinin ilk bloğunu üretirse, o döngüdeki saldırılar etkisiz hale gelecektir.
Saldırı süreci herkes tarafından görülebilir, bu da topluluğa acil bir yazılım çatallaması düzeltmesi sunmak için yeterli zaman verebilir.
Çözüm
Bu açığı düzeltmek için birkaç olası yöntem var:
Zorluk ayarlama algoritmasını değiştirin, 2016 penceresindeki bloklar arasındaki zaman aralığını hesaplayın ve eksik hata tamamen düzeltin. Ancak bu bir sert çatal gerektirebilir.
MTP kuralını iptal edin, her blokta zamanın her zaman ileriye doğru hareket etmesini gerektirir. Ancak bu, zamanın çok uzak bir gelecekte sıkışmasına neden olabilir ve sistem saatini kullanan madenciler için sorun yaratabilir.
Daha basit bir çözüm, yeni zorluk döneminin ilk bloğunun zamanının, önceki dönemin son bloğundan belirli bir dakika sayısı kadar önce olmamasını sağlamaktır. Poinsot'un büyük konsensüs temizleme önerisinde bu süre 2 saat olarak belirlenmiştir.
Bu 2 saatlik sınırlamanın aşağıdaki avantajları vardır:
Beklenmedik geçersiz blok riskini en aza indirin
Gelecekteki blok zaman damgası kurallarıyla eşleşmek
Mevcut kurallara kıyasla, daha temkinli bir değişimdir.
0.6'lık bir ayar aralığı oldukça küçüktür
Bu, saldırganların her döngüde zorluğu yaklaşık %0.6 oranında aşağıya manipüle etmesine izin verse de, bu yalnızca tek seferlik bir değişiklik olacak ve birikmeyecek. Genel olarak, bu çözüm ağ güvenliğini koruma ve sistemin istikrarını sürdürme arasında iyi bir denge sağlamaktadır.
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
19 Likes
Reward
19
7
Share
Comment
0/400
ColdWalletGuardian
· 5h ago
Bu hatayı düzeltirsem rahatlayacağım.
View OriginalReply0
BridgeNomad
· 5h ago
yeterince köprü istismarlarıyla yanmıştım ki - bu saldırı vektörü bana juno köprüsü travması yaşatıyor fr
View OriginalReply0
fren.eth
· 5h ago
Kimse aptal değil, kimse bedava almak istemez.
View OriginalReply0
NotAFinancialAdvice
· 5h ago
Düzeltme tamamlandıktan sonra madenciler oynamamalı.
View OriginalReply0
retroactive_airdrop
· 5h ago
Boşu boşuna tamir ettim.
View OriginalReply0
GmGmNoGn
· 5h ago
Yine bug düzeltme, birini çözüyorum, diğeri geliyor.
View OriginalReply0
quiet_lurker
· 5h ago
Aslında madencinin artık kazanı patlatması gerekiyordu.
Bitcoin zaman bükme saldırı açığı analizi: Prensip, etki ve düzeltme planı
Bitcoin Güvenlik Açığı: Zaman Bükme Saldırısı
Son günlerde, Bitcoin geliştiricisi Antoine Poinsot, "Büyük Konsensüs Temizliği" adlı bir soft fork önerisi sundu. Bu öneri, Bitcoin protokolündeki uzun zamandır var olan birkaç açığı ve zayıflığı düzeltmeyi amaçlıyor; bunlar arasında son zamanlarda tartıştığımız tekrar eden işlem sorunu ve bu makalede daha ayrıntılı olarak ele alınacak daha ciddi "zaman bükme saldırısı" açığı da bulunmaktadır.
Bitcoin Blok Zaman Damgası Koruma Mekanizması
Zaman çarpıtma saldırılarını tartışmadan önce, mevcut zaman manipülasyonu koruma kurallarını anlamamız gerekiyor:
Medyan geçmiş zamanı (MPT) kuralı: Blok zaman damgası, önceki 11 bloğun medyan zamanından daha geç olmalıdır.
Gelecek blok zaman kuralı: Blok zaman damgası, düğüm eşdeğerlerinin medyan zamanından 2 saatten fazla olmamalıdır. Düğüm zamanının yerel sistem saatiyle maksimum izin verilen farkı 90 dakikadır.
MPT kuralları, blok zaman damgalarının geçmişten çok uzaklaşmasını önlerken, gelecekteki blok kuralları zaman damgalarının aşırı şekilde geleceğe girmesini sınırlar. Dikkat edilmesi gereken bir nokta, geçmiş zaman damgalarını engellemek için gelecekteki blok kurallarına benzer bir mekanizmanın uygulanamaz olmasıdır, çünkü bu, başlangıç blok zinciri senkronizasyonunu etkileyebilir. Zaman çarpıtma saldırısı, sahte antik zaman damgalarının olasılığını kullanmaktadır.
Satoshi Nakamoto'nun "bir eksik" hatası
Bitcoin'in zorluk ayarlama döngüsü 2016 blok içermektedir, hedef blok oluşturma süresi 10 dakika olarak hesaplandığında, yaklaşık iki haftadır. Madencilik zorluğunu ayarlarken, protokol ilgili 2016 blok penceresindeki ilk ve son blok arasındaki zaman damgası farkını hesaplayacaktır. Bu 2016 blok penceresi aslında 2015 blok aralığı içermektedir (yani 2016'dan 1 çıkar). Bu nedenle, doğru hedef süre 60 saniye × 10 dakika × 2015 aralığı = 1,209,000 saniye olmalıdır. Ancak, Bitcoin protokolü hedefi hesaplamak için 2016 sayısını kullanmaktadır: 60 saniye × 10 dakika × 2016 = 1,209,600 saniye. Bu tipik bir bir eksik hata olup, Satoshi Nakamoto'nun bloklar ile blok aralıkları kavramını karıştırmış olabileceğini göstermektedir.
Bu hata, hedef zamanın olması gerekenin %0.05 daha uzun olmasına neden oldu. Aslında, Bitcoin'in hedef blok aralığı 10 dakika değil, 10 dakika 0.3 saniyedir. Bu açıkça önemsiz görünen bu hata, Bitcoin'in lansmanından bu yana ortalama blok aralığının 9 dakika 36 saniye olduğu ve bu sürenin belirgin şekilde 10 dakikadan az olduğu gerçeği ile çelişiyor. Bunun başlıca nedeni, 2009'dan bu yana ortalama hash gücünün sürekli artış göstermesidir. Bu aynı zamanda, son yarılanma olayının 2024 Nisanında gerçekleşmesinin nedeninin 2025 Ocak değil olduğu konusunda da bir açıklama sunmaktadır. Gerçekten de, süreci hızlandırmış olduk. Uzun vadede, fiyat ve hash gücü stabilize olduğunda, bu 0.3 saniyelik hata, bizi belirlenen programa yeniden döndürmede yardımcı olabilir.
Zaman Çarpıtma Saldırısı
Zaman bükme saldırısı yaklaşık 2011 yılında keşfedildi ve Satoshi'nin zorluk hesaplamasındaki bir hatayı kullanıyor. Madenciliğin tamamen merkezileşmiş olduğunu varsayalım, madenciler protokolün izin verdiği aralıkta istedikleri zaman damgasını ayarlayabilirler. Saldırgan, çoğu bloğun zaman damgasını bir önceki bloktan yalnızca bir saniye öne ayarlayarak blok zincirinin zamanını olabildiğince yavaş ilerletir ve MTP kurallarına uyar. Zamanın ilerlemesini en aza indirmek için, madenciler altı blok boyunca aynı zaman damgasını koruyabilir, ardından yedinci blokta zamanı bir saniye artırabilir ve bu döngüyü sürdürebilir.
Bu saldırı, blok zincirinin zamanının giderek gerçek zamanın gerisinde kalmasına ve zorluğun sürekli artmasına neden olur, bu da madenciliği giderek daha zor hale getirir. Ancak, saldırının etkisini artırmak için, her zorluk ayarlama döngüsündeki son blokta, madenciler zaman damgasını gerçek dünya zamanına ayarlarlar. Ardından, yeni zorluk ayarlama döngüsündeki ilk bloğun zaman damgası, bir önceki döngünün sondan bir önceki bloğundan sadece bir saniye önceki bir zamana geri ayarlanır. Bu işlem hala MTP kurallarına uymaktadır çünkü tek bir anomali, 11 bloğun medyanını etkilemez.
Bu saldırı uygulandıktan sonra, ilk dönemin zorluğu etkilenmeyecek. Ancak ikinci ayarlama döneminden itibaren, zorluk aşağıya çekilmeye başlayacak. Bu noktada, madenciler blokları çok hızlı bir şekilde oluşturabilir, kısa bir süre içinde büyük miktarda Bitcoin üretebilir ve böylece haksız kazanç elde edebilirler.
Saldırının Fizibilitesi ve Zorlukları
Teorik olarak bu tür bir saldırı yıkıcı olabilir, ancak pratikte uygulanması birden fazla zorlukla karşı karşıya kalır:
Çözüm
Bu açığı düzeltmek için birkaç olası yöntem var:
Zorluk ayarlama algoritmasını değiştirin, 2016 penceresindeki bloklar arasındaki zaman aralığını hesaplayın ve eksik hata tamamen düzeltin. Ancak bu bir sert çatal gerektirebilir.
MTP kuralını iptal edin, her blokta zamanın her zaman ileriye doğru hareket etmesini gerektirir. Ancak bu, zamanın çok uzak bir gelecekte sıkışmasına neden olabilir ve sistem saatini kullanan madenciler için sorun yaratabilir.
Daha basit bir çözüm, yeni zorluk döneminin ilk bloğunun zamanının, önceki dönemin son bloğundan belirli bir dakika sayısı kadar önce olmamasını sağlamaktır. Poinsot'un büyük konsensüs temizleme önerisinde bu süre 2 saat olarak belirlenmiştir.
Bu 2 saatlik sınırlamanın aşağıdaki avantajları vardır:
Bu, saldırganların her döngüde zorluğu yaklaşık %0.6 oranında aşağıya manipüle etmesine izin verse de, bu yalnızca tek seferlik bir değişiklik olacak ve birikmeyecek. Genel olarak, bu çözüm ağ güvenliğini koruma ve sistemin istikrarını sürdürme arasında iyi bir denge sağlamaktadır.