|
|
Schemat uwierzytelnionego szyfrowania VMPC-MAC
Źródłowe prace naukowe opisujące Technologię Szyfrowania VMPC:
Implementacje Technologii Szyfrowania VMPC:
Uwierzytelnianie pozwala stwierdzić, czy po odszyfrowaniu otrzymaliśmy tę samą wiadomość, która została zaszyfrowana
(a więc czy użyliśmy właściwego klucza i czy zaszyfrowana wiadomość nie została w międzyczasie zmieniona).
Dla szyfru VMPC funkcję tę realizuje zaprojektowany przeze mnie algorytm VMPC-MAC (Message Authentication Code).
Podczas szyfrowania algorytm VMPC-MAC oblicza kod uwierzytelniający wiadomość (MAC) na podstawie kolejnych bajtów
zaszyfrowanej wiadomości oraz na podstawie stanu wewnętrznego szyfru (uzyskanego z hasła i wektora inicjującego).
Tak obliczony kod MAC (zajmujący 20 bajtów / 160 bitów) należy dołączyć do
zaszyfrowanej wiadomości. Podczas deszyfrowania obliczany jest kod MAC wg tego samego algorytmu.
Jeśli okaże się on identyczny z tym dołączonym do wiadomości,
oznacza to, że wiadomość po odszyfrowaniu jest tą samą wiadomością, która została
zaszyfrowana oraz że użyty został właściwy klucz.
Pełną specyfikację Technologii Szyfrowania VMPC
można znaleźć w trzech poświęconej jej
pracach naukowych.
Gotowe
implementacje Technologii Szyfrowania VMPC
dostępne są za darmo
w trzech językach programowania - C, Pascal/Delphi oraz Assembler.
W tabelach poniżej przedstawiono pseudokod ilustrujący algorytm VMPC-MAC.
Schemat uwierzytelnionego szyfrowania VMPC-MAC
|
P |
: 256-bajtowa tablica zawierająca permutację liczb całkowitych {0,1,...,255} |
|
n, s |
: 8-bitowe zmienne całkowitoliczbowe |
|
T |
: 32-bajtowa tablica |
|
x1, x2, x3, x4 |
: 8-bitowe zmienne całkowitoliczbowe |
|
M |
: 20-bajtowa tablica, w której zostanie zapisany wynikowy kod MAC |
|
m, g, R, i |
: tymczasowe zmienne całkowitoliczbowe |
|
L |
: długość wiadomości w bajtach |
|
+ |
oznacza dodawanie modulo 256 |
Tabela 3. Schemat uwierzytelnionego szyfrowania VMPC-MAC
1.1 Wykonaj
algorytm inicjowania klucza VMPC
(VMPC-KSA lub VMPC-KSA3).
1.2 m = g = x1 = x2 = x3 = x4 = 0; T[i]=0 dla i ∈ {0,1,...,31}
2. powtórz kroki 3-16 L razy:
3. s = P[ s + P[n] ]
4. Szyfrogram[m] = Wiadomość[m] xor P[P[P[s]]+1]
5. x4 = P[ x4 + x3 ]
6. x3 = P[ x3 + x2 ]
7. x2 = P[ x2 + x1 ]
8. x1 = P[ x1 + s + Szyfrogram[m] ]
9. T[g] = T[g] xor x1
10. T[g+1] = T[g+1] xor x2
11. T[g+2] = T[g+2] xor x3
12. T[g+3] = T[g+3] xor x4
13. zamień P[n] z P[s]
14. g = (g + 4) mod 32
15. n = n + 1
16. Zwiększ o 1 wartość m
17. Wykonaj Fazę Przetwarzania Końcowego
zdefiniowaną w Tabeli S.17.
18. Wykonaj funkcję rundy VMPC-KSA dla tablicy T: KSARound(T, 32).
Jest to równoznaczne z wykonaniem algorytmu w Tabeli S.18.
19. Zapisz w tablicy M 20 liczb wygenerowanych przez
szyfr strumieniowy VMPC.
Jest to równoznaczne z wykonaniem algorytmu w Tabeli S.19.
20. Dopisz 20-bajtowy kod MAC (zapisany w tablicy M)
na końcu Szyfrogramu.
|
Tabela S.17. Faza Przetwarzania Końcowego (krok 17 algorytmu z Tabeli 1
17.1. R = 1
17.2. powtórz kroki (17.3 - 17.15) 24 razy:
17.3. s = P[ s + P[n] ]
17.4. x4 = P[ x4 + x3 + R ]
17.5. x3 = P[ x3 + x2 + R ]
17.6. x2 = P[ x2 + x1 + R ]
17.7. x1 = P[ x1 + s + R ]
17.8. T[g] = T[g] xor x1
17.9. T[g+1] = T[g+1] xor x2
17.10. T[g+2] = T[g+2] xor x3
17.11. T[g+3] = T[g+3] xor x4
17.12. zamień P[n] z P[s]
17.13. g = (g + 4) mod 32
17.14. n = n + 1
17.15. R = R + 1
|
Tabela S.18. Krok 18 (KSARound(T, 32)) algorytmu z Tabeli 1
18.1. n = i = 0
18.2. powtórz kroki 18.3 - 18.6 768 razy:
18.3. s = P[ s + P[n] + T[i] ]
18.4. zamień P[n] z P[s]
18.5. i = (i + 1) mod 32
18.6. n = n + 1
|
Tabela S.19. Krok 19 (20 liczb szyfru strumieniowego VMPC) algorytmu z Tabeli 1
19.0. Upewnij się, że n = 0 (tak powinno być po kroku 18)
19.1. powtórz kroki 19.2 - 19.5 20 razy:
19.2. s = P[ s + P[n] ]
19.3. M[n] = P[P[P[s]]+1]
19.4. zamień P[n] z P[s]
19.5. n = n + 1
|
Przykładowe dane wyjściowe algorytmów (test vectors) można znaleźć w
pracach naukowych
oraz na stronie specjalistycznej (w języku angielskim):
www.vmpcfunction.com
Publikacje naukowe i popularnonaukowe, w których opisana została Technologia Szyfrowania VMPC:
-
VMPC One-Way Function and Stream Cipher
(Funkcja jednokierunkowa i szyfr strumieniowy VMPC).
Międzynarodowa konferencja kryptograficzna
Fast Software Encryption
(FSE 2004),
Delhi, Indie, 5-7 lutego 2004
[PDF]
-
Funkcja jednokierunkowa VMPC i system uwierzytelnionego szyfrowania VMPC-Tail-MAC.
Krajowa Konferencja Zastosowań Kryptografii
Enigma 2004,
Warszawa, 10-13 maja 2004
[PDF]
-
Rok w kryptoanalizie VMPC, schemat uwierzytelnionego szyfrowania VMPC-MAC oraz algorytm VMPC-HASH.
Krajowa Konferencja Zastosowań Kryptografii
Enigma 2005,
Warszawa, 30 maja - 02 czerwca 2005
[PDF]
-
VMPC-MAC: A Stream Cipher Based Authenticated Encryption Scheme
(VMPC-MAC: schemat uwierzytelnionego szyfrowania oparty na szyfrze strumieniowym).
Archiwum Międzynarodowego Stowarzyszenia Badań Kryptologicznych
IACR ePrint Archive,
11 listopada 2004, Report 2004/301
[PDF]
-
Security of Symmetric Encryption Schemes with One-Way IND-CNA Key Setup
(Bezpieczeństwo symetrycznych schematów szyfrowania z jednokierunkowym inicjowaniem klucza typu IND-CNA).
Archiwum Międzynarodowego Stowarzyszenia Badań Kryptologicznych
IACR ePrint Archive,
20 maja 2004, Report 2004/120.
[PDF]
-
Artykuł "Funkcja jednokierunkowa i szyfr strumieniowy VMPC", magazyn komputerowy
SOFTWARE 2.0
numer 9 (117), wrzesień 2004, strony 26-29. Zobacz okładkę magazynu.
Artykuł online
[PDF]
-
Artykuł "Szyfrowanie i uwierzytelnianie z użyciem szyfru VMPC",
magazyn komputerowy
Software Developer's Journal
numer 9 (129),
wrzesień 2005, strony 24-27. Artykuł opublikowany w polskiej, angielskiej i francuskiej edycji magazynu.
Artykuł online
[PDF]
|
|
|
|
Publikacja na konferencji Międzynarodowego Stowarzyszenia Badań Kryptologicznych (IACR) FSE 2004
|
|
Publikacje na Krajowej Konferencji Zastosowań Kryptografii Enigma w Warszawie
|
|
Nagroda Wrocławskiego Centrum Transferu Technologii przy Politechnice Wrocławskiej
|
|
Rekomendowany projekt magazynu Software Developer's Journal
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|