Bitcoin Forum
May 13, 2024, 02:47:06 AM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Bitcoin Algoritmasi 256-SHA Hacklenebilir mi ?  (Read 423 times)
cihan2421 (OP)
Newbie
*
Offline Offline

Activity: 174
Merit: 0


View Profile
October 05, 2020, 08:00:17 PM
 #1

Sonuçta bu algoritmayıda üreten bir insan değil mi ? Hemde Amerika'da bir şirket.Peki kendi ürettikleri algoritma ile çalışan bitcoini nasıl ve neden hackleyemiyorlar ?
Demek istediğim private keyleri kendi icat ettikleri algoritma ile tahmin edemiyorlarmı ?
1715568426
Hero Member
*
Offline Offline

Posts: 1715568426

View Profile Personal Message (Offline)

Ignore
1715568426
Reply with quote  #2

1715568426
Report to moderator
"With e-currency based on cryptographic proof, without the need to trust a third party middleman, money can be secure and transactions effortless." -- Satoshi
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
lossnet
Legendary
*
Offline Offline

Activity: 1820
Merit: 1123



View Profile
October 06, 2020, 04:06:29 PM
Last edit: October 06, 2020, 04:27:28 PM by lossnet
Merited by EFS (2), Nomad88 (2), mhanbostanci (1), gospodin (1)
 #2

Edemiyorlar! Milyonlarca olasılık var ve bu algoritmalar tersine çalışacak şekilde tasarlanmamışlardır; tek yönlüdür! Amaç da budur aslında. Güvenliği en üst düzeyde olan bir şifreleme yani... Önceden bilinebilirlik tarafı sadece aynı kelimeler içindir. Mesela "kalem" kelimesinin SHA-256 çevrimi şöyledir:
Quote
0e6a9c8a7ef32b695cf07d9180e253fe4ee604b9b6d5244c14ab089a6586936f

Kalem kelimesini SHA-256'ya her çevirdiğimizde aynı sonucu alırız! Fakat her harfi tek tek çevirmeye kalktığımızda farklı farklı sonuçlar ortaya çıkar. Yani her bir karakter, yanına gelen diğer karakterle birlikte benzersiz bir koda dönüşür.

Eğer "kalemci" kelimesini çevirmeye kalkarsak sonuç şöyle çıkacaktır:
Quote
79522a0c5ea73889c79702c5741328ba3ad3cc266bf72cc238671afe43b47976

Sadece arkasına 2 harf eklememize rağmen hash kodu tamamen farklı bir dizilime dönüştü.

Tek bir kelime de yazsak, uzun bir cümle de yazsak; sonuçta bize 64 karakterden oluşan bir kod veriyor.

Konuyu daha iyi anlamak açısından şu makaleyi okumanızı tavsiye ederim: https://medium.com/@ahmetseyhan/sha-256-kriptografik-hash-algoritmas%C4%B1-294d13f0ca5d
Nomad88
Legendary
*
Offline Offline

Activity: 1568
Merit: 1268



View Profile WWW
October 06, 2020, 06:02:29 PM
Merited by EFS (2), mhanbostanci (1)
 #3

Edemiyorlar! Milyonlarca olasılık var ve bu algoritmalar tersine çalışacak şekilde tasarlanmamışlardır; tek yönlüdür! Amaç da budur aslında. Güvenliği en üst düzeyde olan bir şifreleme yani... Önceden bilinebilirlik tarafı sadece aynı kelimeler içindir. Mesela "kalem" kelimesinin SHA-256 çevrimi şöyledir:
Quote
0e6a9c8a7ef32b695cf07d9180e253fe4ee604b9b6d5244c14ab089a6586936f

Kalem kelimesini SHA-256'ya her çevirdiğimizde aynı sonucu alırız! Fakat her harfi tek tek çevirmeye kalktığımızda farklı farklı sonuçlar ortaya çıkar. Yani her bir karakter, yanına gelen diğer karakterle birlikte benzersiz bir koda dönüşür.

Eğer "kalemci" kelimesini çevirmeye kalkarsak sonuç şöyle çıkacaktır:
Quote
79522a0c5ea73889c79702c5741328ba3ad3cc266bf72cc238671afe43b47976

Sadece arkasına 2 harf eklememize rağmen hash kodu tamamen farklı bir dizilime dönüştü.

Tek bir kelime de yazsak, uzun bir cümle de yazsak; sonuçta bize 64 karakterden oluşan bir kod veriyor.

Konuyu daha iyi anlamak açısından şu makaleyi okumanızı tavsiye ederim: https://medium.com/@ahmetseyhan/sha-256-kriptografik-hash-algoritmas%C4%B1-294d13f0ca5d

SHA256 için zorluk derecesi Bitcoin ekosistemi üzerinde ağ güvenliğini sağlıyor diyebiliriz. Arkadaş konuyu güzel örneklendirmiş ve sağolsun ilgili yazıyı da paylaşmış. Bunlar başlamak için doğru yerler. Fakat bu fırsat ile birlikte önemli bir ekleme yapmak isterim.

Sanırım çoğu bitcoin kullanıcısının merak ettiği şey network güvenliğinden ziyade kendi sahip oldukları bitcoinlerin dolayısıyla kendi cüzdanlarının güvenliği. İşte bu noktada devreye ECDSA şifrelemesi giriyor. Aslında cüzdanlarımızı güvende tutan şey SHA-256 hash algoritması değil ECDSA şifrelemesidir. Biliyorum çoğumuzun en çok duyduğumuz şey SHA256 şifreleme algoritması zira madencilik bu algoritma üzerinde hesaplamalar ile yapılıyor. Yani yeni bitcoinleri böyle üretiyoruz. Soru güvenlik ile ilgiliyse SHA256 başlamak için doğru adres. Ama sorunuzun kapsamlı cevabı için o yolun devamı:

Bitcoin Matematiği
Brute Force ile Private Key bulmak mümkün mü?


onurgozupek
Hero Member
*****
Offline Offline

Activity: 1289
Merit: 592


In #Bitcoin me trust


View Profile WWW
October 06, 2020, 08:23:25 PM
Merited by EFS (2), lossnet (1)
 #4

1. Amerika'da bir şirket dediğin NSA. Amerika Ulusal Güvenlik Dairesi.
2. SHA256 dediğin şifreleme yöntemi ilk defa Bitcoin tarafından kullanılmadı. Şu an dünya finans sistemi, sağlık endüstrisi vs. aklına gelebilecek veri saklama ihtiyacı olan her kurum ve kuruluş, bilinen en hızlı ve en güvenilir algoritmalardan biri olduğu için SHA256 kullanıyor. Yani SHA256'nın, üreticisi NSA tarafından kırılması demek, NSA'in tüm güvenilirliğini yitirmesi ve dünyadaki veritabanlarının önemli bir bölümünün riske girmesi anlamına gelir.

Yani kısaca, mesele Bitcoin'i hacklemek kadar basit değil. Teknik açıdan, Bitcoin ağını hacklemek için şu an dünyanın en süper 500 bilgisayarından daha fazlasını bir araya getirmeniz gerekiyor. Bir süper bilgisayarın yaklaşık maliyeti 10 milyon Dolar civarında. 5 milyar doları, dünya finansal sisteminin kabul etmediği bir sistemi hacklemek için harcamak pek mantıklı bir yatırım değil. Adamlar zaten kabul etmiyor 😀  Niye yoketmek için 5 milyar dolar harcasın? 😂

Ayrıca, SHA256'yı hacklediğinizde yine Bitcoin'i bitirmiş olmuyorsunuz. Bitcoin ağında verinin doğruluğu, merkezi olmayan birbirinden bağımsız eşler tarafından sağlandığı ve sistem her zaman uzun zinciri takip edecek şekilde kurgulandığı için, kimsenin şüphe etmediği bir "uzun zincir" var olduğu sürece, Bitcoin ağı çalışmaya devam edebilir. Çünkü, Bitcoin blokzincirinin en az 10bin güncel kopyası var. 10 dakika içerisinde bu 10bin kopyanın %51'ini bozmanız ve geri kalanların yeni bozuk zinciri takip etmesini sağlamanız şu anki mevcut işlemci kapasiteleri ile teknik olarak pek olası değil.
cihan2421 (OP)
Newbie
*
Offline Offline

Activity: 174
Merit: 0


View Profile
October 07, 2020, 07:32:55 PM
 #5

1. Amerika'da bir şirket dediğin NSA. Amerika Ulusal Güvenlik Dairesi.
2. SHA256 dediğin şifreleme yöntemi ilk defa Bitcoin tarafından kullanılmadı. Şu an dünya finans sistemi, sağlık endüstrisi vs. aklına gelebilecek veri saklama ihtiyacı olan her kurum ve kuruluş, bilinen en hızlı ve en güvenilir algoritmalardan biri olduğu için SHA256 kullanıyor. Yani SHA256'nın, üreticisi NSA tarafından kırılması demek, NSA'in tüm güvenilirliğini yitirmesi ve dünyadaki veritabanlarının önemli bir bölümünün riske girmesi anlamına gelir.

Yani kısaca, mesele Bitcoin'i hacklemek kadar basit değil. Teknik açıdan, Bitcoin ağını hacklemek için şu an dünyanın en süper 500 bilgisayarından daha fazlasını bir araya getirmeniz gerekiyor. Bir süper bilgisayarın yaklaşık maliyeti 10 milyon Dolar civarında. 5 milyar doları, dünya finansal sisteminin kabul etmediği bir sistemi hacklemek için harcamak pek mantıklı bir yatırım değil. Adamlar zaten kabul etmiyor 😀  Niye yoketmek için 5 milyar dolar harcasın? 😂

Ayrıca, SHA256'yı hacklediğinizde yine Bitcoin'i bitirmiş olmuyorsunuz. Bitcoin ağında verinin doğruluğu, merkezi olmayan birbirinden bağımsız eşler tarafından sağlandığı ve sistem her zaman uzun zinciri takip edecek şekilde kurgulandığı için, kimsenin şüphe etmediği bir "uzun zincir" var olduğu sürece, Bitcoin ağı çalışmaya devam edebilir. Çünkü, Bitcoin blokzincirinin en az 10bin güncel kopyası var. 10 dakika içerisinde bu 10bin kopyanın %51'ini bozmanız ve geri kalanların yeni bozuk zinciri takip etmesini sağlamanız şu anki mevcut işlemci kapasiteleri ile teknik olarak pek olası değil.

Hedefimiz okadar büyük değil yanlış anlaşılmasın  Smiley Fakat çok önemli bir sayı algoritması elimde mevcut yani birbirini takip eden sayıların bir bağlantısı olabilir.Bu private key içinde public key içinde geçerli.Hiç birşey rastgele değildir ki hele sanal ortamda herşey bir düzene göre hareket eder.Zamanla taşlar yerine oturduğunda bir deneme yapacağım bakalım ne kadar anlamışım veya anlamamışım bende merak ediyorum.Şöyle düşünüm bir tablonun tüm parçaları neredeyse elimde fakat neyi nereye koyacağımı zaman göstercek.
sonerbo
Copper Member
Hero Member
*****
Offline Offline

Activity: 1358
Merit: 523


View Profile
October 07, 2020, 08:18:15 PM
 #6

Sonuçta bu algoritmayıda üreten bir insan değil mi ? Hemde Amerika'da bir şirket.Peki kendi ürettikleri algoritma ile çalışan bitcoini nasıl ve neden hackleyemiyorlar ?
Demek istediğim private keyleri kendi icat ettikleri algoritma ile tahmin edemiyorlarmı ?

Hackleyebilirler ve private keyleri tahmin edebilirler ! Evet sorduğun sorular çok doğru ve yerinde ama tek bir eksik soru soruyorsun. Ne kadar sürer ? 2^256 sayısının büyüklüğünü anlarsan neden çözülemediğini anlarsın Wink

b uvideoyu izlemeni tavsiye edrim . ==> https://www.youtube.com/watch?v=S9JGmA5_unY
cihan2421 (OP)
Newbie
*
Offline Offline

Activity: 174
Merit: 0


View Profile
October 08, 2020, 07:34:01 AM
 #7

Sonuçta bu algoritmayıda üreten bir insan değil mi ? Hemde Amerika'da bir şirket.Peki kendi ürettikleri algoritma ile çalışan bitcoini nasıl ve neden hackleyemiyorlar ?
Demek istediğim private keyleri kendi icat ettikleri algoritma ile tahmin edemiyorlarmı ?

Hackleyebilirler ve private keyleri tahmin edebilirler ! Evet sorduğun sorular çok doğru ve yerinde ama tek bir eksik soru soruyorsun. Ne kadar sürer ? 2^256 sayısının büyüklüğünü anlarsan neden çözülemediğini anlarsın Wink

b uvideoyu izlemeni tavsiye edrim . ==> https://www.youtube.com/watch?v=S9JGmA5_unY

Anlatmak istediğim kırmaya çalışırken bir makina kullanmak değil   Smiley İnsan beyni bunu başarabilir.Ama sıfırdan değil,elinde bir kaç bilgi ve fikir olmalı.
sonerbo
Copper Member
Hero Member
*****
Offline Offline

Activity: 1358
Merit: 523


View Profile
October 09, 2020, 05:02:33 PM
Merited by Nomad88 (5), EFS (2)
 #8

Sonuçta bu algoritmayıda üreten bir insan değil mi ? Hemde Amerika'da bir şirket.Peki kendi ürettikleri algoritma ile çalışan bitcoini nasıl ve neden hackleyemiyorlar ?
Demek istediğim private keyleri kendi icat ettikleri algoritma ile tahmin edemiyorlarmı ?

Hackleyebilirler ve private keyleri tahmin edebilirler ! Evet sorduğun sorular çok doğru ve yerinde ama tek bir eksik soru soruyorsun. Ne kadar sürer ? 2^256 sayısının büyüklüğünü anlarsan neden çözülemediğini anlarsın Wink

b uvideoyu izlemeni tavsiye edrim . ==> https://www.youtube.com/watch?v=S9JGmA5_unY

Anlatmak istediğim kırmaya çalışırken bir makina kullanmak değil   Smiley İnsan beyni bunu başarabilir.Ama sıfırdan değil,elinde bir kaç bilgi ve fikir olmalı.

Ortada senin sandığın gibi bir şifre yok. Rastgele oluşturulmuş 2^256 adet adres ve private key var. her yeni sandığın adres aslında bunlardan biri. Şimdiye kadar kimse bu adres torbasından aynı adresi çekmedi. Çünkü bu ihtimal imkazsız ile aynı nereyse. evrendeki atom sayısından daha fazla Bitcoin adresi var. belki bu anlamana yardımcı olur Smiley
cihan2421 (OP)
Newbie
*
Offline Offline

Activity: 174
Merit: 0


View Profile
October 09, 2020, 10:46:04 PM
 #9

Sonuçta bu algoritmayıda üreten bir insan değil mi ? Hemde Amerika'da bir şirket.Peki kendi ürettikleri algoritma ile çalışan bitcoini nasıl ve neden hackleyemiyorlar ?
Demek istediğim private keyleri kendi icat ettikleri algoritma ile tahmin edemiyorlarmı ?

Hackleyebilirler ve private keyleri tahmin edebilirler ! Evet sorduğun sorular çok doğru ve yerinde ama tek bir eksik soru soruyorsun. Ne kadar sürer ? 2^256 sayısının büyüklüğünü anlarsan neden çözülemediğini anlarsın Wink

b uvideoyu izlemeni tavsiye edrim . ==> https://www.youtube.com/watch?v=S9JGmA5_unY

Anlatmak istediğim kırmaya çalışırken bir makina kullanmak değil   Smiley İnsan beyni bunu başarabilir.Ama sıfırdan değil,elinde bir kaç bilgi ve fikir olmalı.

Ortada senin sandığın gibi bir şifre yok. Rastgele oluşturulmuş 2^256 adet adres ve private key var. her yeni sandığın adres aslında bunlardan biri. Şimdiye kadar kimse bu adres torbasından aynı adresi çekmedi. Çünkü bu ihtimal imkazsız ile aynı nereyse. evrendeki atom sayısından daha fazla Bitcoin adresi var. belki bu anlamana yardımcı olur Smiley
İnan bana sanal ortamda rastgele diye birşey yok.Sadece tahmin etmek imkansıza yakın
Yabani
Member
**
Offline Offline

Activity: 278
Merit: 53


View Profile
October 10, 2020, 11:33:52 AM
 #10

Denenebilir ancak sha 256 dünya tarafından bilinen en güzenli durumda olan bir algoritma. Her ne kadar şimdiye kadar kırılmamış olsada bu saatten sonra kırılmayacak anlamına da gelmez.

Sonuçta bir yandan da teknoloji gelişiyor.
cihan2421 (OP)
Newbie
*
Offline Offline

Activity: 174
Merit: 0


View Profile
October 10, 2020, 05:26:41 PM
 #11

Denenebilir ancak sha 256 dünya tarafından bilinen en güzenli durumda olan bir algoritma. Her ne kadar şimdiye kadar kırılmamış olsada bu saatten sonra kırılmayacak anlamına da gelmez.

Sonuçta bir yandan da teknoloji gelişiyor.
Teknolojinin olmadığı bir ortamda bir algoritmanın kırılıp kırılamayacağını test edeceğim.Eğer ALLAH nasip ederse çok kolaymış bile diyebilirim.Aslında herşey önümüzde açık açık belli ediyor kendini fakat neyi nereye koyacağımı bilmem lazım oda bakalım 3 ay içerisinde belli olacaktır.
sokratesla
Newbie
*
Offline Offline

Activity: 14
Merit: 2


View Profile
November 13, 2020, 12:06:59 AM
 #12

Askeri düzeyde şifreleme yöntemini insan aklıyla kirabilmek veya bunu aklinin ucundan geçirmek.. Konu hakkında yeterli bilgin olmadagini gösteriyor. Neyi nereye koyacağımi bulsam yeter diyosun jupiteri elinle kaldirip yerine marsıda koysan boş mesele
myfranco
Full Member
***
Offline Offline

Activity: 361
Merit: 101



View Profile
November 14, 2020, 11:12:34 AM
 #13

Denenebilir ancak sha 256 dünya tarafından bilinen en güzenli durumda olan bir algoritma. Her ne kadar şimdiye kadar kırılmamış olsada bu saatten sonra kırılmayacak anlamına da gelmez.

Sonuçta bir yandan da teknoloji gelişiyor.
Teknolojinin olmadığı bir ortamda bir algoritmanın kırılıp kırılamayacağını test edeceğim.Eğer ALLAH nasip ederse çok kolaymış bile diyebilirim.Aslında herşey önümüzde açık açık belli ediyor kendini fakat neyi nereye koyacağımı bilmem lazım oda bakalım 3 ay içerisinde belli olacaktır.
Allah Sha 256 kırmanı nasip edecek ve sonra sana vahiy mi indirecek? Allah da kolları sıvadı bekliyor. İşi gücü yok sana SHA 256 kırman için güç verecek. Of off.
John_Ahmet
Newbie
*
Offline Offline

Activity: 25
Merit: 5


View Profile
December 21, 2020, 09:43:17 PM
 #14

Edemiyorlar! Milyonlarca olasılık var ve bu algoritmalar tersine çalışacak şekilde tasarlanmamışlardır; tek yönlüdür! Amaç da budur aslında. Güvenliği en üst düzeyde olan bir şifreleme yani... Önceden bilinebilirlik tarafı sadece aynı kelimeler içindir. Mesela "kalem" kelimesinin SHA-256 çevrimi şöyledir:
Quote
0e6a9c8a7ef32b695cf07d9180e253fe4ee604b9b6d5244c14ab089a6586936f

Kalem kelimesini SHA-256'ya her çevirdiğimizde aynı sonucu alırız! Fakat her harfi tek tek çevirmeye kalktığımızda farklı farklı sonuçlar ortaya çıkar. Yani her bir karakter, yanına gelen diğer karakterle birlikte benzersiz bir koda dönüşür.

Eğer "kalemci" kelimesini çevirmeye kalkarsak sonuç şöyle çıkacaktır:
Quote
79522a0c5ea73889c79702c5741328ba3ad3cc266bf72cc238671afe43b47976

Sadece arkasına 2 harf eklememize rağmen hash kodu tamamen farklı bir dizilime dönüştü.

Tek bir kelime de yazsak, uzun bir cümle de yazsak; sonuçta bize 64 karakterden oluşan bir kod veriyor.

Konuyu daha iyi anlamak açısından şu makaleyi okumanızı tavsiye ederim: https://medium.com/@ahmetseyhan/sha-256-kriptografik-hash-algoritmas%C4%B1-294d13f0ca5d

Arkadaşım biz geri zekalı mıyız da SHA256'ın çıktısı üzerinden hareket edip olası tüm kombinasyonları deneyelim?

örneğin "kalem" kelimesinde ya da "kalemci" de bir bakiye olmayabilir ancak çeşitli dillerdeki sözcüklerin bir listesini edindiğimizde ASCII, UTF8 ya da Unicode encoding kullanarak elimdeki yaklaşık her dil için 400k olan sözlüklerin ürettikleri public keylerin mevcut bakiyeli bitcoin cüzdanları ile çakıştırıp hızla açık bir cüzdan olup olmadığını sorgulayabiliriz. Bir sözlük benim bilgisayarımda dakikalar sürüyor. Tüm diller için çeşitli sözlükler edinerek saatler içerisinde tüm dillerdeki kelimelerde bakiye olup olmadığını öğrenebiliyoruz. Hatta bu adreslere zaman zaman tekrar ve tekrar bitcoin gönderiyorlar. İyi planlanmış bir listener ile gönderildiği anda haberimiz olabilir.

Size örnek bir node.js kodu vereyim.

Code:
const WebSocket = require('ws');
const fs = require('fs');
var bs = require('binarysearch');

const jsonfile = require('jsonfile');

const eli5 = fs.readFileSync('./btc_brainwallet_v18569_pub_cpub.txt').toString().split('\n');

eli5.sort();

const ws = new WebSocket('wss://ws.blockchain.info/inv');

ws.on('open', function open() {
    console.log('Connected!');
    ws.send('{"op":"unconfirmed_sub"}');
});

var count = 0;
var priorAddress = null;

ws.on('message', function incoming(txraw_str) {
    var start = new Date();
    var txraw = JSON.parse(txraw_str);
    var hash = txraw.x.hash;
    var addresses = txraw.x.out.map(o => o.addr);
    
    for(var index in addresses) {
        var address = addresses[index];
        if(address && (address != priorAddress)) {
            if(address[0] == '1') {
                
                var search_start = new Date();
                var findex = bs(eli5, address);
                var search_end = new Date()

                console.log(address, (new Date((txraw.x.time * 1000))).toLocaleString());

                if(findex >= 0) {
                    console.log(address, findex);
                    var fileName = './founds/found.eli5.'+ address + '.' + hash +'.txt';
                    var content =   address +
                                    '\nIndex: ' + findex.toString() +
                                    '\nHash: ' + hash +
                                    '\nCurrent Date: ' + start.toLocaleString() +
                                    '\nTransaction Date: ' + new Date(time * 1000).toLocaleString() +
                                    '\nSearch Finished: ' + search_end.toLocaleString() +
                                    '\nDiff: ' + (search_end.getTime() - start.getTime()).toString() +
                                    '\n' +
                                    '\n' + JSON.stringify(txraw, null, 2)
                    fs.writeFileSync(fileName, content);
                    console.log("File written successfully\n" + fileName);
                }
            }
        }
        priorAddress = address;
    }
    
    var end = new Date()
});

Elbette bakiyeli bir cüzdan gördüğünüzde bunu boşaltın demiyorum fakat bunun ispatını yaptığınız taktirde size ödül vaadeden pek çok görece daha güvenli kurumlar var. Onlar aracılığı ile ödüller kazanabilirsiniz.

Örneğin şu sitede bu türden kelimelerle üretilmiş işlem görmüş adreslerin bir listesi var.

https://eli5.eu/brainwallet/

Şu C kodunu derleyip sizler de bu konu üzerinde çalışmaya başlayabilirsiniz. Python görece daha yavaş kalıyor. C dilini tavsiye ederim.

Code:
#include <stdio.h>
#include <assert.h>
#include <stdbool.h>
#include <openssl/sha.h>
#include <openssl/ssl.h>
#include <openssl/ec.h>
#include <openssl/ripemd.h>

int create_address_from_string(const unsigned char *string,
unsigned char *address,
unsigned char *priv_key,
bool base58,
bool debug,
EC_GROUP *precompgroup);
void print_hex(u_int8_t * buffer, unsigned int len);
void base58_encode(unsigned char *data, unsigned int len, char *result);
void prepare_for_address(unsigned char *data, int datalen, char start_byte);


int main(int argc, char *argv[]) {
    unsigned char message[32] = "password";
    unsigned char address[64];
    unsigned char priv_key[64];

    if (create_address_from_string(message, address, priv_key, true, false, NULL) == 1) {
printf("address: %s\n", address);
printf("private key: %s\n", priv_key);
return 0;
}
else {
printf("Something went wront :(\n");
return 1;
}
}

/* creates a bitcoin address+private key from the SHA256
 *  hash of string. converts to base58 if base58 is 'true'
 *  returns 1 if successful, 0 if not*/
int create_address_from_string(const unsigned char *string,
unsigned char *address,
unsigned char *priv_key,
bool base58,
bool debug,
EC_GROUP *precompgroup) {

    u_int8_t * hash = malloc(SHA256_DIGEST_LENGTH);
    BIGNUM * n = BN_new();

    //first we hash the string
    SHA256 (string, strlen(string), hash);
//then we convert the hash to the BIGNUM n
    n = BN_bin2bn(hash, SHA256_DIGEST_LENGTH, n);

    BIGNUM * order = BN_new();
    BIGNUM * nmodorder = BN_new();
BN_CTX *bnctx;
bnctx = BN_CTX_new();

    //then we create a new EC group with the curve secp256k1
EC_GROUP * pgroup;
if (precompgroup == NULL)
pgroup = EC_GROUP_new_by_curve_name(NID_secp256k1);
else
//unless one has been passed to this function. in which case we use that curve.
pgroup = precompgroup;


    if (!pgroup) {
     printf("ERROR: Couldn't get new group\n");
     return 0;
    }

    //now we need to get the order of the group, and make sure that
    //the number we use for the private key is less than or equal to
    //the group order by using "nmodorder = n % order"
    EC_GROUP_get_order(pgroup, order, NULL);
    BN_mod(nmodorder, n, order, bnctx);

    if (BN_is_zero(nmodorder)) {
     printf("ERROR: SHA256(string) %% order == 0. Pick another string.\n");
     return 0;
    }

    //now we create a new EC point, ecpoint, and place in it the secp256k1
    //generator point multiplied by nmodorder. this newly created
    //point is the public key


    EC_POINT * ecpoint = EC_POINT_new(pgroup);

if (!EC_POINT_mul(pgroup, ecpoint, nmodorder, NULL, NULL, NULL))
{
     printf("ERROR: Couldn't multiply the generator point with n\n");
     return 0;
    }

    if (debug) {
        BIGNUM *x=NULL, *y=NULL;
        x=BN_new();
        y=BN_new();

        if (!EC_POINT_get_affine_coordinates_GFp(pgroup, ecpoint, x, y, NULL)) {
         printf("ERROR: Failed getting coordinates.");
         return 0;
        }

     printf ("x: %s, y: %s\n", BN_bn2dec(x), BN_bn2dec(y));

        BN_free(x);
        BN_free(y);
    }

    //then we need to convert the public key point to data
    //first we get the required size of the buffer in which the data is placed
    //by passing NULL as the buffer argument to EC_POINT_point2oct
    unsigned int bufsize = EC_POINT_point2oct (pgroup, ecpoint, POINT_CONVERSION_UNCOMPRESSED, NULL, 0, NULL);
    u_int8_t * buffer = malloc(bufsize);
    //then we place the data in the buffer
    int len = EC_POINT_point2oct (pgroup, ecpoint, POINT_CONVERSION_UNCOMPRESSED, buffer, bufsize, NULL);
    if (len == 0) {
     printf("ERROR: Couldn't convert point to octet string.");
     return 0;
    }

    //next we need to hash the public key data. first with SHA256, then with RIPEMD160
    SHA256(buffer, len, hash);
    u_int8_t * ripemd = malloc(RIPEMD160_DIGEST_LENGTH+1+4);
    RIPEMD160(hash, SHA256_DIGEST_LENGTH, ripemd);

    if (base58 == true) {
//here we add the version byte to the beginning of the public key and four checksum
//bytes at the end
prepare_for_address(ripemd, RIPEMD160_DIGEST_LENGTH, 0);


if (debug)
print_hex(ripemd, RIPEMD160_DIGEST_LENGTH+1+4);

//and we convert the resulting data to base58
base58_encode(ripemd, RIPEMD160_DIGEST_LENGTH+1+4, address);
    } else {
     memcpy(address, ripemd, RIPEMD160_DIGEST_LENGTH);
    }


    //now we need to convert the big number nmodorder (private key) to data
    int buflen = BN_num_bytes(nmodorder);
    u_int8_t * buf = malloc(buflen+1+4);
    int datalen;

    //nmodorder is converted to binary representation
    datalen = BN_bn2bin(nmodorder, buf);


    if (base58 == true) {
//and we add version byte and four byte checksum to the data
prepare_for_address(buf, datalen, 0x80);

        //and convert this to base58
        base58_encode(buf, datalen+5, priv_key);
    } else {
     memcpy(priv_key, buf, datalen+5);
    }

    free(hash);
    free(buffer);
    free(ripemd);
    free(buf);
    BN_free(n);
    BN_free(order);
    BN_free(nmodorder);
    if (precompgroup == NULL)
     EC_GROUP_free(pgroup);
    EC_POINT_free(ecpoint);
    BN_CTX_free(bnctx);
    return 1;
}

/*prepares data to be converted to address. specifically, it adds
 start_byte to the beginning and a four-byte doubleSHA256 checksum to the end */
void prepare_for_address(unsigned char *data, int datalen, char start_byte) {
unsigned char *tmpbuf = malloc(datalen);
    //get data into a temporary buffer
    memcpy(tmpbuf, data, datalen);
    //shift data one byte forward, to make room for star_byte
    memcpy(data+1, tmpbuf, datalen);
    data[0] = start_byte;

    unsigned char *hash = malloc(SHA256_DIGEST_LENGTH);
    SHA256(data, datalen+1, hash);
    SHA256(hash, SHA256_DIGEST_LENGTH, hash);

    //copy four first bytes from hash to the end of data (checksum bytes)
    memcpy(data+datalen+1, hash, 4);
    free(tmpbuf);
    free(hash);
}

void print_hex(u_int8_t * buffer, unsigned int len) {
int x;
for (x = 0; x < len; x++) {
printf("%.2x",buffer[x]);
}
printf("\n");
}

/*return the base58 encoding of data*/
void base58_encode(unsigned char *data, unsigned int len, char *result) {
const char code_string[] = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";

    BIGNUM *x, *rem, *base, *tmp, *tmp2;
    x = BN_new();
rem = BN_new();
base = BN_new();
tmp = BN_new();
char * output_string = malloc(64);

x = BN_bin2bn(data, len, x);

BN_set_word(rem, 1);
BN_set_word(base, 58);

BN_CTX *bnctx;
bnctx = BN_CTX_new();

int i = 0;
while (!BN_is_zero(x)) {
BN_div(tmp, rem, x, base, bnctx);
output_string[i++] = code_string[BN_get_word(rem)];


tmp2 = x;
x = tmp;
tmp = tmp2;
}


//public key
int i2 = 0;
while (data[i2] == 0) {
output_string[i++] = code_string[0];
i2++;
}

int base58len = i;
while (i>=0) {
result[base58len-i] = output_string[i-1];
i--;
}
result[base58len] = 0;

BN_free(x);
BN_free(base);
BN_free(rem);
BN_free(tmp);
BN_CTX_free(bnctx);
free(output_string);
}

mamuu
Member
**
Offline Offline

Activity: 71
Merit: 19


View Profile
December 21, 2020, 09:54:33 PM
 #15

Sonuçta bu algoritmayıda üreten bir insan değil mi ? Hemde Amerika'da bir şirket.Peki kendi ürettikleri algoritma ile çalışan bitcoini nasıl ve neden hackleyemiyorlar ?
Demek istediğim private keyleri kendi icat ettikleri algoritma ile tahmin edemiyorlarmı ?

pek mümkün değil çünkü stringleri tuttursanız dahi string üzerinden key üretilmiyor.

OpenSSL deki random_bit fonksiyonu kullanılıyor. Bu bitlerin tahmin edilemesi üzerine toplarca akademik makale var. kısaca sha256 icindeki string data cok uzun bir bir karmaşasıdır.

2013 teki Brainwallet faciasından sonra bu sekilde cüzdan üretimi durdu. Bulan buldu (:

1DWA3Sa8i6eHVWV4AG4UP2SBhYB2XrfiHW
emreuzun611
Newbie
*
Offline Offline

Activity: 3
Merit: 0


View Profile
December 21, 2020, 11:24:16 PM
 #16

1. Amerika'da bir şirket dediğin NSA. Amerika Ulusal Güvenlik Dairesi.
2. SHA256 dediğin şifreleme yöntemi ilk defa Bitcoin tarafından kullanılmadı. Şu an dünya finans sistemi, sağlık endüstrisi vs. aklına gelebilecek veri saklama ihtiyacı olan her kurum ve kuruluş, bilinen en hızlı ve en güvenilir algoritmalardan biri olduğu için SHA256 kullanıyor. Yani SHA256'nın, üreticisi NSA tarafından kırılması demek, NSA'in tüm güvenilirliğini yitirmesi ve dünyadaki veritabanlarının önemli bir bölümünün riske girmesi anlamına gelir.

Yani kısaca, mesele Bitcoin'i hacklemek kadar basit değil. Teknik açıdan, Bitcoin ağını hacklemek için şu an dünyanın en süper 500 bilgisayarından daha fazlasını bir araya getirmeniz gerekiyor. Bir süper bilgisayarın yaklaşık maliyeti 10 milyon Dolar civarında. 5 milyar doları, dünya finansal sisteminin kabul etmediği bir sistemi hacklemek için harcamak pek mantıklı bir yatırım değil. Adamlar zaten kabul etmiyor 😀  Niye yoketmek için 5 milyar dolar harcasın? 😂

Ayrıca, SHA256'yı hacklediğinizde yine Bitcoin'i bitirmiş olmuyorsunuz. Bitcoin ağında verinin doğruluğu, merkezi olmayan birbirinden bağımsız eşler tarafından sağlandığı ve sistem her zaman uzun zinciri takip edecek şekilde kurgulandığı için, kimsenin şüphe etmediği bir "uzun zincir" var olduğu sürece, Bitcoin ağı çalışmaya devam edebilir. Çünkü, Bitcoin blokzincirinin en az 10bin güncel kopyası var. 10 dakika içerisinde bu 10bin kopyanın %51'ini bozmanız ve geri kalanların yeni bozuk zinciri takip etmesini sağlamanız şu anki mevcut işlemci kapasiteleri ile teknik olarak pek olası değil.

Açıkçası hocam, okuduğum bir yazıda Çinli havuz firmaları şu anki üretimin yüzde 51 civarında etkisi var. Yani BTC üretim dengesi batı ülkelerince dengelenmeye çalışılmazsa Asya ülkelerine doğru merkeziyet kaymakta. Bu da BTC nin merkeziyetsizlik kavramının bir nebze kaybolması demek oluyor bence.

Bakış açısı;
Günümüz dünyasında eğer çin şirketlerinin yüzde 51 üretimi elinde bulunduruyorsa şöyle bir senaryo türetebiliriz; Çin ve Çinli firmalar dünyada büyük bir  ekonomik varlık gösterme çabasında değil mi? Bkz: ABD-ÇİN ekonomi savaşları. Çin üretim gücünü kullanarak dünya ekonomisinde çok büyük bir yer edinmekte. Bunun önüne de ne ABD ne de batı ülkeleri hiç bir şekilde geçemedi ve öyle görünüyor ki pek de geçemeyecekler. Gelelim senaryoya; çinli havuz firmaları böyle bir üretimi elinde bulundurabiliyorlarsa bu yüzde 51 prensibini dediğiniz gibi milyar dolar yatırmadan elindeki gücü kullanarak yapabilirler. Peki neden yapsınlar? Bunun cevabı da çinin dünya ekonomisinde süper güç olma çabası yatıyor olabilir. Yani komünizmle yönetilen bir ülkenin hükümeti bu şirketlere bir dayatma yapıp sistemin geriye döndürülmesini ve BTC popülasyonunu yer yüzünden silinmesini talep edebilir. Peki neden bunu istesin? Açıkçası buna da bir teori göstermek gayet mümkün; son aylarda kurumsal yatırımcıların ne denli piyasaya girdiğini görmekteyiz. Özellikle ABD ve batılı şirketler bu yatırımlarda çok büyük bir rol üstleniyor. Bu büyük şirketlerin ekonomilerinin hemen hemen yüzde 30 larını BTC varlığına aktarmasının ardından BTC nin ağ çöküşü bu şirketleri yıkmayacak ancak derinden sarsacaktır. Hemen buna da bir alt senaryo açayım; böyle bir sarsılmada da çinli yatırımcılar bu şirketlerin kapısını çalıp gelin size yatırım yapalım dediklerinde buna çok şaşırmamak mı gerekir acaba?

Velhasıl bunlar bir teoriden ibaret Smiley Ancak, ihtimali yüzde 0,000000000 lara uzanan bir ihtimal olduğunu düşünmüyorum. Zira dünya oldukça acımasız ve ezici bir kapitalizmin pençeleri arasında yer almakta. Her yıl sefalet yüzünden ölenlerin malum virüsten ölenlerin sayısıyla yarıştığı bir dünyadayız unutmayalım.
John_Ahmet
Newbie
*
Offline Offline

Activity: 25
Merit: 5


View Profile
December 22, 2020, 12:27:23 AM
 #17

Sonuçta bu algoritmayıda üreten bir insan değil mi ? Hemde Amerika'da bir şirket.Peki kendi ürettikleri algoritma ile çalışan bitcoini nasıl ve neden hackleyemiyorlar ?
Demek istediğim private keyleri kendi icat ettikleri algoritma ile tahmin edemiyorlarmı ?

pek mümkün değil çünkü stringleri tuttursanız dahi string üzerinden key üretilmiyor.

OpenSSL deki random_bit fonksiyonu kullanılıyor. Bu bitlerin tahmin edilemesi üzerine toplarca akademik makale var. kısaca sha256 icindeki string data cok uzun bir bir karmaşasıdır.

2013 teki Brainwallet faciasından sonra bu sekilde cüzdan üretimi durdu. Bulan buldu (:

Şaka mısınız? Örneğin bu adreste stringleri SHA256 algoritmasından geçirdikten sonra bu hash ile bir key üreterek şu linkini vereceğim kelimeleri girdiğiniz taktirde işlem görmüş 18 bin küsür adresi hacklemiş olacaksınız. Evet cüzdanlar boşaltılmış fakat zaman zaman yine aynı adreslere yeni bitcoin gönderiyorlar ve bu yeni gelenler için bir listener hazırlarsanız gönderdikleri anda haberiniz olur.

Hemen bu cüzdanları boşaltın demiyorum elbette ancak daha güvenli kurumlara adresi çözümlediğinizi bildirerek ödül kazanabilirsiniz. 30 BTC ye kadar ödül veren kurumlar var.

Şu adres inceleyin. Yukarıda verdiğim kod bu strigler ile nasıl key üretebileceğinizi gösteriyor.

https://eli5.eu/brainwallet/
mamuu
Member
**
Offline Offline

Activity: 71
Merit: 19


View Profile
December 22, 2020, 01:38:05 AM
 #18

Merhaba

Kullanıcı tanımlı girişler tavsiye edilmediğinden sık sık kullanılmıyor . İlgili sitedeki adresler sanırım 6 yıl önceki haberdekiler link burada -> https://www.reddit.com/r/Bitcoin/comments/1zti1p/17956_hacked_brainwallet_passwords/


Sha256 bip39 gibi metodlardaki anahtar kelimeler için kullanılıyor bildiğim kadarıyla -> https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki







1DWA3Sa8i6eHVWV4AG4UP2SBhYB2XrfiHW
kaserya70
Newbie
*
Offline Offline

Activity: 84
Merit: 0


View Profile
January 03, 2021, 05:52:12 PM
 #19

Arkadaşlar, kimse kendi ürettiği bir şeyi hacklemez bu güvenilirliğini sorgulatır ve bugün değer gördüğü platformda hiç bir değeri kalmaz hale gelir . sha256 algoritmasını hacklemek için harcanacak para ve hacklendikten sonra da düşüş yaşayacağı değer zararını göz önüne alırsak bitcoin biter benim kanaatim.
crytolog
Jr. Member
*
Offline Offline

Activity: 103
Merit: 6


View Profile
January 18, 2021, 08:44:55 PM
 #20

Arkadaşlar, kimse kendi ürettiği bir şeyi hacklemez bu güvenilirliğini sorgulatır ve bugün değer gördüğü platformda hiç bir değeri kalmaz hale gelir . sha256 algoritmasını hacklemek için harcanacak para ve hacklendikten sonra da düşüş yaşayacağı değer zararını göz önüne alırsak bitcoin biter benim kanaatim.

bence de hacklendiği haberi çıksa ve bu haber doğru olmasa bile, yanlışlanana kadar piyasayı çok sarsar.
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!