2022-01-13, 00:22
  #1
Medlem
Mer specifikt undrar jag hur private keys genererades i den absolut första versionen av bitcoin.

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?
Ä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?

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.

Egentligen så vill jag förstå: https://wiki.openssl.org/index.php/Elliptic_Curve_Diffie_Hellman
Citera
2022-01-13, 01:33
  #2
Medlem
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.
Du kan generera publika nyckeln från privata nyckeln, men du kan inte göra motsatsen. Det är one-way function.

En seed phrase är en kombination av oftast 12 eller 24 ord som används för att generera flera privata nycklar tillsammans för att slippa behöva göra backup av varje privat nyckel.
Citera
2022-01-13, 13:00
  #3
Medlem
kjellbrels avatar
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
Egentligen så vill jag förstå: https://wiki.openssl.org/index.php/Elliptic_Curve_Diffie_Hellman
Ä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.
__________________
Senast redigerad av kjellbrel 2022-01-13 kl. 13:03.
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in