Puncte:0

Semnarea unui hash de fișier vs semnarea unui fișier

drapel uz

Dacă persoana A a generat un hash (de exemplu, sha256) al unui fișier și apoi a semnat hash-ul folosind o cheie privată.

Dat fiind că persoana B are doar cheia publică, fișierul, semnătura și hash-ul, ar fi suficientă verificarea semnăturii folosind cheia publică pentru a dovedi că persoana A a semnat fișierul real?

Ce hashe-uri și algoritmi sunt cel mai potrivit pentru asta?

kelalaka avatar
drapel in
Cel mai bun nu este un termen bun. Care este considerația ta? Persoana B nu are nevoie de hash-ul fișierului, are nevoie doar de cheia publică, semnătura, fișierul și definiția schemei de semnătură. Ai putea avea; RSA, ECDSA, EdDSA, ... acestea eșuează sub adversarul cuantic și Rainbow, Falcon și CRYSTALS-DILITHIUM au rămas din runda a 3-a a competiției post-cuantice NIST. Deci, care sunt constrângerile și riscurile dvs.?
drapel uz
Caut ceva care este destul de ușor de utilizat, adică comun ca pgp . În ceea ce privește constrângerile și riscurile, m-aș gândi că ar trebui să fie indestructibil timp de cel puțin 100 de ani, chiar și împotriva resurselor unei națiuni.
kelalaka avatar
drapel in
Deci, aveți nevoie de schemele de semnătură post-cuantică!
drapel uz
De ce nu ar dura RSA 100 de ani sau chiar 20 de ani?
kelalaka avatar
drapel in
Ei bine, dacă se construiește un computer cuantic criptografic, algoritmul lui Shor îl va sparge ușor.
Maarten Bodewes avatar
drapel in
**Generarea semnăturii** în general **conține** algoritmul de hashing. Poate fi util pentru implementări să furnizeze hash-ul la operația finală de semnătură, deoarece hashingul poate avea loc folosind un proces diferit sau la un moment diferit (de exemplu, atunci când cheia de semnare nu este încă disponibilă). Cu toate acestea, pentru asta nu trebuie să transmiteți hash-ul separat: verificarea hash face parte din verificarea semnăturii și este adesea inclusă direct în semnătură.
Puncte:3
drapel ng

Dat fiind că persoana B are doar cheia publică, fișierul, semnătura și hash-ul, ar fi suficientă verificarea semnăturii folosind cheia publică pentru a dovedi că persoana A a semnat fișierul real?

Persoana B nu are nevoie de hash. Dacă îl primesc, îl pot folosi în scop de depanare sau pentru a anula verificarea devreme, dar nu ar trebui să aibă încredere în el. În cele ce urmează, ignor orice persoană hash pe care B ar fi primit-o.

Persoana B trebuie să trimită fișierul și să verifice dacă acel hash, cheia publică și semnătura sunt verificate.Asta ar trebui să dovedească că persoana A a semnat dosarul.

Hashing-ul este o parte importantă a verificării semnăturii, care este de obicei menționată astfel: Persoana B trebuie să verifice dacă fișierul, cheia publică și semnătura se verifică.

O excepție de la paragraful de mai sus este atunci când, pe lângă un sistem de semnătură deja potrivit pentru a semna un mesaj/fișier de orice lungime folosind un hash $H_1$, este adăugat un alt strat de hashing cu un hash $H_2$. În acest caz, s-ar spune: Persoana B va hash fișierul cu $H_2$, și verificați dacă acel hash, cheia publică și semnătura, verifică (implicit: cu funcția hash $H_1$ aplicat rezultatului de $H_2$ ca parte a verificării semnăturii). O astfel de hashing compozit se face uneori din motive de performanță, deoarece $H_2$ este prin proiect mai rapid decât $H_1$; sau/și pentru că $H_1$ este realizat de un dispozitiv (de exemplu, un Smart Card) și $H_2$ este efectuată de altul (de exemplu, un computer care utilizează cardul inteligent).

Ce hashe-uri și algoritmi sunt (potriviți) pentru asta?

Din punct de vedere teoretic, semnătura are nevoie de un algoritm hash care să fie rezistent la coliziuni (implicând rezistent la a doua preimagine) și cu lățime adecvată pentru sistemul de semnătură luat în considerare.

Dacă acea lățime este de cel mult 512 de biți, SHA-512 trunchiat în mod corespunzător va face. Pentru dimensiuni arbitrare, există SHAKE256. Pentru o viteză mai bună, există Blake2.

Din punct de vedere practic, hash-ul este de obicei specificat de sistemul de semnătură sau de parametrii acestuia, iar specificația respectivă este adesea încorporată cu cheia publică în certificatul cheii publice.

Un exemplu de algoritm de semnătură și hash de uz comun este ECDSA cu curba secp256r1 si hash SHA-256. Un alt exemplu este Ed25519, care specifică algoritmul, curba și hash (rețineți că Ed25519ph este ca Ed25519, cu excepția hashingului dual din excepția de mai sus).


¹ Nu există nimic ca dovada absolută: poate cheia publică nu este cea a persoanei A; sau cheia privată A unei persoane a fost furată; sau PC-ul lor era sub controlul unui actor rău intenționat, așa că A a vrut să semneze cu totul altceva; sau sistemul de semnătură sau hash-ul este spartâ¦

Maarten Bodewes avatar
drapel in
Ei bine, da, multe protocoale acceptă mai multe elemente de date, iar trimiterea unui hash al elementelor de date **necunoscute/necitite** ajută atunci foarte mult. Merkle copaci și altele. De exemplu. eMRTD/ePașaportul conține un set de hashe-uri peste grupuri de date. Acest lucru nu înseamnă exact semnarea unui hash transmis, desigur, *doar* hashing dublu nu este util pentru asta. Deși hashingul pe mai multe niveluri este în răspuns, pare să se concentreze pe performanță (dar TBH, întrebarea nu abordează nici acest caz de utilizare).
drapel uz
În cazul meu de utilizare, am vrut doar să semnez hash-ul folosind cheia privată. Motivul pentru aceasta este economisirea lățimii de bandă. Deoarece sistemele de stocare și semnarea sunt separate și comunicarea dintre ele este deja de încredere, este mai rapid și mai puțin costisitor să transmiteți un hash decât un fișier foarte mare pentru semnare.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.