Kryptografická hashovací funkce
LSH je kryptografická hashovací funkce navržen v roce 2014 Jižní Korea poskytovat integritu v univerzálních softwarových prostředích, jako je PC a chytrá zařízení.[1] LSH je jeden z kryptografických algoritmů schválených Korejským kryptografickým modulem (KCMVP) a je to národní standard Jižní Koreje (KS X 3262).
Specifikace
Celková struktura hash funkce LSH je znázorněna na následujícím obrázku.
Celková struktura LSH
Hašovací funkce LSH má strukturu Merkle-Damgård se širokým potrubím s polstrováním nulami. Proces hašování zpráv LSH se skládá z následujících tří fází.
- Inicializace:
- Jedno-nulové odsazení dané zprávy bitového řetězce.
- Převod na bloky zpráv o 32 slovech z zprávy s polstrovaným bitovým řetězcem
- Inicializace řetězové proměnné pomocí inicializačního vektoru.
- Komprese:
- Aktualizace řetězových proměnných iterací kompresní funkce s bloky zpráv.
- Dokončení:
- Generování
-bitová hodnota hash z konečné proměnné řetězení.
Specifikace hash funkce LSH jsou následující.
Specifikace hash funkce LSHAlgoritmus | Velikost digestu v bitech ( ) | Počet funkcí kroku ( ) | Řetězení proměnné velikosti v bitech | Velikost bloku zprávy v bitech | Velikost slova v bitech ( ) |
---|
LSH-256-224 | 224 | 26 | 512 | 1024 | 32 |
LSH-256-256 | 256 |
LSH-512-224 | 224 | 28 | 1024 | 2048 | 64 |
LSH-512-256 | 256 |
LSH-512-384 | 384 |
LSH-512-512 | 512 |
Inicializace
Nechat
být danou zprávou s bitovým řetězcem
je vyplněn nulami, tj. bit „1“ je připojen na konec
a bit „0“ se připojí, dokud není bitová délka polstrované zprávy
, kde
a
je nejmenší celé číslo ne menší než
.
Nechat
být polstrovaný nulami
-bitový řetězec
.Pak
je považován za
-bajtové pole
, kde
pro všechny
.v
-bajtové pole
převádí na a
- pole slov
jak následuje.

Ze slova pole
, definujeme
Bloky zpráv o 32 slovech
jak následuje.

Proměnná řetězení pole 16 slov
je inicializován na inicializační vektor
.

Inicializační vektor
je následující. V následujících tabulkách jsou všechny hodnoty vyjádřeny v hexadecimálním tvaru.
Inicializační vektor LSH-256-224![{ displaystyle { textyf {IV}} [0]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/e999e9f3741fbdf52af9cc4a4d9be0b6ccf6945f) | ![{ displaystyle { textyf {IV}} [1]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/19ef984c6c0763a1541d89acf2fa95341b570fa7) | ![{ displaystyle { textyf {IV}} [2]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/03c25b70ee80852f78587b5154f3ddad3a9e007a) | ![{ displaystyle { textyf {IV}} [3]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/5d723c75229cca886dc8219503ca59f941b57e34) | ![{ displaystyle { textyf {IV}} [4]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/c027deaf01f0c4b67a9749d6ff1def884912c858) | ![{ displaystyle { textyf {IV}} [5]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/0cd23ddaf854ce9b457cd9c5d0da3efa6aae8274) | ![{ displaystyle { textyf {IV}} [6]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/4ed177acf98ade6005bbc3598aa9ad09a21f3be6) | ![{ displaystyle { textyf {IV}} [7]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/6bd8b8e7594b13b83421f693bc44bc9a4ef862bf) |
---|
068608D3 | 62D8F7A7 | D76652AB | 4C600A43 | BDC40AA8 | 1ECA0B68 | DA1A89BE | 3147D354 |
![{ displaystyle { textyf {IV}} [8]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/f291543f56da1d3c98a207c145214248d5417d0c) | ![{ displaystyle { textyf {IV}} [9]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/ddebb4dacc2f97b7603f883187c8d2bcbc43c860) | ![{ displaystyle { textyf {IV}} [10]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/bb7dbd6006744b44ffd77084d528da5588bdda63) | ![{ displaystyle { textyf {IV}} [11]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/ae7f16181346c9d69ee705ea0858c9102ab54e2d) | ![{ displaystyle { textyf {IV}} [12]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/2a2bd2ddfbeace72719eed88c2eea81ff3904c80) | ![{ displaystyle { textyf {IV}} [13]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/2361328bc13a1f6fe820a015a2ee0b2220d28d57) | ![{ displaystyle { textyf {IV}} [14]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/4897271813f7c994d55ddd614305fc32cac0cbee) | ![{ displaystyle { textyf {IV}} [15]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/99235ba6fce415b369c060c2381097b6978b52a5) |
---|
707EB4F9 | F65B3862 | 6B0B2ABE | 56B8EC0A | CF237286 | EE0D1727 | 33636595 | 8BB8D05F |
Inicializační vektor LSH-256-256![{ displaystyle { textyf {IV}} [0]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/e999e9f3741fbdf52af9cc4a4d9be0b6ccf6945f) | ![{ displaystyle { textyf {IV}} [1]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/19ef984c6c0763a1541d89acf2fa95341b570fa7) | ![{ displaystyle { textyf {IV}} [2]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/03c25b70ee80852f78587b5154f3ddad3a9e007a) | ![{ displaystyle { textyf {IV}} [3]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/5d723c75229cca886dc8219503ca59f941b57e34) | ![{ displaystyle { textyf {IV}} [4]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/c027deaf01f0c4b67a9749d6ff1def884912c858) | ![{ displaystyle { textyf {IV}} [5]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/0cd23ddaf854ce9b457cd9c5d0da3efa6aae8274) | ![{ displaystyle { textyf {IV}} [6]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/4ed177acf98ade6005bbc3598aa9ad09a21f3be6) | ![{ displaystyle { textyf {IV}} [7]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/6bd8b8e7594b13b83421f693bc44bc9a4ef862bf) |
---|
46A10F1F | FDDCE486 | B41443A8 | 198E6B9D | 3304388D | B0F5A3C7 | B36061C4 | 7ADBD553 |
![{ displaystyle { textyf {IV}} [8]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/f291543f56da1d3c98a207c145214248d5417d0c) | ![{ displaystyle { textyf {IV}} [9]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/ddebb4dacc2f97b7603f883187c8d2bcbc43c860) | ![{ displaystyle { textyf {IV}} [10]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/bb7dbd6006744b44ffd77084d528da5588bdda63) | ![{ displaystyle { textyf {IV}} [11]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/ae7f16181346c9d69ee705ea0858c9102ab54e2d) | ![{ displaystyle { textyf {IV}} [12]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/2a2bd2ddfbeace72719eed88c2eea81ff3904c80) | ![{ displaystyle { textyf {IV}} [13]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/2361328bc13a1f6fe820a015a2ee0b2220d28d57) | ![{ displaystyle { textyf {IV}} [14]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/4897271813f7c994d55ddd614305fc32cac0cbee) | ![{ displaystyle { textyf {IV}} [15]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/99235ba6fce415b369c060c2381097b6978b52a5) |
---|
105D5378 | 2F74DE54 | 5C2F2D95 | F2553FBE | 8051357A | 138668C8 | 47AA4484 | E01AFB41 |
Inicializační vektor LSH-512-224![{ displaystyle { textyf {IV}} [0]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/e999e9f3741fbdf52af9cc4a4d9be0b6ccf6945f) | ![{ displaystyle { textyf {IV}} [1]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/19ef984c6c0763a1541d89acf2fa95341b570fa7) | ![{ displaystyle { textyf {IV}} [2]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/03c25b70ee80852f78587b5154f3ddad3a9e007a) | ![{ displaystyle { textyf {IV}} [3]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/5d723c75229cca886dc8219503ca59f941b57e34) |
---|
0C401E9FE8813A55 | 4A5F446268FD3D35 | FF13E452334F612A | F8227661037E354A |
![{ displaystyle { textyf {IV}} [4]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/c027deaf01f0c4b67a9749d6ff1def884912c858) | ![{ displaystyle { textyf {IV}} [5]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/0cd23ddaf854ce9b457cd9c5d0da3efa6aae8274) | ![{ displaystyle { textyf {IV}} [6]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/4ed177acf98ade6005bbc3598aa9ad09a21f3be6) | ![{ displaystyle { textyf {IV}} [7]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/6bd8b8e7594b13b83421f693bc44bc9a4ef862bf) |
---|
A5F223723C9CA29D | 95D965A11AED3979 | 01E23835B9AB02CC | 52D49CBAD5B30616 |
![{ displaystyle { textyf {IV}} [8]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/f291543f56da1d3c98a207c145214248d5417d0c) | ![{ displaystyle { textyf {IV}} [9]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/ddebb4dacc2f97b7603f883187c8d2bcbc43c860) | ![{ displaystyle { textyf {IV}} [10]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/bb7dbd6006744b44ffd77084d528da5588bdda63) | ![{ displaystyle { textyf {IV}} [11]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/ae7f16181346c9d69ee705ea0858c9102ab54e2d) |
---|
9E5C2027773F4ED3 | 66A5C8801925B701 | 22BBC85B4C6779D9 | C13171A42C559C23 |
![{ displaystyle { textyf {IV}} [12]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/2a2bd2ddfbeace72719eed88c2eea81ff3904c80) | ![{ displaystyle { textyf {IV}} [13]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/2361328bc13a1f6fe820a015a2ee0b2220d28d57) | ![{ displaystyle { textyf {IV}} [14]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/4897271813f7c994d55ddd614305fc32cac0cbee) | ![{ displaystyle { textyf {IV}} [15]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/99235ba6fce415b369c060c2381097b6978b52a5) |
---|
31E2B67D25BE3813 | D522C4DEED8E4D83 | A79F5509B43FBAFE | E00D2CD88B4B6C6A |
Inicializační vektor LSH-512-256![{ displaystyle { textyf {IV}} [0]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/e999e9f3741fbdf52af9cc4a4d9be0b6ccf6945f) | ![{ displaystyle { textyf {IV}} [1]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/19ef984c6c0763a1541d89acf2fa95341b570fa7) | ![{ displaystyle { textyf {IV}} [2]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/03c25b70ee80852f78587b5154f3ddad3a9e007a) | ![{ displaystyle { textyf {IV}} [3]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/5d723c75229cca886dc8219503ca59f941b57e34) |
---|
6DC57C33DF989423 | D8EA7F6E8342C199 | 76DF8356F8603AC4 | 40F1B44DE838223A |
![{ displaystyle { textyf {IV}} [4]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/c027deaf01f0c4b67a9749d6ff1def884912c858) | ![{ displaystyle { textyf {IV}} [5]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/0cd23ddaf854ce9b457cd9c5d0da3efa6aae8274) | ![{ displaystyle { textyf {IV}} [6]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/4ed177acf98ade6005bbc3598aa9ad09a21f3be6) | ![{ displaystyle { textyf {IV}} [7]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/6bd8b8e7594b13b83421f693bc44bc9a4ef862bf) |
---|
39FFE7CFC31484CD | 39C4326CC5281548 | 8A2FF85A346045D8 | FF202AA46DBDD61E |
![{ displaystyle { textyf {IV}} [8]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/f291543f56da1d3c98a207c145214248d5417d0c) | ![{ displaystyle { textyf {IV}} [9]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/ddebb4dacc2f97b7603f883187c8d2bcbc43c860) | ![{ displaystyle { textyf {IV}} [10]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/bb7dbd6006744b44ffd77084d528da5588bdda63) | ![{ displaystyle { textyf {IV}} [11]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/ae7f16181346c9d69ee705ea0858c9102ab54e2d) |
---|
CF785B3CD5FCDB8B | 1F0323B64A8150BF | FF75D972F29EA355 | 2E567F30BF1CA9E1 |
![{ displaystyle { textyf {IV}} [12]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/2a2bd2ddfbeace72719eed88c2eea81ff3904c80) | ![{ displaystyle { textyf {IV}} [13]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/2361328bc13a1f6fe820a015a2ee0b2220d28d57) | ![{ displaystyle { textyf {IV}} [14]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/4897271813f7c994d55ddd614305fc32cac0cbee) | ![{ displaystyle { textyf {IV}} [15]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/99235ba6fce415b369c060c2381097b6978b52a5) |
---|
B596875BF8FF6DBA | FCCA39B089EF4615 | ECFF4017D020B4B6 | 7E77384C772ED802 |
Inicializační vektor LSH-512-384![{ displaystyle { textyf {IV}} [0]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/e999e9f3741fbdf52af9cc4a4d9be0b6ccf6945f) | ![{ displaystyle { textyf {IV}} [1]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/19ef984c6c0763a1541d89acf2fa95341b570fa7) | ![{ displaystyle { textyf {IV}} [2]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/03c25b70ee80852f78587b5154f3ddad3a9e007a) | ![{ displaystyle { textyf {IV}} [3]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/5d723c75229cca886dc8219503ca59f941b57e34) |
---|
53156A66292808F6 | B2C4F362B204C2BC | B84B7213BFA05C4E | 976CEB7C1B299F73 |
![{ displaystyle { textyf {IV}} [4]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/c027deaf01f0c4b67a9749d6ff1def884912c858) | ![{ displaystyle { textyf {IV}} [5]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/0cd23ddaf854ce9b457cd9c5d0da3efa6aae8274) | ![{ displaystyle { textyf {IV}} [6]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/4ed177acf98ade6005bbc3598aa9ad09a21f3be6) | ![{ displaystyle { textyf {IV}} [7]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/6bd8b8e7594b13b83421f693bc44bc9a4ef862bf) |
---|
DF0CC63C0570AE97 | DA4441BAA486CE3F | 6559F5D9B5F2ACC2 | 22DACF19B4B52A16 |
![{ displaystyle { textyf {IV}} [8]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/f291543f56da1d3c98a207c145214248d5417d0c) | ![{ displaystyle { textyf {IV}} [9]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/ddebb4dacc2f97b7603f883187c8d2bcbc43c860) | ![{ displaystyle { textyf {IV}} [10]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/bb7dbd6006744b44ffd77084d528da5588bdda63) | ![{ displaystyle { textyf {IV}} [11]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/ae7f16181346c9d69ee705ea0858c9102ab54e2d) |
---|
BBCDACEFDE80953A | C9891A2879725B3E | 7C9FE6330237E440 | A30BA550553F7431 |
![{ displaystyle { textyf {IV}} [12]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/2a2bd2ddfbeace72719eed88c2eea81ff3904c80) | ![{ displaystyle { textyf {IV}} [13]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/2361328bc13a1f6fe820a015a2ee0b2220d28d57) | ![{ displaystyle { textyf {IV}} [14]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/4897271813f7c994d55ddd614305fc32cac0cbee) | ![{ displaystyle { textyf {IV}} [15]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/99235ba6fce415b369c060c2381097b6978b52a5) |
---|
BB08043FB34E3E30 | A0DEC48D54618EAD | 150317267464BC57 | 32D1501FDE63DC93 |
Inicializační vektor LSH-512-512![{ displaystyle { textyf {IV}} [0]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/e999e9f3741fbdf52af9cc4a4d9be0b6ccf6945f) | ![{ displaystyle { textyf {IV}} [1]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/19ef984c6c0763a1541d89acf2fa95341b570fa7) | ![{ displaystyle { textyf {IV}} [2]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/03c25b70ee80852f78587b5154f3ddad3a9e007a) | ![{ displaystyle { textyf {IV}} [3]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/5d723c75229cca886dc8219503ca59f941b57e34) |
---|
ADD50F3C7F07094E | E3F3CEE8F9418A4F | B527ECDE5B3D0AE9 | 2EF6DEC68076F501 |
![{ displaystyle { textyf {IV}} [4]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/c027deaf01f0c4b67a9749d6ff1def884912c858) | ![{ displaystyle { textyf {IV}} [5]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/0cd23ddaf854ce9b457cd9c5d0da3efa6aae8274) | ![{ displaystyle { textyf {IV}} [6]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/4ed177acf98ade6005bbc3598aa9ad09a21f3be6) | ![{ displaystyle { textyf {IV}} [7]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/6bd8b8e7594b13b83421f693bc44bc9a4ef862bf) |
---|
8CB994CAE5ACA216 | FBB9EAE4BBA48CC7 | 650A526174725FEA | 1F9A61A73F8D8085 |
![{ displaystyle { textyf {IV}} [8]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/f291543f56da1d3c98a207c145214248d5417d0c) | ![{ displaystyle { textyf {IV}} [9]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/ddebb4dacc2f97b7603f883187c8d2bcbc43c860) | ![{ displaystyle { textyf {IV}} [10]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/bb7dbd6006744b44ffd77084d528da5588bdda63) | ![{ displaystyle { textyf {IV}} [11]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/ae7f16181346c9d69ee705ea0858c9102ab54e2d) |
---|
B6607378173B539B | 1BC99853B0C0B9ED | DF727FC19B182D47 | DBEF360CF893A457 |
![{ displaystyle { textyf {IV}} [12]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/2a2bd2ddfbeace72719eed88c2eea81ff3904c80) | ![{ displaystyle { textyf {IV}} [13]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/2361328bc13a1f6fe820a015a2ee0b2220d28d57) | ![{ displaystyle { textyf {IV}} [14]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/4897271813f7c994d55ddd614305fc32cac0cbee) | ![{ displaystyle { textyf {IV}} [15]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/99235ba6fce415b369c060c2381097b6978b52a5) |
---|
4981F5E570147E80 | D00C4490CA7D3E30 | 5D73940C0E4AE1EC | 894085E2EDB2D819 |
Komprese
V této fázi se
Bloky zpráv o 32 slovech
, které jsou generovány ze zprávy
ve fázi inicializace jsou komprimovány iterací kompresních funkcí. Kompresní funkce
má dva vstupy; the
- proměnná zřetězení 16 slov
a
-th 32-word block message
.A vrací
- proměnná zřetězení 16 slov
.Tady a následně,
označuje množinu všech
- pole slov pro
.
Ve funkci komprese se používají následující čtyři funkce:
- Funkce rozšíření zprávy

- Funkce přidání zprávy

- Funkce mix

- Funkce permutace slov

Celková struktura funkce komprese je znázorněna na následujícím obrázku.
Kompresní funkce LSH
Ve funkci komprese funkce rozšíření zprávy
generuje
Podřízené zprávy se 16 slovy
od dané
.Nechat
být dočasné 16slovné pole nastavené na
-tá proměnná řetězení
.v
-tý krok funkce
mající dva vstupy
a
aktualizace
, tj.,
Všechny funkce kroku jsou prováděny v pořadí
.Tak ještě jeden
provoz
se pokračuje a
-tá proměnná řetězení
je nastaven na
Podrobný postup kompresní funkce je následující.
Tady
-tý krok funkce
je následující.

Následující obrázek ukazuje
-tý krok funkce
funkce komprese.
The

-tý krok funkce

Funkce rozšíření zprávy MsgExp
Nechat
být
-tý blok zpráv o 32 slovech. Funkce rozšíření zprávy
generuje
Podřízené zprávy se 16 slovy
z bloku zpráv
První dvě dílčí zprávy
a
jsou definovány následovně.
![{displaystyle { extsf {M}}_{0}^{(i)}leftarrow (M^{(i)}[0],M^{(i)}[1],ldots ,M^{(i)}[15])}](https://wikimedia.org/api/rest_v1/media/math/render/svg/8bc56dd40f2cf9561c310e1cb9266c02c0d6a5ab)
![{displaystyle { extsf {M}}_{1}^{(i)}leftarrow (M^{(i)}[16],M^{(i)}[17],ldots ,M^{(i)}[31])}](https://wikimedia.org/api/rest_v1/media/math/render/svg/79c190f11728ea49c9f324944be1d4c878c53227)
Další dílčí zprávy
jsou generovány následovně.

Tady
je permutace u konce
definováno následovně.
Obměna 
 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
---|
 | 3 | 2 | 0 | 1 | 7 | 4 | 5 | 6 | 11 | 10 | 8 | 9 | 15 | 12 | 13 | 14 |
---|
Funkce přidání zprávy MsgAdd
Pro dvě pole 16 slov
a
, funkce přidání zprávy
je definována následovně.
![{displaystyle { extrm {MsgAdd}}({ extsf {X}},{ extsf {Y}}):=(X[0]oplus Y[0],ldots ,X[15]oplus Y[15])}](https://wikimedia.org/api/rest_v1/media/math/render/svg/116a4f232b0e499dec64cad7c873fd5feb163043)
Funkce Mix
The
-tá funkce mixu
aktualizuje pole 16 slov
smícháním každého dvojslovného páru;
a
pro
.Pro
, funkce mixování
postupuje následovně.

Tady
je funkce dvouslovného mixu
a
být slova. Funkce dvouslovného mixu
je definována následovně.
Funkce mixu dvou slov
je zobrazen na následujícím obrázku.
Funkce dvouslovného mixu

Částky rotace bitů
,
,
použito v
jsou uvedeny v následující tabulce.
Částky rotace bitů
,
, a 
 |  |  |  |  |  |  |  |  |  |  |  |
---|
32 | dokonce | 29 | 1 | 0 | 8 | 16 | 24 | 24 | 16 | 8 | 0 |
zvláštní | 5 | 17 |
64 | dokonce | 23 | 59 | 0 | 16 | 32 | 48 | 8 | 24 | 40 | 56 |
zvláštní | 7 | 3 |
The
-th 8-slovní konstanta pole
použito v
pro
je definována takto. Počáteční konstanta pole 8 slov
je definována v následující tabulce
,
-tá konstanta
generuje
pro
.
Počáteční konstanta pole 8 slov 
|  |  |
---|
![{displaystyle SC_{0}[0]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/68d1bf7cd02ea4ce227fad05bee1ef10edf21c0d) | 917caf90 | 97884283c938982a |
---|
![{displaystyle SC_{0}[1]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/53155ed01cf05325fc1859cf17d1cedf334cf95c) | 6c1b10a2 | ba1fca93533e2355 |
---|
![{displaystyle SC_{0}[2]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/5bab5db617e31e28457e43edfcbb76dbcf623df3) | 6f352943 | c519a2e87aeb1c03 |
---|
![{displaystyle SC_{0}[3]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/73cd303774e917e32fb6b20b1282a69c69ad47da) | cf778243 | 9a0fc95462af17b1 |
---|
![{displaystyle SC_{0}[4]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/6518b1bf1a8a2d3539ad10dcde5ad1762d1c8d30) | 2ceb7472 | fc3dda8ab019a82b |
---|
![{displaystyle SC_{0}[5]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/3f29498127cd8b547101780ac7d6faebc5e40a86) | 29e96ff2 | 02825d079a895407 |
---|
![{displaystyle SC_{0}[6]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/63b1c7d4c29c8ce552a4c9c8c051ff647c86f425) | 8a9ba428 | 79f2d0a7ee06a6f7 |
---|
![{displaystyle SC_{0}[7]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/d8390e42cb325cfd246dc5fbbad160fcd6503e1d) | 2eeb2642 | d76d15eed9fdf5fe |
---|
Funkce Word-Permutation WordPerm
Nechat
být 16slovným polem. Funkce permutace slov
je definována následovně.
![{displaystyle { extrm {WordPerm}}({ extsf {X}})=(X[sigma (0)],ldots ,X[sigma (15)])}](https://wikimedia.org/api/rest_v1/media/math/render/svg/b48fa7bcc62ec4f57cf7201e133f581631471af4)
Tady
je permutace u konce
definováno v následující tabulce.
Obměna 
 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
---|
 | 6 | 4 | 5 | 7 | 12 | 15 | 14 | 13 | 2 | 0 | 1 | 3 | 8 | 11 | 10 | 9 |
---|
Dokončení
Funkce finalizace
se vrací
-bitová hodnota hash
z konečné proměnné řetězení
.Když
je 8-slovní proměnná a
je
-bajtová proměnná, funkce finalizace
provede následující postup.


![{displaystyle hleftarrow (h_{b}[0]|ldots |h_{b}[w-1])_{[0:n-1]}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/79cb13674ed90511ce660a290d19af365883be48)
Tady,
označuje
, dílčí bitový řetězec slova
pro
.A
označuje
, dílčí bitový řetězec a
-bitový řetězec
pro
.
Bezpečnostní
LSH je dosud zabezpečený proti známým útokům na hašovací funkce. LSH je odolný proti kolizím
a preimage odolný a druhý preimage odolný pro
v ideálním šifrovacím modelu, kde
je řada dotazů na strukturu LSH.[1]LSH-256 je zabezpečený proti všem existujícím útokům hash funkce, když je počet kroků 13 nebo více, zatímco LSH-512 je zabezpečený, pokud je počet kroků 14 nebo více. Pamatujte, že kroky, které fungují jako bezpečnostní marže, jsou 50% funkce komprese.[1]
Výkon
LSH překonává SHA-2/3 na různých softwarových platformách. Následující tabulka ukazuje rychlostní výkon 1 MB hashování zpráv LSH na několika platformách.
Rychlost hašování zprávy 1 MB MB LSH (cykly / bajt)[1]Plošina | P1[A] | P2[b] | P3[C] | P4[d] | P5[E] | P6[F] | P7[G] | P8[h] |
---|
LSH-256- | 3.60 | 3.86 | 5.26 | 3.89 | 11.17 | 15.03 | 15.28 | 14.84 |
LSH-512- | 2.39 | 5.04 | 7.76 | 5.52 | 8.94 | 18.76 | 19.00 | 18.10 |
- ^ Intel Core i7-4770K @ 3,5 GHz (Haswell), Ubuntu 12.04 64bitový, GCC 4.8.1 s „-m64 -mavx2 -O3“
- ^ Intel Core i7-2600K @ 3,40 GHz (Sandy Bridge), Ubuntu 12.04 64bitová, GCC 4.8.1 s „-m64 -msse4 -O3“
- ^ Intel Core 2 Quad Q9550 @ 2,83 GHz (Yorkfield), Windows 7 32-bit, Visual studio 2012
- ^ AMD FX-8350 @ 4GHz (Piledriver), Ubuntu 12.04 64bitový, GCC 4.8.1 s „-m64 -mxop -O3“
- ^ Samsung Exynos 5250 ARM Cortex-A15 @ 1,7 GHz dvoujádrový (Huins ACHRO 5250), Android 4.1.1
- ^ Čtyřjádro Qualcomm Snapdragon 800 Krait 400 @ 2,26 GHz (LG G2), Android 4.4.2
- ^ Čtyřjádro Qualcomm Snapdragon 800 Krait 400 @ 2,3 GHz (Samsung Galaxy S4), Android 4.2.2
- ^ Dvoujádrový procesor Qualcomm Snapdragon 400 Krait 300 @ 1,7 GHz (Samsung Galaxy S4 mini), Android 4.2.2
V následující tabulce je srovnání na platformě založené na Haswell, LSH se měří na čtyřjádrové platformě Intel Core i7-4770k @ 3,5 GHz a ostatní se měří na čtyřjádrové platformě Intel Core i5-4570S @ 2,9 GHz.
Rychlostní měřítko finalistů LSH, SHA-2 a SHA-3 na platformě založené na Haswell CPU (cykly / bajt)[1]Algoritmus | Velikost zprávy v bajtech |
---|
dlouho | 4,096 | 1,536 | 576 | 64 | 8 |
---|
LSH-256-256 | 3.60 | 3.71 | 3.90 | 4.08 | 8.19 | 65.37 |
Přadeno-512-256 | 5.01 | 5.58 | 5.86 | 6.49 | 13.12 | 104.50 |
Blake-256 | 6.61 | 7.63 | 7.87 | 9.05 | 16.58 | 72.50 |
Grøstl-256 | 9.48 | 10.68 | 12.18 | 13.71 | 37.94 | 227.50 |
Keccak-256 | 10.56 | 10.52 | 9.90 | 11.99 | 23.38 | 187.50 |
SHA-256 | 10.82 | 11.91 | 12.26 | 13.51 | 24.88 | 106.62 |
JH-256 | 14.70 | 15.50 | 15.94 | 17.06 | 31.94 | 257.00 |
LSH-512-512 | 2.39 | 2.54 | 2.79 | 3.31 | 10.81 | 85.62 |
Přadeno-512-512 | 4.67 | 5.51 | 5.80 | 6.44 | 13.59 | 108.25 |
Blake-512 | 4.96 | 6.17 | 6.82 | 7.38 | 14.81 | 116.50 |
SHA-512 | 7.65 | 8.24 | 8.69 | 9.03 | 17.22 | 138.25 |
Grøstl-512 | 12.78 | 15.44 | 17.30 | 17.99 | 51.72 | 417.38 |
JH-512 | 14.25 | 15.66 | 16.14 | 17.34 | 32.69 | 261.00 |
Keccak-512 | 16.36 | 17.86 | 18.46 | 20.35 | 21.56 | 171.88 |
Následující tabulka je měřena na dvoujádrové platformě Samsung Exynos 5250 ARM Cortex-A15 @ 1,7 GHz.
Rychlostní měřítko finalistů LSH, SHA-2 a SHA-3 na platformě založené na CPU Exynos 5250 ARM Cortex-A15 (cykly / bajt)[1]Algoritmus | Velikost zprávy v bajtech |
---|
dlouho | 4,096 | 1,536 | 576 | 64 | 8 |
---|
LSH-256-256 | 11.17 | 11.53 | 12.16 | 12.63 | 22.42 | 192.68 |
Přadeno-512-256 | 15.64 | 16.72 | 18.33 | 22.68 | 75.75 | 609.25 |
Blake-256 | 17.94 | 19.11 | 20.88 | 25.44 | 83.94 | 542.38 |
SHA-256 | 19.91 | 21.14 | 23.03 | 28.13 | 90.89 | 578.50 |
JH-256 | 34.66 | 36.06 | 38.10 | 43.51 | 113.92 | 924.12 |
Keccak-256 | 36.03 | 38.01 | 40.54 | 48.13 | 125.00 | 1000.62 |
Grøstl-256 | 40.70 | 42.76 | 46.03 | 54.94 | 167.52 | 1020.62 |
LSH-512-512 | 8.94 | 9.56 | 10.55 | 12.28 | 38.82 | 307.98 |
Blake-512 | 13.46 | 14.82 | 16.88 | 20.98 | 77.53 | 623.62 |
Přadeno-512-512 | 15.61 | 16.73 | 18.35 | 22.56 | 75.59 | 612.88 |
JH-512 | 34.88 | 36.26 | 38.36 | 44.01 | 116.41 | 939.38 |
SHA-512 | 44.13 | 46.41 | 49.97 | 54.55 | 135.59 | 1088.38 |
Keccak-512 | 63.31 | 64.59 | 67.85 | 77.21 | 121.28 | 968.00 |
Grøstl-512 | 131.35 | 138.49 | 150.15 | 166.54 | 446.53 | 3518.00 |
Testovací vektory
Zkušební vektory pro LSH pro každou délku digesce jsou následující: Všechny hodnoty jsou vyjádřeny v hexadecimálním tvaru.
LSH-256-224 ("abc") = F7 C5 3B A4 03 4E 70 8E 74 FB A4 2E 55 99 7C A5 12 6B B7 62 36 88 F8 53 42 F7 37 32
LSH-256-256 ("abc") = 5F BF 36 5D AE A5 44 6A 70 53 C5 2B 57 40 4D 77 A0 7A 5F 48 A1 F7 C1 96 3A 08 98 BA 1B 71 47 41
LSH-512-224 ("abc") = D1 68 32 34 51 3E C5 69 83 94 57 1E AD 12 8A 8C D5 37 3E 97 66 1B A2 0D CF 89 E4 89
LSH-512-256 ("abc") = CD 89 23 10 53 26 02 33 2B 61 3F 1E C1 1A 69 62 FC A6 1E A0 9E CF FC D4 BC F7 58 58 D8 02 ED EC
LSH-512-384 ("abc") = 5F 34 4E FA A0 E4 3C CD 2E 5E 19 4D 60 39 79 4B 4F B4 31 F1 0F B4 B6 5F D4 5E 9D A4 EC DE 0F 27 B6 6E 8D BD FA 47 25 2E 0D 0B 74 1B FD 91 F9 FE
LSH-512-512 ("abc") = A3 D9 3C FE 60 DC 1A AC DD 3B D4 BE F0 A6 98 53 81 A3 96 C7 D4 9D 9F D1 77 79 56 97 C3 53 52 08 B5 C5 72 24 BE F2 10 84 D4 20 83 E9 5A 4B D8 EB 33 E8 69 81 2B 65 03 1C 42 88 19 A1 E7 CE 59 6D
Implementace
LSH je zdarma pro jakékoli veřejné, soukromé, komerční nebo nekomerční použití. Zdrojový kód pro distribuci LSH implementovaný v C, Java a Pythonu lze stáhnout z webové stránky aktivace kryptografie KISA.[2]
KCMVP
LSH je jeden z kryptografických algoritmů schválených Korejským kryptografickým modulem pro ověřování modulů (KCMVP).[3]
Standardizace
LSH je zahrnut v následující normě.
- KS X 3262, hashovací funkce LSH (v korejštině)[4]
Reference
|
|
---|
| | Kategorie
|
|