SHA-2
SHA-2 (Secure Hash Algorithm 2) գաղտնագրական հեշ ֆունկցիաների շարք, նախագծել է Միացյալ Նահանգների Ազգային անվտանգության գործակալությունը (NSA) և առաջին անգամ հրապարակվել է 2001 թվականին[1][2]։ Դրանք կառուցվել են Մերկլ-Դամգարդի կառուցվածքի միջոցով, միակողմանի սեղմման ֆունկցիայից, որն ինքնին կառուցվել է Դեյվիս-Մեյերի կառուցվածքով՝ մասնագիտացված բլոկային շիֆրից։
SHA-2-ը էական փոփոխություններ է ներառել իր նախորդի՝ SHA-1-ի համեմատ։ SHA-2 ընտանիքը բաղկացած է վեց հեշ ֆունկցիայից, որոնց digest-ները՝ հեշ արժեքները, ունեն 224, 256, 384 կամ 512 բիթ երկարություն[3]՝ SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, SHA-512/256։ SHA-256-ը և SHA-512-ը հեշ ֆունկցիաներ են, որոնց digest-ները համապատասխանաբար ութ 32-բիթանոց և 64-բիթանոց բառեր են։ Դրանք օգտագործել են տարբեր տեղաշարժման չափեր և գումարման հաստատուններ, սակայն դրանց կառուցվածքները այլ առումներով գրեթե նույնական են՝ տարբերվելով միայն փուլերի քանակով։ SHA-224-ը և SHA-384-ը համապատասխանաբար SHA-256-ի և SHA-512-ի կրճատված տարբերակներն են, որոնք հաշվարկվել են տարբեր սկզբնական արժեքներով։ SHA-512/224-ը և SHA-512/256-ը նույնպես SHA-512-ի կրճատված տարբերակներ են, սակայն դրանց սկզբնական արժեքները գեներացվել են Դաշնային տեղեկատվական մշակման ստանդարտների (FIPS) PUB 180-4-ում նկարագրված մեթոդով։
SHA-2-ը առաջին անգամ հրապարակվել է Ստանդարտների և տեխնոլոգիաների ազգային ինստիտուտի (NIST) կողմից՝ որպես ԱՄՆ դաշնային ստանդարտ։ SHA-2 ալգորիթմների ընտանիքը արտոնագրված է ԱՄՆ-ում[4]։ Միացյալ Նահանգները արտոնագիրը թողարկել է royalty-free լիցենզիայով[3]։
2011 թվականի դրությամբ լավագույն հրապարակային հարձակումները կոտրել են նախապատկերի դիմադրությունը SHA-256-ի 64 փուլերից 52-ի կամ SHA-512-ի 80 փուլերից 57-ի համար, ինչպես նաև բախման դիմադրությունը SHA-256-ի 64 փուլերից 46-ի համար[5][6]։
Հեշ ստանդարտ
[խմբագրել | խմբագրել կոդը]
FIPS PUB 180-2-ի հրապարակմամբ NIST-ը SHA ընտանիքին ավելացրել է երեք լրացուցիչ հեշ ֆունկցիա։ Ալգորիթմները միասին հայտնի են որպես SHA-2 և անվանվել են ըստ իրենց digest-ների երկարության՝ բիթերով՝ SHA-256, SHA-384 և SHA-512։
Ալգորիթմները առաջին անգամ հրապարակվել են 2001 թվականին FIPS PUB 180-2-ի նախագծում, երբ ընդունվել են հանրային դիտարկումներ և մեկնաբանություններ։ 2002 թվականի օգոստոսին FIPS PUB 180-2-ը դարձել է նոր Secure Hash Standard՝ փոխարինելով FIPS PUB 180-1-ին, որը թողարկվել էր 1995 թվականի ապրիլին։ Թարմացված ստանդարտը ներառել է սկզբնական SHA-1 ալգորիթմը՝ թարմացված տեխնիկական նշագրությամբ, որը համապատասխանեցվել է SHA-2 ընտանիքի ներքին աշխատանքի նկարագրությանը[2]։
2004 թվականի փետրվարին FIPS PUB 180-2-ի համար հրապարակվել է փոփոխության ծանուցում, որով սահմանվել է լրացուցիչ տարբերակ՝ SHA-224, որը նախատեսվել է երկու բանալիով Triple DES-ի բանալիի երկարությանը համապատասխանելու համար[7]։ 2008 թվականի հոկտեմբերին ստանդարտը թարմացվել է FIPS PUB 180-3-ով՝ ներառելով փոփոխության ծանուցման SHA-224-ը, սակայն առանց ստանդարտի հիմնարար փոփոխությունների։ Ստանդարտի թարմացման հիմնական նպատակն այն է եղել, որ հեշ ալգորիթմների մասին անվտանգության տեղեկատվությունը և դրանց օգտագործման վերաբերյալ առաջարկությունները տեղափոխվեն Special Publications 800-107 և 800-57[8][9][10]։ Մանրամասն փորձարկման տվյալները և հաղորդագրությունների digest-ների օրինակները նույնպես հեռացվել են ստանդարտից և տրամադրվել առանձին փաստաթղթերով[11]։
2011 թվականի հունվարին NIST-ը հրապարակել է SP800-131A-ն, որը սահմանել է անցում այդ ժամանակ գործող նվազագույն 80-բիթանոց անվտանգությունից, որը տրամադրվել է SHA-1-ի միջոցով և թույլատրելի էր դաշնային կառավարության օգտագործման համար մինչև 2013 թվականի վերջը, դեպի 112-բիթանոց անվտանգություն, որը տրամադրվել է SHA-2-ի միջոցով և դարձել է նվազագույն պահանջ 2014 թվականից, ինչպես նաև առաջարկվող անվտանգության մակարդակ՝ 2011 թվականի հրապարակման օրվանից սկսած[12]։
2012 թվականի մարտին ստանդարտը թարմացվել է FIPS PUB 180-4-ով՝ ավելացնելով SHA-512/224 և SHA-512/256 հեշ ֆունկցիաները և նկարագրելով SHA-512-ի կրճատված տարբերակների սկզբնական արժեքների գեներացման մեթոդը։ Բացի այդ, հեշի հաշվարկից առաջ մուտքային տվյալների լցման սահմանափակումը հեռացվել է, ինչը թույլ է տվել հեշ տվյալները հաշվարկել բովանդակության գեներացման հետ միաժամանակ, օրինակ՝ իրական ժամանակի տեսա կամ աուդիո հոսքի դեպքում։ Վերջնական տվյալների բլոկի լցումը, սակայն, դեռ պետք է տեղի ունենա նախքան հեշի արդյունքի դուրսբերումը[13]։
2012 թվականի հուլիսին NIST-ը վերանայել է SP800-57-ը, որը ուղեցույց է տրամադրում գաղտնագրական բանալիների կառավարման համար։ Հրապարակումը 2013 թվականից հետո արգելել է 112 բիթից ցածր հեշ անվտանգությամբ թվային ստորագրությունների ստեղծումը։ 2007 թվականի նախորդ վերանայումը վերջնաժամկետ էր սահմանել 2010 թվականի վերջը[10]։ 2012 թվականի օգոստոսին NIST-ը նույն կերպ վերանայել է SP800-107-ը[9]։
2023 թվականի մարտին NIST-ը հայտարարել է FIPS 180-4-ը վերանայելու իր որոշման մասին[14]։ FIPS 180-5-ը հեռացնելու է SHA-1-ի նկարագրությունը, ավելացնելու է SP 800-107-ի ուղեցույցները և ներառելու է խմբագրական թարմացումներ։
NIST հեշ ֆունկցիաների մրցույթը 2012 թվականին ընտրել է նոր հեշ ֆունկցիա՝ SHA-3[15]։ SHA-3 ալգորիթմը չի բխում SHA-2-ից։
Կիրառություններ
[խմբագրել | խմբագրել կոդը]SHA-2 հեշ ֆունկցիան ներդրված է մի շարք լայնորեն օգտագործվող անվտանգության հավելվածներում և արձանագրություններում, այդ թվում՝ TLS և SSL, PGP, SSH, S/MIME և IPsec։ SHA-2 ալգորիթմների բնորոշ հաշվարկային պահանջարկը խթանել է ավելի արդյունավետ լուծումների առաջարկումը, օրինակ՝ կիրառությանը հատուկ ինտեգրալ սխեմաների (ASIC) ապարատային արագացուցիչների վրա հիմնված լուծումներ[16]։
SHA-256-ը օգտագործվում է Debian ծրագրային փաթեթների իսկությունը ստուգելու համար[17] և DKIM հաղորդագրությունների ստորագրման ստանդարտում։ SHA-512-ը Ռուանդայի ցեղասպանության Ռուանդայի միջազգային քրեական տրիբունալի արխիվային տեսանյութերի իսկությունը ստուգելու համակարգի մաս է[18]։ SHA-256-ը և SHA-512-ը օգտագործվում են DNSSEC-ում[19]։ Linux դիստրիբյուտիվները սովորաբար օգտագործում են 512-բիթանոց SHA-2-ը գաղտնաբառերի անվտանգ հեշավորման համար[20][21]։
Մի շարք կրիպտոարժույթներ, այդ թվում՝ Բիթքոյինը, օգտագործում են SHA-256-ը գործարքների ստուգման և աշխատանքի ապացույցի[22] կամ բաժնեմասի ապացույցի հաշվարկի համար[23]։ ASIC SHA-2 արագացուցիչ չիպերի տարածումը հանգեցրել է scrypt-ի վրա հիմնված աշխատանքի ապացույցի սխեմաների օգտագործմանը։
Ինչպես 4G, այնպես էլ 5G բջջային ցանցերում HMAC-SHA-256-ը օգտագործվում է որպես բանալիների ստացման ֆունկցիա (KDF)՝ հաղորդակցությունները պաշտպանելու համար անհրաժեշտ գաղտնագրական բանալիներ գեներացնելու նպատակով։ Այս գործընթացը սահմանված է 3rd Generation Partnership Project-ի (3GPP) TS 33.401[24] և TS 33.501 տեխնիկական բնութագրերում[25], որոնք նկարագրում են այդ ցանցերի անվտանգության ճարտարապետությունն ու ընթացակարգերը։
SHA-1-ը, SHA-2-ը և SHA-3-ը այն Secure Hash Algorithms-ներն են, որոնց օգտագործումը օրենքով պահանջվում է ԱՄՆ կառավարության որոշակի կիրառություններում, այդ թվում՝ այլ գաղտնագրական ալգորիթմների և արձանագրությունների ներսում՝ զգայուն, բայց չգաղտնազերծված տեղեկատվության պաշտպանության համար։ FIPS PUB 180-1-ը նաև խրախուսել է SHA-1-ի ընդունումն ու օգտագործումը մասնավոր և առևտրային կազմակերպությունների կողմից։ SHA-1-ը աստիճանաբար հանվում է պետական օգտագործման մեծ մասից․ ԱՄՆ Ստանդարտների և տեխնոլոգիաների ազգային ինստիտուտը նշել է. «NIST-ը խորհուրդ է տալիս, որ դաշնային գործակալությունները հնարավորինս արագ անցում կատարեն SHA-1-ից հեռու բոլոր կիրառությունների համար։ Դաշնային գործակալությունները պետք է օգտագործեն SHA-2-ը կամ SHA-3-ը որպես SHA-1-ի այլընտրանք»[26]։ NIST-ի հրահանգը, ըստ որի՝ ԱՄՆ պետական գործակալությունները պետք է, սակայն բացահայտ պարտադիր ձևով ոչ թե պարտավոր են, դադարեցնեն SHA-1-ի օգտագործումը 2010 թվականից հետո[27], ակնկալվել է, որ արագացնելու է SHA-1-ից հեռացման գործընթացը։
SHA-2 ֆունկցիաները սկզբում արագ չեն ընդունվել՝ չնայած SHA-1-ի համեմատ ավելի լավ անվտանգությանը։ Պատճառները կարող էին ներառել SHA-2-ի աջակցության բացակայությունը Windows XP SP2 կամ ավելի հին համակարգերով աշխատող համակարգերում[28] և հրատապության պակասը, քանի որ SHA-1 բախումներ դեռ չէին հայտնաբերվել։ Google Chrome թիմը հայտարարել է պլանի մասին, որով իր վեբ դիտարկիչը 2014 թվականի վերջից մինչև 2015 թվականի սկիզբը աստիճանաբար դադարելու էր վստահել SHA-1-ից կախված TLS վկայագրերին[29][30][31]։ Նմանապես, Microsoft-ը հայտարարել է[32], որ Internet Explorer-ը և Edge [Legacy]-ն 2017 թվականի փետրվարից դադարելու են վստահել հանրային SHA-1-ով ստորագրված TLS վկայագրերին։ Mozilla-ն անջատել է SHA-1-ը Firefox-ում 2016 թվականի հունվարի սկզբին, սակայն ստիպված է եղել այն ժամանակավորապես կրկին միացնել թարմացման միջոցով՝ որոշ router մոդելների և անվտանգության սարքերի վեբային օգտատիրական միջերեսների հետ կապված խնդիրներից հետո[33]։
Կրիպտովերլուծություն և վավերացում
[խմբագրել | խմբագրել կոդը]Այն հեշ ֆունկցիայի դեպքում, որի համար L-ը հաղորդագրության ամփոփման բիթերի քանակն է, տրված հաղորդագրության digest-ին համապատասխանող հաղորդագրություն գտնելը միշտ կարելի է կատարել կոպիտ ուժով՝ 2L հաշվարկների միջոցով։ Սա կոչվում է նախապատկերի հարձակում և կարող է գործնական լինել կամ չլինել՝ կախված L-ից և տվյալ հաշվարկային միջավայրից։ Երկրորդ չափանիշը՝ գտնել երկու տարբեր հաղորդագրություններ, որոնք տալիս են նույն հաղորդագրության digest-ը, հայտնի է որպես բախում և միջինում պահանջում է միայն 2L/2 հաշվարկ՝ ծննդյան հարձակում օգտագործելու դեպքում։
Որոշ կիրառություններ, որոնք օգտագործել են գաղտնագրական հեշեր, օրինակ՝ գաղտնաբառերի պահպանումը, միայն նվազագույն չափով են ազդվել բախման հարձակումից։ Տրված հաշվի համար աշխատող գաղտնաբառ կառուցելը պահանջում է նախապատկերի հարձակում, ինչպես նաև սկզբնական գաղտնաբառի հեշին հասանելիություն, որը սովորաբար գտնվում է shadow ֆայլում, և դա կարող է պարզ լինել կամ չլինել։ Գաղտնաբառի գաղտնագրման հետադարձումը, օրինակ՝ օգտատիրոջ հաշվի վրա այլ վայրում փորձելու համար գաղտնաբառ ստանալը, այդ հարձակումներով հնարավոր չի դարձել։ Սակայն նույնիսկ անվտանգ գաղտնաբառային հեշը չի կարող կանխել թույլ գաղտնաբառերի դեմ կոպիտ ուժի հարձակումները։
Փաստաթղթերի ստորագրման դեպքում հարձակվողը չէր կարող պարզապես կեղծել գոյություն ունեցող փաստաթղթի ստորագրությունը․ հարձակվողը պետք է ստեղծեր փաստաթղթերի զույգ՝ մեկը անվնաս, մյուսը վնասակար, և ստիպեր մասնավոր բանալու տիրոջը ստորագրել անվնաս փաստաթուղթը։ Եղել են գործնական հանգամանքներ, որոնցում դա հնարավոր է եղել․ մինչև 2008 թվականի վերջը հնարավոր է եղել ստեղծել կեղծ SSL վկայագրեր՝ օգտագործելով MD5 բախում, որոնք ընդունվել են լայնորեն օգտագործվող վեբ դիտարկիչների կողմից[34]։
SHA-3 մրցույթի ընթացքում գաղտնագրական հեշերի վերլուծության նկատմամբ աճող հետաքրքրությունը SHA-2 ընտանիքի դեմ առաջացրել է մի քանի նոր հարձակումներ, որոնցից լավագույնները ներկայացված են ստորև բերված աղյուսակում։ Գործնական բարդություն ունեն միայն բախման հարձակումները․ հարձակումներից ոչ մեկը չի տարածվել ամբողջական փուլերով հեշ ֆունկցիայի վրա։
FSE 2012-ում Sony-ի հետազոտողները ներկայացրել են աշխատանք, ըստ որի՝ կեղծ բախման հարձակումները կարող են ընդլայնվել մինչև SHA-256-ի 52 փուլ և SHA-512-ի 57 փուլ՝ հիմնվելով բիկլիկային կեղծ նախապատկերի հարձակման վրա[35]։
| Հրապարակված է | Տարի | Հարձակման մեթոդ | Հարձակում | Տարբերակ | Փուլեր | Բարդություն |
|---|---|---|---|---|---|---|
| New Collision Attacks Against Up To 24-step SHA-2[36][37] | 2008 | Դիֆերենցիալ | Բախում | SHA-256 | 24/64 | 215.5 |
| SHA-512 | 24/80 | 222.5 | ||||
| Preimages for step-reduced SHA-2[38] | 2009 | միջինում հանդիպման | Նախապատկեր | SHA-256 | 42/64 | 2251.7 |
| 43/64 | 2254.9 | |||||
| SHA-512 | 42/80 | 2502.3 | ||||
| 46/80 | 2511.5 | |||||
| Advanced meet-in-the-middle preimage attacks[39] | 2010 | Միջինում հանդիպման | Նախապատկեր | SHA-256 | 42/64 | 2248.4 |
| SHA-512 | 42/80 | 2494.6 | ||||
| Higher-Order Differential Attack on Reduced SHA-256[6] | 2011 | դիֆերենցիալ | Կեղծ բախում | SHA-256 | 46/64 | 2178 |
| 33/64 | 246 | |||||
| Bicliques for Preimages: Attacks on Skein-512 and the SHA-2 family[5] | 2011 | բիկլիկային | Նախապատկեր | SHA-256 | 45/64 | 2255.5 |
| SHA-512 | 50/80 | 2511.5 | ||||
| Կեղծ նախապատկեր | SHA-256 | 52/64 | 2255 | |||
| SHA-512 | 57/80 | 2511 | ||||
| Improving Local Collisions: New Attacks on Reduced SHA-256[40] | 2013 | Դիֆերենցիալ | Բախում | SHA-256 | 31/64 | 265.5 |
| Կեղծ բախում | SHA-256 | 38/64 | 237 | |||
| Branching Heuristics in Differential Collision Search with Applications to SHA-512[41] | 2014 | Էվրիստիկ դիֆերենցիալ | Կեղծ բախում | SHA-512 | 38/80 | 240.5 |
| Analysis of SHA-512/224 and SHA-512/256[42] | 2016 | Դիֆերենցիալ | Բախում | SHA-256 | 28/64 | գործնական |
| SHA-512 | 27/80 | գործնական | ||||
| Կեղծ բախում | SHA-512 | 39/80 | գործնական | |||
| New Records in Collision Attacks on SHA-2[43] | 2024 | Դիֆերենցիալ | Բախում | SHA-256 | 31/64 | 249.8 |
| SHA-512 | 31/80 | 2115.6 | ||||
| Կեղծ բախում | SHA-256 | 39/64 | գործնական |
Պաշտոնական վավերացում
[խմբագրել | խմբագրել կոդը]FIPS-ով հաստատված բոլոր անվտանգության ֆունկցիաների իրականացումները կարող են պաշտոնապես վավերացվել CMVP ծրագրի միջոցով, որը համատեղ վարում են Ստանդարտների և տեխնոլոգիաների ազգային ինստիտուտը (NIST) և Կապի անվտանգության հաստատությունը (CSE)։ Ոչ պաշտոնական ստուգման համար NIST-ի կայքում ներբեռնման համար հասանելի է դարձել մեծ թվով փորձարկման վեկտորներ գեներացնող փաթեթ․ սակայն այդ ստուգումը չի փոխարինել պաշտոնական CMVP վավերացմանը, որը որոշ կիրառությունների համար պահանջվում է օրենքով[44]։
As of Դեկտեմբերի 2013,[update] եղել են SHA-256-ի ավելի քան 1300 և SHA-512-ի ավելի քան 900 վավերացված իրականացումներ, որոնցից միայն 5-ն են կարողացել մշակել այնպիսի հաղորդագրություններ, որոնց երկարությունը բիթերով ութի բազմապատիկ չէ՝ միաժամանակ աջակցելով երկու տարբերակներին[45]։
Փորձարկման վեկտորներ
[խմբագրել | խմբագրել կոդը]Դատարկ տողի հեշ արժեքները, այսինքն՝ զրոյական երկարության մուտքային տեքստի համար։
SHA224("") 0x d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f SHA256("") 0x e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 SHA384("") 0x 38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b SHA512("") 0x cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e SHA512/224("") 0x 6ed0dd02806fa89e25de060c19d3ac86cabb87d6a0ddd05c333b84f4 SHA512/256("") 0x c672b8d1ef56ed28ab87c3622c5114069bdd3ad7b8f9737498d0c01ecef0967a
Հաղորդագրության նույնիսկ փոքր փոփոխությունը ճնշող հավանականությամբ հանգեցնում է այլ հեշի՝ ավալանշի էֆեկտի պատճառով։ Օրինակ՝ հետևյալ նախադասության վերջում կետ ավելացնելը փոխել է հեշի բիթերի մոտավորապես կեսը՝ 224-ից 111-ը, ինչը համարժեք է նոր հեշը պատահականորեն ընտրելուն։
SHA224("Արագ շագանակագույն աղվեսը ցատկում է ծույլ շան վրայով") 0x 730e109bd7a8a32b1cb9d9a09aa2325d2430587ddbc0c38bad911525 SHA224("Արագ շագանակագույն աղվեսը ցատկում է ծույլ շան վրայովԿաղապար:Highlight") 0x 619cba8e8e05826e9b8c519c0a5c68f4fb653e8a3d8aa04bb2c8cd4c
Կեղծ կոդ
[խմբագրել | խմբագրել կոդը]Ստորև ներկայացված է SHA-256 ալգորիթմի կեղծ կոդը։ Նկատելի է w[16..63] բառերի բիթերի միջև խառնման մեծ աճը SHA-1-ի համեմատ։ Նշում 1. բոլոր փոփոխականները 32-բիթանոց աննշան ամբողջ թվեր են, իսկ գումարումը հաշվարկվում է 232 մոդուլով
Նշում 2. յուրաքանչյուր փուլի համար կա մեկ փուլային հաստատուն k[i] և մեկ գրառում հաղորդագրության ժամանակացույցի w[i] զանգվածում, 0 ≤ i ≤ 63 Նշում 3. սեղմման ֆունկցիան օգտագործում է 8 աշխատանքային փոփոխական՝ a-ից h Նշում 4. այս կեղծ կոդում հաստատունները արտահայտելիս օգտագործվել է Big-endian պայմանավորվածությունը, ինչպես նաև հաղորդագրության բլոկի տվյալները բայթերից բառերի վերլուծելիս, օրինակ՝ մուտքային «abc» հաղորդագրության առաջին բառը լցումից հետո 0x61626380 է Սկզբնավորել հեշ արժեքները. (2..19 առաջին 8 պարզ թվերի քառակուսի արմատների կոտորակային մասերի առաջին 32 բիթերը). h0 := 0x6a09e667 h1 := 0xbb67ae85 h2 := 0x3c6ef372 h3 := 0xa54ff53a h4 := 0x510e527f h5 := 0x9b05688c h6 := 0x1f83d9ab h7 := 0x5be0cd19 Սկզբնավորել փուլային հաստատունների զանգվածը. (2..311 առաջին 64 պարզ թվերի խորանարդ արմատների կոտորակային մասերի առաջին 32 բիթերը). k[0..63] := 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2 Նախամշակում՝ լցում. սկսել սկզբնական հաղորդագրությունից, որի երկարությունը L բիթ է ավելացնել մեկ '1' բիթ ավելացնել K '0' բիթ, որտեղ K-ն նվազագույն թիվն է >= 0, այնպես որ (L + 1 + K + 64)-ը լինի 512-ի բազմապատիկ ավելացնել L-ը որպես 64-բիթանոց big-endian ամբողջ թիվ՝ այնպես, որ հետմշակված ընդհանուր երկարությունը լինի 512 բիթի բազմապատիկ այնպես, որ հաղորդագրության բիթերը լինեն՝ ⟨y⟩ 1 ⟨y⟩ ⟨y⟩
, իսկ բիթերի քանակը լինի 512-ի բազմապատիկ
Մշակել հաղորդագրությունը հաջորդական 512-բիթանոց հատվածներով. բաժանել հաղորդագրությունը 512-բիթանոց հատվածների յուրաքանչյուր հատվածի համար ստեղծել 64 գրառում ունեցող հաղորդագրության ժամանակացույցի w[0..63] զանգված՝ 32-բիթանոց բառերով (w[0..63]-ի սկզբնական արժեքները նշանակություն չունեն, ուստի շատ իրականացումներ այստեղ դրանք զրոյացնում են) պատճենել հատվածը հաղորդագրության ժամանակացույցի զանգվածի առաջին 16 բառերի մեջ՝ w[0..15] Ընդլայնել առաջին 16 բառերը հաղորդագրության ժամանակացույցի զանգվածի մնացած 48 բառերի՝ w[16..63] մեջ. i-ի համար 16-ից մինչև 63 s0 := (w[i-15] rightrotate 7) xor (w[i-15] rightrotate 18) xor (w[i-15] rightshift 3) s1 := (w[i-2] rightrotate 17) xor (w[i-2] rightrotate 19) xor (w[i-2] rightshift 10) w[i] := w[i-16] + s0 + w[i-7] + s1 Սկզբնավորել աշխատանքային փոփոխականները ընթացիկ հեշ արժեքով. a := h0 b := h1 c := h2 d := h3 e := h4 f := h5 g := h6 h := h7 Սեղմման ֆունկցիայի հիմնական ցիկլ. i-ի համար 0-ից մինչև 63 S1 := (e rightrotate 6) xor (e rightrotate 11) xor (e rightrotate 25) ch := (e and f) xor ((not e) and g) temp1 := h + S1 + ch + k[i] + w[i] S0 := (a rightrotate 2) xor (a rightrotate 13) xor (a rightrotate 22) maj := (a and b) xor (a and c) xor (b and c) temp2 := S0 + maj h := g g := f f := e e := d + temp1 d := c c := b b := a a := temp1 + temp2 Ավելացնել սեղմված հատվածը ընթացիկ հեշ արժեքին. h0 := h0 + a h1 := h1 + b h2 := h2 + c h3 := h3 + d h4 := h4 + e h5 := h5 + f h6 := h6 + g h7 := h7 + h Ստանալ վերջնական հեշ արժեքը՝ big-endian ձևով. digest := hash := h0 append h1 append h2 append h3 append h4 append h5 append h6 append h7
ch և maj արժեքների հաշվարկը կարելի է օպտիմալացնել նույն ձևով, ինչպես նկարագրված է SHA-1-ի համար։
SHA-224-ը նույնական է SHA-256-ին, բացառությամբ հետևյալի.
- սկզբնական հեշ արժեքները՝
h0-ից մինչևh7, տարբեր են, - արդյունքը կառուցվել է՝ բաց թողնելով
h7-ը։
SHA-224-ի սկզբնական հեշ արժեքները՝ big endian ձևով. (23..53՝ 9-րդից մինչև 16-րդ պարզ թվերի քառակուսի արմատների կոտորակային մասերի երկրորդ 32 բիթերը) h[0..7] := 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939, 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4
SHA-512-ը կառուցվածքով նույնական է SHA-256-ին, սակայն.
- հաղորդագրությունը բաժանվել է 1024-բիթանոց հատվածների,
- սկզբնական հեշ արժեքները և փուլային հաստատունները ընդլայնվել են մինչև 64 բիթ,
- 64-ի փոխարեն կա 80 փուլ,
- հաղորդագրության ժամանակացույցի w զանգվածը ունի 80 հատ 64-բիթանոց բառ՝ 64 հատ 32-բիթանոց բառի փոխարեն,
- հաղորդագրության ժամանակացույցի w զանգվածը ընդլայնելու համար ցիկլը 16-ից մինչև 79 է՝ 16-ից մինչև 63-ի փոխարեն,
- փուլային հաստատունները հիմնված են 2..409 առաջին 80 պարզ թվերի վրա,
- հաշվարկների համար օգտագործվող բառի չափը 64 բիթ է,
- հաղորդագրության կցված երկարությունը նախամշակումից առաջ՝ բիթերով, 128-բիթանոց big-endian ամբողջ թիվ է,
- օգտագործվող տեղաշարժման և պտտման չափերը տարբեր են։
SHA-512-ի սկզբնական հեշ արժեքները՝ big-endian ձևով. h[0..7] := 0x6a09e667f3bcc908, 0xbb67ae8584caa73b, 0x3c6ef372fe94f82b, 0xa54ff53a5f1d36f1, 0x510e527fade682d1, 0x9b05688c2b3e6c1f, 0x1f83d9abfb41bd6b, 0x5be0cd19137e2179 SHA-512-ի փուլային հաստատուններ. k[0..79] := 0x428a2f98d728ae22, 0x7137449123ef65cd, 0xb5c0fbcfec4d3b2f, 0xe9b5dba58189dbbc, 0x3956c25bf348b538, 0x59f111f1b605d019, 0x923f82a4af194f9b, 0xab1c5ed5da6d8118, 0xd807aa98a3030242, 0x12835b0145706fbe, 0x243185be4ee4b28c, 0x550c7dc3d5ffb4e2, 0x72be5d74f27b896f, 0x80deb1fe3b1696b1, 0x9bdc06a725c71235, 0xc19bf174cf692694, 0xe49b69c19ef14ad2, 0xefbe4786384f25e3, 0x0fc19dc68b8cd5b5, 0x240ca1cc77ac9c65, 0x2de92c6f592b0275, 0x4a7484aa6ea6e483, 0x5cb0a9dcbd41fbd4, 0x76f988da831153b5, 0x983e5152ee66dfab, 0xa831c66d2db43210, 0xb00327c898fb213f, 0xbf597fc7beef0ee4, 0xc6e00bf33da88fc2, 0xd5a79147930aa725, 0x06ca6351e003826f, 0x142929670a0e6e70, 0x27b70a8546d22ffc, 0x2e1b21385c26c926, 0x4d2c6dfc5ac42aed, 0x53380d139d95b3df, 0x650a73548baf63de, 0x766a0abb3c77b2a8, 0x81c2c92e47edaee6, 0x92722c851482353b, 0xa2bfe8a14cf10364, 0xa81a664bbc423001, 0xc24b8b70d0f89791, 0xc76c51a30654be30, 0xd192e819d6ef5218, 0xd69906245565a910, 0xf40e35855771202a, 0x106aa07032bbd1b8, 0x19a4c116b8d2d0c8, 0x1e376c085141ab53, 0x2748774cdf8eeb99, 0x34b0bcb5e19b48a8, 0x391c0cb3c5c95a63, 0x4ed8aa4ae3418acb, 0x5b9cca4f7763e373, 0x682e6ff3d6b2b8a3, 0x748f82ee5defb2fc, 0x78a5636f43172f60, 0x84c87814a1f0ab72, 0x8cc702081a6439ec, 0x90befffa23631e28, 0xa4506cebde82bde9, 0xbef9a3f7b2c67915, 0xc67178f2e372532b, 0xca273eceea26619c, 0xd186b8c721c0c207, 0xeada7dd6cde0eb1e, 0xf57d4f7fee6ed178, 0x06f067aa72176fba, 0x0a637dc5a2c898a6, 0x113f9804bef90dae, 0x1b710b35131c471b, 0x28db77f523047d84, 0x32caab7b40c72493, 0x3c9ebe0a15c9bebc, 0x431d67c49c100d4c, 0x4cc5d4becb3e42b6, 0x597f299cfc657e2a, 0x5fcb6fab3ad6faec, 0x6c44198c4a475817 SHA-512 Sum և Sigma. S0 := (a rightrotate 28) xor (a rightrotate 34) xor (a rightrotate 39) S1 := (e rightrotate 14) xor (e rightrotate 18) xor (e rightrotate 41) s0 := (w[i-15] rightrotate 1) xor (w[i-15] rightrotate 8) xor (w[i-15] rightshift 7) s1 := (w[i-2] rightrotate 19) xor (w[i-2] rightrotate 61) xor (w[i-2] rightshift 6)
SHA-384-ը նույնական է SHA-512-ին, բացառությամբ հետևյալի.
- սկզբնական հեշ արժեքները՝
h0-ից մինչևh7, տարբեր են և վերցված են 9-րդից մինչև 16-րդ պարզ թվերից, - արդյունքը կառուցվել է՝ բաց թողնելով
h6-ը ևh7-ը։
SHA-384-ի սկզբնական հեշ արժեքները՝ big-endian ձևով. h[0..7] := 0xcbbb9d5dc1059ed8, 0x629a292a367cd507, 0x9159015a3070dd17, 0x152fecd8f70e5939, 0x67332667ffc00b31, 0x8eb44a8768581511, 0xdb0c2e0d64f98fa7, 0x47b5481dbefa4fa4
SHA-512/t-ն նույնական է SHA-512-ին, բացառությամբ հետևյալի.
- սկզբնական հեշ արժեքները՝
h0-ից մինչևh7, տրված են SHA-512/t IV generation function-ով, - արդյունքը կառուցվել է՝
h0-ից մինչևh7միացման կրճատմամբ մինչև t բիթ, - t-ի 384 արժեքը թույլատրված չէ, փոխարենը պետք է օգտագործվի SHA-384-ը ըստ սահմանման,
- t-ի 224 և 256 արժեքները հատուկ նշվել են որպես հաստատված։
SHA-512/224-ի սկզբնական հեշ արժեքները՝ big-endian ձևով. h[0..7] := 0x8c3d37c819544da2, 0x73e1996689dcd4d6, 0x1dfab7ae32ff9c82, 0x679dd514582f9fcf, 0x0f6d2b697bd44da8, 0x77e36f7304C48942, 0x3f9d85a86a1d36C8, 0x1112e6ad91d692a1 SHA-512/256-ի սկզբնական հեշ արժեքները՝ big-endian ձևով. h[0..7] := 0x22312194fc2bf72c, 0x9f555fa3c84c64c2, 0x2393b86b6f53b151, 0x963877195940eabd, 0x96283ee2a88effe3, 0xbe5e1e2553863992, 0x2b0199fc2c85b8aa, 0x0eb72ddC81c52ca2
SHA-512/t IV generation function-ը հաշվարկում է փոփոխված SHA-512 ASCII տողի՝ "SHA-512/t" վրա, որտեղ t-ն փոխարինվել է իր տասնորդական ներկայացմամբ։ Փոփոխված SHA-512-ը նույնն է, ինչ SHA-512-ը, բացառությամբ այն բանի, որ դրա սկզբնական արժեքները՝ h0-ից մինչև h7, յուրաքանչյուրը XOR-վել է 0xa5a5a5a5a5a5a5a5 տասնվեցական հաստատունով։
SHA-2 ընտանիքի հեշ ֆունկցիաների C լեզվով օրինակային իրականացումը կարելի է գտնել Կաղապար:IETF RFC-ում։
SHA ֆունկցիաների համեմատություն
[խմբագրել | խմբագրել կոդը]Ստորև բերված աղյուսակում ներքին վիճակ նշանակում է տվյալների յուրաքանչյուր բլոկի սեղմումից հետո ստացված «ներքին հեշ գումարը»։
Բիթային գործողությունների սյունակում «Rot»-ը նշանակում է պտտում առանց փոխանցման, իսկ «Shr»-ը՝ աջ տրամաբանական տեղաշարժ։ Բոլոր այս ալգորիթմները որոշակի ձևով օգտագործում են մոդուլային գումարում, բացառությամբ SHA-3-ի։
Ժամանակակից պրոցեսորային ճարտարապետությունների վրա ավելի մանրամասն կատարողական չափումները տրված են ստորև բերված աղյուսակում։
| CPU ճարտարապետություն | Հաճախականություն | Ալգորիթմ | Բառի չափ՝ բիթերով | Ցիկլ/բայթ x86 | MiB/վ x86 | Ցիկլ/բայթ x86-64 | MiB/վ x86-64 |
|---|---|---|---|---|---|---|---|
| Intel Ivy Bridge | 3.5 GHz | SHA-256 | 32 | 16.80 | 199 | 13.05 | 256 |
| SHA-512 | 64 | 43.66 | 76 | 8.48 | 394 | ||
| AMD Piledriver APU | 3.8 GHz | SHA-256 | 32 | 22.87 | 158 | 18.47 | 196 |
| SHA-512 | 64 | 88.36 | 41 | 12.43 | 292 |
«x86» նշումով կատարողականի թվերը ստացվել են 32-բիթանոց կոդով 64-բիթանոց պրոցեսորների վրա, մինչդեռ «x86-64» թվերը վերաբերում են բնիկ 64-բիթանոց կոդին։ Թեև SHA-256-ը նախագծված է 32-բիթանոց հաշվարկների համար, այն x86 ճարտարապետության վրա շահում է 64-բիթանոց պրոցեսորների համար օպտիմալացված կոդից։ SHA-512-ի 32-բիթանոց իրականացումները զգալիորեն ավելի դանդաղ են, քան դրանց 64-բիթանոց համարժեքները։ Երկու ալգորիթմների տարբեր ելքային չափերով տարբերակները կունենան նման կատարողական, քանի որ հաղորդագրության ընդլայնման և սեղմման ֆունկցիաները նույնական են, և տարբերվում են միայն սկզբնական հեշ արժեքներն ու ելքային չափերը։ MD5-ի և SHA-1-ի լավագույն իրականացումները ժամանակակից պրոցեսորների վրա աշխատում են մեկ բայթի համար 4.5-ից 6 ցիկլ արագությամբ։
Փորձարկումն իրականացվել է Չիկագոյի Իլինոյսի համալսարանի կողմից իրենց hydra8 համակարգի վրա, որը աշխատել է Intel Xeon E3-1275 V2-ով՝ 3.5 ԳՀց տակտային հաճախականությամբ, և hydra9 համակարգի վրա, որը աշխատել է AMD A10-5800K APU-ով՝ 3.8 ԳՀց տակտային հաճախականությամբ[46]։ Վերևում նշված մեկ բայթի համար ցիկլերի արագությունները 4,096 բայթանոց հաղորդագրության digest հաշվարկող ալգորիթմի միջնարժեք կատարողականն են՝ օգտագործելով SUPERCOP գաղտնագրական բենչմարքինգի ծրագրային ապահովումը[47]։ MiB/վ կատարողականը արտածվել է CPU-ի տակտային հաճախականությունից մեկ միջուկի համար․ իրական կատարողականը տարբերվելու է բազմաթիվ գործոնների պատճառով։
Իրականացումներ
[խմբագրել | խմբագրել կոդը]SHA-2 աջակցող գաղտնագրական գրադարաններ.
- Botan
- Bouncy Castle
- Cryptlib
- Crypto++
- Libgcrypt
- Mbed TLS[48][49]
- libsodium
- Nettle
- LibreSSL
- OpenSSL
- GnuTLS
- wolfSSL
Ապարատային արագացում տրամադրվել է հետևյալ պրոցեսորային ընդլայնումներով.
- Intel SHA ընդլայնումներ. հասանելի է որոշ Intel և AMD x86 պրոցեսորների վրա։
- VIA PadLock
- ARMv8 Cryptography Extensions[50]
- IBM z/Architecture. հասանելի է 2005 թվականից՝ որպես Message-Security-Assist Extensions 1-ի (SHA-256) և 2-ի (SHA-512) մաս[51]
- IBM Power ISA՝ v.2.07-ից սկսած
Ծանոթագրություններ
[խմբագրել | խմբագրել կոդը]- ↑ Penard, Wouter; van Werkhoven, Tim. «On the Secure Hash Algorithm family» (PDF). staff.science.uu.nl. Արխիվացված է օրիգինալից (PDF) 2016-03-30-ին.
- 1 2 Federal Register Notice 02-21599, Announcing Approval of FIPS Publication 180-2 Արխիվացված 2022-03-14 Wayback Machine
- 1 2 «IPR Details: The United States of America as represented by the National Security Agency's general license statement». IETF Datatracker. 858. Արխիվացված օրիգինալից 2016-06-16-ին. Վերցված է 2008-02-17-ին.
- ↑ US 6829355, Lilly, Glenn M., "Device for and method of one-way cryptographic hashing", published 2004-12-07, assigned to National Security Agency
- 1 2 Khovratovich, Dmitry; Rechberger, Christian & Savelieva, Alexandra (2011). «Bicliques for Preimages: Attacks on Skein-512 and the SHA-2 family» (PDF). IACR Cryptology ePrint Archive. 2011 (286). Արխիվացված (PDF) օրիգինալից 2022-02-15-ին. Վերցված է 2022-02-15-ին.
- 1 2 Lamberger, Mario & Mendel, Florian (2011). «Higher-Order Differential Attack on Reduced SHA-256» (PDF). IACR Cryptology ePrint Archive. 2011 (37). Արխիվացված (PDF) օրիգինալից 2022-12-22-ին. Վերցված է 2022-02-15-ին.
- ↑ «FIPS 180-2 with Change Notice 1» (PDF). csrc.nist.gov. Արխիվացված (PDF) օրիգինալից 2017-08-09-ին. Վերցված է 2022-02-15-ին.
- ↑ Federal Register Notice E8-24743, Announcing Approval of FIPS Publication 180-3
- 1 2 Dang, Quynh (2012-08-24). Recommendation for Applications Using Approved Hash Algorithms (Report) (անգլերեն). National Institute of Standards and Technology. Արխիվացված օրիգինալից 2023-08-28-ին. Վերցված է 2023-08-28-ին.
- 1 2 Barker, Elaine; Barker, William; Burr, William; Polk; Smid, Miles (2012-07-10). Recommendation for Key Management, Part 1: General (Revision 3) (Report) (անգլերեն). National Institute of Standards and Technology. Արխիվացված օրիգինալից 2023-08-28-ին. Վերցված է 2023-08-28-ին.
- ↑ «NIST.gov – Computer Security Division – Computer Security Resource Center». 2016 թ․ դեկտեմբերի 29. Արխիվացված օրիգինալից 2017 թ․ սեպտեմբերի 9-ին. Վերցված է 2022 թ․ փետրվարի 15-ին.
- ↑ Barker, Elaine; Roginsky, Allen (2011-01-13). Transitions: Recommendation for Transitioning the Use of Cryptographic Algorithms and Key Lengths (Report) (անգլերեն). National Institute of Standards and Technology. Արխիվացված օրիգինալից 2023-08-28-ին. Վերցված է 2023-08-28-ին.
- ↑ Federal Register Notice 2012-5400, Announcing Approval of FIPS Publication 180-4.
- ↑ NIST, Decision to Revise FIPS 180-4, Secure Hash Standard (SHS)
- ↑ «NIST Selects Winner of Secure Hash Algorithm (SHA-3) Competition». NIST. 2012 թ․ հոկտեմբերի 2. Արխիվացված օրիգինալից 2015 թ․ ապրիլի 2-ին. Վերցված է 2015 թ․ փետրվարի 24-ին.
- ↑ Franck, Lucas Daudt; Ginja, Gabriel Augusto; Carmo, João Paulo; Afonso, Jose A.; Luppe, Maximiliam (2024). «Custom ASIC Design for SHA-256 Using Open-Source Tools». Computers. 13 (1): 9. doi:10.3390/computers13010009. hdl:1822/89307.
- ↑ «Verifying authenticity of Debian images». Արխիվացված օրիգինալից 2024-02-19-ին. Վերցված է 2024-02-19-ին.
- ↑ Markoff, John (2009-01-27). «A Tool to Verify Digital Records, Even as Technology Shifts». The New York Times (ամերիկյան անգլերեն). ISSN 0362-4331. Արխիվացված օրիգինալից 2023-09-19-ին. Վերցված է 2023-08-27-ին.
- ↑ Hardaker, Wes (2022-08-12). Remove SHA-1 from active use within DNSSEC (Report). Internet Engineering Task Force.
- ↑ «Security/Features - Debian Wiki». wiki.debian.org. Վերցված է 2025-01-13-ին.
- ↑ «SHA hashes – Arch Wiki». wiki.archlinux.org. Վերցված է 2025-01-13-ին.
- ↑ «Bitcoin Does Not Waste Energy». Surplus Bitcoin (ամերիկյան անգլերեն). Արխիվացված է օրիգինալից 2022-05-28-ին. Վերցված է 2020-04-20-ին.
- ↑ «What Is SHA-256 And How Is It Related to Bitcoin? - Mycryptopedia». Mycryptopedia (ամերիկյան անգլերեն). 2017-09-21. Արխիվացված օրիգինալից 2018-09-17-ին. Վերցված է 2018-09-17-ին.
- ↑ 3GPP TS 33.401, Security architecture and procedures for E-UTRAN
- ↑ 3GPP TS 33.501, Security architecture and procedures for 5G systems
- ↑ Computer Security Division, Information Technology Laboratory (2017-01-04). «NIST Policy on Hash Functions – Hash Functions | CSRC | CSRC». CSRC | NIST (ամերիկյան անգլերեն). Արխիվացված օրիգինալից 2023-08-28-ին. Վերցված է 2023-08-27-ին.
- ↑ «Secure Hashing». NIST. Արխիվացված է օրիգինալից 2011-06-25-ին. Վերցված է 2010-11-25-ին.
- ↑ «Overview of Windows XP Service Pack 3» (PDF). Microsoft Corporation. Արխիվացված է օրիգինալից (PDF) 2008 թ․ մայիսի 30-ին.
- ↑ «Gradually Sunsetting SHA-1». Chromium Blog (անգլերեն). Արխիվացված օրիգինալից 2023-08-07-ին. Վերցված է 2023-08-27-ին.
- ↑ Mill, Eric. «SHAAAAAAAAAAAAA». SHAAAAAAAAAAAAA.com. Արխիվացված օրիգինալից 2017-03-01-ին. Վերցված է 2015-08-26-ին.
- ↑ «The unofficial Chrome SHA1 deprecation FAQ». Filippo Valsorda. 2015-04-08. Արխիվացված օրիգինալից 2023-08-28-ին. Վերցված է 2023-08-27-ին.
- ↑ «An update to our SHA-1 deprecation roadmap – Microsoft Edge Dev Blog». blogs.windows.com. 2016 թ․ ապրիլի 29. Արխիվացված օրիգինալից 2016-11-28-ին. Վերցված է 2016-11-28-ին.
- ↑ «Firefox: Mozilla schaltet SHA-1 ab … und direkt wieder an». heise.de (գերմաներեն). 2016-01-08. Արխիվացված օրիգինալից 2023-08-28-ին. Վերցված է 2025-01-18-ին.
- ↑ Alexander Sotirov, Marc Stevens, Jacob Appelbaum, Arjen Lenstra, David Molnar, Dag Arne Osvik, Benne de Weger, MD5 considered harmful today: Creating a rogue CA certificate. Արխիվացված 2022-03-23 Wayback Machine, accessed March 29, 2009.
- ↑ Ji Li, Takanori Isobe and Kyoji Shibutani, Sony China Research Laboratory and Sony Corporation, Converting Meet-in-the-Middle Preimage Attack into Pseudo Collision Attack: Application to SHA-2 . Արխիվացված 2022-02-24 Wayback Machine.
- ↑ Sanadhya, Somitra Kumar; Sarkar, Palash (2008), New collision attacks against up to 24-step SHA-2, Lecture Notes in Computer Science, vol. 5365, Springer-Verlag, էջեր 91–103, doi:10.1007/978-3-540-89754-5_8, ISBN 978-3-540-89753-8, Արխիվացված օրիգինալից 2022-01-21-ին, Վերցված է 2024-02-12-ին.
- ↑ Sanadhya, Somitra Kumar; Sarkar, Palash (2009). «A combinatorial analysis of recent attacks on step reduced SHA-2 family». Cryptography and Communications. 1 (2): 135–173. doi:10.1007/s12095-009-0011-5. Արխիվացված օրիգինալից 2023-08-02-ին. Վերցված է 2024-02-12-ին.
- ↑ Aoki, Kazumaro; Guo, Jian; Matusiewicz, Krystian; Sasaki, Yu & Wang, Lei (2009). «Preimages for Step-Reduced SHA-2». Advances in Cryptology – ASIACRYPT 2009. Lecture Notes in Computer Science. Vol. 5912. Springer Berlin Heidelberg. էջեր 578–597. doi:10.1007/978-3-642-10366-7_34. ISBN 978-3-642-10366-7. ISSN 0302-9743.
- ↑ Guo, Jian; Ling, San; Rechberger, Christian & Wang, Huaxiong (2010). «Advanced Meet-in-the-Middle Preimage Attacks: First Results on Full Tiger, and Improved Results on MD4 and SHA-2». Advances in Cryptology – ASIACRYPT 2010 (PDF). Lecture Notes in Computer Science. Vol. 6477. Springer Berlin Heidelberg. էջեր 56–75. doi:10.1007/978-3-642-17373-8_4. ISBN 978-3-642-17373-8. ISSN 0302-9743. Արխիվացված (PDF) օրիգինալից 2022-03-03-ին. Վերցված է 2022-02-15-ին.
- ↑ Mendel, Florian; Nad, Tomislav; Schläffer, Martin (2013). «Improving Local Collisions: New Attacks on Reduced SHA-256». Advances in Cryptology – EUROCRYPT 2013. Lecture Notes in Computer Science. Vol. 7881. Springer Berlin Heidelberg. էջեր 262–278. doi:10.1007/978-3-642-38348-9_16. ISBN 978-3-642-38348-9. ISSN 0302-9743. Արխիվացված օրիգինալից 2018-11-06-ին. Վերցված է 2014-12-13-ին.
- ↑ Eichlseder, Maria; Mendel, Florian; and Schläffer, Martin (2014). «Branching Heuristics in Differential Collision Search with Applications to SHA-512» (PDF). IACR Cryptology ePrint Archive. 2014 (302). Արխիվացված (PDF) օրիգինալից 2022-01-20-ին. Վերցված է 2022-02-15-ին.
- ↑ Dobraunig, Christoph; Eichlseder, Maria & Mendel, Florian (2016). «Analysis of SHA-512/224 and SHA-512/256» (PDF). International Association for Cryptologic Research. Արխիվացված (PDF) օրիգինալից 2017-07-15-ին. Վերցված է 2016-04-15-ին.
- ↑ Li, Yingxin; Liu, Fukang; Wang, Gaoli (2024). «New Records in Collision Attacks on SHA-2». Cryptology ePrint Archive. Արխիվացված օրիգինալից 2024-03-02-ին. Վերցված է 2024-03-02-ին.
- ↑ «Secure Hashing – Cryptographic Algorithm Validation Program». NIST CSRC. 2016 թ․ հոկտեմբերի 5. Վերցված է 2025 թ․ նոյեմբերի 8-ին.
- ↑ «SHS Validation List». NIST. 2017-06-16. Արխիվացված է օրիգինալից 2017-06-17-ին.
- ↑ SUPERCOP Benchmarks Measurements of hash functions, indexed by machine.
- ↑ «SUPERCOP». Արխիվացված օրիգինալից 2015 թ․ փետրվարի 15-ին. Վերցված է 2015 թ․ փետրվարի 24-ին.
- ↑ «Supported SSL / TLS ciphersuites». Արխիվացված օրիգինալից 2019-05-12-ին. Վերցված է 2019-10-19-ին.
- ↑ «Mbed TLS Changelog, 7 July 2007». GitHub. Արխիվացված օրիգինալից 2019 թ․ փետրվարի 4-ին. Վերցված է 2019 թ․ հոկտեմբերի 19-ին.
- ↑ «ARM Cortex-A53 MPCore Processor Technical Reference Manual Cryptography Extension». Արխիվացված օրիգինալից 2020-06-01-ին. Վերցված է 2022-02-15-ին.
- ↑ IBM z/Architecture Principles of Operation, publication number SA22-7832. See KIMD and KLMD instructions in Chapter 7.
Գրականություն
[խմբագրել | խմբագրել կոդը]- 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-07-11. Արխիվացված օրիգինալից 2020-07-28-ին. Վերցված է 2007-04-26-ին.
Արտաքին հղումներ
[խմբագրել | խմբագրել կոդը]- Descriptions of SHA-256, SHA-384, and SHA-512 from NIST
- SHA-2 Checker – SHAChecker to check one's SSL compatibility for SHA-2
- SHA-256 Calculator – SHA-256 Calculator
- Specifications for a Secure Hash Standard (SHS) – Draft for proposed SHS (SHA-0)
- Secure Hash Standard (SHS) – Proposed SHS (SHA-0)
- CSRC Cryptographic Toolkit – Official NIST site for the Secure Hash Standard
- FIPS PUB 180-4: Secure Hash Standard (SHS) (PDF, 834 KB) – Current version of the Secure Hash Standard (SHA-1, SHA-224, SHA-256, SHA-384, and SHA-512), August 2015
- Test vectors for SHA-256/384/512 from the NESSIE project
- Test vectors for SHA-1, SHA-2 from NIST site
- NIST Cryptographic Hash Project – SHA-3 competition
- SHA-256 algorithm demonstration