Citat:
Ursprungligen postat av
GoldNux
Mer specifikt undrar jag hur private keys genererades i den absolut första versionen av bitcoin.
Mig veterligen har man använt samma ECC-algoritm sen dag ett (secp256k1). Notera att man genererar publika nycklar på detta sätt, inte privata. Privata skall vara slumptalsgenererade i heltalsområdet 1 - 2^256 (minus lite).
Citat:
Ursprungligen postat av
GoldNux
https://www.openssl.org/docs/man3.0/man3/EC_KEY_generate_key.html
Den där metoden används i första versionen.
Så här står det:
"The private key is a random integer
(0 < priv_key < order, where order is the order of the EC_GROUP object).
The public key is an EC_POINT on the curve calculated by multiplying the generator for the curve by the private key."
Vad betyder det fetade?
Jag orkar inte riktigt sätta mig in i den där sidan, men det känns inte heller så viktigt. Upper bound för en private key är specificerad i secp256k1 som strax under 2^256. Skälet till "strax under" är att det behöver vara ett primtal för att heltalsmatematiken i algoritmen skall fungera. Orkar inte förklara i detalj, men det är väl knappast intressant heller?
Citat:
Ursprungligen postat av
GoldNux
Är "the generator" eller "random integer" seeden i krypteringen?
I vissa nya wallet appar så sätter man ju seed genom att röra musen.
Hur funkade det i den första versionen?
Rör inte ihop wallet seeds med ECC. De har inte med varandra att göra. En seed är till för att en wallet skall kunna skapa en deterministisk serie av slumptal. Detta bland annat för att undvika att människor sumpar bort sina nyskapade nycklar, som var vanligt i Bitcoins tidiga historia när man inte tagit backup på privata nycklar för exchange-adresser.
Citat:
Ursprungligen postat av
GoldNux
Sen undrar jag om det är möjligt att återställa en privat nyckel om man har följande:
Publik nyckel.
Seed Phrase eller vad det nu är för input.
Version av bitcoin som användes för att generera plånboken.
Så länge du har en seed (seed phrase eller raw seed) så kan du återskapa samtliga privata nycklar som den kan generera. Inget annat behövs. Detta gör det extremt viktigt att generera en ny seed och flytta alla innehav från samtliga adresser tillhörande en seed om den kommit på drift. Alla, även de ännu inte genererade, nycklar är då tillgängliga för den som kommit över seeden.
Citat:
Ursprungligen postat av
GoldNux
Är det verkligen den och inte secp256k1 du är intresserad av? Jag skrivit lite om hur secp256k1 fungerar tror jag tidigare. Jag kan leta upp det igen om du är intresserad.
Toksnabbversionen är att man utgår från y^2 = x^3 + 7 och arbetar enbart med ett finit heltalsfält och modulusanpassad matematik. Man tar sin privata nyckel (k) och utför operationen p = kG. G är en känd publik startpunkt på kurvan som multipliceras (detta är ett lite krångligare steg som jag skippar här och nu) med den privata nyckeln och ut får man en ny punkt på kurvan: p. Detta är den publika nyckeln. Operationen är naturligtvis inte reversibel. Du kan inte härleda k från p trots att du vet G.