Ethereum Güvenlik Sorunları

Blockchain uygulamalarını yeni başlayanlara anlatırken en sık karşılaştığım sorulardan bir tanesi şüphesiz bunun güvenliği. Geçtiğimiz hafta bir kamu kurumunu ziyaret ettiğimde de oradaki yönetici bunu sormuştu bana. Peki bu sistem ne kadar güvenli?

Aslında bu soruya cevap vermek gerçekten çok zor. Güvenlik konusu geçtiğimiz yıldan bu yana yoğun bir şekilde radarımda. Sadece blockchain ya da cryptocurrency tarafında değil genel olarak siber güvenlik konusunda yoğun bir şekilde çalışıyorum. Daha önce de yayınlarda da bahsetmiştim, çalıştığım firmanın sistemine Rusya tabanlı bir saldırı ile başlayıp arkasından yoğun bir şekilde DDoS saldırıları alıyorduk. Bir çok fintech firmasının da aynı dertten muzdarip olduğunu öğrendik. Bunun üzerine İngiltere hükümetinin sağladığı siber polis desteği ve kendi çabalarımızla daha güvenli bir sistem kurmaya çabaladık ve firma içerisindeki tüm stratejimizi daha güvenli olmak için yeniden düzenledik. Buna bağlı olarak şifreleme yöntemlerimizi ve private key’lerimizi saklamak için yaratıcı çözümler ürettik. Ancak eğer birisi bu private key’lere ulaşırsa firmamızın güvenliğinin yeniden tehlikeye düşmesini engellemek için daha karmaşık güvenlik mekanizmalarını da devreye sokmamız gerekti. Demem o ki, %100 güvenli bir sistem kurmak gerçekten çok zor. Özellikle güvenliğin ne demek olduğunu bilmiyorsanız ve daha önceden hacklenmiş bir sistemde çalışmış birisi değilseniz ihtimalleri göz önünde bulundurmanız gerçekten çok ama çok zor. Bunun için tabiri caizse daha önce kazık yemiş kişilerle çalışmak en güzeli.

Tabi kı yukarıda yazdıklarım çalıştığım firma için geçerliydi, biz bir çok fintech firmasından sadece biriydik. Eğer Ethereum gibi tüm finansal işlemleri üzerinden çalıştıracak bir sistem tasarlıyorsanız güvenlik birinci önceliğiniz olmak zorunda. Üstelik bunun için alacağınız önlemler de bir kaç milyon pound’luk işlemlerin görüldüğü ‘küçük’ ölçekli bir firmanın alacağı önlemlerden birazcık daha kapsamlı olabilir! Bu yazıda da Ethereum’un aldığı güvenlik tedbirlerinden bir kaçından bahsedeceğim.

Proof of Stake ve Proof of Work arasındaki farklar

Diğer taraftan Ethereum Serenity sürümü ile birlikte PoW yerine Proof of Stake (PoS) kullanmaya başlıyor olacak. Bu durumda %51 saldırısı bir risk olmaktan çıkmış olacak. Çünkü PoS ile birlikte artık işlem gücü yerine madencilerin ellerinde bulunan ETH miktarı blokların validasyonunda önem kazanmış olmaya başlayacak. Aslında validasyon sırasında madenciler ellerindeki ETH kadar bir bloğa depozit ödeyecekler, eğer validasyon başarılı tamamlanırsa ve rastgele çalışan bir algoritma ilgili madenciye karar verirse o zaman ödedikleri depozito kadar para kazanacaklar ya da paralarını geri alacaklar. Eğer geçersiz kabul edilen bir bloğa depozit gönderirlerse bu durumda depozitolarını kaybedecekler. Yani bu durumda sistemi manipüle etmek için hatırı sayılır bir miktar yatırımı riske etmeleri gerekiyor olacak. Bunun detaylarını ilerleyen zamanlarda ayrı bir yazı ya da youtube kaydı olarak yayınlayacağım. Soru işaretleriniz olduğunu biliyorum, lütfen sabredin!

Yüksek hızlı Kuantum Bilgisayarları

Ancak kuantum bilgisayarları artık hayatımızın bir gerçeği olmaya başlıyor. Her ne kadar herkesin elinde bir kuantum bilgisayarı olmasa da D-Wave Systems 16-qubit’lik ilk prototipini 2007 yılında sunduğundan bu yana o tarafta da epey ilerlemiş durumda ve büyük araştırma merkezleri ya da devletler tarafından edinilmesi mümkün. Zaten Ethereum gibi büyük bir ağ kurmayı hedefliyorsanız korkmanız gereken topluluk sadece Rus ya da Çinli hacker’lar değil. Devletlerin de siber saldırı birimlerinin olduğunu artık duyuyoruz. Bu arada unutmadan, D-Wave’in 2048-qubit’lik bir işlemciyi bu yılın başında piyasaya sürdüğünü ve NASA, Google, Virginia Tech ve Volkswagen Group gibi firmalara sattığını biliyor muydunuz?

Klasik bilgisayarlarımızda 1 bit en küçük iletişim ve depolama birimi olarak kullanılıyor. Hepimizin bildiği gibi 1 bit iki değerden birini alabiliyor 1 ya da 0. Ancak qubit için konu biraz daha farklı. Qubit, iki durumlu bir kuantum mekanik sistem. Yani dikey ve yatay polarizasyon olarak iki farklı değer alabiliyor. Dolayısıyla çok daha fazla veri taşımasının yanı sıra daha hızlı bilgisayarlara olanak tanıyor. Bir fizik bölümü mezunu olarak bu konunun detayına ne kadar inersem o kadar konudan sapacağım için burada duruyorum. Ama bilmemiz gereken şey özetle, Dünya’da bizim bilgisayarlarımızdan farklı bir şekilde çalışan ve programlanabilen çok hızlı bilgisayarlar var ve bu bilgisayarlar Google ve NASA gibi kurumların elinde bilimsel araştırmalarda (umarım öyledir) kullanılıyor. Yani o ürkütücü gelecek o kadar da uzakta değil. Buradaki tehlike tabi ki verilerin erişilmesinden çok imzalarının çözülüp değişikliklerin implemente edilmesinde.

Bu kadar büyük bir ağ kuruyorsanız dolayısıyla bu gerçeklerle de mücadele etmeniz gerekiyor. Vitalik, bunun için yaklaşık iki yıl önce EIP 101 — Currency and Crypto Abstraction önerisinde bulunmuş, ve yine Serenity sürümü ile implemente edilecek. Böylelikle imzalanacak ve şifrelenecek olan transaction’larda bir soyutlama sağlanarak başka yöntemlerin implementasyonuna olanak sağlanacak. Peki böyle bir tehtit ile nasıl baş edebiliriz?

Çözümlerden bir tanesi Quantum Proof algoritmalar kullanmak olabilir. Örneğin 1979 yılında Leslie Lamport tarafından icat edilen Lamport İmzası yöntemini ele alalım. Burayı anlatabildiğim kadar basite indirmeye çalışacağım.

  1. İki tane veri kümesi oluşturun. A ve B. Bu kümelerin içerisinde güvendiğiniz bir rastgelelik algoritması ile 256 byte’lık 256 tane rastgele sayı ile bu kümeleri doldurun. Bu iki kümeyi de gizli bir yerde saklayın, çünkü bunlar sizin private key yani gizli anahtarlarınız olacak.
  2. Her bir kümeyi SHA-256 ile hashleyin. Elinizde A’ ve B’ diye iki tane hash seti ve 512 tane hash oluşmuş olacak.
  3. İmzalamak istediğiniz veriyi de SHA-256 ile hash’leyin.
  4. Şimdi hash’ini aldığınız veriyi gezmeye başlayın. Eğer n. bit 0 ise A dan n. elemanını, eğer 1 ise B den n. elemanını ekrana yazın. Kullanılmayan tüm sayıları her iki setten de silin.

Böylece 4. adımda elinizde 256 bitlik bir imza ve bu imzayı kontrol edebileceğiniz 2. adımda oluşturduğunuz A’ ve B’ public key’leri bulunmuş oluyor. Her şey rastgele üretilen sayıların hash’leriyle çalıştığı için ve üretilen setler çok büyük oldukları için böyle bir imzayı çözmek gerçekten çok güç.

Denial of Service Saldırıları

Bu saldırı sırasında amaç sistemin cevap vermesini engelleyecek kadar çok işlem yapılmasını sağlamak ve bu sırada sistemi savunmasız ya da işlem dışı bırakmak. Ethereum’un tasarımı sırasında belki de ilk ele alınan konulardan bir tanesi de bu saldırı yöntemiydi. Çünkü böyle bir saldırıyı yapmak gerçekten çok kolay ve özellikle merkezi olmayan böyle sistemler açısından çok riskli, çünkü kalenin tek bir kapısı yok! Ancak Ethereum’da bir işlem yapmak istiyorsanız bunun için bir Gas yani bir ücret ödemeniz gerekiyor. Böylece saldırı yapmak için ciddi bir masrafı da göz önünde bulundurmak zorundasınız.

Hiç bir yazılım kurşun geçirmez değildir, eğer bir arayüzü varsa muhtemelen kırılabilir. Ancak bunu zorlaştırmak yazılımcıların elinde. Ethereum bu konuda epey güzel bir iş çıkartıyor ve yakında yayınlanacak Metropolis ve ardından çıkacak olan Serenity sürümleriyle birlikte çok daha güvenli olacak.

Şahsen ben Serenity’nin de yayınlanmasıyla devletlerin ya da özel kurumların bilinçli ve sistemli bir strateji ile bu platformda kendi uygulamalarını geliştirmesini mantıklı buluyorum.