Articole

16.1: Criptografie

16.1: Criptografie



We are searching data for your request:

Forums and discussions:
Manuals and reference books:
Data from registers:
Wait the end of the search in all databases.
Upon completion, a link will appear to access the found materials.

Când oamenii trebuie să stocheze sau să comunice mesaje în secret, apelează la criptografie. Criptografia implică utilizarea unor tehnici pentru a ascunde un mesaj, astfel încât persoanele din afară să nu poată citi mesajul. De obicei, este împărțit în doi pași: criptare, în care mesajul este ascuns și decriptare, în care mesajul original este recuperat din forma ascunsă.


Clkhash, iar proiectul mai larg Anonlink este proiectat, dezvoltat și susținut de CSIRO Data61 & lthttps: //www.data61.csiro.au/> __. Dacă utilizați o parte a acestei biblioteci în cercetarea dvs., vă rugăm să o citați folosind următoarea intrare BibTex:

Link-uri de proiect

Statistici

Vedeți statistici pentru acest proiect prin intermediul Libraries.io sau utilizând setul nostru de date publice de pe Google BigQuery

Licență: Licență software Apache (Apache)

Întreținători

Clasificatoare

  • Starea de dezvoltare
    • 5 - Producție / Stabil
    • Consolă
    • Aprobat OSI :: Licență software Apache
    • Engleză
    • OS Independent
    • Python :: 3
    • Python :: 3.6
    • Python :: 3.7
    • Python :: 3.8
    • Python :: 3.9
    • Python :: Implementare :: CPython
    • Python :: Implementare :: PyPy
    • Securitate :: Criptografie

    Cuprins

    Utilizarea cifrelor a făcut parte din protocolul de tranzit Secure Socket Layer (SSL) de la crearea sa. SSL a fost succedat de TLS pentru majoritatea utilizărilor. Cu toate acestea, numele Cipher Suite nu a fost folosit în versiunea inițială a SSL. În schimb, s-a apelat la capacitatea pentru un client și un server de a alege dintr-un set mic de cifre pentru a-și asigura conexiunea Cipher-Choice. [4] [5] Numele nu a fost până la SSL v3 (ultima versiune a SSL) Cipher Suite a fost folosit. [6] Fiecare versiune a TLS a fost folosită de atunci Cipher Suite în standardizarea sa. Conceptul și scopul unui Cipher Suite nu s-a schimbat de când a fost inventat prima dată termenul. Are și este încă folosit ca o structură care descrie algoritmii pe care o mașină le acceptă pentru ca două mașini să decidă ce algoritmi să folosească pentru a-și asigura conexiunea. Ceea ce s-a schimbat sunt versiunile algoritmilor care sunt acceptate în suitele de cifrare. Fiecare versiune a TLS a adăugat suport pentru versiunile mai puternice ale algoritmilor și a eliminat suportul pentru versiunile algoritmilor care au fost identificați ca nesiguri.

    TLS 1.3 marchează o schimbare a modului în care suitele de cifrare sunt coordonate între mașini. Suita de cifrare aleasă pentru utilizarea a două mașini comunicante este determinată de procesul de strângere a mâinii. Modificările au fost făcute în TLS 1.3 la procesul de strângere de mână pentru a reduce numărul de mesaje care trebuie trimise. Acest lucru permite o procesare mai mică, trafic de pachete mai redus și o eficiență mai mare în comparație cu versiunile anterioare ale TLS.

    Fiecare suită de cifrare are un nume unic care este folosit pentru a o identifica și pentru a descrie conținutul algoritmic al acesteia. Fiecare segment dintr-un nume de suită de cifrare reprezintă un algoritm sau protocol diferit. Un exemplu de nume de suită de cifrare: TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256

    Semnificația acestui nume este:

    • TLS definește protocolul pentru care este această suită de cifrare pentru că va fi de obicei TLS.
    • ECDHE indică algoritmul de schimb de chei utilizat.
    • RSA mecanism de autentificare în timpul strângerii de mână.
    • AES cifru de sesiune
    • 128 dimensiunea cheii de criptare a sesiunii (biți) pentru cifrare
    • GCM tip de criptare (dependență de blocuri de cifrare și opțiuni suplimentare)
    • SHA (SHA2) funcție hash. Pentru un rezumat de 256 și mai mare. Mecanism de semnătură. indică algoritmul de autentificare a mesajului care este utilizat pentru autentificarea unui mesaj.
    • 256 Dimensiunea digestului (biți).

    Pentru a utiliza suitele de cifrare, clientul și serverul trebuie să fie de acord cu suita de cifrare specifică care va fi utilizată la schimbul de mesaje. Atât clientul, cât și serverul trebuie să accepte suita de cifrare agreată. Dacă clientul și serverul nu sunt de acord cu o suită de cifrare, nu se va face nicio conexiune. [7] Acest proces de selecție are loc în timpul protocolului TLS Handshake Protocol. TLS 1.3 include un protocol TLS Handshake Protocol care diferă în comparație cu versiunea anterioară și actuală a TLS / SSL.

    După coordonarea setului de cifre de utilizat, serverul și clientul au în continuare capacitatea de a schimba cifrele coordonate utilizând ChangeCipherSpec protocol în strângerea de mână curentă sau într-o strângere de mână nouă.

    Pentru a testa ce cifre TLS acceptă un server, poate fi utilizat un scaner SSL / TLS. [1]

    TLS 1.0–1.2 strângere de mână Editare

    Acest client începe procesul prin trimiterea unui clientBună ziua mesaj către server care include versiunea TLS utilizată și o listă de suite de cifrare în ordinea preferințelor clientului. Ca răspuns, serverul trimite un serverSalut mesaj care include suita de cifrare aleasă și ID-ul sesiunii. Apoi serverul trimite un certificat digital pentru a-și verifica identitatea către client. Serverul poate solicita, de asemenea, certificarea digitală a unui client, dacă este necesar.

    Dacă clientul și serverul nu folosesc chei pre-partajate, clientul trimite apoi un mesaj criptat către server care permite clientului și serverului să calculeze ce cheie secretă va fi utilizată în timpul schimburilor.

    După verificarea cu succes a autentificării serverului și, dacă este necesar, schimbarea cheii secrete, clientul trimite un terminat mesaj pentru a semnala că se face cu procesul de strângere a mâinii. După primirea acestui mesaj, serverul trimite un terminat mesaj care confirmă faptul că strângerea de mână este completă. Acum, clientul și serverul sunt de acord cu privire la ce suită de cifrare să utilizeze pentru a comunica între ei.

    Strângere de mână TLS 1.3 Editare

    Dacă două mașini corespund peste TLS 1.3, acestea coordonează ce suită de cifrare să utilizeze utilizând protocolul TLS 1.3 Handshake Protocol. Strângerea de mână în TLS 1.3 a fost condensată la o singură călătorie dus-întors comparativ cu cele două călătorii dus-întors necesare în versiunile anterioare ale TLS / SSL.

    Mai întâi clientul trimite un clientBună ziua mesaj către server care conține o listă de cifre acceptate în ordinea preferințelor clientului și face o estimare asupra algoritmului cheie care este utilizat, astfel încât să poată trimite o cheie secretă pentru a o partaja, dacă este necesar.

    Făcând o ghicire asupra algoritmului cheie care este utilizat, elimină o călătorie dus-întors. După primirea clientBună ziua, serverul trimite un serverBună ziua cu cheia sa, un certificat, suita de cifrare aleasă și fișierul terminat mesaj.

    După ce clientul primește serverul terminat mesajul este acum coordonat cu serverul pe care suita de cifrare se folosește. [8]

    În TLS 1.0–1.2 Editați

    Algoritmi suportați în suitele de cifrare TLS 1.0-1.2
    Schimb / acord de chei Autentificare Blochează / difuzează cifrele Autentificarea mesajului
    RSA RSA RC4 MD5 bazat pe hash
    Diffie – Hellman DSA Triple DES Funcția SHA hash
    ECDH ECDSA AES
    SRP IDEE
    PSK DES
    Camelia
    ChaCha20

    Pentru mai multe informații despre algoritmii acceptați în TLS 1.0–1.2, consultați și: Securitatea stratului de transport § Aplicații și adoptare

    TLS 1.3 Edit

    În TLS 1.3, mulți algoritmi vechi care au fost acceptați în versiunile anterioare ale TLS au fost renunțați într-un efort de a face protocolul mai sigur. [9] În plus, toți algoritmii de criptare și autentificare sunt combinați în criptarea autentificată cu algoritmul de criptare a datelor asociate (AEAD). De asemenea, un algoritm hash trebuie acum utilizat în derivarea cheilor bazate pe HMAC (HKDF). [10] Toate cifrele care nu sunt AEAD au fost eliminate din cauza unor slăbiciuni sau vulnerabilități posibile și cifrele trebuie să utilizeze un algoritm de schimb de chei efemere, astfel încât să fie generate noi perechi de chei pentru fiecare schimb. [11]

    Datagram Transport Layer Security (DTLS) se bazează pe TLS, dar este utilizat în mod special pentru conexiunile UDP în loc de conexiunile TCP. Deoarece DTLS se bazează pe TLS, este capabil să utilizeze majoritatea suitelor de cifrare descrise pentru TLS. Există cazuri speciale care trebuie luate în considerare atunci când se utilizează suitele de cifrare TLS cu DTLS. DTLS nu acceptă codul de flux RC4, ceea ce înseamnă că niciun cod TLS care utilizează RC4 nu poate fi utilizat cu DTLS. [12]

    Pentru a determina dacă o suită de cifrare TLS este compatibilă cu DTLS, nu va ajuta să vă uitați la numele său. Fiecare suită de cifrare TLS va include în continuare spațiul de identificare TLS în numele său. de exemplu.: TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256. În schimb, toate registrele de parametri TLS includ acum steagul DTLS-OK pentru a semnaliza dacă o suită de cifrare acceptă DTLS. [13]

    O suită de cifrare este la fel de sigură ca algoritmii pe care îi conține. Dacă versiunea algoritmului de criptare sau autentificare dintr-o suită de cifrare a cunoscut vulnerabilități, suita de cifrare și conexiunea TLS sunt vulnerabile. Prin urmare, un atac obișnuit împotriva TLS și a suitelor de cifrare este cunoscut sub numele de atac de degradare. O retrogradare în TLS apare atunci când un client modern se conectează la servere vechi care utilizează versiuni mai vechi de TLS sau SSL.

    Când inițiază o strângere de mână, clientul modern va oferi cel mai înalt protocol pe care îl acceptă. Dacă conexiunea nu reușește, va reîncerca automat din nou cu un protocol inferior, cum ar fi TLS 1.0 sau SSL 3.0, până când strângerea de mână are succes cu serverul. Scopul retrogradării este astfel încât noile versiuni ale TLS să fie compatibile cu versiunile mai vechi. Cu toate acestea, este posibil ca un adversar să profite de această caracteristică și să o facă astfel încât un client să treacă automat la o versiune de TLS sau SSL care acceptă suite de cifrare cu algoritmi cunoscuți pentru securitate slabă și vulnerabilități. [14] Acest lucru a dus la atacuri precum POODLE.

    O modalitate de a evita acest defect de securitate este dezactivarea capacității unui server sau client de a putea face downgrade la SSL 3.0. Neajunsul acestei corecții este că va face astfel încât unele hardware vechi să nu poată fi accesate de hardware-ul mai nou. Dacă este nevoie de suport SSL 3.0 pentru hardware vechi, există o suită de cifrare TLS_FALLBACK_SCSV aprobată, care verifică faptul că retrogradările nu sunt declanșate pentru intenții rău intenționate. [15]

    Algoritmii de criptare, schimb de chei și autentificare necesită de obicei o cantitate mare de putere de procesare și memorie. Pentru a oferi securitate dispozitivelor constrânse cu o putere de procesare limitată, memorie și durată de viață a bateriei, cum ar fi cele care alimentează internetul obiectelor, există suite de cifrare alese în mod special. Două exemple includ:

    1. TLS_PSK_WITH_AES_128_CCM_8 (cheie precompartită) [16]
    2. TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8 (brutcheie publică)

    Fiecare dintre aceste suite de cifrare a fost implementată pentru a rula pe dispozitive cu constrângeri în puterea de procesare și memorie. Ambele sunt implementate în proiectul open-source TinyDTLS. Motivul pentru care sunt capabili să lucreze pe aceste dispozitive constrânse este că pot fi implementate într-un mod ușor. Implementările suitei de cifrare a cheilor pre-partajate au folosit doar 1889 octeți de RAM și 38266 de ROM flash, care sunt foarte conștiente de resurse în comparație cu majoritatea algoritmilor de criptare și securitate. [17] Această utilizare redusă a memoriei se datorează acestor suite de cifrare care utilizează algoritmi eficienți dovediți, care sunt siguri, dar poate nu la fel de siguri ca mai mulți algoritmi necesari de resurse exp: Utilizarea criptării pe 128 de biți versus criptarea pe 256 de biți. În plus, utilizează cheia pre-partajată sau brut cheie publică care necesită mai puțin spațiu de memorie și putere de procesare în comparație cu utilizarea infrastructurii de chei publice tradiționale (PKIX). [18]

    În programare, o suită de cifrare este menționată atât în ​​plural, cât și în non-plural. Fiecare are definiții diferite:

    CipherSuite cipher_suites o listă a opțiunilor criptografice acceptate de client. [19] Un exemplu de cum cipher_suites este de obicei utilizat în timpul procesului de strângere de mână:


    Anexa A.16.1 se referă la gestionarea incidentelor, evenimentelor și punctelor slabe ale securității informațiilor. Obiectivul acestei zone din anexa A este de a asigura o abordare consecventă și eficientă a ciclului de viață al incidentelor, evenimentelor și punctelor slabe. ISO 27001: 2013 abordează în mod clar ciclul de viață prin A.16.1.1 până la A.16.1.7 și este o parte importantă a sistemului de management al securității informațiilor (ISMS), mai ales dacă doriți să obțineți certificarea ISO 27001. Să înțelegem acele cerințe și ce înseamnă acum mai puțin.

    A.16.1.1 Responsabilități și proceduri de amplificare

    Un control bun descrie modul în care managementul stabilește responsabilitățile și procedurile pentru a asigura un răspuns rapid, eficient și ordonat pentru a aborda punctele slabe, evenimentele și incidentele de securitate. În termeni simpli, un incident este locul în care s-a produs o formă de pierdere în ceea ce privește confidențialitatea, integritatea sau disponibilitatea. Un exemplu este în cazul în care o fereastră a fost lăsată deschisă și un hoț a furat un fișier important așezat pe birou ... După acest fir, un eveniment este locul în care fereastra a fost lăsată deschisă, dar nimeni nu a furat fișierul. Un punct slab este că fereastra este ușor de spart sau veche și ar putea fi un loc evident pentru spargere. O slăbiciune este, de asemenea, o oportunitate comună de gestionare a riscurilor sau de îmbunătățire.

    Procedurile pentru planificarea răspunsului la incident, eveniment și slăbiciune vor trebui să fie clar definite înainte de producerea unui incident și să fie aprobate de conducerea dumneavoastră. Aceste proceduri sunt destul de ușor de dezvoltat, deoarece restul acestui control din anexa A le explică. Auditorul dvs. se va aștepta să vadă toate aceste proceduri formale, documentate, și dovezi că funcționează.

    A.16.1.2 Raportarea evenimentelor de securitate a informațiilor

    Un control bun aici asigură că incidentele și evenimentele de securitate a informațiilor pot fi raportate prin canale de management adecvate cât mai curând posibil.

    Angajații și părțile interesate asociate (de exemplu, furnizorii) trebuie să fie conștienți de obligațiile lor de a raporta incidentele de securitate și ar trebui să le acoperiți ca parte a conștientizării și formării generale. Pentru a face acest lucru bine, vor trebui să conștientizeze exact ceea ce constituie o slăbiciune de securitate a informațiilor, un eveniment sau un incident, așa că fiți clar despre asta, pe baza exemplului simplu de mai sus. Dacă are loc sau se crede că a avut loc un eveniment de securitate a informațiilor, acesta trebuie raportat imediat administratorului de securitate al informațiilor desemnat și trebuie documentat în consecință.

    Unele dintre posibilele motive pentru raportarea unui incident de securitate includ controale de securitate ineficiente, presupuse încălcări ale integrității sau confidențialității informațiilor sau probleme de disponibilitate, de ex. neputând accesa un serviciu.

    Auditorul va dori să vadă și va preleva probe pentru a demonstra conștientizarea a ceea ce constituie o slăbiciune, eveniment sau incident în rândul personalului general și conștientizarea procedurilor și responsabilităților de raportare a incidentelor.

    A.16.1.3 Raportarea punctelor slabe ale securității informațiilor

    Acest control se bazează pur și simplu pe incidente și evenimente, dar poate fi tratat ușor diferit odată raportat (a se vedea A.16.1.4)
    Este esențial ca angajații să fie conștienți de faptul că, atunci când descoperă o slăbiciune de securitate, nu trebuie să încerce să demonstreze această slăbiciune, deoarece testarea poate fi interpretată ca o utilizare incorectă a sistemului, în timp ce riscă, de asemenea, să deterioreze sistemul și informațiile stocate. , provocând incidente de securitate!

    A.16.1.4 Evaluarea deciziei & amp cu privire la evenimentele de securitate a informațiilor

    Evenimentele de securitate a informațiilor trebuie evaluate și apoi se poate decide dacă acestea ar trebui clasificate ca incidente de securitate a informațiilor, evenimente de slăbiciune. Odată ce un eveniment de securitate a fost raportat și ulterior înregistrat, acesta va trebui apoi evaluat pentru a determina cea mai bună acțiune de luat. Această acțiune trebuie să aibă ca scop reducerea la minimum a oricărui compromis al disponibilității, integrității sau confidențialității informațiilor și prevenirea unor incidente ulterioare. În mod ideal, acesta va avea un impact minim asupra altor utilizatori ai serviciilor. Luând în considerare exact cine trebuie să fie conștientizat de incident, pe plan intern, clienții, furnizorii, autoritățile de reglementare pot avea loc și în această parte a ciclului de viață.

    GDPR și Legea privind protecția datelor din 2018 înseamnă că unele incidente de securitate a informațiilor referitoare la datele cu caracter personal trebuie raportate și Autorității de supraveghere, astfel încât controalele dvs. ar trebui, de asemenea, să respecte aceste considerații pentru a îndeplini cerințele de reglementare și pentru a evita duplicarea sau lacunele în muncă.

    A.16.1.5 Răspunsul la incidentele de securitate a informațiilor

    Este întotdeauna bine să desemnați proprietari, să fiți clari asupra acțiunilor și a termenelor și, ca și în cazul ISO 27001, să păstrați informațiile în scopuri de audit (de asemenea, esențial dacă aveți alți actori și autorități de reglementare de luat în considerare). Persoana însărcinată cu gestionarea evenimentului de securitate va fi responsabilă de restabilirea unui nivel normal de securitate

    • colectarea probelor cât mai curând posibil după producere
    • efectuarea unei analize de criminalistică a securității informațiilor (termen lung, dar cel puțin clar cu privire la cauza principală și aspectele conexe sau ce s-a întâmplat și cine a fost implicat, de ce etc)
    • escaladare, dacă este necesar, de exemplu către autoritățile de reglementare relevante
    • asigurându-se că toate activitățile de răspuns implicate sunt înregistrate corespunzător pentru o analiză ulterioară
    • comunicarea existenței incidentului de securitate a informațiilor sau a oricăror detalii relevante conducerii pentru ca acestea să fie comunicate în continuare diferiților indivizi sau organizații pe baza necesității de a ști și
    • tratarea deficiențelor în materie de securitate a informațiilor constatate că cauzează sau contribuie la incident.

    A.16.1.6 Învățarea din incidentele de securitate a informațiilor

    Acesta este un control al importanței, iar politica dvs. trebuie să demonstreze că cunoștințele acumulate din analiza și rezolvarea incidentelor de securitate a informațiilor vor fi utilizate pentru a ajuta la reducerea probabilității sau impactului oricăror incidente viitoare. Ca parte a angajamentului de îmbunătățire continuă a serviciilor, ar trebui să vă asigurați că învățați din lecțiile oricărui incident de securitate pentru a contribui, astfel, la evoluția și adaptarea ISMS pentru a satisface peisajul în schimbare în care se lucrează.

    Odată ce un incident a fost rezolvat, acesta ar trebui să fie plasat într-o stare de revizuire și învățare, unde respondentul principal pentru acel incident va discuta despre orice schimbări necesare proceselor politicilor ISMS ca urmare. Orice recomandări relevante ar trebui apoi transmise consiliului ISMS pentru discuții suplimentare. Odată ce revizuirea și învățarea au fost finalizate, s-au făcut actualizări ale politicilor, după cum este necesar, personalul relevant trebuie să fie notificat și re-instruit, dacă este necesar, și ciclul de conștientizare și educare a securității informațiilor continuă.

    A.16.1.7 Colectarea dovezilor

    Organizația trebuie să definească și să aplice controale pentru identificarea, colectarea, achiziționarea și păstrarea informațiilor, care pot fi folosite ca probe, mai ales dacă există proceduri penale sau civile care pot avea loc după incident.

    În cazul în care organizația suspectează sau știe că un incident de securitate poate duce la acțiuni legale sau disciplinare, ar trebui să efectueze cu atenție colectarea probelor, să asigure un bun lanț de custodie și să evite orice amenințare de a fi surprins de o conducere deficitară.

    Este logic să legați în mod clar gestionarea incidentelor de securitate a informațiilor de procedurile disciplinare. Toată lumea ar trebui să știe să ia măsuri de precauție, fiind în același timp clar asupra consecințelor pentru cei care nu o iau în serios.


    16.1 Semnături digitale explicate

    Semnăturile digitale sunt o aplicație diferită a algoritmilor asimetrici despre care am discutat în capitolul 15. Folosiți o pereche de chei asimetrice pentru a crea o „semnătură” pentru un mesaj prin adăugarea unei funcții de semnătură la algoritmul asimetric. Destinatarul poate verifica semnătura utilizând o funcție de verificare. Algoritmii asimetrici care acceptă funcțiile de semnare și verificare sunt algoritmi de semnătură digitală. Fiecare semnătură digitală este specifică unui mesaj sau document individual, iar dacă Alice semnează un mesaj, Bob poate avea încredere că Eve nu i-a trimis un fals.

    Figura 16-1 oferă o prezentare generală a utilizării semnăturilor digitale, care funcționează după cum urmează:

    Alice selectează un algoritm de semnătură asimetric și urmează protocolul de generare a cheilor pentru a crea o nouă pereche de chei. Ea își păstrează secretul cheii private și îi trimite cheia publică lui Bob.

    Alice compune un mesaj și creează o semnătură folosind cheia sa privată.

    Alice îi trimite mesajul și semnătura lui Bob.

    Bob folosește cheia publică a lui Alice pentru a verifica semnătura. Dacă semnătura este validă, Bob poate avea încredere că:

    Alice este cu adevărat autorul mesajului.

    Eve nu a modificat conținutul mesajului.

    Figura 16-1. Utilizarea algoritmilor de semnătură asimetrică pentru a furniza autentificarea mesajului

    Observați că Alice, expeditorul mesajului, creează perechea de chei și păstrează cheia privată, aceasta este diferită de criptarea asimetrică, unde destinatarul (Bob) este responsabil pentru crearea cheii. Semnarea digitală a unui mesaj creează o bucată separată de date, pe care Alice îi trimite lui Bob împreună cu mesajul.

    Performanța relativ lentă a algoritmilor asimetrici înseamnă că Alice nu semnează întregul mesaj pe care vrea să-l trimită, ci creează un cod hash criptografic pentru mesaj și îl semnează în schimb. Sub rezerva limitărilor securității codului hash (discutate în capitolul 13), semnarea codului hash pentru un mesaj este echivalentă cu semnarea mesajului în sine, dar este mult mai rapidă, deoarece codul hash reprezintă mai puține date de procesat cu algoritmul asimetric. Figura 16-2 ilustrează modul în care Alice creează semnătura utilizând cheia sa privată, codul hash de date și funcția de semnătură asimetrică.

    Figura 16-2. Utilizarea unui cod hash ca bază pentru crearea unei semnături digitale

    Bob verifică semnătura creându-și propriul cod hash și folosind verificarea asimetrică a semnăturii și cheia publică a lui Alice. Bob nu poate verifica semnătura dacă mesajul este modificat în vreun fel, ceea ce înseamnă că Eve nu poate altera în secret conținutul și Bob nu poate modifica un mesaj și ulterior susține că Alice a semnat versiunea modificată. Alice și Bob trebuie să utilizeze același algoritm de cod hash altfel, Bob nu va putea verifica semnăturile valide. Figura 16-3 ilustrează modul în care Bob verifică o semnătură.

    Figura 16-3. Utilizarea unui cod hash ca bază pentru verificarea unei semnături digitale

    Semnăturile digitale permit mai multor persoane să semneze un mesaj sau un document, cum ar fi un contract. Fiecare persoană semnează mesajul folosind protocolul de bază pe care l-am descris și își trimite semnătura tuturor celorlalți semnatari. Dacă Alice și Bob doresc să semneze un contract digital, protocolul de bază pe care îl utilizează este următorul:

    Alice și Bob sunt de acord asupra conținutului contractului pe care îl vor semna.

    Alice creează un cod hash pentru contract și îl semnează cu cheia privată.

    Bob creează un cod hash pentru contract și îl semnează cu cheia sa privată.

    Alice și Bob schimbă semnături digitale și chei publice.

    Alice verifică dacă Bob a folosit codul hash corect (și, prin urmare, a semnat versiunea preconizată a contractului) și verifică semnătura folosind cheia sa publică.

    Bob verifică dacă Alice a folosit codul hash corect și verifică semnătura folosind cheia sa publică.

    Dacă există vreo dispută, o terță parte (poate un judecător sau alt arbitru) poate folosi cheile pubiene ale lui Alice și Bob pentru a verifica dacă atât Alice, cât și Bob au semnat același contract. Niciuna dintre părți nu poate modifica contractul (deoarece atunci codul hash nu se va potrivi) și nici nu poate nega faptul că a semnat contractul (deoarece terțul poate verifica fiecare semnătură separată).

    16.1.1 Securitatea semnăturii digitale

    Semnăturile digitale au două obiective: trebuie să fie sigure criptografic și să ofere caracteristici de securitate echivalente unei semnături cu cerneală pe un document tipărit. Rezumăm caracteristicile de securitate ale semnăturilor digitale după cum urmează:

    Eve nu ar trebui să poată falsifica semnătura digitală a lui Alice. Eve nu poate crea o semnătură falsă decât dacă știe cheia privată a lui Alice, deoarece în aproape toate aspectele criptografiei, semnăturile digitale se bazează pe protecția și gestionarea atentă a cheilor. Dacă Eva ar putea falsifica semnătura lui Alice, Eve ar putea face să pară că Alice a semnat orice document.

    Eve nu ar trebui să poată refolosi una dintre semnăturile digitale ale lui Alice. Eve poate prelua semnătura lui Alice dintr-un document și o poate asocia cu altul dacă ambele documente produc același cod hash de date. Consultați Capitolul 13 pentru detalii despre motivul pentru care acest lucru nu este un lucru simplu de realizat.

    Eve nu ar trebui să poată modifica un document semnat. Dacă Eve modifică conținutul unui document, atunci semnătura lui Alice nu va mai fi valabilă, deoarece documentul modificat va produce un cod de hash de date diferit de cel semnat de Alice. Eve ar putea modifica un document cu succes dacă ar rezulta același cod hash de date ca originalul (care este, de fapt, același lucru cu reutilizarea semnăturii lui Alice).

    Alice nu ar trebui să poată nega faptul că a semnat un document. Alice nu poate semna un document și apoi susține că nu, pentru că presupunem că este singura persoană care își știe cheia secretă. Dacă suspectează că cheia ei a fost compromisă, atunci trebuie să creeze o nouă pereche de chei.

    Din aceste caracteristici, puteți vedea că semnăturile digitale oferă un analog rezonabil unei semnături fizice. De asemenea, puteți vedea că întreaga securitate a semnăturilor digitale depinde de următoarele ipoteze:

    Eve nu este capabilă să ghicească sau să obțină altfel cheia secretă a lui Alice.

    Eve nu poate găsi un document care să aibă ca rezultat o anumită valoare hash a datelor.

    Știm că aceste ipoteze sunt optimiste. Eve poate găsi cheia secretă a lui Alice testând fiecare valoare posibilă și găsește un document care are ca rezultat un anumit cod hash dacă creează și testează suficiente variații. În capitolele 13 și 14, am descoperit că Eva poate face aceste lucruri, dar că o pot lua foarte mult timp pentru a realiza. Securitatea semnăturilor digitale, la fel ca orice alt aspect al criptografiei, se bazează pe probabilități și gestionarea eficientă a cheilor. Atunci când utilizați semnături digitale, trebuie să știți că sunt susceptibile la aceleași atacuri ca și codurile hash de date și cheile asimetrice.

    Ultimul punct ridică o problemă foarte serioasă. Alice nu ar trebui să poată semna un document și apoi să susțină că nu. A te baza pe semnăturile digitale înseamnă a face o altă presupunere: Alice este responsabilă pentru toate semnăturile create cu cheia ei privată, chiar dacă Eve este capabilă să ghicească valoarea secretă.

    Problema pe care o prezintă aceasta este că Eva poate fi capabilă să ghicească cheia privată a lui Alice prin forță brută fără ca Alice să fie conștientă de faptul că cheia ei privată este compromisă. Eve putea apoi să semneze documente folosind semnătura lui Alice, dar Alice nu avea să afle că acest lucru se întâmpla până nu era prea târziu. De exemplu, dacă Eve semnează un ordin de plată digital pentru ea însăși, Alice nu va ști că lipsesc bani din contul ei până când nu va primi următorul extras bancar.

    Avem nevoie ca Alice să fie responsabilă pentru semnăturile create cu cheia ei în caz contrar, semnăturile digitale nu ar avea valoare, iar Alice ar putea pur și simplu să nege semnarea documentelor care nu sunt în favoarea ei. Pe de altă parte, deoarece este posibil să ghicim valoarea cheii Alice, riscăm să o responsabilizăm pentru semnături pe care ea nu le-a creat cu adevărat. În prezent nu există nicio soluție la această problemă, care reprezintă o barieră fundamentală în calea adoptării semnăturilor digitale.

    16.1.2 Algoritmii de semnătură digitală .NET Framework

    Cadrul .NET include doi algoritmi asimetrici care acceptă semnăturile digitale, unul este algoritmul RSA despre care am discutat în capitolul 15, acest algoritm definește funcțiile atât pentru criptarea datelor, cât și pentru semnăturile digitale.

    Al doilea algoritm este Digital Signature Algorithm (DSA), publicat ca FIPS SUA în mai 1994. DSA acceptă semnături digitale, dar nu criptarea datelor. Creat inițial pentru a oferi un algoritm standard pentru semnăturile digitale pentru proiectele federale, DSA a câștigat sprijin în proiecte comerciale treptat, dar rămâne în urma RSA în ceea ce privește adoptarea.

    Creatorii DSA și-au bazat designul, în parte, pe algoritmul ElGamal pe care l-am introdus în capitolul 15. În secțiunea 16.4 din acest capitol, adăugăm suport pentru semnături și formatarea semnăturilor la implementarea noastră ElGamal.

    Toți algoritmii asimetrici includ un protocol de generare a cheilor, similar cu cele pe care le-am discutat în capitolul 15. Dacă un algoritm acceptă atât criptarea, cât și semnăturile digitale, atunci aceleași chei pot fi folosite de funcțiile de criptare, decriptare, semnătură și verificare după protocolul de generare a cheilor are ca rezultat chei care pot fi utilizate pentru toate sarcinile criptografice asimetrice.

    16.1.3 Crearea semnăturilor digitale

    Codul hash creat din documentul care urmează să fie semnat este de obicei formatat înainte de a fi procesat de funcția de semnătură a algoritmului, ceea ce asigură faptul că perechea de chei specificată tamponează codul hash la dimensiunea maximă care poate fi semnată. Consultați Capitolul 15 pentru mai multe informații despre cum să determinați lungimea unei chei și modul în care lungimea afectează cantitatea de date pe care funcțiile algoritmului o pot procesa. Actul de formatare a unui cod hash înainte de a fi semnat protejează și semnătura digitală de anumite tipuri de atac criptografic.

    Cel mai frecvent utilizat protocol de formatare a semnăturii este PKCS # 1, pe care îl rezumăm după cum urmează:

    Creați H, codul hash criptografic pentru document. SHA-1 și MD5 sunt cei mai frecvent utilizați algoritmi de hash, a se vedea Capitolul 13 pentru detalii despre acești algoritmi de hash și suportul .NET Framework pentru aceștia.

    Concatenează ID-ul algoritmului de hash și reprezentarea hexazecimală a codului hash împreună pentru a forma valoarea DigestInfo. Fiecare algoritm de hash are un identificator unic. Tabelul 16-1 listează ID-urile hexazecimale pentru fiecare dintre algoritmii pe care îi acceptă .NET Framework.

    Creați o serie de octeți de umplere, PS valoarea fiecărui octet este 255. Numărul de octeți de creat depinde de lungimea cheii și lungimea DigestInfo. Numărul de octeți este, unde lungimile DigestInfo și cheia sunt exprimate în octeți. Lungimea PS va fi de cel puțin 8 octeți.

    Combinați următoarele pentru a forma datele formatate:

    Un octet cu valoarea 0

    Un octet cu valoarea 1

    DigestInfo, reprezentat ca octeți

    Acronimul PKCS înseamnă Public Key Cryptography Standard, care este o serie de documente publicate de RSA Security, ai cărui fondatori au dezvoltat algoritmul RSA. Formatarea PKCS # 1 pentru semnăturile digitale nu este aceeași cu padding-ul PKCS # 1 pe care l-am descris în capitolul 15.

    Fiecare standard PKCS abordează un aspect specific al criptografiei asimetrice, iar PKCS # 1 descrie modul de utilizare a algoritmului RSA pentru criptare și semnături digitale. Tehnicile de completare a datelor PKCS # 1 și tehnicile de formatare a semnăturii pe care le descriem sunt ambele conținute în documentul PKCS # 1.

    Tabelul 16-1. ID-uri hexazecimale pentru algoritmi de hash

    30 20 30 0c 06 08 2a 86 48 86 f7 0d 02 05 05 00 04 10

    30 21 30 09 06 05 2b 0e 03 02 1a 05 00 04 14

    30 31 30 0d 06 09 60 86 48 01 65 03 04 02 01 05 00 04 20

    30 41 30 0d 06 09 60 86 48 01 65 03 04 02 02 05 00 04 30

    30 51 30 0d 06 09 60 86 48 01 65 03 04 02 03 05 00 04 40

    După ce ați creat datele formatate, semnați-le folosind funcția de semnătură. În această secțiune, continuăm ilustrațiile noastre folosind protocolul RSA. Funcția de semnătură RSA este prezentată mai jos, unde s este valoarea semnăturii și m este datele formatate de semnat:

    Valorile d și n sunt parametrii cheii RSA, consultați capitolul anterior pentru detalii despre perechile de chei RSA și cum să le creați. Lungimea cheii RSA necesară pentru a crea o semnătură digitală depinde de mărimea codului hash pe care îl produce algoritmul de hash selectat. De exemplu, MD5 produce un cod hash de 128 de biți și, cu cei 18 octeți ai algoritmului ID și cei 11 octeți de date pe care formatarea PKCS # 1 le adaugă cel puțin, aveți nevoie de o cheie care să poată procesa 360 de biți de date. Prin urmare, cea mai mică lungime a cheii pe care o puteți utiliza pentru a semna un cod hash MD5 formatat PKCS # 1 este de 368 biți.

    We won't walk through the computation required to create a digital signature because the numeric values that make up a 368-bit key are simply too large to print on a page see Chapter 15 for an example of using the RSA functions with small key lengths.

    To verify a signature, take the document you have received and create a PKCS #1-formatted hash code, following the protocol we described previously. Use the RSA verification function, shown below, where m 2 is the verification result, s is the digital signature, and e and n are the RSA public key parameters:

    When you verify the signature, the value of m 2 should be the PKCS #1-formatted hash code that you created from the document you received with the signature. If someone has tampered with the document in transit, the value of the hash code that you created will be different then the output of the verification function, and you should reject the signature.

    Notice that the RSA signature and verification functions are the same as the encryption and decryption functions that we described in Chapter 15 the signature and decryption functions are identical, as are the verification and encryption functions. This relationship does not apply to all asymmetric algorithms, and we describe a very different approach when we extend our ElGamal implementation in the Section 16.4.

    The DSA algorithm specification requires that PKCS #1 formatting is always used, and all hash codes are generated using the SHA-1 hashing algorithm. The SHA-1 algorithm ID is still included as part of the PKCS #1 formatting.


    Data Encryption Algorithm

    Always Encrypted uses the AEAD_AES_256_CBC_HMAC_SHA_256 algorithm to encrypt data in the database.

    AEAD_AES_256_CBC_HMAC_SHA_256 is derived from the specification draft at https://tools.ietf.org/html/draft-mcgrew-aead-aes-cbc-hmac-sha2-05. It uses an Authenticated Encryption scheme with Associated Data, following an Encrypt-then-MAC approach. That is, the plaintext is first encrypted, and the MAC is produced based on the resulting ciphertext.

    In order to conceal patterns, AEAD_AES_256_CBC_HMAC_SHA_256 uses the Cipher Block Chaining (CBC) mode of operation, where an initial value is fed into the system named the initialization vector (IV). The full description of the CBC mode can be found at https://csrc.nist.gov/publications/nistpubs/800-38a/sp800-38a.pdf.

    AEAD_AES_256_CBC_HMAC_SHA_256 computes a ciphertext value for a given plaintext value using the following steps.

    Step 1: Generating the initialization vector (IV)

    Always Encrypted supports two variations of AEAD_AES_256_CBC_HMAC_SHA_256:

    For randomized encryption, the IV is randomly generated. As a result, each time the same plaintext is encrypted, a different ciphertext is generated, which prevents any information disclosure.

    If there's deterministic encryption, the IV isn't randomly generated, but instead it's derived from the plaintext value using the following algorithm:

    Where iv_key is derived from the CEK in the following way:

    The HMAC value truncation is performed to fit one block of data as needed for the IV. As a result, deterministic encryption always produces the same ciphertext for a given plaintext value, which enables inferring whether two plaintext values are equal by comparing their corresponding ciphertext values. This limited information disclosure allows the database system to support equality comparison on encrypted column values.

    Deterministic encryption is more effective in concealing patterns, compared to alternatives, such as using a pre-defined IV value.

    Step 2: Computing AES_256_CBC Ciphertext

    After computing the IV, the AES_256_CBC ciphertext is generated:

    Where the encryption key (enc_key) is derived from the CEK as follows.

    Step 3: Computing MAC

    Subsequently, the MAC is computed using the following algorithm:

    Step 4: Concatenation

    Finally, the encrypted value is produced by concatenating the algorithm version byte, the MAC, the IV, and the AES_256_CBC ciphertext:


    16.1: Cryptography

    N161-058 TITLE: Computer-Aided Cryptographic Algorithm Design and Exploration Workbench

    TECHNOLOGY AREA(S): Information Systems

    OBJECTIVE: Design and develop an integrated workbench and tools for computer-aided design and exploration for cryptographic algorithms.

    DESCRIPTION: Cryptography has been one of the foundational building blocks for privacy and security in the cyber environment. Researchers in the field of cryptography are continuously exploring and developing new algorithms, classes/types, and capabilities recent advancements in cryptography include fully homomorphic encryption (FHE) and attribute-based encryption. However, algorithmic exploration in cryptography remains a laborious mathematical exercise. In addition, verifying the correctness and security of a cryptographic algorithm is equally laborious, manual, and error prone. For instance, several publications in cryptography have had to be retracted due to unforeseen errors in the formalizations of security proofs.

    The complexity and brittleness of the security properties of cryptographic algorithms make it especially difficult to develop an automated generator and verifier for new algorithms. However, recent developments in academic research have demonstrated the power of automation in cryptographic design [1,2] and in verifying the security of cryptographic proofs [3]. Currently, the tools developed for these works exist as academic prototypes and may not have been developed to interoperate with other tools. Relatively immature, these tools often require significant formal programming knowledge to operate successfully, and hence are not easily accessible to mainstream cryptographers (users).

    An easy-to-use cryptographic design and verification workbench can significantly reduce the amount of effort required and the error potential associated with cryptographic design exploration and verification. Such a toolset could serve as an integrated design environment capable of performing the full process of automated cryptographic algorithm design, from algorithmic exploration to proving security properties under many different attack scenarios (e.g., chosen ciphertext and/or plaintext attacks, etc.). This cryptographic workbench should integrate various theorem provers with a mechanized verification process, build special automated exploration tools for cryptographic algorithm design, and must be able to accommodate the integration of future tools. This workbench will also serve as a platform for fostering the integration and collaboration of researchers and developers of cryptographic automation tools.

    The tools and workbench developed in this SBIR topic would lower the barrier for cryptographic algorithm design and exploration, hence accelerating the discovery of various new types of cryptographic algorithms and protocols. The workbench should allow cryptographers to explore a wider range of the design space and construction for cryptographic algorithms, far beyond what can be achieved with manual exploration, without requiring its users to be experts in formal programming. Besides reducing the design effort and potential for error, computer-aided cryptography may allow for the discovery of a large number of secure algorithms of certain types and properties. The availability of a large collection of similarly secure algorithms would allow for further filtering of algorithms according to properties orthogonal to security, such as computational requirements, implementation complexity, and power requirements, depending on the particular needs of an application.

    PHASE I: Identify an initial set of tools suitable for computer-aided cryptographic design, design any missing elements in the tool chain, and devise methods which allow tools to interoperate. Design an extensible workbench to integrate the tools into an environment capable of performing the full process of automated cryptographic algorithm design. Develop an initial proof-of concept prototype for the workbench.

    PHASE II: Based upon the Phase I effort, develop and enhance the integrated workbench and tools for computer-aided design and exploration for cryptographic algorithms prototype into a fully functioning workbench.

    Demonstrate and evaluate the efficacy of the tool for exploring selected types of cryptographic algorithms and corresponding design goals, for example by showing that the workbench can successfully be used to design and develop a new cryptographic algorithm or be used to verify the security properties of an existing cryptographic algorithm.

    PHASE III DUAL USE APPLICATIONS: Upon successful completion of Phase II, the performer will provide support in transitioning the cryptographic workbench to the Navy for its intended use. The performer will develop a plan for integrating the product into the Navy s information system security framework. Usually as a result of the requirements of the operating environment, non-standard cryptographic algorithms have been employed in a variety of commercial devices and applications, e.g., RFID, embedded sensors, business and financial transactions, data warehousing, etc. Such custom cryptographic algorithms are often sub-par in the quality of security they provide. As such, the ability to automatically design, develop, and verify a secure (high-quality) cryptographic algorithm which fits particular design requirements will have strong commercial demand, and will improve the security of commercial devices and applications. The availability of the cryptographic workbench will also accelerate the discovery of various novel cryptographic capabilities such as homomorphic encryption and attribute-based-encryption at research institutes and universities around the world.

    1. Joseph A. Akinyele, Matthew Green, and Susan Hohenberger. Using smt solvers to automate design tasks for encryption and signature schemes. In Proceedings of the 2013 ACM Conference on Computer and Communications Security, CCS '13, pages 399-410, New Yo

    2. Joseph A. Akinyele, Matthew Green, Susan Hohenberger, and Matthew W. Pagano. Machine- generated algorithms, proofs and software for the batch verification of digital signature schemes. In Proceedings of the 2012 ACM Conference on Computer and Communications Security, CCS '12, pages 474-487, New York, NY, USA, 2012. ACM.

    3. Gilles Barthe, Benjamin Gregoire, Sylvain Heraud, and SantiagoZanella Beguelin. Computer-aided security proofs for the working cryptographer. In Phillip Rogaway, editor, Advances in Cryptology CRYPTO 2011, volume 6841 of Lecture Notes in Computer Scien

    4. Daniel Bleichenbacher. Chosen ciphertext attacks against protocols based on the rsa encryption standard pkcs #1. In CRYPTO, pages 1-12, 1998.

    5. Johannes Blomer and Gennadij Liske. Direct chosen-ciphertext secure attribute-based key encapsulations without random oracles. Cryptology ePrint Archive, Report 2013/646, 2013. http://eprint.iacr.org/.

    KEYWORDS: cryptography algorithmic design automation security proofs cyber encryption


    ISO 27001 Annex : A.10 Cryptography

    ISO 27001 Annex : A.10 Cryptography in this article explaining Cryptographic controls, Policy on the Utilization of Cryptographic Controls & Key Management.

    A.10.1 Cryptographic controls

    Its objective is to ensure the proper and efficient use of cryptography to protect the confidentiality, authenticity and/or integrity of the information.

    A.10.1.1 Policy on the Utilization of Cryptographic Controls

    Control- A policy on the use of cryptographic controls to secure information should be developed and enforced.

    Implementation Guidance- The following should be considered when designing a cryptographic policy:

    1. A management guide to the use of cryptographic controls across the organization, including the general principles by which business information should be protected
    2. Based on the risk assessment, the necessary level of security should be calculated taking into account the type, strength, and quality of the encryption algorithm necessary
    3. Usage of encryption to secure information transported by mobile or portable media devices or through communication lines
    4. Approach to key management, including strategies for coping with the security of cryptographic keys and the recovery of encrypted information in the event of missing, corrupted or damaged keys
    5. Roles and responsibilities, e.g. for who is responsible for whom
      Implementing policy
      key management including quality generation
    6. The standards to be followed in the organization for successful implementation (which solution for which business processes are used)
    7. The effect of encrypted information on controls that rely on content validation (e.g. malware detection).

    When enforcing the cryptographic policy of the organization, consideration should be given to regulations and national restrictions that may relate to the use of cryptographic techniques in different parts of the world and to issues relating to the trans-border flow of encrypted information.

    Specific information security goals can be accomplished by cryptographic control, e.g.

    • Confidentiality: use of information encryption to secure confidential or vital information, either stored or transmitted
    • Integrity/authenticity: use digital signatures or message authentication codes to check the authenticity or integrity of confidential or vital information stored or transmitted
    • Non-repudiation: use of cryptographic techniques to provide evidence of an occurrence or non- occurrence
    • Authentication: Use of cryptographic techniques to authentically request access to or transactions with users, entities, and resources of systems.

    Cryptography is the ultimate form of non-violent direct action
    -Julian Assange

    Other Information- Making a judgment as to whether a cryptographic solution is suitable can be seen as part of the broader risk assessment and control selection process. This assessment would then be used to decide if cryptographic control is sufficient, what form of control should be used, and for what function and business processes.

    A policy on the use of cryptographic controls is important to optimize the benefits and reduce the risks associated with the use of cryptographic techniques and to prevent inappropriate or incorrect use. Expert consultation should be taken into consideration in selecting suitable cryptographic controls to meet the objectives of the information security policy.

    The Organization aims to keep its information within the triads of the CIA. They also ensure the proper and efficient use of cryptography to protect the confidentiality, authenticity and/or integrity of the information and information processing facilities. Annex 10discusses the cryptographic controls and policies for those controls that an organization should maintain and implement over their entire life cycle. This famous certification of Lead Auditor and Lead Implementer covers all annexes to information security. Infosavvy , a Mumbai-based institute, offers certifications and training for multiple-domain-like management of information security, cybersecurity, and many others, including the IRCA CQI ISO27001:2013 Lead Auditor (LA) and ISO 27001 Lead Implementer (LI) (TÜV SÜD Certification).Acest certification covers various audits that an organization should perform to keep it away from the intended destructor. Infosavvywill help you understand and define the full scope of your organization’s cybersecurity posture which is essential to protect your company’s business against breaches. Avem trainers who are well-qualified and experienced with adequate training and know-how to ensure the effective management of information security. This will help the applicant gain the requisite skills to conduct the ISMS audit using commonly accepted auditing concepts, procedures, and techniques.

    A.10.1.2 Key Management

    Control- A policy on the use, security, and lifetime of cryptographic keys should be created and enforced over their entire life cycle.

    Implementation Guidance- policy should provide criteria for handling cryptographic keys over their entire life cycle, including generating, processing, archiving, retrieving, transmitting, removing, and destroying keys.

    Cryptographic algorithms, primary lengths, and implementation methods should be chosen in line with best practice. Appropriate key management includes safe processes for generating, processing, archiving, retrieving, transmitting, removing and destroying cryptographic keys.
    All cryptographic keys should be safe against change and loss. In addition, confidential and private keys require protection against unauthorized use as well as disclosure. The equipment used for generating, processing, and archiving keys should be physically secured.

    A key management framework should be based on an agreed set of principles, protocols, and appropriate methods for:

    1. Generate keys for various cryptographic schemes and applications
    2. Issuing and receiving a public key certificate
    3. Distribute key to intended entities with the activation of the keys on receiving
    4. Storing keys, including how approved users can access them
    5. Adjust or upgrade keys, including guidelines about when keys should be modified and how they should be modified.
    6. Addressing missing keys
    7. Revoking keys, and how keys can be deleted or disabled, e.g. when keys have been compromised or when a user leaves an organizare (in such case keys should also be archived)
    8. Recovery of keys that are missing or corrupted
    9. Backup or archiving keys
    10. Destroying keys
    11. Logging and auditing of key management activities.

    In order to reduce the likelihood of improper use, key activation and deactivation dates should be defined in such a way that keys can only be used for the time period defined in the associated key management policy.

    The authenticity of public keys should also be considered in addition to managing secret and personal keys safely. This authentication process may be carried out using public key certificates, which are usually provided by a Certification Authority, which should be a recognized organization with adequate controls and procedures in place to provide the necessary degree of confidence.

    The nature of service level agreements or contracts with external suppliers of cryptographic services, e.g. with the Certification Authority, will cover issues of accountability, reliability of services, and response times for the delivery of services.

    Other information- The control of cryptographic keys is important for the successful use of cryptographic techniques. Further information on key management is provided in ISO / IEC 11770.


    Saturday, November 28, 2015

    16.1 due Nov 30

    1. I understood part of how elliptical curves work, but once it moved to explaining the law of addition and how to find other points on the curve because it seems that elliptical curves are always symmetrical. Or that the law of addition assumes that they are symmetrical across the x axis.


    2. I'm really interested to see how elliptical curves work in cryptography. I wonder how numbers grouped and organized in this way have a cryptographic application and how this helps with issues of security.


    The Cryptographic Hash Function

    We use a cryptographic hash function to construct an initial random number state from a pair of integers, or from a parent random number state for a child particle. Block encryption functions are perfectly good for this, themselves providing random numbers of good quality that are uncorrelated with linear congruential recurrence relations. The encryption key provides a means for the user to easily create a different random instance of the problem run, affecting the starting values for all of the particles in the application. The current crop of block encryption functions operating on 64 bits match our choice of a 64-bit unsigned integer for random number state quite nicely.

    The fact that an encryption algorithm is reversible is not essential, but does assure that the hash function provides a random, one-to-one, shuffle of the random number states produced by the generator. This property is guaranteed in the case of the 64-bit linear congruential generator, where the random number state is a full 64-bit value. Output collisions can occur in the other generators that do not fully use all possible 64-bit values, but the probability of such collisions is low.

    Any block encryption algorithm of sufficient quality will suffice as our random hash function for random number state generation. We have chosen the encryption algorithm IDEA [6] [7] because of its efficient portable implementation on general purpose computers. The IDEA encryption algorithm is comprised of 8 rounds of a Feistel network, mixing the operations of three 16-bit wide algebraic groups to scramble the result. We have found that two rounds of IDEA produces a suitably random output from its input, and that four rounds would offer an adequate safety margin against correlations being detectable between parent and child random number states produced by the hash function. The full 8 rounds of IDEA are available for the truly paranoid Monte Carlo practitioner. The user can adjust the number of rounds of IDEA used, in response to performance needs, in the event that the costs of random number state generation become significant. The number of rounds of IDEA used can be adjusted from 1, to the full 8 rounds, with 4 rounds being the default.

    The IDEA encryption algorithm employs a key of 128 bits. A default key is provided. This key was randomly chosen using dice. The subroutine that sets the IDEA key in our library takes two 32-bit integers provided as arguments by the user and constructs the 128-bit IDEA key by exclusive or'ing this 64 bits with the upper and lower 64 bits of the default key. It is very difficult, if not impossible, for the user to generate a bad choice for the encryption key. The default encryption key is the same as the one generated if the user passes zeros to RngSetKey .

    The functions to control the properties of the hash function are: void RngSetKey( Rng_UInt32 k1, Rng_UInt32 k2 )

    void RngSetKeyRounds( int n ) Here, Rng_UInt32 is a 32-bit unsigned integer and is defined in the header file rng.h . The RngSetKey() and RngSetKeyRounds() functions are used for all of the random number generators provided. The RngSetKeyRounds() function sets the number of rounds of IDEA used in the hash function, silently enforcing the range 1 through 8.

    RngSetKeyRounds() and RngSetKey() may be called in any order, but must, if used, be called before the other RNG routines are called. RngSetKeyRounds() does not have to be called, in which case the default value for the number of rounds is 4. The full IDEA encryption algorithm uses 8 rounds, but our tests have shown that changing a single bit avalanches with good randomness to all of the output bits in just two rounds. Since this was an empirical test, we added two more rounds to the default for a safety margin. Setting the number of rounds higher than 4 will slow down the process of seed generation, but should result in less correlation between the input and output. Setting the number of rounds to 1 produces clear evidence of correlations, but may be sufficiently random for applications where the speed of seed generation is paramount. Generally, the code developer should not expose control of the number of rounds to the user, who might easily set it too low without carefully checking statistical properties of application results.


    Priveste filmarea: Exercise - Q. No. 1 to 12 complete. RBSE Class 10. part-1 (August 2022).