Semnătură digitală c#. CryptoPRO: fișier bat pentru crearea semnăturii digitale

__________________________________________________________

Instituție de învățământ de stat

Studii profesionale superioare

"ST.PETERSBURG

UNIVERSITATEA DE STAT DE TELECOMUNICAȚII

lor. prof. M.A. BONCH-BRUEVICH"

__________________________________________________________________________________________

V.P. Gribaciov

Ghid de studiu pentru munca de laborator privind protecția informațiilor.

Saint Petersburg

Lucrare de laborator nr 1

Cercetare asupra algoritmului de criptareRSA.

    Scopul lucrării.

Studiul structurii algoritmului și metodelor de implementare practică a criptosistemului de criptare RSA.

Criptosistemul RSA a fost dezvoltat de Ronald Rivest, Adi Shamir și Leonard Adleman în 1972. Sistemul a fost numit după primele litere ale numelui lor de familie. În ciuda rapoartelor din ultimii ani despre încercări izolate de criptoanaliza cu succes a acestui algoritm, RSA rămâne încă unul dintre cei mai comuni algoritmi criptografici. Suportul RSA este încorporat în majoritatea browserelor comune (Firefox, IE, există plugin-uri RSA pentru Total Commandera și alți clienți ftp); Algoritmul nu este certificat la noi.

RSA aparține clasei de criptosisteme cu două chei. Aceasta înseamnă că algoritmul folosește două chei - deschisă (publică) și secretă (privată).

Cheia publică și cheia secretă corespunzătoare formează împreună o pereche de chei (Keypair). Cheia publică nu trebuie păstrată secretă. În general, este publicat în directoare deschise și este disponibil pentru toată lumea. Un mesaj criptat cu o cheie publică poate fi decriptat numai cu cheia privată asociată corespunzătoare și invers.

Puterea criptografică a RSA se bazează pe problema factorizării sau factorizării a două numere mari, al căror produs formează așa-numitul modul RSA. Factorizarea vă permite să dezvăluiți cheia secretă, în urma căreia devine posibilă decriptarea oricărui mesaj secret criptat cu această cheie. Cu toate acestea, în prezent nu se consideră dovedit matematic că pentru a restabili textul simplu din text criptat, este necesar să se descompună modulul în factori. Poate că în viitor va exista o modalitate mai eficientă de a criptoanaliza RSA, bazată pe alte principii.

Astfel, puterea criptografică a RSA este determinată de modulul utilizat.

Pentru a asigura un grad suficient de putere criptografică, se recomandă în prezent să alegeți o lungime a modulului RSA de cel puțin 1024 de biți, iar datorită progresului rapid al tehnologiei informatice, această valoare este în continuă creștere.

    Diagrama algoritmului de criptare a datelorRSA

    Alegeți două numere prime aleatorii ( pȘi q) și calculați modulul:

    Funcția Euler se calculează: φ (n)=(p-1)(q-1);

    O cheie secretă este selectată aleatoriu e, în acest caz trebuie îndeplinită condiția primei reciproce a numerelor eȘi φ (n).

    Calculați cheia de decriptare folosind formula:

ed = 1 mod φ (n);

observa asta dȘi n trebuie să fie și numere relativ prime.

    Pentru a cripta, trebuie să împărțiți mesajul în blocuri de lungime egală. Numărul de biți binari din bloc trebuie să corespundă numărului de biți ai modulului n.

    Criptarea unui bloc de mesaje se realizează conform formulei:

C i =M i e mod n

    Decriptarea fiecărui bloc c i se efectuează după formula:

M i =C i d mod n

Alegere d ca cheie publică și e ca un secret, complet condiționat. Ambele taste sunt complet egale. Ca cheie publică puteți lua e, și ca unul închis - d.

Exemplu de criptare:

    Alege R= 7 , q = 13 , modul n = pq = 7.13 = 91;

    Calcularea funcției Euler φ (n) = (p-1)(q-1) = (7-1)(13-1) = 72;

    Ținând cont de condițiile GCD( e, φ (n)) = 1 și 1< e φ (n), selectați o cheie secretă e = 5;

    Pe baza condiției ed = 1 mod φ (n), calculați cheia secretă pe perechi d = 1 mod 72 , folosind algoritmul euclidian extins, găsim cheie publică d = 29;

    Luați un mesaj deschis m = 225367 și împărțiți-l în blocuri de lungime egală m 1 = 22, m 2 = 53, m 3 = 67.

    Criptăm: CU 1 = 22 5 mod 91 = 29, C 2 = 53 5 mod 91 = 79, C 3 = 67 5 mod 91 = 58;

    Să descifrăm: M 1 = 29 29 mod 91 = 22, M 2 = 79 29 mod 91 = 53, M 3 = 58 29 mod 91 = 67;

    Metodologia de realizare a lucrării.

Sarcina de finalizare a lucrării este emisă de profesor după ce elevii trec un interviu privind elementele de bază ale criptosistemelor cu cheie publică.

      Scopul și munca atribuită.

      Descrierea algoritmului de operare al criptosistemului RSA,

      Diagrama bloc a algoritmului de funcționare a criptosistemului RSA,

      Concluzii: avantajele și dezavantajele criptosistemului RSA.

Lucrare de laborator nr 2.

Cercetarea semnăturii digitale electronice (EDS)RSA.

    Scopul lucrării.

Studiul algoritmului de semnătură digitală electronică (EDS) RSA.

    Principii teoretice de bază.

Schema de semnătură digitală electronică este concepută pentru a oferi un flux securizat de documente în rețelele electronice, similar modului în care în domeniul fluxului tradițional de documente, semnăturile și sigiliile sunt utilizate pentru a proteja documentele pe hârtie. Astfel, tehnologia EDS presupune prezența unui grup de abonați care își trimit documente electronice semnate între ei. Semnătura digitală are toate proprietățile unei semnături reale. Pentru a deveni abonat la sistemul de semnătură digitală, fiecare utilizator trebuie să creeze o pereche de chei - publice și private. Cheile publice ale abonaților pot fi înregistrate la un centru de certificare certificat, dar în general aceasta nu este o condiție obligatorie pentru interacțiunea între abonații sistemului de semnătură digitală.

În prezent, sistemele de semnătură digitală pot fi construite pe diverși algoritmi de criptare cu două chei. Algoritmul RSA a fost unul dintre primii care a fost utilizat în aceste scopuri. Pe lângă algoritmul criptografic, schema de semnătură digitală necesită utilizarea așa-numitelor funcții unidirecționale sau hash. Funcția hash este numită unidirecțională deoarece vă permite să calculați cu ușurință valoarea hash din orice document. În același timp, operația matematică inversă, adică calcularea documentului sursă din valoarea lui hash, prezintă dificultăți de calcul semnificative. Printre alte proprietăți ale funcțiilor hash, trebuie remarcat faptul că valorile de ieșire (hash) au întotdeauna o lungime strict definită pentru fiecare tip de funcție, în plus, algoritmul de calcul al funcției hash este proiectat în așa fel încât fiecare bit de mesajul de intrare afectează toți biții din hash. Un hash este ca un „rezumat” comprimat al mesajului de intrare. Desigur, având în vedere că există un număr infinit de mesaje posibile și că hash-ul are o lungime fixă, este posibil să existe cel puțin două documente de intrare diferite care să dea aceeași valoare hash. Cu toate acestea, lungimea hash standard este stabilită în așa fel încât, odată cu puterea actuală de calcul a computerelor, găsirea de coliziuni, adică documente diferite care dau aceleași valori ale funcției, este o sarcină dificilă din punct de vedere computațional.

Astfel, funcția hash este o transformare non-criptografică care vă permite să calculați un hash pentru orice document selectat. Hash-ul are o lungime strict fixă ​​și este calculat în așa fel încât fiecare bit al hash-ului să depindă de fiecare bit al mesajului de intrare.

Există o varietate destul de mare de opțiuni pentru construirea funcțiilor hash. Ele sunt de obicei construite pe baza unei formule iterative, de ex. H i = h (H i -1 , M i ) , unde ca o funcție h poate fi luată o funcție de criptare ușor de calculat.

Figura 1 prezintă o schemă de semnătură digitală generalizată bazată pe algoritmul criptografic RSA.

Algoritm de semnătură digitală electronică (EDS).RSA

      Acțiuni ale abonatului – expeditorul mesajului.

        Sunt selectate două numere mari și coprime pȘi q;

        Calculăm modulul RSA. n= p* q;

        Definim functia Euler: φ (n)=(p-1)(q-1);

        Selectarea unei chei secrete e sub rezerva următoarelor condiții: 1< e≤φ(n),

HOD (e, φ(n))=1;

        Determinarea cheii publice d, sub rezerva următoarelor condiții: d< n, e* d ≡ 1(mod φ(n)).

      Formarea semnăturii digitale

        Calculați hash-ul mesajului M: m = h(M).

        Criptăm hash-ul mesajului folosind cheia secretă a abonatului expeditorului și trimitem semnătura digitală primită, S = m e (mod n), către abonatul destinatar împreună cu textul clar al documentului M.

      Autentificarea semnăturii pe partea destinatarului

        Descifrarea semnăturii digitale S folosind o cheie publică d și astfel obțineți acces la valoarea hash trimisă de abonat - expeditor.

        Calculați hash-ul unui document deschis m’= h(M).

        Comparăm valorile hash m și m’ și concluzionăm că semnătura digitală este fiabilă dacă m = m’.

    Metodologia de realizare a lucrării.

Sarcina pentru lucrul de laborator este eliberată de profesor după ce elevii au promovat un interviu privind elementele de bază ale autentificării datelor și conceptul de formare a semnăturii digitale electronice.

Procedura de realizare a lucrării corespunde exemplului practic de mai jos de generare și verificare a unei semnături digitale electronice.

      Un exemplu de calcul și verificare a semnăturii digitale.

        Se aleg două numere mari și coprime 7 și 17;

        Calculăm modulul RSA. n=7*17=119;

        Definim functia Euler: φ (n)=(7-1)(17-1)=96;

        Selectarea unei chei secrete e sub rezerva următoarelor condiții: 1< e≤φ(n), HOD (e, φ(n))=1; e = 11;

        Determinarea cheii publice d, sub rezerva următoarelor condiții: d< n, e* d ≡ 1(mod φ(n)); d=35;

        Să luăm o secvență aleatorie de numere ca mesaj deschis. M = 139. Împărțiți-l în blocuri. M 1 = 1, M 2 = 3, M 3 = 9;

        Pentru a calcula valoarea hash, aplicăm formula de calcul al funcției hash. Pentru a simplifica calculele, presupunem că vectorul de inițializare al funcției hash H 0 =5, și ca funcție de criptare h Vom folosi același RSA.

        Să calculăm hash-ul mesajului. H 1 =(H 0 + M 1 ) e mod n =(5+1) 11 mod 119=90; H 2 =(H 1 + M 2 ) e mod n =(90+3) 11 mod 119=53; H 3 = (H 2 + M 3 ) e mod n =(53+9) 11 mod 119=97; Astfel, hash-ul unui mesaj deschis dat m = 97;

        Creăm o semnătură electronică prin criptarea valorii hash rezultată. S= H e mod n = 97 11 mod 119 = 6;

        Transmitem cheia publică prin canalul de comunicare d, Mesaj text M, modul n și semnătura digitală electronică S.

        Verificarea semnăturii digitale pe partea destinatarului mesajului.

        Pe partea abonatului - destinatarul mesajului semnat, folosind cheia publică, obținem un hash - valoarea documentului transmis. m ´ = S d mod n =6 35 mod 119 =97;

        Calculăm hash-ul mesajului deschis transmis, similar cu modul în care a fost calculată această valoare pe partea abonatului - expeditorul. H 1 =(H 0 + M 1 ) e mod n =(5+1) 11 mod 119=90; H 2 =(H 1 + M 2 ) e mod n =(90+3) 11 mod 119=53; H 3 = (H 2 + M 3 ) e mod n =(53+9) 11 mod 119=97; m = 97;

        Comparăm valoarea hash calculată din transmisia document deschisși o valoare hash extrasă din semnătura digitală. m = m ´ =97. Valoarea hash calculată coincide cu valoarea hash obținută din semnătura digitală, prin urmare, destinatarul mesajului ajunge la concluzia că mesajul primit este autentic.

      Scopul și scopul lucrării.

      Descrierea algoritmului de generare a semnăturii digitale RSA.

      Bloc – diagramă a algoritmului de generare a unei semnături digitale RSA.

      Concluzii: avantajele și dezavantajele semnăturii digitale RSA.

Articolul oferă răspunsuri la întrebările: „Cum arată o semnătură electronică”, „Cum funcționează o semnătură electronică”, discută despre capacitățile și componentele sale principale și, de asemenea, prezintă o imagine vizuală. instrucțiuni pas cu pas procesul de semnare a fișierului semnatura electronica.

Ce este o semnătură electronică?

O semnătură electronică nu este un obiect care poate fi ridicat, ci un document necesar care vă permite să confirmați că semnătura digitală aparține proprietarului acesteia, precum și să înregistrați starea informațiilor/datelor (prezența sau absența modificărilor) în document electronic din momentul semnării acestuia.

Pentru trimitere:

Numele prescurtat (conform Legii federale nr. 63) este ED, dar mai des folosesc abrevierea învechită EDS (semnătură digitală electronică). Acest lucru, de exemplu, facilitează interacțiunea cu motoarele de căutare de pe Internet, deoarece EP poate însemna și o sobă electrică, o locomotivă electrică de pasageri etc.

Conform legislației Federației Ruse, o semnătură electronică calificată este echivalentul unei semnături de mână care are forță juridică deplină. Pe lângă semnăturile digitale calificate, există încă două tipuri de semnături digitale disponibile în Rusia:

— necalificat — furnizează semnificația juridică a documentului, dar numai după încheiere acorduri suplimentareîntre semnatari privind regulile de aplicare și recunoaștere a semnăturilor digitale, vă permite să confirmați calitatea de autor a documentului și să controlați imuabilitatea acestuia după semnare,

- simplu - nu dă semnificație juridică documentului semnat până la încheierea unor acorduri suplimentare între semnatari privind regulile de utilizare și recunoaștere a semnăturilor digitale și fără respectarea condițiilor stabilite legal pentru utilizarea acestuia (o semnătură electronică simplă trebuie să fie conținută în documentul în sine, cheia acestuia trebuie utilizată în conformitate cu cerințele sistemului informațional, unde este utilizat etc. în conformitate cu Legea federală-63, articolul 9), nu garantează invarianța sa din momentul semnării, permite tu pentru a confirma calitatea de autor. Utilizarea acestuia nu este permisă în cazurile legate de secretele de stat.

Capabilitati de semnatura electronica

Pentru persoane fizice, semnătura digitală oferă interacțiune de la distanță cu guvern, educație, medical și altele sisteme de informare prin intermediul internetului.

O semnătură electronică oferă persoanelor juridice permisiunea de a participa tranzacționare electronică, vă permite să organizați o activitate semnificativă din punct de vedere juridic managementul documentelor electronice(EDI) și schimbare raportare electronică către autoritățile de reglementare.

Oportunitățile pe care semnătura digitală le oferă utilizatorilor au făcut din aceasta o componentă importantă Viata de zi cu zi atât cetăţenii de rând, cât şi reprezentanţii companiilor.

Ce înseamnă expresia „o semnătură electronică a fost emisă clientului”? Cum arată semnătura digitală?

Semnătura în sine nu este un obiect, ci rezultatul transformărilor criptografice ale documentului care se semnează și nu poate fi emisă „fizic” pe niciun suport (token, smart card etc.). De asemenea, nu poate fi văzut, în sensul literal al cuvântului; nu arată ca o lovitură de stilou sau o amprentă figurativă. Despre, cum arată semnătura electronică Vă vom spune puțin mai jos.

Pentru trimitere:

O transformare criptografică este o criptare care este construită pe un algoritm care utilizează o cheie secretă. Procesul de restaurare a datelor originale după transformarea criptografică fără această cheie, potrivit experților, ar trebui să dureze o perioada mai lunga de timp decât perioada de valabilitate a informațiilor extrase.

Media flash este un mediu de stocare compact care include memorie flash și un adaptor (unitate flash USB).

Un token este un dispozitiv al cărui corp este similar cu cel al unei unități flash USB, dar cardul de memorie este protejat prin parolă. Tokenul conține informații pentru crearea unei semnături electronice. Pentru a lucra cu acesta, trebuie să vă conectați la conectorul USB al computerului și să introduceți o parolă.

Un smart card este un card din plastic care vă permite să efectuați operațiuni criptografice folosind un microcircuit încorporat în acesta.

O cartelă SIM cu cip este un card operator mobil, echipat cu un cip special, pe care este instalată în siguranță o aplicație java în faza de producție, extinzându-și funcționalitatea.

Cum ar trebui să înțelegem expresia „a fost emisă o semnătură electronică”, care este ferm înrădăcinată în discursul colocvial al participanților pe piață? În ce constă o semnătură electronică?

Semnătura electronică emisă constă din 3 elemente:

1 - un mijloc de semnătură electronică, adică necesar pentru implementarea unui set de algoritmi și funcții criptografice mijloace tehnice. Acesta poate fi fie un furnizor de criptomonede instalat pe computer ( CSP CryptoPro, ViPNet CSP), sau un token independent cu un furnizor de criptografie încorporat (EDS Rutoken, JaCarta GOST) sau un „nor electronic”. Puteți citi mai multe despre tehnologiile de semnătură digitală asociate cu utilizarea „norului electronic” în articolul următor Portal unic Semnatura electronica.

Pentru trimitere:

Un furnizor criptografic este un modul independent care acționează ca un „intermediar” între sistemul de operare, care îl gestionează folosind un anumit set de funcții, și programul sau sistemul hardware care realizează transformări criptografice.

Important: simbolul și semnătura digitală calificată de pe el trebuie să fie certificate de FSB al Federației Ruse în conformitate cu cerințele lege federala № 63.

2 - o pereche de chei, care constă din două seturi impersonale de octeți generați de un instrument de semnătură electronică. Prima dintre ele este cheia de semnătură electronică, care se numește „privată”. Este folosit pentru a forma semnătura în sine și trebuie păstrat secret. Plasarea unei chei „private” pe un computer și pe un suport flash este extrem de nesigură pe un token, este oarecum nesigur pe un token/smart card/sim într-o formă neamovibilă; A doua este cheia de verificare a semnăturii electronice, care se numește „publică”. Nu este ținut secret, este legat în mod unic de cheia „privată” și este necesar pentru ca oricine să poată verifica corectitudinea semnăturii electronice.

3 - Certificat de cheie de verificare EDS emis de un centru de certificare (CA). Scopul său este de a asocia un set anonimizat de octeți ai unei chei „publice” cu identitatea proprietarului semnăturii electronice (persoană sau organizație). În practică, arată astfel: de exemplu, Ivan Ivanovici Ivanov ( individual) vine la centrul de certificare, îi prezintă pașaportul, iar CA îi eliberează un certificat care confirmă că cheia „publică” declarată îi aparține lui Ivan Ivanovici Ivanov. Acest lucru este necesar pentru a preveni o schemă frauduloasă, în timpul desfășurării căreia un atacator în procesul de transmitere a codului „deschis” îl poate intercepta și îl poate înlocui cu al său. Acest lucru îi va oferi criminalului posibilitatea de a se uzurpa identitatea semnatarului. Pe viitor, interceptând mesaje și făcând modificări, le va putea confirma cu semnătura sa digitală. De aceea, rolul certificatului cheie de verificare a semnăturii electronice este extrem de important, iar centrul de certificare poartă responsabilitatea financiară și administrativă pentru corectitudinea acestuia.

În conformitate cu legislația Federației Ruse, există:

— „certificatul cheii de verificare a semnăturii electronice” este generat pentru o semnătură digitală necalificată și poate fi emis de un centru de certificare;

— « certificat calificat cheie de verificare a semnăturii electronice” este generată pentru o semnătură digitală calificată și poate fi emisă numai de un CA acreditat de Ministerul Telecomunicațiilor și Comunicațiilor de Masă.

În mod convențional, putem indica că cheile de verificare a semnăturii electronice (seturi de octeți) sunt concepte tehnice, iar un certificat de cheie „publică” și o autoritate de certificare sunt concepte organizaționale. La urma urmei, CA este o unitate structurală care este responsabilă pentru potrivirea cheilor „publice” și a proprietarilor acestora în cadrul activităților lor financiare și economice.

Pentru a rezuma cele de mai sus, sintagma „clientului i-a fost emisă o semnătură electronică” constă din trei componente:

  1. Clientul a achiziționat un instrument de semnătură electronică.
  2. A primit o cheie „publică” și „privată”, cu ajutorul căreia se generează și se verifică semnătura digitală.
  3. CA a emis clientului un certificat care confirmă că cheia „publică” din perechea de chei îi aparține acestei persoane.

Problema de securitate

Proprietățile necesare ale documentelor semnate:

  • integritate;
  • fiabilitate;
  • autenticitate (autenticitate; „nerepudierea” dreptului de autor al informațiilor).

Acestea sunt furnizate de algoritmi și protocoale criptografice, precum și de soluții software și hardware-software bazate pe aceștia pentru generarea unei semnături electronice.

Cu un anumit grad de simplificare, putem spune că securitatea unei semnături electronice și a serviciilor oferite pe baza acesteia se bazează pe faptul că cheile „private” ale semnăturii electronice sunt păstrate secrete, într-o formă protejată, și că fiecare utilizator le stochează în mod responsabil și nu permite incidente.

Notă: atunci când achiziționați un token, este important să schimbați parola din fabrică, astfel încât nimeni nu va putea accesa mecanismul de semnătură digitală, cu excepția proprietarului acestuia.

Cum se semnează un fișier cu semnătură electronică?

Pentru a semna un fișier de semnătură digitală, trebuie să parcurgeți câțiva pași. De exemplu, să vedem cum să puneți o semnătură electronică calificată pe un certificat de marcă înregistrată al Portalului de semnătură electronică unificată în format .pdf. Trebuie sa:

1. Faceți clic dreapta pe document și selectați furnizorul cripto (în acest caz CryptoARM) și coloana „Semnați”.

2. Urmați calea din casetele de dialog ale furnizorului cripto:

La acest pas, dacă este necesar, puteți selecta un alt fișier de semnat sau puteți sări peste acest pas și mergeți direct la următoarea casetă de dialog.

Câmpurile Codificare și Extensie nu necesită editare. Mai jos puteți alege unde va fi salvat fișierul semnat. În exemplu, un document cu semnătură digitală va fi plasat pe desktop.

În blocul „Proprietăți semnătură”, selectați „Semnat” dacă este necesar, puteți adăuga un comentariu. Câmpurile rămase pot fi excluse/selectate după cum doriți.

Selectați-l pe cel de care aveți nevoie din depozitul de certificate.

După ce verificați dacă câmpul „Proprietar certificat” este corect, faceți clic pe butonul „Următorul”.

În această casetă de dialog, se efectuează verificarea finală a datelor necesare pentru a crea o semnătură electronică, iar apoi, după ce faceți clic pe butonul „Terminare”, ar trebui să apară următorul mesaj:

Finalizarea cu succes a operațiunii înseamnă că fișierul a fost convertit criptografic și conține cerințe care înregistrează imuabilitatea documentului după semnare și asigură semnificația sa juridică.

Deci, cum arată o semnătură electronică pe un document?

De exemplu, luăm un fișier semnat cu o semnătură electronică (salvat în format .sig) și îl deschidem printr-un furnizor de cripto.

Fragment de desktop. Stânga: fișier semnat cu semnătură digitală, dreapta: furnizor de cripto (de exemplu, CryptoARM).

Vizualizarea semnăturii electronice în documentul propriu-zis la deschiderea acestuia nu este prevăzută din cauza faptului că este o cerință. Dar există excepții, de exemplu, o semnătură electronică a Serviciului Fiscal Federal la primirea unui extras din Registrul de stat unificat al persoanelor juridice/Registrul de stat unificat al antreprenorilor individuali prin serviciu online afișat condiționat pe documentul propriu-zis. Captura de ecran poate fi găsită la

Dar cum până la urmă EDS „aspect”, sau mai degrabă, cum este indicat faptul semnării în document?

Prin deschiderea ferestrei „Gestionați datele semnate” prin intermediul furnizorului de cripto, puteți vedea informații despre fișier și semnătură.

Când faceți clic pe butonul „Vizualizare”, apare o fereastră care conține informații despre semnătură și certificat.

Ultima captură de ecran demonstrează clar cum arată semnătura digitală pe un document?"din cadrul".

Puteți achiziționa o semnătură electronică la.

Pune alte întrebări pe tema articolului în comentarii, experții Portalului de semnătură electronică unificată îți vor răspunde cu siguranță.

Articolul a fost pregătit de editorii site-ului web Unified Electronic Signature Portal folosind materiale de la SafeTech.

Când utilizați materialul integral sau parțial, un hyperlink către www..

Am decis să dedic scurta intrare de astăzi subiectului creării unei semnături digitale electronice folosind criptoproviderul „CryptoPRO”. Vom vorbi despre un fișier Bat care poate fi folosit pentru automatizarea semnării documente electronice.

Pentru a automatiza procesul de semnare a documentelor electronice, vom avea nevoie de:
1) CSP Crypto-PRO;
2) Cheie USB (de exemplu Rutoken) introdusă în portul USB;
3) Notepad (Notepad.exe);
4) Certificate instalate pentru cheia dvs.;

Piesa de poticnire în toată această poveste este fișierul csptest.exe, care se află în directorul CryptoPro (în mod implicit C:\Program Files\Crypto Pro\CSP\csptest.exe).

Să deschidem linia de comandă și să rulăm comanda:

Cd C:\Program Files\Crypto Pro\CSP\ și csptest

Vom vedea toți parametrii posibili ai acestui fișier exe.

Selectați din:-ajutor tipăriți acest ajutor -noerrorwait nu așteptați nicio tastă la eroare -notime nu afișează timpul scurs -pause Așteptați introducerea de la tastatură după finalizare, astfel încât să puteți verifica utilizarea memoriei și a altor resurse -reporniți Apelați DestroyCSProvider() al ultimului CSP utilizat la ieșire Servicii (cryptsrv*, HSM, etc) nu sunt afectate -randinit Inițializați rng de sistem cu srand(x) (implicit: oră) -showrandinit Afișați valoarea de inițializare rng de sistem -stiva Măsurați utilizarea stivei Selectați din:-lowenc test de criptare/decriptare la nivel scăzut -sfenc test de criptare/decriptare a mesajelor de nivel simplificat -cmslowsign CMS test de semnare a mesajelor de nivel scăzut -cmssfsign Test de semnare/verificare a mesajelor de nivel simplificat CMS -lowsign test de semnare a mesajelor de nivel scăzut -lowsignc test de semnare a mesajelor de nivel scăzut cu ciclu Folosiți „-lowsign -repeat NN” în schimb! -sfsign nivel simplificat de semnare a mesajelor/test de verificare -ipsec teste ipsec -defprov manipulări prestabilite furnizorului -testpack Pachet de mai multe teste -obținerea/instalarea proprietății certificatului de proprietate pentru legarea cheii secrete -certkey schimba numele furnizorului în certificat link-ul cheii secrete -teste contextul furnizorului de context -absorb absoarbe toate certificatele din containere cu chei secrete care leagă -drvtst test proxy-driver -signtool SDK signtool analog -iis gestionează IIS -hsm gestionează HSM-client -rpcc RPC peste client SSL -rpcs RPC peste server SSL -oid info/set /get -passwd set/change password -keycopy copy container -keyset create (deschide) keyset -tlss start tls server -tlsc start tls client -tls tests TLS -prf PRF tests -hash hash test -makecert certificat emiting test -certprop show certificate proprietăți -rc verifica pkcs#10/certificat semnătură -cmsenclow CMS test de criptare/decriptare a mesajelor de nivel scăzut -sfse mesaj de nivel simplificat Test SignedAndEnveloped -test de stres pentru Acquire/ReleaseContext -ep test de export cheie publică -enum enumerarea parametrilor CSP -cpenc CP/ Teste de criptare la nivel Crypto (advapi32) -setpp Teste SetProvParam -perf Teste de performanță -viteză Teste de viteză și setare optimă a măștii funcției -testcont Instalare/Dezinstalare containere de testare -instalare informații de instalare CSP, ștergere CSP -versiune Imprimare versiune CSP

Pentru a vedea parametrii unei anumite opțiuni globale, trebuie doar să apelați acest fișier cu această opțiune, de exemplu

Csptest -sfsign : -sign Semnează datele din numele fișierului de intrare -verify Verificați semnătura pe datele specificate de numele fișierului de intrare -help Imprimați acest ajutor : -în Introduceți numele fișierului care urmează să fie semnat sau verificat Ieșire PKCS#7 nume de fișier -my Certificat de la magazinul CURRENT_USER pentru procesarea datelor -MY Cert de la magazinul LOCAL_MACHINE pentru procesarea datelor -detached Deal with detached signature -adăugați Adăugați certificatul expeditorului către PKCS#7 -semnătură Fișier de semnătură detașat -alg Algoritm Hash: SHA1, MD5, MD2, GOST - implicit -ask Achiziționați contextul csp folosind certificatul meu (implicit: niciunul) -base64 Intrare/ieșire cu conversie base64DER -addsigtime Adăugați atribut de timp de semnare -cades_strict Atribut de semnare strictă Generare certificatV2 -cades_disable Dezactivează generarea atributelor signingCertificateV2

Astfel, pentru a semna un fișier prin cmd folosind csptest.exe, trebuie să apelați comanda:

Csptest -sfsign -sign -in Dogovor.doc -out Dogovor.doc.sig -my MyPrograms LLC Ivanov Ivan Ivanovich

Unde:
-Ale mele— Indică proprietarul cheii;
-în— Indică ce fișier trebuie semnat. Dacă fișierul nu se află în folderul cu csptest, atunci trebuie să specificați calea completă.;
- afară— Specifică numele fișierului de semnătură;

Puteți verifica semnătura pe site-ul Gosulsug folosind acest link.

Cel mai probabil. Dacă descărcați acum acest fișier pe site-ul web al serviciului guvernamental, va apărea o eroare. Acest lucru se datorează faptului că sunt necesare informații despre autoritatea de certificare. De asemenea, data și ora semnării documentelor nu vor fi de prisos. Pentru a face acest lucru, trebuie să adăugăm doi parametri la comanda noastră:

Csptest -sfsign -sign -in Dogovor.doc -out Dogovor.doc.sig -my MyPrograms LLC Ivanov Ivan Ivanovich -addsigtime -add

Dacă avem nevoie de o semnătură într-un format legat, atunci vom adăuga încă un parametru:

Csptest -sfsign -sign -in Dogovor.doc -out Dogovor.doc.sig -my LLC MyPrograms Ivanov Ivan Ivanovich -addsigtime -add -detașat

Notă: Dacă documentul este semnat cu o eroare
Fisierul nu poate fi deschis
A apărut o eroare la rularea programului.
.\signtsf.c:321:Nu se poate deschide fișierul de intrare.
Eroare numărul 0x2 (2).
Fișierul specificat nu poate fi găsit.

când sunteți apelați ca în ultimul exemplu și sunteți sigur că căile din parametrii -in și -out sunt corecte, încercați să creați o semnătură folosind primul exemplu și apoi executați comanda cu setul complet de parametri!!!

Am primit comanda principală pentru semnare. Acum să simplificăm puțin procedura. Să facem un fișier bat, care, la lansare, va semna fișierul Secret.txt, aflat în același folder cu fișierul bat. Deschide bloc-notes și notează următorul cod:

Chcp 1251 set CurPath=%cd% cd C:\Program Files\Crypto Pro\CSP call csptest -sfsign -sign -in %CurPath%\Secret.txt -out %CurPath%\Secret.txt.sig -my MyPrograms LLC Ivanov Ivan Ivanovich -addsigtime -add -cd detașat %CurPath%

Faceți clic pe „Fișier” -> „Salvare ca” -> Setați numele s.bat -> „Salvare”
Asta e tot. Pentru trimitere:
chcp 1251— Setează codificarea pentru CMD. Necesar pentru procesarea validă a literelor rusești în cod;
setați CurPath=%cd%— Salvează calea directorului CMD curent în variabila CurPath;
CD— Setează calea CMD curentă;
apel— Lansează programul;

12 august 2010, ora 12:24

În părțile anterioare, ne-am dat seama aproximativ ce vom mânca exact. Acum, în sfârșit, să trecem direct la alegerea unui preparat pe gustul nostru. Aici ne vom uita la scopurile utilizării unei semnături digitale, la care tabără să vă alăturați și care sunt caracteristicile utilizării fiecăreia dintre opțiuni și, de asemenea, vom aborda fundalul juridic al utilizării. semnături digitale. În același timp, vom lua în considerare întrebările care apar în proces și vom aprofunda cunoștințele despre funcționarea mecanismului pe care îl avem în prezent.

Să presupunem că aveți o dorință irezistibilă, sau poate o nevoie urgentă, de a utiliza o semnătură digitală. Prima întrebare generală pe care ar trebui să ți-o pui este: de ce? Dacă nu puteți răspunde la această întrebare mai mult sau mai puțin clar, atunci gândiți-vă de două ori înainte de a merge mai departe pe calea utilizării acestei tehnologii. La urma urmei, implementarea și, cel mai important, utilizarea unei semnături digitale în oricare dintre formele sale, este un proces destul de intensiv în muncă, așa că, dacă nu există o înțelegere clară a obiectivelor stabilite, este mai bine să nu începeți.

Să înțelegeți în continuare că aveți nevoie pur și simplu de o semnătură digitală. Și aveți nevoie de el, firește, pentru a vă proteja informațiile. Acum să ne uităm la situațiile în care este posibilă utilizarea unei semnături digitale și a criptării în ordinea complexității.

Să începem cu o opțiune relativ simplă: sunteți o persoană privată și doriți să protejați informațiile pe care le trimiteți prin surse electronice împotriva înlocuirii și, poate, de a fi citite de străini. Trimiteți informațiile aceleiași persoane obișnuite, cu care puteți întotdeauna să conveniți asupra modului în care vă veți proteja informațiile. De ce ai nevoie pentru asta?

Să începem cu S/MIME. Să facem asta, în primul rând, pentru că acest format, așa cum am spus deja, este mult mai răspândit și, cel mai important: este suportat la nivel de Windows (și Windows, orice s-ar spune, este cel mai răspândit sistem de operare), precum și multe programe care rulează sub Windows. Ei bine, în al doilea rând, din punct de vedere juridic, acest format permite (în cadrul statului nostru, desigur) mult mai mult.

Care este cel mai simplu și mai comun mod de a transmite informații unei alte persoane? Desigur, acesta este e-mail. Luăm scrisoarea, îi atașăm fișiere și o trimitem. Și aici suntem deosebit de norocoși cu o semnătură digitală în format S/MIME: toți clienții de e-mail obișnuiți pot atât să primească mesaje cu o semnătură digitală, cât și să le trimită. În acest caz, întreaga scrisoare este semnată, inclusiv fișierele atașate scrisorii.

Orez. 1. Pagina Centrului de încredere Outlook 2007

Și totul ar fi bine, dar pentru a trimite o scrisoare cu semnătură trebuie să aveți un program care funcționează cu criptografie (furnizor de servicii criptografice, CSP) și un certificat pentru un anumit scop și cheia privată asociată acestuia. Scopul unui certificat este domeniul în care poate fi utilizat. Vom vorbi mai multe despre scopul certificatelor mai târziu, dar pentru sarcina curentă avem, de fapt, nevoie de un certificat de protecție E-mail(certificat de protecție a e-mailului).

Dar să revenim la nevoile noastre. De unde pot obține acest program, furnizor de criptografii? Spre norocul nostru, sistemul de operare Windows nu numai că acceptă formatul în sine, ci conține și un set de furnizori cripto care vin la pachet cu orice versiune a sistemului absolut gratuit, adică degeaba. Aceasta înseamnă că cea mai evidentă soluție pentru această situație este să le folosești.

Deci, ne-am dat seama care este furnizorul de cripto, dar ce să facem cu certificatul? În partea anterioară, am spus că în procesul de eliberare a certificatelor este implicată un anumit terț - o autoritate de certificare, care emite direct certificate și certifică conținutul și relevanța acestora. Mă voi opri asupra acestui punct mai detaliat, deoarece vom avea nevoie de aceste cunoștințe în viitor.

Confirmarea că acest certificat de utilizator este corect și că conținutul acestuia nu a fost modificat este aceeași semnătură digitală, doar că este semnată de o autoritate de certificare.

Autoritatea de certificare, ca și utilizatorii, are propriul certificat. Și cu ajutorul lui semnează certificatele pe care le eliberează. Această procedură, în primul rând, protejează certificatele emise de autoritatea de certificare de modificări (cum am spus mai sus), iar în al doilea rând, arată clar care autoritate de certificare a emis certificatul. Drept urmare, o persoană rea, desigur, poate face o copie completă a certificatului dvs., cu prenumele, prenumele, chiar și orice informații suplimentare, dar falsificarea semnăturii digitale a unei autorități de certificare fără a avea cheia privată va fi o problemă. sarcină aproape imposibilă pentru el și, prin urmare, recunoașterea acestui fals va fi nu numai ușoară, ci și foarte ușoară.

De asemenea, certificatul autorității de certificare în sine, pe cale amiabilă, trebuie protejat. Ceea ce înseamnă că este semnat. De cine? O autoritate de certificare de rang superior. Și el, la rândul său, este și mai superior. Și un astfel de lanț poate fi foarte lung. Cum se termină?

Și se termină cu un certificat autosemnat de la autoritatea de certificare. Un astfel de certificat este semnat de cheia privată asociată acestuia. Pentru a da o analogie, acesta este ca un certificat de funcție și salariu director general. « Prin acest certificat Ivanov I.I., Director General al SRL« Păpădie» atestă că Ivanov I.I. deține funcția de director general în această organizație și primește un salariu de ####### ruble" Pentru a crede acest certificat, trebuie să credeți compania Dandelion LLC însăși, iar această credință nu este susținută de niciun terț.

Același lucru este valabil și pentru certificatele rădăcină (adică certificatele de la autoritățile de certificare). Certificatele autosemnate ale acelor autorități de certificare în care aveți încredere ar trebui să fie stocate într-un spațiu de stocare special în sistemul numit „Trusted centrii radiculari certificare." Dar înainte de a ajunge acolo, trebuie să le iei cumva. Și aceasta este cea mai slabă verigă din sistem. Certificatul autosemnat în sine nu poate fi falsificat, la fel ca unul de utilizator, dar va fi grozav să îl înlocuiți în timpul transmiterii. Aceasta înseamnă că transmisia trebuie efectuată printr-un canal protejat de falsificare.

Pentru a evita, dacă este posibil, astfel de dificultăți, Microsoft a selectat mai multe autorități de certificare și a inclus certificatele acestora direct în instalarea Windows (acestea sunt Thawte, VeriSign și altele). Le aveți deja pe computer și nu trebuie să le obțineți de nicăieri. Aceasta înseamnă că le puteți înlocui doar dacă aveți un troian pe computer (sau o persoană rea trebuie să aibă acces administrativ la computerul dvs.), iar vorbirea despre utilizarea unei semnături digitale în acest caz este oarecum inutilă. În plus, aceste autorități de certificare sunt cunoscute și utilizate pe scară largă de mulți oameni, iar o simplă înlocuire a certificatelor lor va duce la multe erori în funcționarea, de exemplu, a site-urilor ale căror certificate sunt emise de aceste autorități de certificare, care, la rândul lor, vor duc rapid la ideea că acel ceva nu este curat aici.

Apropo, despre certificatele autosemnate: puteți crea un astfel de certificat pentru uzul dvs., și nu doar pentru o autoritate de certificare. Desigur, un astfel de certificat moștenește toate dezavantajele certificatelor de acest tip, dar pentru a verifica dacă merită să folosiți o semnătură digitală în corespondență sau dacă este mai bine să faceți acest lucru, este excelent. Pentru a crea astfel de certificate, puteți folosi un program inclus în instrumentele Microsoft Office (Certificat digital pentru proiecte VBA), sau, pentru a configura mai bine scopul și alte câmpuri ale acestui certificat, un program terță parte, de exemplu CryptoArm, care chiar și în versiunea sa gratuită permite astfel de crearea de certificate.

Orez. 2. Vizualizarea unui certificat autosemnat folosind Windows

Așadar, alegem un centru de certificare care ni se potrivește ambilor, primim certificate de la acesta (pentru care completăm un formular pe site, furnizăm Documente necesareși plătiți bani dacă este necesar), sau creați un certificat autosemnat pentru dvs. și... De fapt, asta este tot. Acum putem folosi clientul nostru de e-mail (același Outlook) pentru a trimite și primi mesaje semnate și criptate.

Pentru a utiliza standardul OpenPGP, totul este atât mai simplu, cât și mai complicat. Pentru a utiliza acest standard, mai aveți nevoie de un furnizor de cripto, o pereche de chei publice și private și un program care efectuează direct semnarea și criptarea. Pentru OpenPGP, toate aceste componente pot fi fie plătite, fie gratuite. La cele gratuite sunt mai multe bătăi de cap de instalat, iar la cele plătite sunt mai puține, dar principiile sunt aceleași pentru ambele.

Urmând secvența descrierii deja folosită, să începem cu programul cu care vei fi cel mai mult în contact: clientul de email. Utilizarea pur Outlook nu mai este posibilă aici, din cauza necunoașterii standardului OpenPGP, ceea ce înseamnă că trebuie fie să comutați la un client care cunoaște standardul, fie să utilizați pluginuri pentru Outlook, fie chiar să lucrați cu semnături și criptare prin copierea informațiilor în programe externe. Un exemplu de clienți de e-mail care funcționează cu standardul OpenPGP este Mozilla Thunderbird, care, apropo, necesită încă un plugin, sau The Bat! , care în versiunea Profissional poate funcționa singur cu standardul OpenPGP.

Orez. 3. Ecranul principal al clientului de e-mail Mozilla Thunderbird

Orez. 4. Ecranul principal al clientului de mail The Bat!

Pot fi găsite și pluginurile necesare pentru a funcționa cu standardul OpenPGP prin e-mail, atât plătite, cât și gratuite. Pluginurile plătite sunt furnizate cu versiuni plătite programe PGP, iar ca exemplu de plugin gratuit putem cita pluginul Enigmail pentru același Thunderbird.

Orez. 5. Suplimente care apar în clientul de e-mail după instalarea Enigmail

Furnizorii de criptografii de aici sunt toți gratuiti într-un fel sau altul. Puteți folosi furnizorul cripto care vine chiar și cu versiunea gratuită a programului PGP sau puteți folosi GnuPG.

Orez. 6. Pagina GnuPG Management Key

Aici, poate, merită un mic avertisment pentru cei care vor căuta cod sursă gratuit și deschis. Majoritatea acestor aplicații funcționează și își îndeplinesc funcțiile, dar există o serie de probleme comune tuturor. Și problema testării insuficiente și problema dezvoltării interfețelor utilizator sună deosebit de semnificativ. Ambele probleme sunt fundamentale pentru software-ul liber prin însăși esența sa: dezvoltarea este realizată de „întreaga lume” (sau un grup separat), ceea ce înseamnă că proiectele în majoritatea cazurilor nu au un ideolog comun, nu există un designer comun. , designer etc. Ca urmare, situația se dovedește adesea a fi „ceea ce a crescut a crescut”, iar acest lucru nu este întotdeauna convenabil din punct de vedere pur funcțional. De asemenea, testarea este, de regulă, efectuată de „întreaga lume”, și nu de testeri profesioniști, asupra cărora planează un manager rău, așa că mai multe erori ajung în versiunea finală. În plus, dacă se descoperă o eroare care ar putea duce la pierderea informațiilor dvs., adesea nu există pe cine să întrebați: software-ul este gratuit și deschis și nimeni nu poartă nicio responsabilitate financiară sau legală față de dvs. Cu toate acestea, nu vă amăgiți, situația cu software-ul plătit este exact aceeași, deși în cazuri rare sunt posibile opțiuni. Din păcate, aceste cazuri se referă, mai degrabă, la companii partenere și clienți corporativi, așa că pentru noi, utilizatorii obișnuiți, putem la fel de bine să presupunem că nu există opțiuni.

În același timp, nu vreau în niciun caz să cerșesc meritele acestui tip de software. De fapt, privind atât programele plătite, cât și cele gratuite care funcționează cu criptografie, puteți vedea că prima problemă - erori - practic (cu rare excepții pe care pur și simplu nu ar trebui să le utilizați) nu este supusă acestui software. Dar cea de-a doua – interfețe care sunt terifiante din punctul de vedere al utilizatorului – îi privește, în mod ciudat, pe aproape toată lumea. Și dacă motivul unei astfel de situații pentru software-ul liber poate fi luat ca fiind tocmai „ceea ce a crescut, a crescut” (să zicem, programul TrueCrypt, minunat din toate punctele de vedere, care este standardul de facto în domeniul criptării datelor, are o interfață terifiantă pentru o persoană care nu are o înțelegere foarte profundă a întrebării), atunci o situație similară cu software-ul plătit poate fi explicată, poate, doar prin faptul că criptografia, ca direcție de dezvoltare, este de obicei considerată pe o bază reziduală. Există excepții de la aceste reguli ici și colo, dar O Cu toate acestea, personal am întâlnit un număr mai mare de excepții în tabăra de software plătit.

Dar să revenim la poșta noastră. Problema certificatului rămâne nerezolvată. „Mai simplu și mai complex” trăiește aici. Îl poți crea direct pe computer, fără a apela la serviciile unui centru de certificare extern, ceea ce, vezi, este mai ușor decât trimiterea unei cereri la un centru de certificare. Dar de aici problemele cu aceste certificate: toate sunt autosemnate, ceea ce înseamnă că sunt supuse acelorași probleme pe care le-am considerat cu certificatele autosemnate de la autoritățile de certificare. Al doilea punct, strict vorbind, este ceea ce îl face „mai dificil”.

Problema încrederii în certificate în această tabără este rezolvată cu ajutorul rețelelor de încredere, al căror principiu poate fi descris pe scurt după cum urmează: decât mai multi oameni te cunosc (certificatul), cu atât mai multe motive de încredere. În plus, băncile publice de certificate pot facilita rezolvarea problemei transferului unui certificat către destinatar, a cărui profunzime este ceva mai dificil de aprofundat pentru o persoană rea decât în ​​corespondența transmisă. ÎN această bancă puteți descărca certificatul atunci când îl creați și pur și simplu îl transferați destinatarului de unde ar trebui să ridice acest certificat.

Certificatele sunt stocate în unele depozite care creează programe pe mașina dvs. pentru a funcționa cu standardul OpenPGP, acestea oferă acces la ele. Nu ar trebui să uitați nici de acest lucru, deoarece asta înseamnă că nu veți putea accesa aceste certificate folosind singur sistemul de operare fără a utiliza aceste programe.

Totul, ca și în cazul S/MIME, setul de acțiuni de mai sus este deja suficient pentru ca dvs. să ne atingeți obiectivul: schimbul de e-mailuri semnate și criptate.

Deci, s-a făcut un început. Putem mânca deja primul fel de mâncare, destul de simplu, cu condimente sub formă de semnături digitale, dar este bun doar pentru amorsare și, desigur, nu are rost să ne oprim aici. În articolele viitoare vom analiza situații din ce în ce mai complexe și vom afla din ce în ce mai multe despre caracteristicile acestei tehnologii.

(4.00 - evaluat de 18 persoane)