top of page

 

 

 

[Ben bir sonlu karakter uzayıyım]

Levent Korkmaz


Bitcoin hesap numarasının karakterlerinin sonlu uzayı


(Ben bir soğuk cüzdanım ve tüm soğuk cüzdanlar sıcaktır.)

 


            Ekip arkadaşlarım  Anthony Boivin ve Takashi Ohno beraber   Bitcoin kullanmak yeni bir proje tasarladık. Projemiz için reifd.info satın aldım.  Yeni projemizde  yatırım yapacak kişilerin  korunması için Bitcoin hesap güvenliğiyle ilgili araştırmalar yaptım. Araştırmalarım sonucunda bulduğum güvenlik açığı ürkütücü.


Bitcoin, Ethereum,Ripple,  Tüm Ethereum dao, Assets güvenlik açığından etkilendiklerini gördüm. Chain ile  tasarlanmış coin ve diğerleri etkileniyor. Yani tüm Chain teknolojisi bu güvenlik açığından etkisi altında. Bu güvenlik açığı ile   tüm yatırımcıların paralarının  tamamı çalınabilir. Hemde yatırımcı tüm güvenlik önlemleri yerine getiriği halde.


Yatırımcımın güvenliği için reifd.info projemi durdurmak zorunda kaldım. Umarım güvenik açığı için en kısa sürede güncellemeler yapılır ve biz Projemizi yatırımcıya güvenle sunarız. Önce dürüstlük ve güvenlik sonra ticaret.


*öncelikle Bitcoin hesap güvenlikle ilgili neler yapmamız gerektiğini herkesin düşündüğü gibi düşünelim:


Bitcoin ve Ethereum hesabımın güvenlğini sağlamak için Private key numarasının güvenliğini sağlamalıyım. Hesap numaramın Private key ini güvenli bir yerde saklamalıyım . Soğuk cüdan kullanmalıyım. Electrum  ile Multi -Signature wallet oluşturmalıyım.  Private key’i kağıda yazdırıp güvenli bir yerde tutmalıyım. Cüzdanımı güçlü bir şifre ile korumalıyım. Paramı Birkaç hesap numarasına tutmalıyım. Cüzdanımın yedeğini almalıyım.


Şİmdi sorumuzu soralım 1) Private key numarasının güvenliği ve diğer güvenlik önlemleri benim Bitcoin, Ethereum, Ripple hesap numaralarımda bulunan paralarımın güvenlini sağlar mı?


Aslında Ripple için bu soru anlam ifade etmez. Fakat  Ripple de güvenlik ile ilgili  her durumda hakkında düşen güvenlik sorunlarını yaşar. Tabi tüm assets  buna  Ethereum ile oluşturulan asets (Dao) ler de dahildir.


Bu sorunun cevabı “kesinlikle hayır” Peki neden?


toplam 33 karakter ile Bitcoin adresi: 1 “CbtYLQY4jdQhKs3WMweRFqe93MNtPnbPh”
 

toplam 40  karakter ile Ethereum adresi: 0x”Bb97dC9271B097E1568bB4d24BEa7C3a28b76d44”
1234567890 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z


26+26+10= 62 karakter uzayı ile Bitcoin, Ethereum, Rhesap numaraları. 


Sonlu bir karakter uzayı ile (62 karakter uzayı) Bitcoin,  Ethereum, hesap numaraları oluşturduğumuz için Private key numarasının güvenliği Bitcoin, Ethereum, Ripple,  hesap numaralarımda bulunan paralarımın güvenliğini sağlayamaz. 


Yani sonlu bir karakter uzayı ile hesap numaraları oluşturabiliriz ve bu durumda rastlantıya neden olur. Alice ve Bob  cüzdanlarında rastlantısal olarak aynı hesap numarasını oluşturabilir. Bu durumda Alice Bob ‘un ya da Bob Alice nin paralarına izinsiz sahip olur.


“Tüm soğuk çüzdanlar aslında karakter uzay boşluğunda başıboş tek başına ve sıcaktır. Paralar için güvenlik yok , koruma yok.” O halde Bütün para dolu Bitcoin, Ethereum soğuk Cüzdan, sıcak Cüzdan, Ripple sıcak cüzdan hesapları sıcaktır. Aslında bir Cüzdanın sıcak ve soğuk olması bu güvenlik açığı için anlam ifade etmez.

 

(62 karakterli sonlu uzayda tüm hesaplar başı boş uçuşur)
Yani bir sıcak cüzdan da sonlu karakter uzayıyla oluşturulduğu için hesap üzerindeki paralar karakter uzayında başı boştur.  Bu durumda Rastlantısal olarak bir başkasına ait olan Bitcoin, Ethereum, Ripple adresini oluşturulabilir ve para izinsiz başka hesaba aktarılabilinir. 


“Beş cent vermeden sen de sana özel piyango çekilişi yapabilirsin. Yapman gereken hızla milyonlarca hesap oluşturmak.  Belki sen  dolu bir hesap oluşturamayacaksın. Fakat biri mutlaka dolu hesabı oluşturmayı başaracaktır, belki sen bir dolu hesabı olacaksın. Eğer iyilikten nasibini almış biri değilsen başkasının Bitcoin yada Ethereum hesabını boşaltıp Tanrının affına sığınacaksın.”


Bankacılık sisteminde İnternational Bank Account Number her baka için farklı tasarlanmıştır. Bir banka asla veri tabanında kayıtlı olan bir İnternational Bank Account Number sını bir başka müşterisine vermez bu olduğunda ölümcül bir hata meydana gelir. Banka çok basit şekilde bu sorunu çözer.


2) Bitcoin,Ethereum,Ripple hesap numaralarının uzunluğunu 1000 karakter uzunluğunda yaptığımızda Güvenlik sorunu çözebilir miyiz?


Bunun da cevabı kesinlikle hayır, peki neden?


Ethereum da oluşturulan hesap numaralarının  hesap numarası karakter uzunluğunu 40 yapmıştır. Ethereum un hesap numaralarının tamamı 40 karakterden oluşur, o halde Alice ve Bob cüzdanlarında rastlantısal olarak aynı hesap numarasını oluşturabilir.


(not:  Ethereum ya  “Private key güvenliği için” ya da “rastlantı olmaması için” hesap numara uzunluğunu 40 karakter yaptı )  iki durumda da 40 karakter  karakterin hiç bir önemi yok.

 

3) O halde karakter uzayını genişletmemiz güvenlik sorunumuz için  çözüm sağlıyor mu? Bu sorunun cevabı da hayır.


Bir bakalım 1234567890 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z


Bu uzaya ilave olarak Çin 1000 kanji akliyelim ve toplam 1062 karakter uzaı olur.
 Bulduğum 1000 kanji hemen alttaki   adreslerde ulaşabilirsiniz.”

 

http://www.jaist.ac.jp/~sjittisa/kanji1000.pdf


4) Toplam 1000, 5000 yada 10.000 kanji  karakter uzayı ile Bitcoin,Ethereum  hesap numaraları uluşturmak  bizim hesap numaramızı güvenli yapar mı?


Bu sorununda cevabı da Kesinlikle hayır, peki neden?


1- sonlu bir karakter uzayımız var, toplam (10.062 kanji) hala rastlantısal olarak iki ayrı insan aynı hesap numarasını oluşturabilir.


1000 kanji ve 62 Latin karakter uzayıyla oluşturulan  Bitcoin hesap numarası: 1昼店道発物用L商圧誤委委投働i鈍毎何今s南西北外山雨聞p来読戻乱未


Peki bu güvenlik sorunumuza öneri çözüm ne olabilir?


Bizim için anlam karmaşası ve sonlu karakter uzayı sorun yatmaz diye düşünürsek: böyle bir hesap numarası az da olsa isteklerimizi karşılayabilir,


1昼店道発物用L商圧誤委委投働i鈍毎何今s南西北外山雨聞p来読戻乱未


Ne yaparsak yapalım sonlu karakter uzayına sahip olacağımızdan “Rastlantısal durum” önereceğimiz her karakter uzayı için  geçerli olacaktır.


Peki Bitcoin hesap  güvenlini nasıl sağlayabiliriz?


“Bu önerme Bitcoin ile hesap oluştururken kontrol noktasını koymak yada sıralı hesap oluşturmaktan ibaret.”

 

Bir önerme: Tüm  hesap numaraları Madenciler tarafından oluşturulur. Bu durum merkeziyetçi bir yaklaşım olmaz. Sonuçta tüm süreci yine dağınık madenciler üstlenecektir.


Yeni tasarım içinde Madencinin görevleri :

1) hesapları onaylamak, güvenlik (şu anda yaptığı iş)

2) yeni hesap, hesaplar oluşturur zincire ekler

3) hesap zincirin güvenliğini sağlar

4)

5)

6)

7)


“Bir önerme”de ki kilit nokta madencilerin hesap numaralarını nasıl oluşturacağındadır. Süreç şöyle işler: kullanıcı cüzdanı açar yeni bir hesap aç butonuna tıklar   mineler bir Bitcoin hesabı oluşturur.

 

Ya da kullanıcı cüzdanı açtığında otomatik bir şekilde madenciler bir hesap oluşturulur. Madenciler oluşturdukları yeni hesap numarasının  sistem zincirine kayıtlı olup olmadığı öğrenmek için hesap zincirini tarar ve eşleşme yoksa bu oluşturulan hesap numarası Madenciler cüzdanın sahibinin kullanımına sunar.


Veya  madenciler sıralı bir şekilde Bitcoin hesap numarası oluştururlar ve geriye dönüp hangi hesap numaraları oluşturulmuş diye bakmaz. Miner Oluşturulan hesap numarası cüzdanın sahibinin kullanımına sunar. 


Sıralı hesap oluşturulurken  kontrol noktaları gerekir mi?

“Bunu tartışmak gerekir.” 


Altı yada yeni  Bitcoin hesabı ücretsiz açılır, diğerler oluşturulacak Bitcoin hesapları  için az da olsa kullanıcıdan ücret talep edilir. Bu şekilde aşırı hesap numarası oluşturulması engellenmiş olur.

 

Sıralı hesap numarasına örnek:

1MkhnXC6fkfQ3DvswfnuXXzpdwwP9KaMQD 1MkhnXC6fkfQ3DvswfnuXXzpdwwP9KaMQE 1MkhnXC6fkfQ3DvswfnuXXzpdwwP9KaMQF
0x3E3D07b8DFbb904ae63Eea9F30aedD099E484134 0x3E3D07b8DFbb904ae63Eea9F30aedD099E484135 0x3E3D07b8DFbb904ae63Eea9F30aedD099E484136


Tabi böylesi bir yol haritasının güvenlik boyutları olacaktır. 
Hemen alta  araştırmalarımın sonucunda rastlantıyla ürettiğim hesap numarası,

 

 Private key:
162Ks8Z4rFiAG8XbAG7Z5JMEP37suEPirr Private key: 5K1y8cA3ewXgbUNXWGGZn2qCmJ1soQ29oc3uBgiUxwfkuDKFz6p


Bitcoin forum da Bitcoin hesap numarasını görebilirsiniz: https://bitcointalk.org/index.php?topic=156609.450


Tabi bu açığın bir de cüzdan boyutu var. Oluşturtulan cüzdanın soğuk veya sıcak oluğunun hiç bir önemi yoktur.
Bu durumda  rastlantısal olarak Bitcoin hesabı oluşturabilmek için iki ayrı duruma sahibiz:

1) Bir cüzdan açıp Console den hesap oluştur komutunu yazarız.

2) cüzdanı açıp ardı ardına yeni kelime guruplarıyla hesaplar oluşturmaya başlarız.

 

Ben (1) i deneyerek Bir başkasına ait olan hesap numarasını oluşturdum.
Electrum ve bu tür cüzdanlar da beli bir sonlu kelime uzayı ile Bitcoin hesap numaraları oluşturur. (q) Sonlu karakter uzayının dışına çıkılmadığı için bu durum rastlantıya neden olur. Electrum ingilizce kelimelerle yeni hesap numaraları üretir. ingilizce kellimeler sonludur bu durumda rastlantıya neden olur. ingilizce sonlu kelimeler uzayından çıkıldığında  bir başka sonlu kelimeler uzayına girilmiş olacaktır. Bu durumda (q) den başlayarak tekrar okuyun.


Uzun zamandır Coin ağaç gelişimini takip ediyorum. Peercoin Proof-of-stake ile  büyük yenilik getirdi. Bitcoin'e Proof-of-stake eklemek büyük sorunları ortadan kaldıracağına inanıyorum. Örnek : 51 saldırılarına çözüm sağlar ve Peercoin cüzdan madencilik yapılabiliyor.
 

bottom of page