A02:2021 - Akats kriptografikoak - Colisiones Hash
Partekatu
Zer dira akats kriptografikoak?
Hutsegite kriptografikoa datuen babesa egokia ez denean gertatzen da, edozein dela ere hutsegitea algoritmo kriptografiko bat gaizki erabiltzeagatik, inplementatzean hutsegiteagatik edo praktika ez seguruak erabiltzeagatik gertatzen den. Gertatzen diren ahuleziek aplikazio baten informazioaren konfidentzialtasunari eta osotasunari eragin diezaiokete.
Akats kriptografikoak segurtasun-arrisku bat dira, aktore gaizto potentzial bati diseinuz atzitu behar ez duen informazioa deszifratu, manipulatu edo atzitzeko aukera ematen diotelako.
Kriptografia modernoa algoritmo sendoen erabilera gisa uler daiteke, ondorioz segurutzat jotzen direnak. Horien artean daude AES; RSA edo SHA-256, hala ere, bere ezarpen zuzena funtsezkoa da. Gako okerra sortzea, zaharkitutako algoritmoen erabilera, hala nola SHA1 edo MD5; edo aurreikusten diren zenbaki-sorgailuak ekoizten jartzeak, aplikazioaren kriptografiaren aurkako erasoak eragin ditzake.
Algoritmo zaharkituak erabiltzea
Akats kriptografiko ohikoenetako bat hash funtzio zaharkituak eta enkriptazio algoritmoak erabiltzea da, aurretik erreferentziatutako SHA1 eta MD5. Bere garaian estandarrak baziren ere (1995 eta 1992, hurrenez hurren), gaur egun ez dira segurutzat jotzen eraso-tekniken aurrerapenengatik, hala nola hash talkaren bilaketaren ondorioz. Eraso hauei esker, aktore gaizto potentzial bati hash bera sortzen duten bi sarrera desberdin sor ditzake, eta horrek informazioa lapurtzea eragin dezake.
Zifratze-algoritmo simetrikoak ere kontuan hartu behar dira, eta horien artean badaude zaharkitutzat jotzen diren batzuk ere, DES edo 3DES, zeinak ez baitute behar besteko sendotasunik ematen bizi garen garaietarako, izan ere, denbora eta baliabide nahikoa igaro ahala datuak deszifratu daitezke. .
Historia: MD5 eta SHA1
MD5 (Message Digest 5) eta SHA1 (Secure Hash Algorithm 1) algoritmoak datuen osotasuna egiaztatzeko oso erabiliak izan diren hash funtzioak dira. Hala ere, denborarekin, eragin handiko ahuleziak aurkitu ziren bi algoritmoetan, aktore gaiztoek talka-erasoak egiteko aukera emanez (besteak beste), segurtasun-hauste bat eraginez. Ondorioz, MD5 eta SHA1 zaharkitutzat jotzen dira eta ez dira gomendatzen segurtasun handia eskatzen duten funtzionalitateetan erabiltzeko.
MD5 - Mezuen laburpena 5
1991n diseinatutako algoritmoak 128 biteko hash bat sortzen du edozein tamainatako datu-multzo batetik. Hasiera batean fitxategien eta irudien eta pasahitzen hashen osotasuna egiaztatzeko erabiltzen zen.
- Talka erasoak: 2004an Xiaoyun Wang, Dengguo Feng, Xuejia Lai eta Hongbo Yu ikertzaileak; frogatu zuen MD5 talketarako zaurgarria dela.
- Xie, T., Liu, F. eta Feng, D. (2013). Talka-eraso azkarra MD5-ri. Kriptologia ePrint Artxiboa.
- Irudi aurreko erasoak: hain ohikoak ez diren arren, irudiaren aurreko erasoak teorikoki posibleak dira MD5-n, non aktore gaizto bat hashetik jatorrizko mezua berreraikitzen saia daiteke.
- Sasaki, Y. eta Aoki, K. (2009). Bilaketa zehatza baino azkarrago aurkitzea aurreirudiak MD5 osoan. In Advances in Cryptology-EUROCRYPT 2009: 28th Annual International Conference on theory and Applications of Cryptographic Techniques, Kolonia, Alemania, 2009ko apirilaren 26-30. Proceedings 28 (134-152 or.). Springer Berlin Heidelberg.
SHA1 - Secure Hash Algorithm 1
SHA1, NSAk 1993an garatua, 160 biteko hash bat sortzen du. Bere erabilera estandarizatua zen, SSL/TLS eta PGP bezalako protokoloetan aurkitu zen. Azken urteotan talka erasoen aurrean zaurgarria dela frogatu da.
2017an, Googlek, Amsterdameko Unibertsitatearekin batera, SHA1-en talkak sor zitezkeela frogatu zuen, argitaratuz. https://shattered.io/ doako kontsulta publikorako.
Hash Talkak
Hash funtzioak
Hash funtzioa luzera aldakorreko sarrera hartzen duen algoritmo bat da eta irteera aldakorra (hash edo digest) bihurtzen du. Hash funtzioak norabide bakarrekoak izateko diseinatuta daude, sarrera ezin da irteeratik berreskuratu eta talka erresistentea izateko. Hala ere, zenbait algoritmotan dagoeneko frogatu da talkekiko erresilientzia ez dela beti perfektua.
Baina zer dira hash talkak?
Hash talka bi sarrera ezberdinek irteera edo digestio bera sortzen dutenean gertatzen da. Egoera honek hash funtzioen funtsezko propietateetako bat desegiten du, digestioaren berezitasuna.
Sinadura digitalak, fitxategien osotasuna eta SSL/TLS ziurtagiriak bezalako sistemen segurtasuna arriskuan jar daiteke hash talken bidez. Aktore gaizto batek mezu baten edukia aldatzea lortzen badu bere hash-a aldatu gabe, aldaketak oharkabean pasako direla eta mezua zilegitzat jotzen dela ziurta dezakete.
Talka adibidea MD5-n
Talka-adibiderako, bi testu-kate erabiltzen dira, byte batez desberdinak direnak. Kredituak Marc Stevens-i bere argitalpenagatik .
- Katea 1:
TEXTCOLLBYfGiJUETHQ4hAcKSMd5zYpgqf1YRDhkmxHkhPWptrkoyz28wnI9V0aHeAuaKnak
- 2. katea:
TEXTCOLLBYfGiJUETHQ4hEcKSMd5zYpgqf1YRDhkmxHkhPWptrkoyz28wnI9V0aHeAuaKnak
TEXTCOLLBYfGiJUETHQ4hAcKSMd5zYpgqf1YRDhkmxHkhPWptrkoyz28wnI9V0aHeAuaKnak
⬆
|
⬇
TEXTCOLLBYfGiJUETHQ4hEcKSMd5zYpgqf1YRDhkmxHkhPWptrkoyz28wnI9V0aHeAuaKnak
Hori frogatzeko, kontzeptuaren froga txiki bat egingo da C-n:
#include
#sartu
#include
int main() {
char *input1 = "TEXTCOLLBYfGiJUETHQ4hAcKSMd5zYpgqf1YRDhkmxHkhPWptrkoyz28wnI9V0aHeAuaKnak";
char *input2 = "TEXTCOLLBYfGiJUETHQ4hEcKSMd5zYpgqf1YRDhkmxHkhPWptrkoyz28wnI9V0aHeAuaKnak";
sinatu gabeko char hash1[MD5_DIGEST_LENGTH];
sinatu gabeko char hash2[MD5_DIGEST_LENGTH];
MD5((signed char*)sarrera1, strlen(sarrera1), hash1);
MD5((signed char*)sarrera2, strlen(sarrera2), hash2);
for(int i = 0; i
printf("\n");
for(int i = 0; i
printf("\n");
printf (memcmp (hash1, hash2, MD5_DIGEST_LENGTH) == 0 ?
"Talka aurkitu!\n" : "Ez da talkarik\n");
itzuli 0;
}
Eta hash talka bat lortzen duzu, bi kate alfanumeriko desberdinek MD5 hash bera sortzen dute. Honek, kredentzialak MD5 hash-ak erabiliz gordetzen diren sarbide-sistema batera eramanda, jatorrizkoa ez den beste kredentzial batekin baimenik gabeko sarbidea ekar dezake.
Nola aurkitu hash talkak? → Aukeratutako Aurrizkien Talka
Hash talka bat identifikatzea belar-pila batean orratz bat aurkitzea bezalakoa da, hash bera sortzen duten bi (adibidez) kate arbitrario aurkitzeko behar diren baliabide konputazionalak izugarria da.
Hori dela eta, Chosen Prefix Collision (CPC) bezalako teknikak garatu dira, non aurrizki zehatzak dituzten bi mezu hauta daitezkeen eta hash talka eragiten duten aldaerak sortu.
Marko teorikoa
Erasoaren helburua M1 eta M2 bi mezu aurkitzea da, bakoitza P1 eta P2 , digestio bera sortuz. Honela adieraz daiteke:
Non:
- H hash funtzioa da (MD5 edo SHA1).
- P1 eta P2 dira aukeratutako aurrizkiak.
- M1 eta M2 dira identifikatu beharreko zati aldakorrak.
- ∣∣ kateamendua adierazten du.
Eraso jakin honek dakartzan arriskua handia da, izan ere, aurrizkiak egitura ezaguna duen fitxategi edo mezu baten parte izan daitezke (adibidez, ziurtagiri digitala), eta horrek datuak estrategikoki manipulatzeko aukera eman dezake talka hori ikusgarririk gabe lortzeko. edo elementu kritikoak aldatu.
Eraso Prozesua
Blokeetan banatuta dagoen hash funtzio baten egitura kontuan hartuta:
Non Nire sarrerako tamaina finkoko blokeak adierazten dituen. Hash funtzioaren kalkulua, H, iteratiboki egiten da bloke hauetan, non bloke bakoitzak tarteko egoera bat aldatzen duen Si.
CPC erasoan P1 eta P2 aurrizkiak prozesatu egingo dira lehenik, hash kalkulurako tarteko egoera sortuz.
M1 eta M2 bi bloke aurkitzeko helburua lortzeko, P1 eta P2 aurrizkiekin elkartuta. azken hash balio bera, M1 eta M2 blokeak egokitu behar dira, S1 eta S2 i-ren arteko desberdintasunak izan daitezen. > ondorengo bitarteko egoeretan baliogabetzen dira.
Gutxienez Nire bloke batek tarteko egoeren arteko aldea konpentsatu behar du.
Non:
- ⊕ XOR eragiketa adierazten du.
- ΔS tarteko egoeretan sartutako aldea da S1 eta S2ren arteko desberdintasuna orekatzeko.
Sinplifikatuz, tarteko egoeren talka behartu daitekeela suposatzen bada, aukeratutako blokeen amaieran lortuko genuke:
M1 eta M2 doikuntzaren ondorioz, P1 eta P2 aurrizki desberdinak izan arren, azken berdina izan dadin. tarteko egoera S1 gertatzen da.
Berdintasuna lortzeak M1 eta M2 mezu-blokeetan kalkulatutako diferentziak sartzea dakar, hash-funtzioaren tarteko egoeretan dauden desberdintasunak konpontzen dituzten mezu-blokearen bitetan diferentziak aplikatuz. Desberdintasun hauek hash funtzioaren bidez hedatzeak azken egoera berdinera eramango duen moduan kalkulatuko dira.
M1 mezu-blokean desberdintasunak sartzen direla suposatuz, ΔM adibidez, honela:
M1⊕ΔM blokea aplikatu ondoren tarteko egoera M2 blokea aplikatu ondoren tarteko egoeraren berdina izan dadin.
Ondorioa
Chosen Prefix Collision erasoak hash funtzioen izaera interaktiboa ustiatzen du. Datu-blokeak manipulatuz eta kalkulatutako diferentziak aplikatuz, tarteko egoerak bat etor daitezke, azken hash irteerak talka egitea eraginez.
Eraso hau MD5 eta SHA1 bezalako hash funtzioen oinarrizko ahulguneen proba da, batez ere sarrerako datuak modu kontrolatuan manipulatzen dituzten eraso aurreratuen aurka.
Egilea: Daniel Puente