Niederreiter kryptosystem
Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den
version , der blev gennemgået den 16. marts 2019; checks kræver
3 redigeringer .
Niederreiter -kryptosystemet er et offentlig -nøgle -kryptosystem baseret på teorien om algebraisk kodning , udviklet i 1986 af Harald Niederreiter [1] . I modsætning til McEliece-kryptosystemet bruger Niederreiter -kryptosystemet en kodekontrolmatrix . Niederreiter-kryptosystemet tillader oprettelse af digitale signaturer og er en kandidat til post-kvantekryptografi , da det er modstandsdygtigt over for angreb ved hjælp af Shor-algoritmen .
Algoritmen, der bruges i Niederreiter-kryptosystemet, er baseret på vanskeligheden ved at afkode komplette lineære koder .
På trods af at dette kryptosystem er blevet hacket, forbliver nogle af dets modifikationer krypto -resistente [2]
Operationsalgoritme
Nøglegenerering
- Alice vælger en fejlkorrigerende kode frem for Galois-feltet . Denne kode skal have en effektiv afkodningsalgoritme [3] .
![(n,k)](https://wikimedia.org/api/rest_v1/media/math/render/svg/47f4659640cd0bb3ab77e4d61a81328ca4dd8a85)
![GF(q)](https://wikimedia.org/api/rest_v1/media/math/render/svg/7632e02672649089c63c998757aa3afc0782a0f3)
![t](https://wikimedia.org/api/rest_v1/media/math/render/svg/65658b7b223af9e1acc877d848888ecdb4466560)
- Alice genererer en kodekontrolmatrix .
![(nk)\ gange n](https://wikimedia.org/api/rest_v1/media/math/render/svg/81d0ce9df55fbd0d24d52ac92f007cb08147ab87)
![H](https://wikimedia.org/api/rest_v1/media/math/render/svg/75a9edddcca2f782014371f75dca39d7e13a9c1b)
![C](https://wikimedia.org/api/rest_v1/media/math/render/svg/4fc55753007cd3c18576f7933f6f089196732029)
- Alice vælger en tilfældig ikke-degenereret matrix frem for feltet og en eller anden permutationsmatrix [3] .
![S](https://wikimedia.org/api/rest_v1/media/math/render/svg/4611d85173cd3b508e67077d4a1252c9c05abca2)
![GF(q)](https://wikimedia.org/api/rest_v1/media/math/render/svg/7632e02672649089c63c998757aa3afc0782a0f3)
![n\ gange n](https://wikimedia.org/api/rest_v1/media/math/render/svg/59d2b4cb72e304526cf5b5887147729ea259da78)
![P](https://wikimedia.org/api/rest_v1/media/math/render/svg/b4dc73bf40314945ff376bd363916a738548d40a)
- Alice beregner matrixen
![(nk)\ gange n](https://wikimedia.org/api/rest_v1/media/math/render/svg/81d0ce9df55fbd0d24d52ac92f007cb08147ab87)
![H_{pub}=SHP](https://wikimedia.org/api/rest_v1/media/math/render/svg/1ef8b82182fd950c50244e4269d68c42bc4e4f8d)
- Alices offentlige nøgle er . Den private nøgle er sættet .
![(H_{pub},t)](https://wikimedia.org/api/rest_v1/media/math/render/svg/531999fec39f24d3c424af05f17f81b2251a2458)
![{\displaystyle (S^{-1},H,P^{-1})}](https://wikimedia.org/api/rest_v1/media/math/render/svg/d2f9fc87aa03e78c65603181302203b3bdfbb4fb)
Beskedkryptering
I dette tilfælde er meddelelser alle vektorer med koordinater fra feltet med en vægt, der ikke overstiger . Meddelelser er således alle mulige fejl, som den valgte kode er i stand til at rette [2] .
Antag, at Bob vil sende en besked til Alice, hvis offentlige nøgle er .
![n-](https://wikimedia.org/api/rest_v1/media/math/render/svg/2d64b24ac9a5c67ef8e3ae80f109ce6e325d8464)
![GF(q)](https://wikimedia.org/api/rest_v1/media/math/render/svg/7632e02672649089c63c998757aa3afc0782a0f3)
![t](https://wikimedia.org/api/rest_v1/media/math/render/svg/65658b7b223af9e1acc877d848888ecdb4466560)
![(H_{pub},t)](https://wikimedia.org/api/rest_v1/media/math/render/svg/531999fec39f24d3c424af05f17f81b2251a2458)
- Bob præsenterer sit budskab som en binær sekvens af længde , med en vægt, der ikke overstiger .
![m](https://wikimedia.org/api/rest_v1/media/math/render/svg/0a07d98bb302f3856cbabc47b2b9016692e3f7bc)
![n](https://wikimedia.org/api/rest_v1/media/math/render/svg/a601995d55609f2d9f5e233e36fbe9ea26011b3b)
![t](https://wikimedia.org/api/rest_v1/media/math/render/svg/65658b7b223af9e1acc877d848888ecdb4466560)
- Bob beregner chifferteksten ved hjælp af formlen: . Således er chifferteksten i Niederreiters kryptosystem det støjende krypterede fejlvektorsyndrom [ 2] .
![c=mH_{pub}^{T}](https://wikimedia.org/api/rest_v1/media/math/render/svg/fa3994121107112f2bb24a0c06e33992118053b4)
Meddelelsesafkodning
Efter at have modtaget beskeden gør Alice følgende:
![c](https://wikimedia.org/api/rest_v1/media/math/render/svg/86a67b81c2de995bd608d5b2df50cd8cd7d92455)
- Alice beregner . Bemærk, at da permutationsmatricen er , falder vægten sammen med vægten og ikke overstiger , og derfor kan afkodningsalgoritmen for finde fejlvektoren svarende til syndromet [3] .
![s=c{(S^{T})}^{-1}=mP^{T}H^{T}S^{T}(S^{T})^{-1}=(mP^{ T})H^{T}={\hat {m}}H^{T}](https://wikimedia.org/api/rest_v1/media/math/render/svg/79f6d45fcbcfcf98d3efb3fa9f0ab9e94a0b8ffc)
![P](https://wikimedia.org/api/rest_v1/media/math/render/svg/b4dc73bf40314945ff376bd363916a738548d40a)
![{\hat {m}}=(mP^{T})](https://wikimedia.org/api/rest_v1/media/math/render/svg/4af614dbe8f8070add2f6423b748f7a51be9b049)
![m](https://wikimedia.org/api/rest_v1/media/math/render/svg/0a07d98bb302f3856cbabc47b2b9016692e3f7bc)
![t](https://wikimedia.org/api/rest_v1/media/math/render/svg/65658b7b223af9e1acc877d848888ecdb4466560)
![C](https://wikimedia.org/api/rest_v1/media/math/render/svg/4fc55753007cd3c18576f7933f6f089196732029)
![s](https://wikimedia.org/api/rest_v1/media/math/render/svg/01d131dfd7673938b947072a13a9744fe997e632)
- Alice bruger en hurtig afkodningsalgoritme til at finde koden [3] .
![C](https://wikimedia.org/api/rest_v1/media/math/render/svg/4fc55753007cd3c18576f7933f6f089196732029)
![{\hat {m}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/77fc4c073191a04fba1078804a3505285a84fdb7)
- Alice beregner beskeden .
![{\hat {m}}P^{-1}=mPP^{-1}=m](https://wikimedia.org/api/rest_v1/media/math/render/svg/c140018b19cc3da72e24dad2d79a322d0a5b277d)
Det originale kryptosystem og dets modifikationer
I det originale kryptosystem foreslog Niederreiter at bruge Reed-Solomon-koder og brugte ikke en permutationsmatrix . Et sådant system viste sig dog at være ustabilt og blev hacket af Sidelnikov og Shestakov i 1992 [4] . Forfatterne har vist, at det er muligt at gætte strukturen af den private nøgle fra den offentlige nøgle og vælge sådanne matricer og , at . Derefter blev det foreslået at bruge en permutationsmatrix for at øge systemets kryptografiske styrke . Derudover dukkede forskellige ændringer af systemet op, for eksempel:
![P](https://wikimedia.org/api/rest_v1/media/math/render/svg/b4dc73bf40314945ff376bd363916a738548d40a)
![{\hat {H}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/6bb06de5217295d7fbdbf68fb9c5309a513fc99e)
![{\hat {S}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/84040a3e50cb11792bdb6cfaac286b46476e3447)
![H_{pub}={\hat {S}}{\hat {H}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/01a0573f84195253f83f86454e15a4ee88b040c1)
![P](https://wikimedia.org/api/rest_v1/media/math/render/svg/b4dc73bf40314945ff376bd363916a738548d40a)
- ved at bruge forskellige andre metrikker end klassisk Hamming , for eksempel rang [5] : et eksempel på dette er det modificerede GPT-system [3]
- ved hjælp af koder med specifikke egenskaber. Så modifikationer baseret på Goppa-koder er stadig krypto-resistente [2] .
Fordele og ulemper ved systemet
Fordele
- I modsætning til McEliece bruger Niederreiter-kryptosystemet ikke tilfældige parametre. Resultatet af kryptering af den samme tekst vil således være det samme. Dette faktum gør det muligt at bruge Niederreiter-systemet, og ikke McEliece, til at skabe en digital signatur .
- Størrelsen af den offentlige nøgle i Niederreiters kryptosystem er flere gange mindre end i McEliece [6] .
![{\displaystyle {\frac {n}{nk}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/278b36eccaaa1d01371fdac6da9f3da7b1c14755)
- Sammenlignet med RSA er krypteringshastigheden omkring 50 gange hurtigere, og dekrypteringshastigheden er 100 gange hurtigere [6] .
Ulemper
- For at kryptere en vilkårlig besked, en algoritme til oversættelse til en -ær vektor med en vægt på ikke mere end .
![q](https://wikimedia.org/api/rest_v1/media/math/render/svg/06809d64fa7c817ffc7e323f85997f783dbdf71d)
![n](https://wikimedia.org/api/rest_v1/media/math/render/svg/a601995d55609f2d9f5e233e36fbe9ea26011b3b)
![t](https://wikimedia.org/api/rest_v1/media/math/render/svg/65658b7b223af9e1acc877d848888ecdb4466560)
- Nøglestørrelsen er større end i klassiske offentlige nøglekryptosystemer ( RSA , ElGamal Scheme , GOST R 34.10-2012 ).
- Størrelsen af chifferteksten er meget større end størrelsen af den krypterede meddelelse (hvis meddelelsen af størrelse er oversat til en vektor af længde og krypteret, opnås en chiffertekst af størrelse , som er mindst 2 gange større end ).
![t](https://wikimedia.org/api/rest_v1/media/math/render/svg/65658b7b223af9e1acc877d848888ecdb4466560)
![n](https://wikimedia.org/api/rest_v1/media/math/render/svg/a601995d55609f2d9f5e233e36fbe9ea26011b3b)
![nk](https://wikimedia.org/api/rest_v1/media/math/render/svg/b98e1d6a69bccd09a4b9b69bdf03a08c1706c8c1)
![t](https://wikimedia.org/api/rest_v1/media/math/render/svg/65658b7b223af9e1acc877d848888ecdb4466560)
Tabellen nedenfor viser forskellige parametre for McEliece, Niederreiter og RSA kryptosystemer, der tydeligt viser deres fordele og ulemper [6] .
|
McEliece
n=1024, k=524, t=101
binær kode
|
Niederreiter kryptosystem
n=1024, k=524, t=101
binær kode
|
RSA
1024-bit moduler
e=17
|
Offentlig nøglestørrelse
i bytes
|
67072
|
32750
|
256
|
Antal bits
brugbar information
|
512
|
276
|
1024
|
Antal binære operationer
til kryptering
|
514
|
halvtreds
|
2402
|
Antal binære operationer
til dekryptering
|
5140
|
7863
|
738112
|
Ækvivalens af kryptografisk sikkerhed for Niederreiter-systemet og McEliece-systemet
Som vist i det originale papir om Sidelnikov-systemet [7] kan angreb på Niederreiter-systemet polynomielt reduceres til at angribe McEliece-systemet og omvendt.
Lad syndromet være kendt . Så kan vi beregne en vektor med nogle sådan, at . Vektoren vil blive behandlet som en chiffertekst i McEliece-systemet. Hvis der findes et kryptografisk angreb med kompleksitet for McEliece-systemet, det vil sige en algoritme til beregning af vektoren , som er hemmelig information i dette system, er kendt, så kan vektoren , som er en hemmelighed for Niederreiter-systemet, repræsenteres som . Således er kompleksiteten af definitionen den samme som kompleksiteten af definitionen af .
![c=eD](https://wikimedia.org/api/rest_v1/media/math/render/svg/f3525787dddd4160c7875a3c525bbf1da83d9f53)
![b=aE+e](https://wikimedia.org/api/rest_v1/media/math/render/svg/24b8727c7b1ff4a8c99895f72fb481fbacf6b604)
![-en](https://wikimedia.org/api/rest_v1/media/math/render/svg/ffd2487510aa438433a2579450ab2b3d557e5edc)
![c=bD](https://wikimedia.org/api/rest_v1/media/math/render/svg/4004cac8f416094a072bf2b72def9b283f3608af)
![b](https://wikimedia.org/api/rest_v1/media/math/render/svg/f11423fbb2e967f986e36804a8ae4271734917c3)
![T](https://wikimedia.org/api/rest_v1/media/math/render/svg/ec7200acd984a1d3a3d7dc455e262fbe54f7f6e0)
![-en](https://wikimedia.org/api/rest_v1/media/math/render/svg/ffd2487510aa438433a2579450ab2b3d557e5edc)
![e](https://wikimedia.org/api/rest_v1/media/math/render/svg/cd253103f0876afc68ebead27a5aa9867d927467)
![e=aE+b](https://wikimedia.org/api/rest_v1/media/math/render/svg/ba727885545d38b88907324bb29395c07fdb2ca3)
![e](https://wikimedia.org/api/rest_v1/media/math/render/svg/cd253103f0876afc68ebead27a5aa9867d927467)
![-en](https://wikimedia.org/api/rest_v1/media/math/render/svg/ffd2487510aa438433a2579450ab2b3d557e5edc)
Hvis et kryptoangreb med kompleksitet for Niederreiter-systemet er kendt, så er det muligt, ved at bruge vektoren som chiffertekst , at beregne vektorerne og .
![T](https://wikimedia.org/api/rest_v1/media/math/render/svg/ec7200acd984a1d3a3d7dc455e262fbe54f7f6e0)
![(aE+e)D^{T}=eD^{T}](https://wikimedia.org/api/rest_v1/media/math/render/svg/4f2cd4623fa46f55175d624a2c54abb1443b7e00)
![e](https://wikimedia.org/api/rest_v1/media/math/render/svg/cd253103f0876afc68ebead27a5aa9867d927467)
![-en](https://wikimedia.org/api/rest_v1/media/math/render/svg/ffd2487510aa438433a2579450ab2b3d557e5edc)
Opbygning af en digital signatur
I 2001 viste Nicolas Courtois, Matthew Finiaz og Nicolas Sandrier [8] , at Niederreiter-kryptosystemet kan bruges til at skabe en elektronisk signatur .
Meddelelsessignatur
Lad være den offentlige nøgle til Niederreiter-kryptosystemet ved hjælp af en -lineær kode. For at underskrive et dokument skal du:
![H_{pub}](https://wikimedia.org/api/rest_v1/media/math/render/svg/644dfff5ec6e4068cca7260d1048611bcc4b294d)
![(n,k,d)](https://wikimedia.org/api/rest_v1/media/math/render/svg/229f720765328aebd8e83ddb7ee2eb7c45006e63)
![D](https://wikimedia.org/api/rest_v1/media/math/render/svg/f34a0c600395e5d4345287e21fb26efd386990e6)
- Vælg en hash-funktion , der giver tegn ved udgangen. Resultatet af en given hashfunktion kan således repræsenteres som et syndrom og forsøges afkodet;
![h()](https://wikimedia.org/api/rest_v1/media/math/render/svg/992946ab39fbae54bdf55bfa775e9a19d97205e2)
![nk](https://wikimedia.org/api/rest_v1/media/math/render/svg/b98e1d6a69bccd09a4b9b69bdf03a08c1706c8c1)
- Beregn hash ;
![s=h(D)](https://wikimedia.org/api/rest_v1/media/math/render/svg/c4796bfd04439cd8c9b22d75cf37efc92f58db88)
- For hver beregn ;
![i=0,1,2,...](https://wikimedia.org/api/rest_v1/media/math/render/svg/a3c9f5498bc4d20b8b01b0656c3d5ad97872b4da)
![{\displaystyle s_{i}=h(s|i)}](https://wikimedia.org/api/rest_v1/media/math/render/svg/d8041786363919e90ea47df9628ba7f74b2b2b30)
- Find det mindste tal , således at syndromet vil være muligt at afkode. Lad være resultatet af afkodning af syndromet ;
![jeg er med}](https://wikimedia.org/api/rest_v1/media/math/render/svg/431b3deeaba01a00a4a3924cbcca992c54d09471)
![s_{i_{min}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/e94aa89ef7ada117d2078489c1f55d9904e564f0)
![z](https://wikimedia.org/api/rest_v1/media/math/render/svg/bf368e72c009decd9b6686ee84a375632e11de98)
![s_{i_{min}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/e94aa89ef7ada117d2078489c1f55d9904e564f0)
- Dokumentets underskrift er et par .
![D](https://wikimedia.org/api/rest_v1/media/math/render/svg/f34a0c600395e5d4345287e21fb26efd386990e6)
![(z,i_{min})](https://wikimedia.org/api/rest_v1/media/math/render/svg/627dd8b9714b3a0db87abd3ef7d071c76f5f2389)
Signaturbekræftelse
- Beregn ;
![s_{1}=zH_{pub}^{T}](https://wikimedia.org/api/rest_v1/media/math/render/svg/5887c11797fa95dd5cda9898ff21c3c1736f2ee6)
- Beregn ;
![s_{2}=h(h(D)|i_{min})](https://wikimedia.org/api/rest_v1/media/math/render/svg/792f47bfd5a0daef4655eb69a8e6b868ee52f94e)
- Sammenlign og : hvis de matcher, er signaturen korrekt.
![s_{1}](https://wikimedia.org/api/rest_v1/media/math/render/svg/eb8baad278d51283e0ef3c99898d583cf2c8a8fd)
![s_{2}](https://wikimedia.org/api/rest_v1/media/math/render/svg/d4b9a7acc0ae8f54da4b7f4eef2c777d44faecd4)
Et eksempel på hvordan systemet fungerer
Lad Reed-Solomon-koden over Galois-feltet konstrueret modulo det irreducible polynomium vælges til kodning med det genererende polynomium![(7,3)](https://wikimedia.org/api/rest_v1/media/math/render/svg/e4bb89b1f9834b5c423914ef68176df1642b7eb6)
![x^{3}+x+1](https://wikimedia.org/api/rest_v1/media/math/render/svg/257a6ad55e616cb50142b1801f80eb9395c93a03)
Så er den genererende matrix for koden:
Kodekontrolmatrix:
Bemærk, at afstanden til denne kode , det vil sige antallet af korrigerbare fejl .
![d=n-k+1=5](https://wikimedia.org/api/rest_v1/media/math/render/svg/fdbf7e48531d7886c2b00a3dd8444be584c086eb)
![t=(d-1)/2=2](https://wikimedia.org/api/rest_v1/media/math/render/svg/0272bfa7906ed5a23c4674bca32620b4ce311fa5)
Nøglegenerering
Lad matrixen vælges
. Så dens omvendte matrix
![{\displaystyle S={\begin{pmatrix}4&1&3&5\\7&1&5&2\\2&6&5&4\\1&7&2&1\end{pmatrix}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/d53dad2983c3c6c0548b51ae95c014f789acbdc0)
Lad en permutationsmatrix vælges
I dette tilfælde vil systemets offentlige nøgle være matrixen:
Kryptering
Lad den valgte meddelelse blive repræsenteret som en vægtvektor
på
2.![{\displaystyle m={\begin{pmatrix}0&2&0&0&0&5&0\end{pmatrix}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/5d7690dd42b7d8abbdf5d65945eb846cd18064d8)
Krypteret besked:
Dechifrering
Accepteret vektor
Til det beregner vi det afkodbare syndrom
Ved at bruge Reed-Solomon afkodningsalgoritmen afkoder vi .
![s](https://wikimedia.org/api/rest_v1/media/math/render/svg/01d131dfd7673938b947072a13a9744fe997e632)
Få en vektor
Derefter beregner vi den oprindelige vektor
Se også
Noter
- ↑ Niederreiter H. Kryptosystemer og algebraisk kodningsteori (engelsk) // Problems of Control and Information Theory - 1986. - Vol. 15, Iss. 2. - S. 159-166.
- ↑ 1 2 3 4 Samokhina M. A. Ændringer af Niederreiter-kryptosystemet, deres sikkerhed og praktiske anvendelser // Proceedings of the Moscow Institute of Physics and Technology - M. : 2009. - V. 1, no. 2. - S. 121-127. — ISSN 2072-6759
- ↑ 1 2 3 4 5 Khan E. , Gabidulin E. , Honary B. , Ahmed H. Modificeret Niederreiter-type af GPT-kryptosystem baseret på reducerbare rangkoder // Des . Koder Cryptogr. — Springer US , Springer Science+Business Media , 2014. — Vol. 70, Iss. 1. - S. 231-239. — ISSN 0925-1022 ; 1573-7586 - doi:10.1007/S10623-012-9757-4
- ↑ Sidelnikov V. M. , Shestakov S. O. Om et krypteringssystem baseret på generaliserede Reed–Solomon-koder // Diskret matematik. matematik. - 1992. - Bind 4, udgave. 3. - S. 57-63. — ISSN 2305-3143 ; 0234-0860
- ↑ Gabidulin E. M. Teori om koder med maksimal rangdistance // Probl. overførsel af information - 1985. - T. 21, no. 1. - S. 3-16.
- ↑ 1 2 3 Canteaut A. , Sendrier N. Cryptanalysis of the Original McEliece Cryptosystem // Advances in Cryptology - ASIACRYPT 1998 : International Conference on the Theory and Applications of Cryptology and Information Security, Beijing, Kina, 18.- 22. oktober 1998, Proceedings - Berlin : Springer Berlin Heidelberg , 1998. - S. 187-199. - ( Lecture Notes in Computer Science ; Vol. 1514) - ISBN 978-3-540-65109-3 - ISSN 0302-9743 ; 1611-3349 - doi:10.1007/3-540-49649-1_16
- ↑ Sidelnikov V. M. Åben kryptering baseret på binære Reed-Muller-koder // Diskr. matematik. - 1994. - V. 4, udgave. 3. - S. 191-207. — ISSN 2305-3143 ; 0234-0860
- ↑ Courtois N. , Finiasz M. , Sendrier N. How to Achieve a McEliece-Based Digital Signature Scheme // Advances in Cryptology - ASIACRYPT 2001 : 7th International Conference on the Theory and Application of Cryptology and Information Security, Gold Coast, Australien, December 9-13, 2001, Proceedings / C. Boyd - London : Springer Science + Business Media , 2001. - S. 157-174. - ( Lecture Notes in Computer Science ; Vol. 2248) - ISBN 978-3-540-42987-6 - ISSN 0302-9743 ; 1611-3349 - doi:10.1007/3-540-45682-1
Litteratur
- Wieschebrink C. Cryptanalysis of the Niederreiter Public Key Scheme Based on GRS Subcodes // Post -Quantum Cryptography : Third International Workshop, PQCrypto 2010, Darmstadt, Tyskland, 25.-28. maj 2010. Proceedings / N. Sendrier — Berlin : Springer Berlin Heidelberg , 2010. - S. 61-72. - ( Lecture Notes in Computer Science ; Vol. 6061) - ISBN 978-3-642-12928-5 - ISSN 0302-9743 ; 1611-3349 - doi:10.1007/978-3-642-12929-2
- Solovieva F. I. , Los A. V. , Mogilnykh I. Yu. II Kryptologi // Indsamling af problemer om kodningsteori, kryptologi og datakomprimering - Novosibirsk : NGU , 2013. - S. 41-49. - 100 sek. — ISBN 978-5-4437-0184-4
- Schneier B. Anvendt kryptografi. Protokoller, algoritmer, kildekode i C-sprog = Applied Cryptography. Protocols, Algoritms and Source Code in C. - M. : Triumph, 2002. - 816 s. - 3000 eksemplarer. - ISBN 5-89392-055-4 .