Masalah knapsack dalam kriptografi

Masalah Knapsack (Knapsack Problem) adalah masalah yang menjadi dasar kriptografer Amerika Ralph Merkle dan Martin Hellman mengembangkan algoritma enkripsi kunci publik pertama.



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 B...



Apa yang harus dilakukan jika kunci publik diketahui oleh penyerang?



Ada jawabannya: kunci publik harus diperoleh dari kunci rahasia menggunakan transformasi ( fungsi satu arah )fdengan dua properti berikut:



  • B=f(A)mengetahui A, mudah untuk menghitung fungsi itu sendiri


  • A=f1(B), dan sulit untuk menghitung fungsi invers




Apa itu "mudah" dan "sulit"?
.

«» , . .. n , — tna, a — . , .



«» . , , .



.. n , t2n, , .





Rumusan masalah knapsack adalah sebagai berikut



Set (vektor ransel) A=(a1,...,an) Apakah satu set yang dipesan n (n>2), bilangan asli yang berbeda ai... Biarlah ada nomork- utuh dan positif. Tugasnya adalah menemukan set seperti ituaiSehingga secara total mereka memberi dengan tepat k...



Dalam versi paling terkenal dari masalah ransel, diperlukan untuk mengetahui apakah pasangan tertentu memilikinya(A,k)keputusan. Dalam varian yang digunakan dalam kriptografi, Anda membutuhkan masukan ini(A,k)membangun solusi dengan mengetahui bahwa solusi seperti itu ada. Kedua opsi ini NP-complete.



Analogi ransel



Dalam kasus yang paling sederhana k menunjukkan ukuran (kapasitas) ransel, dan masing-masing nomor aimenunjukkan ukuran (berat) barang yang dapat dimasukkan ke dalam ransel. Tugasnya adalah menemukan set barang sedemikian rupa sehingga

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 dan memeriksa jumlah mereka yang mana k... Dalam kasus kami, ini berarti kekerasan25=32subset (termasuk set kosong). Ini sepenuhnya bisa dilakukan.



Tetapi bagaimana jika ada beberapa ratus angkaai?

Dalam contoh kami, n = 5, agar tidak mempersulit presentasi. Dalam kondisi nyata, sebuah contoh akan memiliki, katakanlah, 300ai... Intinya di sini adalah bahwa tidak ada algoritme yang diketahui memiliki kompleksitas yang jauh lebih rendah dibandingkan dengan penelusuran lengkap. Cari di antara2300subset tidak dapat diproses. Memang, masalah knapsack dikenal sebagai NP-complete ... Masalah NP-complete dianggap sulit untuk dihitung.



Apakah fungsinya memenuhi persyaratan yang ditentukan?



Kami mendefinisikan fungsinyaf(x)dengan cara berikut. Nomor berapa saja0x2n1 dapat diberikan oleh representasi biner dari nbit, di mana angka nol di depan ditambahkan jika perlu. Sekarang mari kita definisikanf(x) sebagai nomor yang diperoleh dari A menyimpulkan semua seperti itu aibahwa bit yang sesuai dalam notasi biner xsama dengan 1.



Yaitu,

f(1)=f(0...001)=an



f(2)=f(0...010)=an1



f(3)=f(0...011)=an1+an



...





Fungsi f() ditentukan n set A... Tentunya jika kita mampu menghitungx dari f(x), maka dalam waktu yang hampir bersamaan masalah ransel akan teratasi: x representasi binernya segera dihitung, yang pada gilirannya memberikan komponen-komponen himpunan Atermasuk dalam jumlah untuk f(x)... Di sisi lain, perhitungannyaf(x) dari xringan. Karena masalah knapsack adalah NP-complete,f(x)adalah kandidat yang baik untuk fungsi satu arah. Tentu saja, orang harus menuntut itun cukup besar, jangan kurangi 200...



Enkripsi



Teks biasa
(. plain text) — , , . ( ).



Ada dua cara untuk mengenkripsi:



  1. Sandi pesan diperoleh dengan menaikkan elemen vektor knapsack ini ke kekuatan bit yang sesuai dari pesan terenkripsi dan kemudian mengalikan semua hasilnya, yaitu, jika A=(2,3,5)dan pesannya (100), maka sandi tersebut adalah nomornya 213050=2... Ini adalah cara perkalian .
  2. Cipher pesan diperoleh dengan mengalikan elemen vektor knapsack ini dengan bit yang sesuai dari pesan terenkripsi dan kemudian menjumlahkan semua hasilnya, yaitu, jika A=(2,3,5)dan pesannya (100), maka sandi tersebut adalah nomornya 21+30+50=2... Metode ini disebut aditif .



Contoh



Untuk mengenkripsi teks biasa dalam representasi biner, itu dibagi menjadi beberapa blokn(misalnya, Anda dapat merepresentasikan bobot 30 dengan biner 11110). Diyakini bahwa satu menunjukkan adanya suatu barang di ransel, dan nol menunjukkan ketiadaannya.





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=(a1,...,an) , Σi=1j1ai<aj j=2,...,n, . .



Untuk vektor super-tumbuh Α, masalah ransel mudah dipecahkan. Itu. ransel mudah dirakit.

Mari kita ambil contoh:





Algoritma
  1. .

    , , . , .
  2. .
  3. (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,modm) x m,

    x — , m>1, [x/m] — ,

    x=(x,modm)+[x/m]m





  • A, m>maxA t<m , (t,m)=1.

    B=(b1,...,bn) , bi=(tai,modm), i=1,...,n, , B A m t , , (m,t).

    (t,m)=1

    t1=u, ,

    tu1(modm)



    1u<m. , A B

    m,u.


  • m>maxA

    m>Σi=1nai, , B A m,t.


  • — , , , .




Pencipta sistem kriptografi memilih sistem seperti itu A,t,m,Bvektor itu A tumbuh super, dan B datang dari A perkalian modular yang kuat sehubungan dengan m,t... VektorB diperluas sebagai kunci enkripsi dan panjang blok biner n dikirim ke desainer sebagai angka βdiperoleh dengan menggunakan vektor B...



Interceptor pesan harus menyelesaikan masalah ransel untuk masuk(B,β)... Pencipta sistem kriptografi menghitungα=(uβ,modm)

dan memecahkan masalah masuknya ransel (A,α)... Mengapa semua ini berhasil

ditunjukkan dalam lemma berikut.



Lemma . Mari kita anggap ituA=(a1,...,an)vektor dan vektor super berkembang B berasal dari A perkalian modular yang kuat sehubungan dengan m,t... Anggaplah itu lebih jauhut1(modm), β - bilangan asli sewenang-wenang dan α=(uβ,modm)... Maka pernyataan berikut ini benar.



(i) Masalah ransel(A,α)solvable dalam waktu linier. Jika ada solusi, maka itu unik.

(ii) Masalah ransel(B,β)memiliki paling banyak satu solusi.

(iii) Jika ada solusi untuk masuk(B,β), lalu cocok dengan satu-satunya solusi entri (A,α)...

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)



All Articles