Taggat med: RIPEMD-160

Så knäcker du BitCoin

BitCoin är byggt med hjälp av ett antal olika algoritmer. Dessa algoritmer är skapade för att försvåra det som kallas för BitCoin-mining samt så används dem även för verifiering av BitCoins. Eventuella sårbarheter skulle ej resultera i att det går att skapa fiktiva pengar eftersom detta ligger i den decentraliserade strukturen (peer-to-peer).

De algoritmer som används är SHA-256 samt  RIPEMD-160 men även elliptiska kurvor (EC DSA) och mer specifikt secp256k1. Secp256k1 kommer från den öppna standarden SEC2 (läs även här).

När någon ska överföra BitCoins till en annan person så används ECDSA:

Alice signerar transaktionen med sin privata nyckel och publicerar denna signatur för andra på  Bitcoin-nätverket att kontrollera med sin publika nyckel

Dock så signeras enbart en hash av meddelandet pg.a. prestanda. För denna hash så används SHA-256 på följande sätt:

template<typename T1>
inline uint256 Hash(const T1 pbegin, const T1 pend)
{
    static unsigned char pblank[1];
    uint256 hash1;
    SHA256((pbegin == pend ? pblank : (unsigned char*)&pbegin[0]), (pend - pbegin) * sizeof(pbegin[0]), (unsigned char*)&hash1);
    uint256 hash2;
    SHA256((unsigned char*)&hash1, sizeof(hash1), (unsigned char*)&hash2);
    return hash2;
}

Ungefär som PGP så använder Bitcoin publika och privata -nyckelpar för att göra signaturer, men också för att publicera ett fingeravtryck vilket eg. är en RIPEMD-160-hash som gört det möjligt att skicka BitCoins till någon. BitCoin är ännu relativt otestat och svagheter eller implementationsbrister uppdagats kontinuerligt i BitCoin och här kan du läsa om en intressant uppdatering.

Så om du vill knäcka BitCoin så är det förfarande som skapar nya BitCoins det lättaste sättet i dagsläget. Ett antal metoder har publicerats och här hittar du en.

Uppdatering: Finurligt sätt att använda JavaScript för att låta webb-besökare söka efter BitCoins. Om Aftonbladet.se eller en annan stor sajt lägger in denna JavaScript-kod så kommer de att vinna lotteriet.