Kendisi “Blockchain” ifadesini makalesinde hiç kullanmamış olsa da, kimliği gizemini koruyan Satoshi Nakamoto bu teknolojinin ilk örneğini dijital programlanabilir Bitcoin ile hayatımıza kazandırdı. Dijital dünyada hakim olan merkeziyetçi sistemlere meydan okuyan bu devrimsel teknoloji, Bitcoin’den sonra farklı ve yeni örnekleriyle birçok kullanım senaryosu için geliştirilmeye devam ediyor. Bugün Blockchain, finans dünyasından tedarik zincirine kadar pek çok sektörde devrim yaratacak potansiyelde. Ancak her yenilikte olduğu gibi, bu teknolojinin de standartları yeterli olgunluğa ulaşana kadar kendine özgü güvenlik açıkları ve kırılgan noktaları için tedbir almak, hayati önem taşıyor. Blockchain üzerine çalışan bir girişimcinin güvenli bir ürün yaratabilmesi için dikkat etmesi gerekenleri derledim ve aşağıda özetledim. Gelin sırayla inceleyelim.

Blockchain Ağını Anlamak ve Doğru Seçimi Yapmak

Bir gün yazılım ekibim için yaptığım bir mülakat esnasında, deneyimli bir adaya bir problem senaryosu paylaştım ve bunun nasıl bir mimari ile çözülebileceğini sordum, probleme çözüm olacak bir sistem tasarlamasını istedim. Görüştüğüm aday hemen teknoloji ve uygulama isimlerini sıralamaya başladı; “..arayüzde React.js; ancak seo/performans mühimse Next.js olsun, sunucuda ise AWS, Django, Ka a olsun..” diye devam ediyordu. O an sözünü kesmek zorunda kaldım.

İsterseniz siz de burada bir es verip kendinize sorun; önce uygun çözümü kurgulamak ve ancak ondan sonra o tasarımı hayata geçirecek uygun teknolojileri belirleyip bir seçim yapmak daha doğru bir yaklaşım olmaz mı? Evet, Blockchain gerçekten gelecek vadeden ve yatırımcıların da oldukça ilgisini çeken bir teknoloji. Peki, odaklandığınız problemin çözümü için Blockchain gerçekten gerekli mi, gerekliyse hangi Blockchain’i kullanmalısınız?

Her Blockchain ağının kendine özgü dinamikleri bulunur (ZKP, Homomorfik şifreleme, vb.). Örneğin Bitcoin yüksek güvenlik amacıyla yaratılmıştır. Diğer yandan Ethereum, bizlere yeni yetenekler sunabilmek pahasına güvenlik risklerini de beraberinde getirir. Ethereum üzerinde bir akıllı kontrat yazabilirsiniz (Bitcoin kodunda da bu mümkün; ancak başka bir makale konusu).

Kontratın işlevini kurgulayabilme özgürlüğü size verilirken, güvenlik tedbirlerini alma sorumluluğu da yine sizdedir.

Diğer temel bir konu ise Blockchain işleminin yaşam döngüsüdür (transaction life-cycle). Blockchain’in anatomisine baktığımızda blok yapısı, işlem listesi, veri bütünlüğü ve hızlı doğrulama için Merkle/Patricia ağaçları, Ethereum için durum makinesi (state machine), mempool gibi yapılar karşımıza çıkar ve bu yapıların nasıl çalıştığını öğrenmek, kodlarımızın nasıl bir ekosistemde çalıştığını daha iyi resmetmenizi sağlar. Bir işlemin imzalanıp Blockchain’e yazılana kadar geçirdiği süreçte, MEV (Miner Extractable Value) gibi beklenmedik tehlikeler söz konusudur. Bu tür saldırılar (front-running, vs.), işlem sırasını manipüle ederek haksız kazanca neden olabilir.

Akıllı Sözleşmelerin Anatomisi ve Güvenliği

Akıllı sözleşmeler, Blockchain uygulamalarının kalbidir. Ancak, The DAO Hack (2016) ve Parity multi-sig cüzdan saldırısı (2017) gibi olaylar ve açıklar (reentrancy, vb.), akıllı sözleşme güvenliğinin ne kadar kritik olduğunu gözler önüne seriyor. Dolayısıyla, akıllı sözleşme anatomisini anlamak, güvenli tasarım desenlerini uygulamak (proxy, factory, vb.) ve kapsamlı testler sağlamak hayati önem taşıyor.

Kodlar için analiz araçları kullanmak (ör: MythX, Slither, Echidna, vb.) bazı açıkları önceden tespit etmenize yardımcı olur. Statik kod analizi, yazılmış kodu okuyarak güvenlik açıklarını test ederken, dinamik kod analizi uygulamanın çalışması esnasındaki davranışını test eder. Analizden sonra kodu direkt canlı ağa yüklemek yerine önce test ağlarını kullanırsanız, kodlarınızı önden simüle edebilirsiniz.

Kullanılan veri yapıları ve erişim belirleyiciler de uygulamanın güvenliğini doğrudan etkiler. Yanlış tanımlanmış değişkenler/fonksiyonlar, beklenenin üzerinde veri birikmesine, yetki dışı erişime, yüksek “gas” tüketimi nedeniyle beklenmedik maliyetler oluşmasına ve hatta kontratın çalışmasının engellenmesine (DoS) ve benzeri birçok probleme neden olabilir.

Ethereum‘da geliştirme yapıyorsanız, Ethereum Sanal Makinesi (EVM)’in çalışma prensiplerini anlamak, opcode, gas mekanizması ve bellek yönetimi gibi konular, potansiyel güvenlik açıklarını öngörmenize ve daha verimli kod yazmanıza fayda sağlar.

Akıllı kontratlarınızı belli standart desenler/şablonlar ile geliştirmek için OpenZeppelin‘i ve aşağıda paylaşılan diğer kaynakları inceleyebilirsiniz.

Anahtarların Önemi ve Altyapı Yönetimi

Özel anahtarlar (private key) güvenliği, tüm sistemin güvenliğini belirler. Hardware Security Module (HSM), çoklu imza cüzdanları ve düzenli anahtar rotasyonu, güvenlik tedbirlerinin yalnızca bazılarıdır. Burada önemli olan nokta, özel anahtarın mümkünse internet erişimi olmayan bir cihazda, yüksek rastgelelik derecesiyle oluşturulması ve oluşturulan cihazda şifreli bir formda saklanmasıdır. Bu özel anahtar ile imzalama yapılacağı zaman, işlem verisi (unsigned TX) bu cihaza/sunucuya gönderilir, cihaz/sunucu içerisinde imzalama işlemi yapılır ve imzalanmış işlem verisi elde edilir. Özel anahtarı sıklıkla kullanacağınız bir uygulama geliştiriyorsanız, Hardware Security Module (HSM) veya kasa yazılımlarında (Soft HSM, Hashicorp Vault, AWS Secret Manager, vb.) şifreli bir şekilde saklanması, diğer yöntemlere göre daha güvenli olabilir. Cüzdan topolojilerini inceleyip soğuk – sıcak cüzdan yöntemlerini kullanmayı ve güvenli yedekleme-kurtarma prosedürlerini oluşturmayı ihmal etmeyin.

Blockchain uygulamanızın güvenliği, üzerinde çalıştığı altyapı kadar güvenlidir. Uçtan uca kapsamlı ve katmanlı güvenlik stratejileri, güvenlik duvarları (WAF, vb.), izleme ve log yönetimi (SIEM), düzenli güncelleme yönetimi, sisteminizin sağlığı ve ofisten gözünüz arkada kalmadan çıkabilmeniz için önemlidir.

Güvenlik bir yolculuktur

Blockchain girişimcisi için güvenlik, sürekli bir yolculuktur. Her gün yeni tehditler ve zorluklarla karşılaşabilirsiniz; ancak doğru stratejiyle, zorlukları fırsata dönüştürebilir ve dijital geleceğin şekillenmesinde öncü rol oynayabilirsiniz.

Kaynaklar:
http://elaineshi.com/docs/blockchain-book.pdf

https://ethereum.org/tr/developers/docs/smart-contracts/security/
https://ethereum.org/en/developers/docs/smart-contracts/testing/
https://consensys.github.io/smart-contract-best-practices/attacks/
https://www.chainalysis.com/blog/blockchain-security/
https://github.com/chronaeon/beigepaper/blob/master/beigepaper.pdf
https://github.com/ethereumbook/ethereumbook
https://docs.openzeppelin.com/learn/developing-smart-contracts