SHA-2

**SHA-2** hash kriptografiko multzo bat da (SHA-224, SHA-256, SHA-384, SHA-512) Segurtasun Agentziak (NSA) diseinatua eta 2001ean argitaratua izan zen National Institute of Standards and Technology (NIST) prozesuen informazio estandar (FIPS) gisa.

Hash funtzio bat datu multzo bat, test fitxero bbat adibidez, tamaina bereko balore (hash) batean bihurtzen du algoritmo baten bitartez. Hash balioa datuen osotasuna eta integritatea baliozkotzen du. SHA-2 aldaketa asko dakartza bere arbasoarekin konparatuz, SHA-1; eta lau hash funtzio multzoen datza, 224, 256, 384 edo 512.

Hashing algortimo batek ematen duen segurtasuna datu-multzo jakin baterako balio bakar bat sortzeko duen gaitasunaren mende dago. Hash funtzio batek bi datu-multzo ezberdinetarako balio bera sortzen duenean, talka bat gertatu dela esaten da. Talka batek erasotzaile batek informazio segururako sarbidea ematen duten datu-multzoak konputazionalki eraikitzeko aukera areagotzen du edo ordenagailuko datu-fitxategiak aldatzeko, ondoriozko hash balioa aldatuko ez den eta, beraz, detekzioa saihesteko. Hash-funtzio indartsua mota honetako eraso konputazionalekiko erresistentea dena da, eta hash-funtzio ahula talkak gerta daitezkeela ia ziurra dagoena da. Azkenik, hautsitako hash funtzioa talkak sortzeko metodo konputazionalak ezagutzen diren bat da.

2005ean, SHA-1-en segurtasun-akatsak identifikatu ziren, ahultasun matematiko bat existitzea ahalbidetuz eta, horrela, hash-funtzio indartsuago bat garatzeko beharra frogatuz. SHA-2 SHA-1 algoritmoaren antzera jokatzen duen arren, eraso hauek ez dira behar bezala hedatu SHA-2ra.

## Hash Funtzioa 
FIPS PUB 180-2-ren publikazioa, NIST-ek 3 hash funtzio berri gehitu zituen SHA familiara, bere bit tamainaren arabera izendatutak: SHA-256, SHA-384, SHA-512.

2001 urtean algoritmoak argitaratuak izan ziren FIPS PUB 180-2 zirriborroan. 2002ko abuztuan, FIPS PUB 180-2 hash seguruen estandarrean bilakatu zen, FIPS PUB 180-1 ordezkatuz.  Eguneratze estandarrak SHA-1 jatorrizko algoritmoa barne hartzen zuen, SHA-2 familiaren barne funtzionamendua deskribatzen zuenarekin bat datorren idazkera teknikoarekin.

2004ko otsailean, FIPS PUB 180-2 aldaketarako oharra argitaratu zen, aldaera gehigarri bat zehaztuz (SHA-224) gakoaren luzera DES Hirukoitzarekin bat etortzeko. 2008ko urrian, FIPS PUB 180-3 bertsioan eguneratu zen estandarra, aldaketa oharraren SHA-224 barne, baina estandarra funtsean aldatu gabe. Eguneratze estandarraren lehen motibazioa 800-107 eta 800-57,  "special Publications" erabiltzeko gomendioen algoritmoen segurtasun informazioa eta gomendioak birbanatzea izan da. Probako datu zehatzak eta "Laburpenak" mezuen laginak ere kendu dira estandarra eta dokumentu bereizi gisa hornitua.

2012ko martxoan, FIPS PUB 180-4 eguneratu zen, SHA-512/224 eta SHA-512/256 hash funtzioak gehituz eta SHA-512 bertsio moztua erabiliz hasierako balioak sortzeko metodo bat deskribatuz. Gainera, hash-a kalkulatzeko sarrerako datuak betetzeari buruzko aurreko muga ezabatu zen, hash datuak edukiaren sorrerarekin batera kalkulatzea ahalbidetuz, hala nola bideo edo audio baten denbora errealean emititzea. Datu blokearen azken betegarria hash-aren irteera baino lehen gertatu behar da.

SHA-256 eta SHA-512 hash funtzio berriak dira 32 eta 64 bit-eko 8 hitzekin. Desplazamendu eta konstante ezberdinak erabiltzen dituzte, baina, beraien egitura birtualki berdinar dira, iterazio kopuruan soilik ezberdinak direnak. SHA-224 eta SHA-384 aurreko funtzioen bertsio moztuak dira hasierako balore ezberdinak kalkulatuak izan direnak. SHA-2 algoritmoen familia Ameriketako Estatu Batuetan patentatuak izan ziren eta copyright gabeko lizentziapean kaleratu ziren.

2013. urteko amaieran, eraso publiko onenak SHA-256-ren 64 iteraziotik 46 iterazio apurtzea lortu zuten, eta SHA-512-ren 80-tik 46 iterazio.

## SHA funtzioen konparaketa 
## Aplikazioak 
SHA-2 hash funtzioak segurtasun aplikazio nahiz protokolo askotan daude inplementatuak: TLS, SSL, PGP, SSH, Bitcoin eta abar.

Bitcoin cripto-txanpona SHA-256arekiko menpekotasuna du. SHA-256 Debian GNU/Linux-en software paketeak identifikatzeko erabiltzen da, baita DKIM sinatutako mezu estandarretan. Unix eta Linux-en hornitzaileek SHA-256 eta SHA-512 erabiltzen hasi dira segurtasun pasa hitzetan. 

SHA-1 eta SHA-2 AEBetako gobernuko zenbait aplikaziotan legeak eskatzen dituen segurtasun hash-ak dira, beste algoritmo kriptografiko eta protokolo batzuk erabiltzearekin batera, informazio sailkatua eta sentikorra babesteko. Gobernuak SHA-1 erabiltzeari uzten ari da, AEBko Arau eta Teknologia Institutu Nazionala adierazten duen bezela, “Agentzia federalek SHA-1 erabiltzeari utzi beharko liokete ... talka erresistentzia behar duten aplikazioak lehenbailehen, eta 2010etik aurrera SHA-2 hash funtzioen familiak erabili beharko lituzkete aplikazio hauetarako”.

SHA-2 funtzioak ez dira SHA-1 bezain erabiliak, seguruagoak izan arren. Arrazoien artean, Windows XP SP2 edo lehenagoko sistemetan SHA-2 euskarririk ez egotea izan daiteke, edo SHA-1-en oraindik talkarik ez aurkitzea. 

## Kriptoanalisia eta baliozkotzea 
Prozesatutako mezua L bit kopurua duen funtzio baterako, prozesatutako mezuarekin bat datorren mezu bat aurkitzea beti lor daiteke 2^L indar gordinaren bilaketa erabiliz. Honi, irudiaren aurreko erasoa deritzo eta praktikoa izan daiteke L balorearen arabera eta erabiltzen den ingurune informatikoaren arabera. Bigarren irizpidea, bi mezu ezberdinei funtzioa aplikatzea eta tratatutako mezu berdina lortzea, talka bezela ezagutua dena, 2^(L/2) ebaluazio behar dira urtebetetze erasoa erabiltzen bada.

Helburu praktikoetarako, eraso mota berri honen inguruan kezka handia dago, eraso eraginkorragoak erabiltzea baimendu dezakeelako. Halako kasurik ikusi ez den arren, gero eta sinesmen handiagoa dago hashing algoritmo berri eta sendoagoak erabiltzeko. Hash sistema kriptografikoak erabiltzen dituzten zenbait aplikaziok, adibidez pasahitzak gordetzeko, talka eraso batek gutxienez eragiten die. Kontu baterako funtzionatzen duen pasahitz bat sortzeak irudiaren aurreko eraso bat eskatzen du, jatorrizko pasahitzaren hash-era sartzeaz gain. Enkriptaturiko pasahitz bat berreskuratzea ezinezkoa da erasoen bitartez. Hala ere, hash sistema seguru bat erabiltzearren ezin dira sahiestu indar gordineko erasoak pasahitz ahuletan (1234, adibidez).

Sinatutako dokumentuen kasuan, erasotzaile batek ezin du sinadura bat sinatu besterik ez zegoen lehendik zegoen dokumentu batetik, erasotzaileak bi dokumentu bikote sortu beharko lituzke, bat kaltegabea eta bestea kaltetuta, eta jabearen gako pribatua eskuratu beharko luke kaltegabeko dokumentua sinatzeko. 

Irudi aurreko bi eraso daude SHA-2ren aurkako erdibideko topaketa bakoitzean, errepikapen kopurua murrizten dutenak. Lehenengoa, SHA-256ri dagokionez, 41 txandatan ebazten da 2^253,5 denborazko konplexutasuna eta 2^16ko konplexutasun espaziala duten 64 txandari dagokionez; SHA-512ri dagokionez, 46 txandatan ebazten da 80 txandatan 2^502 denborazko konplexutasuna eta 2^22ko espazio konplexutasuna duten 80 txandatan. 

#### Baliozkotze ofiziala 
Segurtasun funtzio guztien FIPS onartutako inplementazioak ofizialki CMVP programa baten bidez balioztatzen dira eta nahitaez Estandar eta Teknologia Institutu Nazionalak (NIST) eta Komunikazioen Segurtasun Establezimenduak (CSE) indarrean jartzen dituzte hauek exekutatuz. Egiaztapen informal bat egiteko, [[NIST]en web orrialdean proba bektorea asko sortzeko pakete bat dago.

## SHA-2ren aldaeren adibideak 
Hash balioak karaktere kate hutsarentzat.
```python
SHA224("")
0x d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f
SHA256("")
0x e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
SHA384("")
0x 38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b
SHA512("")
0x cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e
SHA512/224("")
0x 6ed0dd02806fa89e25de060c19d3ac86cabb87d6a0ddd05c333b84f4
SHA512/256("")
0x c672b8d1ef56ed28ab87c3622c5114069bdd3ad7b8f9737498d0c01ecef0967a
```
Mezuan aldaketa txiki batek ere (probabilitate izugarriarekin) hash guztiz desberdina eragingo du, elur-jausiaren efektuaren ondorioz. Adibidez, esaldiaren amaieran puntu bat gehitzea. 
```python
SHA224("The quick brown fox jumps over the lazy dog")

0x 730e109bd7a8a32b1cb9d9a09aa2325d2430587ddbc0c38bad911525

SHA224("The quick brown fox jumps over the lazy dog.")

0x 619cba8e8e05826e9b8c519c0a5c68f4fb653e8a3d8aa04bb2c8cd4c

SHA256("The quick brown fox jumps over the lazy dog")

0x d7a8fbb307d7809469ca9abcb0082e4f8d5651e46d3cdb762d02d0bf37c9e592

SHA256("The quick brown fox jumps over the lazy dog.")

0x ef537f25c895bfa782526529a9b63d97aa631564d5d789c2b765448c8635fb6c

SHA384("The quick brown fox jumps over the lazy dog")

0x ca737f1014a48f4c0b6dd43cb177b0afd9e5169367544c494011e3317dbf9a509cb1e5dc1e85a941bbee3d7f2afbc9b1

SHA384("The quick brown fox jumps over the lazy dog.")

0x ed892481d8272ca6df370bf706e4d7bc1b5739fa2177aae6c50e946678718fc67a7af2819a021c2fc34e91bdb63409d7

SHA512("The quick brown fox jumps over the lazy dog")

0x 07e547d9586f6a73f73fbac0435ed76951218fb7d0c8d788a309d785436bbb642e93a252a954f23912547d1e8a3b5ed6e1bfd7097821233fa0538f3db854fee6

SHA512("The quick brown fox jumps over the lazy dog.")

0x 91ea1245f20d46ae9a037a989f54f1f790f0a47607eeb8a14d12890cea77a1bbc6c7ed9cf205e67b7f2b8fd4c7dfd3a7a8617e45f3c463d481c7e586c39ac1ed

SHA512/224("The quick brown fox jumps over the lazy dog")

0x 944cd2847fb54558d4775db0485a50003111c8e5daa63fe722c6aa37

SHA512/224("The quick brown fox jumps over the lazy dog.")

0x 6d6a9279495ec4061769752e7ff9c68b6b0b3c5a281b7917ce0572de

SHA512/256("The quick brown fox jumps over the lazy dog")

0x dd9d67b371519c339ed8dbd25af90e976a1eeefd4ad3d889005e532fc5bef04d

SHA512/256("The quick brown fox jumps over the lazy dog.")

0x 1546741840f8a492b959d9b8b2344b9b0eb51b004bba35c0aebaac86d45264c3
```

## Erreferentziak 
## Bibliografia 
* Henri Gilbert, Helena Handschuh: Security Analysis of SHA-256 and Sisters. Selected Areas in Cryptography 2003: pp. 175-193
* «Proposed Revision of Federal Information Processing Standard (FIPS) 180, Secure Hash Standard». *Federal Register* **59** (131): 35317-35318. 1994-ko uztailak 11.

## Ikus, gainera 
* Kriptografia
* Hashing
* Timestamping
* sha1sum (sha224sum, sha256sum, sha384sum, sha512sum)

## Kanpo estekak 
* Nist-en SHA-256, SHA-384 eta SHA-512 deskribapena.
* Nist-en CSRC material kriptografikoa Hash estandar seguruarentzako.
* SHA-256/384/512 proba bektorialak, NESSIE proiektuarenak.
* SHA-1 eta SHA-2 proba bektorialak, NIST-en web ofizialetik.
* NIST Cryptographic Hash Project, SHA-3 algortimoa aukeratzeko txapelketa.
* RFC 3874. SHA-224.
* RFC 6234. SHA, HMAC eta HKDF algoritmoak.