05.03.2024







Projekt VMPC:


Badania nad funkcją VMPC i problemem matematycznym "czy P=NP?"
pieknafunkcja.pl



Aplikacja do szyfrowania danych VMPCrypt
szyfrowanie.com



Gra Permutu na bazie funkcji VMPC
permutu.pl







Zobacz także:


Gra komputerowa Urban



Multimedialne kursy do nauki języka angielskiego
ADL Publishing




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]







FSE 2004
Publikacja na konferencji Międzynarodowego Stowarzyszenia Badań Kryptologicznych (IACR) FSE 2004

Konferencje Enigma
Publikacje na Krajowej Konferencji Zastosowań Kryptografii Enigma w Warszawie

WCTT
Nagroda Wrocławskiego Centrum Transferu Technologii przy Politechnice Wrocławskiej

Software Developer's Journal
Rekomendowany projekt magazynu Software Developer's Journal























Copyright © 1999-2022 by Bartosz Żółtak
Aktualizacja: 05.03.2024