Care este diferența dintre „Funcția de curbă eliptică” și „Funcțiile Hash” precum SHA256?
Nu există un context real dat, totuși îl putem înțelege ca
Funcția SHA-256:
Da este o funcție, într-un mod destul de precis: a funcția hash criptografică (hash rezistent la coliziune);
$$\operatorname{SHA256}:\{0,1\}^* \to \{0,1\}^{256}$$
- Într-un fel: ar trebui să fie practic imposibil să inversați rezumatul hash dat (sau, adversarii mărginiți polinomial nu îl pot inversa).
- Determinat: aceeași intrare trebuie să ofere aceeași ieșire.
- Aleatoriu: nu ar trebui să cunoaștem hash-ul de intrare înainte de al hash. Putem citi acest lucru deoarece funcțiile hash sunt candidate pentru Random Oracles (RO) și SHA256 nu este, deoarece are un atac de extensie de lungime, SHA3 și Blake2 sunt mai aproape de RO.
- are Rezistență înainte de imagine: aproape de un singur sens; dată o valoare hash $h$ trebuie să fie imposibil ca adversarii în timp polinomial să găsească intrare $m$ astfel încât $\operatorname{SHA256}(m) = h$.
- A doua rezistență pre-imagine: dat un mesaj $m$ și este valoarea hash $h$, găsiți alt mesaj $m'$ astfel încât $\operatorname{SHA256}(m) = h = \operatorname{SHA256}(m')$.
- și Rezistenta la coliziune; găsiți mesajele de intrare distincte $m_1 \neq m_2$ astfel încât $\operatorname{SHA256}(m_1) = \operatorname{SHA256}(m_2)$.
Bitcoin folosește SHA256 dublu (SHA256d) și SHA256d este sigur împotriva atacurilor de extensie de lungime.
Funcția de curbă eliptică:
Aceasta este denumirea ciudată, este funcția L a curbelor eliptice sau ce? Întrucât întrebarea se referă la Bitcoin, ar trebui să fie mai degrabă setul de funcții pe care curbele eliptice le oferă mai mult decât funcțiile de mai jos:
Plus ca operație de grup (adăugare, negație, inversă, navetă și asociere).
Înmulțirea scalară: dat un punct de bază $G$ si adauga-l $t$ ori:
$$[t]G : = \underbrace{G + G + \cdots + G}_{t-time}
$$
Generarea cheii publice: Selectați aleatoriu $k$ si calculeaza $[k]G$.
ECDSA generarea semnăturii.
ECDSA validarea semnăturii.
Acum răspunsurile la cealaltă întrebare sunt clare.
Au aceleasi proprietati?
Nu, ei nu! Chiar și una este o funcție, cealaltă este un set de funcții.
Pot fi folosite ambele pentru a genera perechi de chei private și publice?
Nu.
Cu toate acestea, se poate folosi SHA256 pentru a digera o sursă de entropie pentru a selecta aleator $k$ pentru cheia lor privată și găsiți cheia publică $K = [k]G$ prin utilizarea înmulțirii scalare a curbelor eliptice.
Și Adresa Bitcoin este calculată ca;
$$\text{Adresa Bitcoin} = \operatorname{RIPEMD160(SHA256(}K))$$ ca adrese de 20 de octeți (RIPEMD).
Notă specială: Unele cărți/site-uri web blockchain folosesc multiplicarea EC pentru multiplicarea scalară EC, cum ar fi cartea lui Antonolopus Mastering Bitcoin, pagina 68. Acest lucru îi încurcă pe mulți, deoarece încep să creadă că $P\cdot Q$ există. Nu! EC formează grupuri abeliene aditive, iar cu înmulțirea scalară (modul obișnuit de a defini pentru grupurile aditive) formează un Modulul Z, nimic mai mult.