Kupyna | |
---|---|
Vývojáři | PJSC "Institut informačních technologií" ( Charkov ) |
Vytvořeno | 2014 |
zveřejněno | 2. prosince 2014 |
Předchůdce | GOST 34.311-95 |
Normy | DSTU 7564:2014 |
Velikost hash | proměnná, 8–512 bitů (doporučené hodnoty 256, 384, 512) |
Počet kol | 10 s délkou hash 8-256 bitů; 14 s délkou hash 264-512 bitů |
Typ | hashovací funkce |
Kupyna ( ukrajinsky: Kupina ) je iterativní kryptografická hašovací funkce . Přijata jako národní norma Ukrajiny DSTU 7564:2014 [1] jako náhrada za zastaralou hashovací funkci GOST 34.311-95 . Kupynova kontrakce se skládá ze dvou pevných 2n-bitových permutací T ⊕ a T + , jejichž struktura je vypůjčena z Kalynovy šifry . Konkrétně se používají čtyři stejné S-boxy . Výsledek hashovací funkce může mít délku 8 až 512 bitů. Varianta, která vrací n bitů, se nazývá " Kupyna-n " [2] .
Kupena lékárna - rostlina z čeledi Ruscaceae , rostoucí po celé Ukrajině v jehličnatých a smíšených lesích, je uvedena v Červené knize Ukrajiny . [3]
Nejprve je zpráva doplněna na délku násobkem velikosti bloku. K tomu se ke zprávě přidá 1 bit , poté nula bitů, kde a 96 bitů, obsahujících délku zprávy v bitech. Maximální délka zprávy je tedy bitů.
Poté je zpráva rozdělena do bloků bitů . U variant funkcí vracejících až 256 bitů = 512. U variant vracejících velké hodnoty = 1024.
Dále je vytvořena hašovací funkce pomocí následujícího iteračního algoritmu.
kde
, pokud l = 512, nebo pokud l = 1024
- funkce, která vrací nejvýznamnější bity velikosti bloku
Tyto transformace řídí stav, který je reprezentován maticí G obsahující 1 bajt informace v každé buňce. Matice má velikost 8X8 (s ) nebo 8X16 (s ).
Nejprve je matice G vyplněna posloupností bajtů. Například pro posloupnost 00 01 02 ... 3f vypadá matice G takto.
Matice 8 X 16 je vyplněna stejným způsobem.
Permutace a jsou definovány jako:
Funkce modulo 2 přidává vektor
do každého sloupce matice stavu ( - číslo zaokrouhlení).
Funkce přidá modulo 64 vektor
do každého sloupce matice stavu ( - číslo zaokrouhlení).
Funkce nahradí prvky stavové matice substitucí z jednoho ze čtyř S-boxů (číslo S-boxu je definováno jako ).
Funkce provádí cyklický posun vpravo od prvků stavové matice. Řádky s čísly jsou posunuty o prvky a řádek 7 je posunut o 7 prvků v nebo o 11 prvků v .
Pro provedení funkce je každý prvek stavové matice reprezentován jako prvek konečného pole tvořeného neredukovatelným polynomem . Každý prvek výsledné stavové matice se vypočítá podle vzorce:
kde je vektor (0x01, 0x01, 0x05, 0x01, 0x08, 0x06, 0x07, 0x04) a je číslo sloupce matice stavu .
Tvůrci tvrdí, že diferenciální útoky a rebound útoky jsou po 4 iteracích permutačních funkcí neúčinné. Tabulka ukazuje indikátory kryptografické odolnosti deklarované tvůrci.
Typ útoku | Kupyna-256 | Kupyna-512 |
---|---|---|
kolize | 2128 _ | 2256 _ |
prototyp | 2256 _ | 2512 _ |
Druhý prototyp | 2256 _ | 2512 _ |
pevné body | 2256 _ | 2512 _ |
V důsledku nezávislé kryptoanalýzy bylo možné zaútočit pouze na prvních 5 kol; složitost nalezení kolize pro funkci Kupyna-256 snížená na 5 ran je 2 120 . [4] [5]
6D | F3 | 1D | CB | C9 | 4D | 79 | 2C | E0 | 97 | FD | 6F | 4B | 45 | 39 |
3E | DD | A3 | 4F | B4 | B6 | 1F | 9A | bf | patnáct | E1 | 49 | D2 | 93 | C6 |
92 | 72 | 9E | 61 | D1 | 63 | F4 | FA | 19 | D5 | INZERÁT | 58 | A4 | BB | A1 |
DC | F2 | 83 | 37 | 42 | E4 | 9C | 7A | CC | AB | 4A | 8F | 6E | 04 | 27 |
2E | E7 | E2 | 5A | 96 | 16 | C2 | 23 | 65 | 66 | 0F | před naším letopočtem | A9 | 47 | 41 |
34 | 48 | FC | B7 | 6A | 88 | 86 | A5 | F9 | 5B | D.B. | 38 | 7B | C3 | 1E |
22 | 33 | 24 | 28 | 36 | C7 | 8E | B2 | 77 | BA | F5 | čtrnáct | 9F | 08 | 55 |
9B | 4C | F.E. | 60 | 5C | DA | CD | osmnáct | 7D | 21 | B0 | 3F | 1B | 89 | FF |
EB | 84 | 69 | 3A | 9D | D7 | 67 | D3 | 40 | B5 | DE | 5 D | třicet | 91 | B1 |
78 | jedenáct | 01 | E5 | 00 | 68 | C5 | 98 | 02 | A6 | 74 | 2D | 0B | A2 | 76 |
B3 | BÝT | CE | BD | AE | E9 | 1C | 8A | EU | F1 | 99 | 94 | AA | F6 | 26 |
2F | EF | E8 | 8C | 35 | 03 | D4 | 05 | C1 | 5E | 90 | dvacet | 3D | 82 | |
F7 | EA | 0A | 0D | 7E | F8 | C4 | padesáti | 07 | 57 | B8 | 3C | 62 | E3 | C8 |
AC | 52 | 64 | deset | D0 | D9 | 12 | 13 | 29 | 51 | B9 | CF | D6 | 73 | 8D |
81 | 54 | C0 | ED | 4E | 44 | 85 | A7 | 25 | E6 | CA | 7C | 8B | 56 | 80 |
42 | patnáct | 56 | B4 | 65 | 1C | 88 | 43 | C5 | 5C | 36 | BA | F5 | 57 | 67 | 8D |
31 | F6 | 64 | 58 | 9E | F4 | 22 | AA | 75 | 0F | 02 | B1 | D.F. | 6D | 73 | 4D |
7C | 26 | 2E | F7 | 08 | 5 D | 44 | 3E | 9F | čtrnáct | C8 | AE | 54 | deset | D8 | před naším letopočtem |
1A | 6B | 69 | F3 | BD | 33 | AB | FA | D1 | 9B | 68 | 4E | 16 | 95 | 91 | EE |
4C | 63 | 8E | 5B | CC | 3C | 19 | A1 | 81 | 49 | 7B | D9 | 6F | 37 | 60 | CA |
E7 | 2B | 48 | FD | 96 | 45 | FC | 41 | 12 | 0D | 79 | E5 | 89 | 8C | E3 | dvacet |
třicet | DC | B7 | 6C | 4A | B5 | 3F | 97 | D4 | 62 | 2D | 06 | A4 | A5 | 83 | 5F |
2A | DA | C9 | 00 | 7E | A2 | 55 | bf | jedenáct | D5 | 9C | CF | 0E | 0A | 3D | 51 |
7D | 93 | 1B | F.E. | C4 | 47 | 09 | 86 | 0B | 8F | 9D | 6A | 07 | B9 | B0 | 98 |
osmnáct | 32 | 71 | 4B | EF | 3B | 70 | A0 | E4 | 40 | FF | C3 | A9 | E6 | 78 | F9 |
8B | 46 | 80 | 1E | 38 | E1 | B8 | A8 | E0 | 0C | 23 | 76 | 1D | 25 | 24 | 05 |
F1 | 6E | 94 | 28 | 9A | 84 | E8 | A3 | 4F | 77 | D3 | 85 | E2 | 52 | F2 | 82 |
padesáti | 7A | 2F | 74 | 53 | B3 | 61 | AF | 39 | 35 | DE | CD | 1F | 99 | AC | INZERÁT |
72 | 2C | DD | D0 | 87 | BÝT | 5E | A6 | EU | 04 | C6 | 03 | 34 | D.B. | 59 | |
B6 | C2 | 01 | F0 | 5A | ED | A7 | 66 | 21 | 7F | 8A | 27 | C7 | C0 | 29 | D7 |
4A | 17 | 2B | C2 | 94 | F4 | BB | A3 | 62 | E4 | 71 | D4 | CD | 70 | 16 | E1 |
49 | 3C | C0 | D8 | 5C | 9B | INZERÁT | 85 | 53 | A1 | 7A | C8 | 2D | E0 | D1 | 72 |
A6 | 2C | C4 | E3 | 76 | 78 | B7 | B4 | 09 | 3B | 0E | 41 | 4C | DE | B2 | 90 |
25 | A5 | D7 | 03 | jedenáct | 00 | C3 | 2E | 92 | EF | 4E | 12 | 9D | 7D | CB | 35 |
deset | D5 | 4F | 9E | 4D | A9 | 55 | C6 | D0 | 7B | osmnáct | 97 | D3 | 36 | E6 | 48 |
56 | 81 | 8F | 77 | CC | 9C | B9 | E2 | AC | B8 | 2F | patnáct | A4 | 7C | DA | 38 |
1E | 0B | 05 | D6 | čtrnáct | 6E | 6C | 7E | 66 | FD | B1 | E5 | 60 | AF | 5E | 33 |
87 | C9 | F0 | 5 D | 6D | 3F | 88 | 8D | C7 | F7 | 1D | E9 | EU | ED | 80 | 29 |
27 | CF | 99 | A8 | padesáti | 0F | 37 | 24 | 28 | třicet | 95 | D2 | 3E | 5B | 40 | 83 |
B3 | 69 | 57 | 1F | 07 | 1C | 8A | před naším letopočtem | dvacet | EB | CE | 8E | AB | EE | 31 | A2 |
73 | F9 | CA | 3A | 1A | 0D | C1 | F.E. | FA | F2 | 6F | BD | 96 | DD | 43 | |
52 | B6 | 08 | F3 | AE | BÝT | 19 | 89 | 32 | 26 | B0 | EA | 4B | 64 | 84 | 82 |
6B | F5 | 79 | bf | 01 | 5F | 75 | 63 | 1B | 23 | 3D | 68 | 2A | 65 | E8 | 91 |
F6 | FF | 13 | 58 | F1 | 47 | 0A | 7F | C5 | A7 | E7 | 61 | 5A | 06 | 46 | 44 |
42 | 04 | A0 | D.B. | 39 | 86 | 54 | AA | 8C | 34 | 21 | 8B | F8 | 0C | 74 | 67 |
22 | 03 | 46 | 3D | 2D | 4A | 53 | 83 | 13 | 8A | B7 | D5 | 25 | 79 | F5 | BD |
58 | 2F | 0D | 02 | ED | 51 | 9E | jedenáct | F2 | 3E | 55 | 5E | D1 | 16 | 3C | 66 |
70 | 5 D | F3 | 45 | 40 | CC | E8 | 94 | 56 | 08 | CE | 1A | 3A | D2 | E1 | D.F. |
B5 | 38 | 6E | 0E | E5 | F4 | F9 | 86 | E9 | 4F | D6 | 85 | 23 | CF | 32 | 99 |
31 | čtrnáct | AE | EE | C8 | 48 | D3 | třicet | A1 | 92 | 41 | B1 | osmnáct | C4 | 2C | 71 |
72 | 44 | patnáct | FD | 37 | BÝT | 5F | AA | 9B | 88 | D8 | AB | 89 | 9C | FA | 60 |
EA | před naším letopočtem | 62 | 0C | 24 | A6 | A8 | EU | 67 | dvacet | D.B. | 7C | 28 | DD | AC | 5B |
34 | 7E | deset | F1 | 7B | 8F | 63 | A0 | 05 | 9A | 43 | 77 | 21 | bf | 27 | 09 |
C3 | 9F | B6 | D7 | 29 | C2 | EB | C0 | A4 | 8B | 8C | 1D | FF | C1 | B2 | |
97 | 2E | F8 | 65 | F6 | 75 | 07 | 04 | 49 | 33 | E4 | D9 | B9 | D0 | 42 | C7 |
6C | 90 | 00 | 8E | 6F | padesáti | 01 | C5 | DA | 47 | 3F | CD | 69 | A2 | E2 | 7A |
A7 | C6 | 93 | 0F | 0A | 06 | E6 | 2B | 96 | A3 | 1C | AF | 6A | 12 | 84 | 39 |
E7 | B0 | 82 | F7 | F.E. | 9D | 87 | 5C | 81 | 35 | DE | B4 | A5 | FC | 80 | EF |
CB | BB | 6B | 76 | BA | 5A | 7D | 78 | 0B | 95 | E3 | INZERÁT | 74 | 98 | 3B | 36 |
64 | 6D | DC | F0 | 59 | A9 | 4C | 17 | 7F | 91 | B8 | C9 | 57 | 1B | E0 | 61 |
Hodnoty různých variant hash z prázdného řetězce.
Kupyna-256("") 0x cd5101d1ccdf0d1d1f4ada56e888cd724ca1a0838a3521e7131d4fb78d0f5eb6 Kupyna-512("") 0x 656b2f4cd71462388b64a37043ea55dbe445d452aecd46c3298343314ef04019 bcfa3f04265a9857f91be91fce197096187ceda78c9c1c021c294a0689198538Malá změna ve zprávě pravděpodobně povede k velké změně hodnoty hash v důsledku lavinového efektu , jak ukazuje následující příklad:
Kupyna-256 („Rychlá hnědá liška skáče přes líného psa“) 0x 996899f2d7422ceaf552475036b2dc120607eff538abf2b8dff471a98a4740c6 Kupyna-256("Rychlá hnědá liška skáče přes líného psa.") 0x 88ea8ce988fe67eb83968cdc0f6f3ca693baa502612086c0dcec761a98e2fb1f
Hashovací funkce | |
---|---|
obecný účel | |
Kryptografický | |
Funkce generování klíčů | |
Kontrolní číslo ( srovnání ) | |
Hashe |
|