Szyfr Plecakowy

Jest to szyfr asymetryczny więc posiada dwa rodzaje kluczy: publiczny oraz prywatny.

Specyfikacja algorytmu plecakowego

Mamy tzw. wektor załadunku , w którym wszystkie wartości są różne od siebie.

Jest to taki wektor, który możemy interpretować jaki wagi poszczególnych przedmiotów, które mogą znaleźć się w plecaku.

Tekst jawny natomiast w przypadku tego szyfru to skończony ciąg binarny, czyli gdzie .

Zatem szyfrogram (jako waga całego plecaka) wyraża się wzorem

Podsumowując:

  • Klucz publiczny - wektor załadunku a
  • Tekst jawny (to co szyfrujemy) - wektor binarny x
  • Szyfr (to co zaszyfrowaliśmy) - iloczyn dwóch wektorów S

Odszyfrowanie - problemy

Jeśli udało nam się dany tekst jawny zaszyfrować, co stanie się w momencie, gdy zechcemy do odszyfrować? Czy da się zawsze uzyskać jednoznaczną odpowiedź jeśli wektor załadunku jest dowolnym wektorem?

Prosty szyfr plecakowy

Prostym szyfrem plecakowym nazywamy taki problem, w którym każda kombinacja elementów daje jednoznaczne rozwiązanie.

Aby mogło do tego dojść, wektor załadunku musi być superrosnący, to znaczy, że suma wszystkich elementów musi być mniejsza niż .

Odszyfrowywanie przebiega wtedy bez problemu, bo dostajemy jednoznaczną odpowiedź.

Przykład prostego szyfru plecakowego

Trudny szyfr plecakowy

Zakładamy, że posiadamy klucz do prostego szyfru plecakowego. W tym celu chcielibyśmy by nasz wektor załadunku nie był już wektorem superrosnącym co nie? Jeśli tak się stanie, naszej wiadomości nie będzie dało się rozszyfrować jednoznacznie.

W tym celu należy:

  1. Wybrać taką liczbę , która jest większa od sumy elementów prostego plecaka
  2. Wybrać taką liczbę , dla której
  3. Znajdujemy taką liczbę , która jest odwrotnością modularną , tzn. , posłuży nam ona do odszyfrowywania

#pk#it