Lebih lanjut dalam program ini
- Pernyataan masalah knapsack (+ mengapa knapsack?)
- Tantangan mudah dan sulit
- Contoh dari
- Sejarah
Apa itu enkripsi kunci publik?
.
: , .
, - !
- , , «», .
- . , , , .
: , .
, - !
Algoritma kunci publik umum pertama menggunakan algoritma ransel.
Berdasarkan definisi sistem kunci publik, dibutuhkan dua kunci untuk berhasil mengenkripsi (dan mendekripsi) pesan. Penerima pesan yang "sah" mengetahui kunci rahasiasedangkan pengirim memiliki kunci publik lain
Apa yang harus dilakukan jika kunci publik diketahui oleh penyerang?
Ada jawabannya: kunci publik harus diperoleh dari kunci rahasia menggunakan transformasi ( fungsi satu arah )
mengetahui A, mudah untuk menghitung fungsi itu sendiriB = f ( A )
, dan sulit untuk menghitung fungsi inversA = f − 1 ( B )

Apa itu "mudah" dan "sulit"?
.
«» , . ..n , — t ∝ n a , a — . , .
«» . , , .
..n , t ∝ 2 n , , .
«» , . ..
«» . , , .
..
Rumusan masalah knapsack adalah sebagai berikut
Set (vektor ransel)
Dalam versi paling terkenal dari masalah ransel, diperlukan untuk mengetahui apakah pasangan tertentu memilikinya
Analogi ransel
Dalam kasus yang paling sederhana
ransel terisi penuh.
Artinya, bayangkan Anda memiliki satu set timbangan 1, 6, 8, 15 dan 24, Anda perlu mengemas ransel dengan berat 30.

Pada prinsipnya, solusi selalu dapat ditemukan dengan pencarian subset yang menyeluruh
Tetapi bagaimana jika ada beberapa ratus angka
Dalam contoh kami, n = 5, agar tidak mempersulit presentasi. Dalam kondisi nyata, sebuah contoh akan memiliki, katakanlah, 300
Apakah fungsinya memenuhi persyaratan yang ditentukan?
Kami mendefinisikan fungsinya
Yaitu,
Fungsi
Enkripsi
Teks biasa
(. plain text) — , , . ( ).
Ada dua cara untuk mengenkripsi:
- Sandi pesan diperoleh dengan menaikkan elemen vektor knapsack ini ke kekuatan bit yang sesuai dari pesan terenkripsi dan kemudian mengalikan semua hasilnya, yaitu, jika
dan pesannyaA = ( 2 , 3 , 5 ) , maka sandi tersebut adalah nomornya( 100 ) ... Ini adalah cara perkalian .2 1 ∗ 3 0 ∗ 5 0 = 2 - Cipher pesan diperoleh dengan mengalikan elemen vektor knapsack ini dengan bit yang sesuai dari pesan terenkripsi dan kemudian menjumlahkan semua hasilnya, yaitu, jika
dan pesannyaA = ( 2 , 3 , 5 ) , maka sandi tersebut adalah nomornya( 100 ) ... Metode ini disebut aditif .2 ∗ 1 + 3 ∗ 0 + 5 ∗ 0 = 2
Contoh
Untuk mengenkripsi teks biasa dalam representasi biner, itu dibagi menjadi beberapa blok

Enkripsi ransel memberikan pendekatan yang baik untuk membuat kunci publik dan privat di mana kunci privat mudah digunakan dan kunci publik sulit untuk diketahui.
Jadi, kita dapat membuat sistem di mana: masalah "hard" adalah
kunci publiknya , karena dengan itu, Anda dapat dengan mudah mengenkripsi dan tidak mungkin untuk mendekripsi pesan.
kunci pribadi - masalah "mudah" akan berfungsi sebagai menggunakannya, Anda dapat dengan mudah mendekripsi pesan. Tanpa kunci privat, Anda harus menyelesaikan masalah ransel yang "sulit".
Masalah "mudah"
Vektor ransel super tumbuh
A = ( a 1 , . . . , a n ) , Σ i = 1 j − 1 a i < a j j = 2 , . . . , n , . .
Untuk vektor super-tumbuh Α, masalah ransel mudah dipecahkan. Itu. ransel mudah dirakit.
Mari kita ambil contoh:

Algoritma
- .
, , . , . - .
- (1)-(2) .
, .
Masalah "sulit"
Jauh lebih sulit untuk menguraikan masalah tas punggung yang tidak terlalu besar .
Salah satu algoritme, yang menggunakan tas ransel kunci pribadi berukuran besar dan tas ransel kunci publik yang tidak terlalu besar, dibuat oleh Merkle dan Hellman.
Mereka melakukan ini dengan mengambil tugas ransel yang terlalu besar dan mengubahnya menjadi tugas yang tidak terlalu besar.
(Merkle dan Hellman, menggunakan aritmatika modular, menemukan cara untuk mengubah ransel "ringan" menjadi tas "keras")
Buat kunci publik
Beberapa konsep penting
-
( x , m o d m ) x ,m
— ,x , [x/m] — ,m > 1 x = ( x , m o d m ) + [ x / m ] ∗ m
-
,A m > m a x A ,t < m .( t , m ) = 1
,B = ( b 1 , . . . , b n ) ,b i = ( t a i , m o d m ) , , B A m t , ,i = 1 , . . . , n .( m , t )
( t , m ) = 1
, ,t − 1 = u
t u ≡ 1 ( m o d m )
. ,1 ≤ u < m A B
.m , u
-
m > m a x A
, ,m > Σ i = 1 n a i B A .m , t
- — , , , .
Pencipta sistem kriptografi memilih sistem seperti itu
Interceptor pesan harus menyelesaikan masalah ransel untuk masuk
dan memecahkan masalah masuknya ransel
ditunjukkan dalam lemma berikut.
Lemma . Mari kita anggap itu
(i) Masalah ransel
(ii) Masalah ransel
(iii) Jika ada solusi untuk masuk
bukti (p. 104)
Contoh
Pertimbangkan urutan tumbuh super; misalnya, {1, 2, 4, 10, 20, 40}. Modulus harus lebih besar dari jumlah semua angka dalam barisan, misalnya 110. Pengali tidak boleh memiliki pembagi yang sama dengan modulusnya. Jadi mari kita pilih 31.

Jadi, kami menghitung kunci publik: {31, 62, 14, 90, 70, 30} dan kunci pribadi - {1, 2, 4, 10, 20.40}.
Sekarang mari kita coba mengirim urutan biner: 100100111100101110

Beberapa manfaat kunci publik
- Saat menggunakan sistem kriptografi kunci publik, kedua belah pihak tidak bertemu, mereka bahkan mungkin tidak saling mengenal dan menggunakan jenis komunikasi apa pun.
- Panjang kunci. Dalam kriptografi simetris, jika kuncinya lebih panjang dari pesan asli, tidak ada keuntungan nyata yang dicapai. Adapun untuk sistem kriptografi kunci publik, panjang kunci enkripsi tidak menjadi masalah, karena ini publik dan publik. Oleh karena itu, panjang kunci dekripsi tidak begitu penting (penerima hanya menyimpannya di tempat rahasia)
Sejarah
Untuk waktu yang lama, backpack cryptosystems dianggap sebagai cryptosystem yang paling menarik dan menjanjikan karena kelengkapan NP dan kecepatan enkripsi dan dekripsi yang tinggi. Banyak skema menggunakan masalah knapsack (dalam berbagai variasi), berikut ini hanya beberapa di antaranya: masalah knapsack kompak, masalah knapsack multiplikasi, masalah knapsack modular, masalah matrixcover, masalah faktorisasi grup ...
Sayangnya, kebanyakan dari mereka rentan terhadap serangan. Ternyata tidak sepele merancang sistem kriptografi yang aman berdasarkan masalah knapsack, meskipun masalah tersebut dikenal dengan NP-complete. Kebanyakan cryptosystem knapsack telah diretas. Meskipun demikian, berbeda dengan faktorisasi integer dan logaritma diskrit, masalah knapsack (solusi) umum adalah masalah NP-complete yang terbukti.
Beberapa orang berpikir bahwa suatu hari algoritma polinomial-waktu dapat ditemukan untuk memecahkan masalah faktorisasi integer dan logaritma diskrit, sedangkan masalah knapsack masih NP-complete.
Ada beberapa "TAPI" di sini.
Pertama, kelengkapan NP didasarkan pada analisis kasus terburuk, dan kedua, kelengkapan NP adalah karakteristik masalah umum, bukan kasus spesifik. Artinya jika kita mempertimbangkan rata-rata kompleksitas, masalah knapsack bisa jadi mudah.
Materi yang disusun berdasarkan literatur ini:
(1) A. Salomaa. Kriptografi Kunci Publik. - Springer-Verlag, 1990. - hal. 75-82, hlm. 101-111
(2)Min Kin Lai. Knapsack Cryptosystems : Past and Future - University of California, 2001
(3) Baocang Wang, Qianhong Wu, Yupu Hu. Skema enkripsi probabilistik berbasis ransel. 2007
(4) - (5)