SHA-1
Stampa:Infobox cryptographic hash function
Ne kriptografi, SHA-1 është një funksion hash kriptografik dizajnuar prej National Security Agency te shteteve te bashkuara te Amerikës (SHBA) dhe është Standardi për Procesimin e Informatave Shtetërore publikuar nga NIST.[1]
SHA-1 gjeneron një vlere 160-bit (20-byte) për hash. Vlera e SHA-1 hash-it, zakonisht është e dhëne si numër hexadecimal, 40 karaktere i gjate.
SHA është akronim për "algoritëm hash për siguri". Katër SHA algoritmet janë strukturuar ne mënyra te ndryshme dhe janë emëruar SHA-0, SHA-1, SHA-2, dhe SHA-3. SHA-0 është versioni origjinal 160-bit i HASH funksionit, publikuar me 1993 i emëruar si "SHA": nuk u adoptua nga shume aplikacione. Publikuar me 1995, SHA-1 është shume i ngjashëm me SHA-0, por ndryshon origjinalin SHA hashin dhe rregullon specifikat duke permisuar dobësitë. SHA-2, i publikuar me 2001, është i ndryshëm prej SHA-1 funksionit. SHA-1 është me i përdoruri dhe me i përhapuri nga SHA hash funksionet, dhe është i përfshire ne shume aplikacione dhe protokole qe përdoren. Me 2005, kriptoanalistet zbuluan një sulm ne SHA-1 duke propozuar se algoritmi nuk është i sigurt sa duhet për përdorim te mëtutjeshëm.[2] NIST kërkoi se shume aplikacione te agjencisë federale te kalojnë ne SHA-2 pasi qe ne 2010 u zbulua ajo dobesi.[3] Edhe pse as një sulm nuk është raportuar te ketë pasur sukses ne SHA-2, pasi qe algoritmi i tij ka ngjashmëri me SHA-1. Me 2012, pas një konkurrence te gjate NIST zgjodhi algoritmin Keccak, për standardizim ne vend te SHA-3.[4][5] Ne nëntor te vitit 2013 Microsoft paraqiti politiken e tij ne SHA-1 bazuar ne ketë Windows-i nuk do i pranoj me certifikatat e SHA-1 ne SSL me 2017.[6] Ne shtator 2014Google paraqiti politikat e saj për SHA-1 sipas saj Chrome do vazhdoj ti pranoj SHA-1 certifikatat me SSL edhe gjate pas 2017[7] Mozillagjithashtu po planifikon te ndaloj pranimin e SHA-1-certifikatave me SSL rreth vitit 2017.[8][9][10]
SHA-1 hash funksioni
[Redakto | Redakto nëpërmjet kodit]![](http://178.128.105.246/content-http-upload.wikimedia.org/wikipedia/commons/thumb/e/e2/SHA-1.svg/300px-SHA-1.svg.png)
A, B, C, D and E are 32-bit words of the state;
F is a nonlinear function that varies;
![left shift](http://178.128.105.246/content-http-upload.wikimedia.org/wikipedia/commons/e/e1/Lll.png)
n varies for each operation;
Wt is the expanded message word of round t;
Kt is the round constant of round t;
![Addition](http://178.128.105.246/content-http-upload.wikimedia.org/wikipedia/commons/7/75/Boxplus.png)
SHA-1 krijon një tretje te mesazhit bazuar ne principe te ngjashme te përdorura nga Ronald L. Rivest prej MIT ne dizajnimin e MD4 dhe MD5 algoritmeve për tretës se tekstit, por ka një dizajnë me te kujdesshëm. Specifikimi origjinal i algoritmit është publikuar me 1993 me titullin "Secure Hash Standard" , FIPS PUB 180, me standarde te qeverise nga agjencia NIST(Instituti Nacional p për Standarde Teknologjike). Ky version shpesh emërohet si SHA-0.
Aplikimet
[Redakto | Redakto nëpërmjet kodit]Shembuj te kodimit
[Redakto | Redakto nëpërmjet kodit]Shembuj te hasheve
[Redakto | Redakto nëpërmjet kodit]Këta janë shembuj te SHA-1 tretësit se mesazhit ne hexadecimal dhe ne Base64 binar ne ASCII enkodim te tekstit.
SHA1("The quick brown fox jumps over the lazy dog") gives hexadecimal: 2fd4e1c67a2d28fced849ee1bb76e7391b93eb12 gives Base64 binary to ASCII text encoding: L9ThxnotKPzthJ7hu3bnORuT6xI=
Edhe një ndryshim i vogël ne mesazh do te bej ndryshime te mëdha ne rezultat, duke bere komplet një hash kodit tjetër. Për shembull duke ndryshuar dog
to cog
krijon një hash me diference prej me shume se 81 prej 160:
SHA1("The quick brown fox jumps over the lazy cog") gives hexadecimal: de9f2c7fd25e1b3afad3e85a0bd17d9b100db4b3 gives Base64 binary to ASCII text encoding: 3p8sf9JeGzr60+haC9F9mxANtLM=
Hashi i teksti pa asnjë karakter është :
SHA1("") gives hexadecimal: da39a3ee5e6b4b0d3255bfef95601890afd80709 gives Base64 binary to ASCII text encoding: 2jmj7l5rSw0yVb/vlWAYkK/YBwk=
SHA-1 Kodimi
[Redakto | Redakto nëpërmjet kodit]Kodi për SHA-1 algoritmin është:
Note 1: All variables are unsigned 32 bits and wrap modulo 232 when calculating, except ml the message length which is 64 bits, and hh the message digest which is 160 bits. Note 2: All constants in this pseudo code are in big endian. Within each word, the most significant byte is stored in the leftmost byte position Initialize variables: h0 = 0x67452301 h1 = 0xEFCDAB89 h2 = 0x98BADCFE h3 = 0x10325476 h4 = 0xC3D2E1F0 ml = message length in bits (always a multiple of the number of bits in a character). Pre-processing: append the bit '1' to the message i.e. by adding 0x80 if characters are 8 bits. append 0 ≤ k < 512 bits '0', thus the resulting message length (in bits) is congruent to 448 (mod 512) append ml, in a 64-bit big-endian integer. So now the message length is a multiple of 512 bits. Process the message in successive 512-bit chunks: break message into 512-bit chunks for each chunk break chunk into sixteen 32-bit big-endian words w[i], 0 ≤ i ≤ 15 Extend the sixteen 32-bit words into eighty 32-bit words: for i from 16 to 79 w[i] = (w[i-3] xor w[i-8] xor w[i-14] xor w[i-16]) leftrotate 1 Initialize hash value for this chunk: a = h0 b = h1 c = h2 d = h3 e = h4 Main loop:[11] for i from 0 to 79 if 0 ≤ i ≤ 19 then f = (b and c) or ((not b) and d) k = 0x5A827999 else if 20 ≤ i ≤ 39 f = b xor c xor d k = 0x6ED9EBA1 else if 40 ≤ i ≤ 59 f = (b and c) or (b and d) or (c and d) k = 0x8F1BBCDC else if 60 ≤ i ≤ 79 f = b xor c xor d k = 0xCA62C1D6 temp = (a leftrotate 5) + f + e + k + w[i] e = d d = c c = b leftrotate 30 b = a a = temp Add this chunk's hash to result so far: h0 = h0 + a h1 = h1 + b h2 = h2 + c h3 = h3 + d h4 = h4 + e Produce the final hash value (big-endian) as a 160 bit number: hh = (h0 leftshift 128) or (h1 leftshift 96) or (h2 leftshift 64) or (h3 leftshift 32) or h4
Numri hh ne mesazh është mbetje, e cila mund te shkruhet ne forme heksadecimale(base 16), por me se shpeshti shkruhet si Base64 binar me enkodimin ne ASCII tekst.
Ne vende te formulimit origjinal te FIPS PUB 180-1 , funksione te ngjashme mund te paraqiten per gjetjen e f
ne unazën kryesore sipër.
(0 ≤ i ≤ 19): f = d xor (b and (c xor d)) (alternative 1) (0 ≤ i ≤ 19): f = (b and c) xor ((not b) and d) (alternative 2) (0 ≤ i ≤ 19): f = (b and c) + ((not b) and d) (alternative 3) (0 ≤ i ≤ 19): f = vec_sel(d, c, b) (alternative 4) (40 ≤ i ≤ 59): f = (b and c) or (d and (b or c)) (alternative 1) (40 ≤ i ≤ 59): f = (b and c) or (d and (b xor c)) (alternative 2) (40 ≤ i ≤ 59): f = (b and c) + (d and (b xor c)) (alternative 3) (40 ≤ i ≤ 59): f = (b and c) xor (b and d) xor (c and d) (alternative 4) (40 ≤ i ≤ 59): f = vec_sel(c, b, c xor d) (alternative 5)
Max Locktyukhin ka shfaqur[12] se per roundet 32-79 llogaritja e:
w[i] = (w[i-3] xor w[i-8] xor w[i-14] xor w[i-16]) leftrotate 1
mund te zavendesohet me:
w[i] = (w[i-6] xor w[i-16] xor w[i-28] xor w[i-32]) leftrotate 2
Ky transformim mban te gjith operatoret 64-bit , duke larguar mbetjet e w[i]
on w[i-3]
,lejon ne menyre eficiente imlepentimin e x86 SSE instruksioneve.
.
Stampa:Comparison of SHA functions
See also
[Redakto | Redakto nëpërmjet kodit]- Comparison of cryptographic hash functions
- cryptlib
- Crypto++
- Digital timestamping
- Hashcash
- Hash collision
- International Association for Cryptologic Research
- Libgcrypt
- md5deep
- OpenSSL
- PolarSSL
- RIPEMD-160
- Secure Hash Standard
- sha1sum
- Tiger (cryptography)
- Whirlpool (cryptography)
Notes
[Redakto | Redakto nëpërmjet kodit]- ^ http://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf
- ^ Schneier, Bruce (18 shkurt 2005). "Schneier on Security: Cryptanalysis of SHA-1".
{{cite web}}
: Mungon ose është bosh parametri|language=
(Ndihmë!) - ^ "Kopje e arkivuar". Arkivuar nga origjinali më 29 prill 2017. Marrë më 12 qershor 2015.
{{cite web}}
: Mungon ose është bosh parametri|language=
(Ndihmë!)Mirëmbajtja CS1: Archived copy si titull (lidhja) - ^ Schneier on Security: NIST Hash Workshop Liveblogging (5)
- ^ Hash cracked – heise Security
- ^ "SHA1 Deprecation Policy". Microsoft. 2013-11-12. Marrë më 2013-11-14.
{{cite web}}
: Mungon ose është bosh parametri|language=
(Ndihmë!) - ^ "Intent to Deprecate: SHA-1 certificates". Google. 2014-09-03. Marrë më 2014-09-04.
{{cite web}}
: Mungon ose është bosh parametri|language=
(Ndihmë!) - ^ "Bug 942515 - stop accepting SHA-1-based SSL certificates with notBefore >= 2014-03-01 and notAfter >= 2017-01-01, or any SHA-1-based SSL certificates after 2017-01-01". Mozilla. Marrë më 2014-09-04.
{{cite web}}
: Mungon ose është bosh parametri|language=
(Ndihmë!) - ^ "CA:Problematic Practices - MozillaWiki". Mozilla. Marrë më 2014-09-09.
{{cite web}}
: Mungon ose është bosh parametri|language=
(Ndihmë!) - ^ "Phasing Out Certificates with SHA-1 based Signature Algorithms | Mozilla Security Blog". Mozilla. 2014-09-23. Marrë më 2014-09-24.
{{cite web}}
: Mungon ose është bosh parametri|language=
(Ndihmë!) - ^ http://www.faqs.org/rfcs/rfc3174.html
- ^ Locktyukhin, Max; Farrel, Kathy (2010-03-31), "Improving the Performance of the Secure Hash Algorithm (SHA-1)", Intel Software Knowledge Base, Intel, marrë më 2010-04-02
{{citation}}
: Mungon ose është bosh parametri|language=
(Ndihmë!)
References
[Redakto | Redakto nëpërmjet kodit]- Florent Chabaud, Antoine Joux: Differential Collisions in SHA-0. CRYPTO 1998. pp56–71
- Eli Biham, Rafi Chen, Near-Collisions of SHA-0, Cryptology ePrint Archive, Report 2004/146, 2004 (appeared on CRYPTO 2004), IACR.org
- Xiaoyun Wang, Hongbo Yu and Yiqun Lisa Yin, Efficient Collision Search Attacks on SHA-0, CRYPTO 2005, CMU.edu
- Xiaoyun Wang, Yiqun Lisa Yin and Hongbo Yu, Finding Collisions in the Full SHA-1, Crypto 2005 MIT.edu
- Henri Gilbert, Helena Handschuh: Security Analysis of SHA-256 and Sisters. Selected Areas in Cryptography 2003: pp175–193
- http://www.unixwiz.net/techtips/iguide-crypto-hashes.html
- "Proposed Revision of Federal Information Processing Standard (FIPS) 180, Secure Hash Standard". Federal Register. 59 (131): 35317–35318. 1994-07-11. Marrë më 2007-04-26.
{{cite journal}}
: Mungon ose është bosh parametri|language=
(Ndihmë!)[lidhje e vdekur] - A. Cilardo, L. Esposito, A. Veniero, A. Mazzeo, V. Beltran, E. Ayugadé, A CellBE-based HPC application for the analysis of vulnerabilities in cryptographic hash functions, High Performance Computing and Communication international conference, August 2010
External links
[Redakto | Redakto nëpërmjet kodit]- CSRC Cryptographic Toolkit – Official NIST site for the Secure Hash Standard
- FIPS 180-4: Secure Hash Standard (SHS) (PDF, 1.7 MB) – Current version of the Secure Hash Standard (SHA-1, SHA-224, SHA-256, SHA-384, and SHA-512), March 2012
- RFC 3174 (with sample C implementation)
- Interview with Yiqun Lisa Yin concerning the attack on SHA-1
- Explanation of the successful attacks on SHA-1 (3 pages, 2006)
- Cryptography Research – Hash Collision Q&A
- Online SHA1 hash crack using Rainbow tables
- Hash Project Web Site: software- and hardware-based cryptanalysis of SHA-1
- SHA-1 në Open Directory Project
- Lecture on SHA-1 në YouTube
by Christof Paar Arkivuar 24 prill 2017 tek Wayback Machine