26 Aralık 2021 - 03:00Bir cüzdanın özel anahtarını (Private Key) bulabilmek gerçekten ne kadar zor olabilir? Bu yazımda bunu derinlemesine inceliyorum.Özel Anahtarı Tanıyalım. Private Key nedir?Private key’i tanıyabilmemiz için, öncelikle bunun nasıl oluştuğunu bilmekte fayda olacaktır. Private key, rastgele oluşturulmuş 64 karakterlik HEX değerinden (ya da rastgele oluşturulmuş 32 byte dizi) başka bir şey değildir aslında. Peki ya HEX (Hexadecimal) nedir? HEX, kısaca [0-9] ve [a-f] sembollerinden oluşan 16 tabanlı bir sayı sistemidir.Öyleyse, 64 karakter uzunluğunda HEX’ler birer private key’i temsil eder. Örneğin aşağıda belirtilen HEX değeri geçerli bir private key’dir.123456789ABCDEF01234567890ABCDEF0123456789ABCDEF01234567890ABCDBu private key ile oluşturabileceğimiz bir kaç örnek cüzdan adresini aşağıda bulabilirsiniz.Bitcoin: 1Gu2tkiBUCRbN2nbrj4B8z8EJPqToHzhaYEthereum: 0xb5c8FD2381859629C6d5C49D45B555f877950Fe5Dogecoin: DM38S1epmcKsu2yCbK3jgkHqBXZm8JUzrpGörüldüğü üzere, tek bir private key üzerinden oluşturulmuş bir kaç cüzdan adresini görebiliyoruz. Yukarıdaki örnekte Bitcoin ve Dogecoin ağında sıkıştırılmış (compressed) cüzdan adresleri baz alınmıştır.Private key’ine sahip olduğunuz cüzdanları kolayca yönetebilirsiniz.256 Bit’lik Her Sayı Da Private Key’dir.Konumuzla ilgili olarak öncelikle 16 tabanlı sayı sisteminde ve 64 karakter uzunluğunda oluşturulmuş HEX’lerin birer private key olduğunu belirtmiştik. Şimdi olayı daha iyi kavrayabilmek adına, bunu sayılar üzerinden pekiştirelim. Aslında 256 Bit’lik her bir sayı da birer private key’dir. Bit, bilgisayardaki en küçük veri birimidir. Sadece 0 veya 1 ile ifade edilebilir. Yukarıda örnekte belirttiğim private key ile örneğimizi daha da anlaşılır hale getirelim. Örneğimizdeki private key 64 karakterden oluşan bir HEX değeriydi. Şimdi bu değerimizi 256 Bit’lik bir sayıya dönüştürelim. Aşağıdaki gibi decimal formatında bir sayı elde etmiş olacağız.514631507721405306298073637844783757873695723597054634633174135302159117261Bu sayı ile yine cüzdan adresi oluşturduğumuzda, karşımıza yukarıdaki sonuçlardan farklı bir şey çıkmayacaktır ve yine aynı cüzdan adreslerinin oluşturulduğunu göreceksiniz.Olası DeğerlerArtık elimizde bir private key var. Buna hem HEX formatında, hem de 256 Bit’lik bir sayı formatında sahibiz. Her ikisi de aynı cüzdan adreslerine işaret ediyor.Eğer private key 256 Bit değil de, 8 Bit’lik bir sayıdan oluşsaydı, en fazla 256 olası değer olurdu. Bunu nasıl hesaplarız? Bit’in sadece iki değerden oluştuğunu biliyoruz. Bunlar 0 ve 1 rakamları. Öyleyse 2’nin 8’li (2^8) tabanı bize 256 sonucunu verir. Şimdi 256 Bit’lik bir sayının olası sonuçlarını hesaplamak için ise yapmamız gereken matematik 2^256 olacaktır. Bunun sonucunu ise ayrı bir satırda paylaşalım ve olabilecek maksimum private key sayısını hesaplayalım.115.792.089.237.316.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000Yukarıda toplam oluşturulabilen benzersiz private key sayısını görebilirsiniz. Bunu dillendirmenin basit yolu ise toplamda 115 Katorvicitiliyon (Kattuorvigintilyon) adet private key mevcut. Bu sayı toplam 78 rakamdan oluşuyor.Cüzdan Adresleri Nasıl Oluşturulur?Bir cüzdan adresi oluşturulabilmesi için şu yollar izlenir. Öncelikle rastgele 256 Bit’lik bir sayı veya 64 karakter uzunluğunda HEX bir değer, yani private key oluşturulur. Bunun matematiksel olarak zorluğu yoktur. Bu nedenle çok yüksek bilgisayar gücüne ihtiyaç duyulmaz.Private key’e sahip olduktan sonra, ECDSA (Elliptic Curve) algoritması ile public key oluşturulur. Sonrasında ise cüzdan adresi oluşturulur. Aralarda SHA256, Base58 gibi metodların da kullanılması gerekiyor. Yani private key’den bir cüzdan adresi oluşturmak artık çok daha yavaş bir hal alıyor ve daha fazla işlem gücüne sahip olmak gerekiyor.Brute-Force Taraması İle Matematik YapalımArtık maksimum private key sayısını hesapladık. Şimdi ise tüm private key’leri tarayabilmemiz için gerekli olan işlem gücünü ve zamanı hesaplayalım.Elinizde bir program var ve sıralı bir şekilde başlayarak, son private key’e kadar tarama yapmayı biliyor. Ve bunu abartarak saniyede 100 trilyon adet private key taratarak yaptığını varsayalım.Yukarıdaki tahmine göre günde “8.640.000.000.000.000.000” adet private taratılabilir. Bunu yıllık olarak hesaplarsak; “3.153.600.000.000.000.000.000” adet tarama yapılabilir.Toplam private key sayısını da bildiğimize göre artık yüzdeyi hesaplayabiliriz. Yukarıdaki hesaba göre yıllık taratabilecek private key’lerin, toplamına yüzdesini aşağıda satırda görebilirsiniz.0,000000000000000000000000000000000000000000000000000002723502115535%Bunu üstelik milyarlarca bilgisayarda yapsanız dahi sadece sağdan 3-5 sıfır daha silinecektir. Bunu bir sonraki başlıkta daha detaylı inceleyeceğiz.Örneğimizi Daha da RenklendirelimSaniyede artık 500 trilyon adet tarama yapabiliyor, aynı zamanda bunu dünyadaki bütün insanlarla eş zamanlı olarak yapıyorsunuz. Dünyada 8 milyar insanın olduğunu ve her insanın 500 adet bilgisayara (tarama yapan program) sahip olduğunu varsayıyoruz. Yani saniyede toplam taratılan private key sayısı artık “4.000.000.000.000.000.000.000.000”.Hep beraber bunun da yüzdesini hesaplayalım;0,000000000000000000000000000000000000000000108940084621383000000000%Şansınız sadece yukarıda belirtilen yüzde kadar. Üstelik bunu dünyadaki bütün insanlarla ve her insanın 500 adet bilgisayarı olduğunu varsayarak, üstüne üstlük bir de saniyede 500 trilyon tarama yapabileceğini varsayarak hesapladık.Sıralı Taratma SistemiHesaplarımızı sıralama yapılarak tarama üzerine kurduk. Buradaki sistem tam olarak nasıl işliyor? Oldukça basit. 256 Bit’lik private key’in en yüksek değerinin 115 Katorvicitiliyon olduğunu biliyoruz. Öyleyse yapmamız gereken şey, sıfırdan (0) başlayarak, 115 katorviciliyona kadar bütün olasılıkları denemek olacak.Peki Ya Rastgele Taratırsak?Private key’leri sıralı değil de, rastgele oluşturulan private keyler ile tarattığımızda ne olacak? Aslında burada hiçbir şey değişmiyor. Sadece olasılık dahilinde, yukarıda bahsettiğimiz yüzde sonucunda bir şansa sahip olmuş olacaksınız.Bunu “Milli Piyango” örneği ile daha da netleştirebiliriz. Bir önceki başlıkta belirtilen yüzde, aslında istediğiniz bir private key’in gelme ihtimalini işaret ediyor. Piyangoda büyük ikramiyenin size çıkma ihtimali neredeyse 10 milyonda 1 iken, hesapladığımız yüzde ile karşılaştırdığımızda aralarında çok ciddi bir uçurum olduğunu görebilirsiniz.SonuçTeorik olarak mümkün gibi gözükse de, gerçek hayatta en azından şuan için bütün private key’leri tarayabilmek mümkün değil. Ayrıca Blockchain teknolojisinin be kadar güvenilir olduğunu da akıllarımızda tazelemiş olduk.En güncel haberleri almak için Telegram kanalımıza, Twitter sayfamıza ve Facebook sayfamıza abone olabilirsin.BU HABERİ PAYLAŞ
Dijital para birimleri severler için oluşturulan platformun admin'i. İşi daima kolaylaştırmayı sever Yazar: kriptom, Site Yönetimi