DSTU 4145-2002
Versiunea actuală a paginii nu a fost încă revizuită de colaboratori experimentați și poate diferi semnificativ de
versiunea revizuită pe 12 septembrie 2018; verificările necesită
16 modificări .
DSTU 4145-2002 (nume complet: " DSTU 4145-2002. Tehnologii informaționale. Protecția informațiilor criptografice. Semnătură digitală bazată pe curbe eliptice. Formare și verificare ") este un standard ucrainean care descrie algoritmi pentru generarea și verificarea unei semnături digitale electronice bazate pe proprietăți grupuri de puncte ale curbelor eliptice peste câmpuri și reguli pentru aplicarea acestor reguli la mesajele care sunt trimise prin canale de comunicație și/sau procesate în sisteme computerizate de uz general.
Adoptată și pusă în aplicare prin ordin al Comitetului de Stat al Ucrainei privind reglementarea tehnică și politica consumatorilor din 28 decembrie 2002 nr. 31 [1] . Textul standardului este în domeniul public [2] .
Standardul implicit folosește funcția hash GOST 34.311-95 și un generator de secvențe aleatorii folosind algoritmul DSTU GOST 28147:2009 .
Conform ordinului Ministerului Dezvoltării Digitale al Ucrainei din 30 septembrie 2020 nr. 140/614, din 1 ianuarie 2021 , standardul trebuie utilizat împreună cu DSTU 7564:2014 ( funcția hash Kupina ), dar utilizarea a standardului împreună cu GOST 34.311-95 este permis până la 1 ianuarie 2022 [ 3] .
Algoritm de bază
Principalele proceduri ale algoritmului de semnătură digitală stabilite prin DSTU 4145-2002 sunt calculul pre -semnături, calculul semnăturii și verificarea semnăturii digitale [2] .
Opțiuni generale de semnătură digitală
Condiții suplimentare pentru parametri
- ordinea unui subgrup ciclic trebuie să îndeplinească condiţia
- Condiția MOV trebuie îndeplinită (condiția Menezes-Okamoto-Wenstone): pt
Formarea unei semnături digitale
Semnătura digitală este calculată pe baza mesajului și a presemnăturii .
Date de intrare
- opțiuni generale de semnătură digitală
- cheie privată de semnătură digitală
- mesaj de lungime
- funcția hash cu lungimea codului hash și id
- lungimea semnăturii digitale , care este selectată pentru un grup de utilizatori:
Semnătură digitală de calcul
Calculul semnăturii constă în alegerea primei coordonate a unui punct secret, ales aleatoriu de pe orbita punctului . După utilizarea semnăturii digitale, aceasta este imediat distrusă împreună cu randomizatorul corespunzător.
Date de intrare
- opțiuni generale de semnătură digitală
Algoritm de calcul al presemnăturii
- selectarea unui randomizator pe baza unui generator criptografic de numere pseudoaleatoare
- calculul punctului curbei eliptice
- verificarea valorii coordonatei (dacă , atunci repetați procedura de alegere a unui randomizator)
- altfel accepta . (alta denumire: )
Rezultat
- semnătură digitală
Algoritmul de calcul al semnăturii
- verificarea corectitudinii parametrilor generali, cheilor, precum si indeplinirea conditiilor si restrictiilor privind valorile valorilor intermediare in conformitate cu procedurile definite de standard
- calcularea unui cod hash pe baza unui mesaj
- obţinerea unui element din câmpul principal din codul hash conform procedurii stabilite de standard. Dacă acest lucru se dovedește , atunci acceptă
- selecție aleatorie
- calculul semnăturii digitale
- calculul elementului câmpului principal (produsul este un element al ) (de fapt, )
- obținerea unui număr întreg din elementul câmpului principal conform procedurii stabilite de standard (în cazul în care se selectează un nou randomizator)
- calculul întregului (dacă este ales un nou randomizator)
- pe baza unei perechi de numere întregi, semnătura digitală este scrisă ca o serie binară de lungime : valoarea este plasată în biții mai puțin semnificativi din jumătatea stângă a biților, valoarea este plasată în biții mai puțin semnificativi din jumătatea dreaptă a biții , biții rămași sunt umpluți cu zerouri
Rezultat
- mesaj semnat sub forma ( , , ), unde este o semnătură digitală
Verificarea semnăturii digitale
Date de intrare
- opțiuni generale de semnătură digitală
- cheie publică de semnătură digitală ,
- mesaj semnat ( , , ) de lungime
- funcția hash
Algoritmul de calcul al semnăturii
- verificarea corectitudinii parametrilor generali, cheilor, precum si indeplinirea conditiilor si restrictiilor privind valorile valorilor intermediare in conformitate cu procedurile definite de standard
- verificarea identificatorului funcției hash : dacă identificatorul dat nu este utilizat într-un anumit grup de utilizatori, atunci se ia decizia „semnătura este invalidă” și verificarea este finalizată
- pe baza lungimii codului hash
- verificarea stării . Dacă cel puțin unul dintre ele nu este îndeplinit, atunci se ia decizia „semnătura este nevalidă” și se finalizează verificarea.
- verificarea prezenței textului mesajului și a lungimii acestuia . Dacă nu există text sau dacă se ia decizia „semnătura este invalidă” și verificarea este finalizată
- calcularea unui cod hash pe baza unui mesaj
- obţinerea unui element din câmpul principal din codul hash conform procedurii stabilite de standard. Dacă acest lucru se dovedește , atunci acceptă
- extragerea unei perechi de numere dintr-o notație binară a unei semnături digitale
- verificarea conditiilor si . Dacă cel puțin unul dintre ele nu este îndeplinit, atunci se ia decizia „semnătura este nevalidă” și se finalizează verificarea.
- calculul punctului curbei eliptice
- calculul elementului principal de câmp
- obţinerea unui număr întreg dintr-un element al câmpului principal conform procedurii stabilite de standard
- dacă , atunci decizia este luată „semnătura este valabilă”, în caz contrar – „semnătura este invalidă”
Rezultat
- decizie luată: „semnătura este validă” sau „semnătura este invalidă”
Securitate
Puterea criptografică a unei semnături digitale se bazează pe complexitatea logaritmului discret din subgrupul ciclic al unui grup de puncte de pe o curbă eliptică .
Algoritmi auxiliari utilizați
Obținerea unui număr întreg dintr-un element al câmpului principal
Date de intrare
- elementul câmpului principal
- ordinea punctului de bază al unei curbe eliptice
Rezultat
- un număr întreg care satisface condiția
Algoritm de calcul
- dacă elementul câmpului principal este egal cu 0, atunci , sfârșitul algoritmului
- găsirea unui număr întreg
- este acceptat şi găsit corespunzător celui mai mare indice pentru care . Dacă nu există un astfel de index, algoritmul este acceptat și terminat.
- seria de lungime binară este reprezentarea binară a numărului de ieșire al algoritmului
Link -uri
Implementări software
Note
- ↑ 1 2 Tehnologii informaţionale. Protecția criptografică a informațiilor. Semnătură digitală care rulează pe curbe eliptice. Turnare și pereviryannya . shop.uas.org.ua. Preluat la 13 decembrie 2019. Arhivat din original la 5 mai 2019. (nedefinit)
- ↑ 1 2 Standarde naționale pentru yakі є sylannya în actele juridice de reglementare | DP "UkrNDNC" . www.org.ua. Preluat la 13 decembrie 2019. Arhivat din original la 14 mai 2019. (nedefinit)
- ↑ Ordinul Ministerului Dezvoltării Digitale al Ucrainei din 30 septembrie 2020 Nr. 140/614 . Data accesului: 11 ianuarie 2020. (nedefinit)