Pengagihan kunci kuantum
Untuk modul Qiskit in Classrooms ini, pelajar perlu mempunyai persekitaran Python yang berfungsi dengan pakej-pakej berikut dipasang:
qiskitv2.1.0 atau lebih baharuqiskit-ibm-runtimev0.40.1 atau lebih baharuqiskit-aerv0.17.0 atau lebih baharuqiskit.visualizationnumpypylatexenc
Untuk menyediakan dan memasang pakej di atas, rujuk panduan Pasang Qiskit. Untuk menjalankan kerja pada komputer kuantum sebenar, pelajar perlu membuat akaun dengan IBM Quantum® dengan mengikuti langkah-langkah dalam panduan Sediakan akaun IBM Cloud anda.
Modul ini telah diuji dan menggunakan 5 saat masa QPU. Ini adalah anggaran sahaja. Penggunaan sebenar anda mungkin berbeza.
# Added by doQumentation — required packages for this notebook
!pip install -q numpy qiskit qiskit-aer qiskit-ibm-runtime
# Uncomment and modify this line as needed to install dependencies
#!pip install 'qiskit>=2.1.0' 'qiskit-ibm-runtime>=0.40.1' 'qiskit-aer>=0.17.0' 'numpy' 'pylatexenc'
Tonton panduan modul oleh Dr. Katie McCormick di bawah, atau klik di sini untuk menontonnya di YouTube.
Pengenalan dan motivasi​
Terdapat cara yang tidak terhitung untuk menyulitkan dan menyahsulit maklumat, dan ribuan cara telah dikaji dengan mendalam. Di sini, kita akan mengehadkan diri kepada kaedah penyulitan yang sangat awal dan sangat mudah, iaitu "penggantian mudah", supaya kita boleh memberi tumpuan kepada bahagian kuantum protokol ini. Bahagian kuantum boleh disesuaikan dengan banyak protokol lain dengan perubahan yang agak sedikit.
Penggantian mudah​
Penyulitan penggantian mudah ialah satu kaedah di mana satu huruf atau nombor digantikan dengan yang lain, sedemikian rupa sehingga terdapat pemetaan 1:1 daripada huruf dan nombor dalam mesej, kepada huruf dan nombor yang digunakan dalam jujukan yang disulitkan. Satu contoh dalam budaya popular ialah teka-teki cryptoquote atau cryptogram, di mana sebuah petikan atau frasa disulitkan menggunakan penggantian mudah, dan pemain perlu menyahsulitnya. Teka-teki ini mudah diselesaikan jika cukup panjang. Pertimbangkan contoh berikut:
R WVXRWVW GSZG R'W YVGGVI NZPV GSRH KIVGGB OLMT. GSZG DZB, KVLKOV DROO SZEV ZM VZHRVI GRNV HLOERMT RG. R SLKV R NZWV RG HRNKOV VMLFTS.
Orang yang menyelesaikan teka-teki ini secara manual kebanyakannya menggunakan helah yang melibatkan kebiasaan dengan struktur bahasa mesej asal. Sebagai contoh, dalam bahasa Inggeris, satu-satunya perkataan satu huruf seperti "R" yang disulitkan ialah "a" dan "I". Huruf berganda yang disulitkan dalam, contohnya, "KIVGGB" hanya boleh mengambil nilai-nilai tertentu. Terdapat perkara-perkara yang lebih halus yang memberikan petunjuk seperti perkataan paling biasa yang sepadan dengan corak "GSZG" ialah "that". Orang yang menggunakan kod untuk menyelesaikan ini mempunyai lebih banyak pilihan, termasuk hanya mengimbas kemungkinan sehingga perkataan Inggeris ditemui, dan mengemas kini sambil mengekalkan perkataan itu. Satu kaedah yang mudah tetapi berkesan ialah menggunakan kekerapan huruf, terutamanya apabila mesej cukup panjang untuk menjadi sampel bahasa Inggeris yang representatif.
Soalan semak kendiri​
Cuba tangan anda untuk menyahsulit ini jika mahu, walaupun ia tidak diperlukan untuk selebihnya modul. Klik anak panah di bawah untuk melihat mesej.
Jawapan:
I decided that I'd better make this pretty long. That way, people will have an easier time solving it. I hope I made it simple enough.
Contoh di atas dikaitkan dengan "kunci", iaitu pemetaan daripada huruf yang disulitkan kepada huruf yang dinyahsulit. Dalam kes ini, kuncinya ialah:
- A (tidak digunakan, anggap sahaja Z)
- B->Y
- C (tidak digunakan, anggap sahaja X)
- D->W
- E->V
- F->U
- ...
Dan seterusnya. Mudah kata, ini bukan kunci yang baik. Kunci di mana huruf yang disulitkan dan dinyahsulit hanyalah versi beralih daripada abjad (seperti A->B dan B->C) dipanggil sifir "Caesar shift".
Perlu diingat bahawa ini sangat sukar jika teksnya pendek. Malah, jika teks itu sangat pendek, ia tidak boleh ditentukan. Pertimbangkan:
URYYP
Terdapat banyak kemungkinan penyahsulitan, menggunakan kunci yang berbeza: HELLO, PETTY, HAPPY, JIGGY, STOOL. Boleh kamu fikirkan yang lain?
Tetapi jika anda menghantar banyak mesej seperti ini, akhirnya, penyulitan akan dipecahkan. Jadi, anda tidak sepatutnya menggunakan "kunci" yang sama terlalu kerap. Malah, yang terbaik adalah jika anda menggunakan penggantian tertentu hanya sekali sahaja. Bukan hanya dalam satu mesej, tetapi hanya untuk satu aksara tunggal! Dengan ini, kami bermaksud anda akan mempunyai skim penyulitan atau kunci untuk setiap aksara yang digunakan dalam mesej, mengikut urutan. Jika anda ingin menghantar mesej kepada seorang rakan menggunakan cara ini, anda dan rakan anda memerlukan sekeping kertas (pada zaman dahulu) di mana kunci yang sentiasa berubah ini ditulis. Anda akan menggunakannya hanya sekali sahaja. Ini dipanggil "pad sekali guna" (one-time pad).
Pad sekali guna​
Mari kita lihat bagaimana ini berfungsi dengan contoh. Ini boleh dilakukan sepenuhnya dengan huruf, tetapi adalah lazim untuk menukar daripada huruf kepada nombor, katakanlah, dengan menetapkan A=0, B=1, C=2…. Anggaplah kita adalah rakan-rakan yang terlibat dalam aktiviti sulit dan kita telah berkongsi pad. Sebaik-baiknya, kita akan berkongsi banyak pad, tetapi pad hari ini ialah:
EDGRPOJNCUWQZVMK…
Atau, menukarkan kepada nombor mengikut kedudukan dalam abjad:
4,3,6,17,15, 14, 9, 13, 2, 20, 22, 16, 25, 21, 12, 10…
Katakanlah, saya ingin berkongsi dengan anda, mesej berikut:
"I love quantum!"
Atau, setara dengan:
8, 11, 14, 21, 4, 16, 20, 0, 13, 19, 20, 12
Kita tidak mahu menghantar kod di atas; itu adalah penggantian mudah, yang langsung tidak selamat. Kita mahu menggabungkan ini dengan kunci kita dengan cara tertentu. Cara yang biasa ialah penambahan modulo 26. Kita tambahkan nilai mesej dengan nilai kunci, mod 26, sehingga kita sampai ke penghujung mesej. Jadi, kita akan menghantar
8+4 (mod 26) = 12, 11+3 (mod 26) = 14, 14+6 (mod 26) = 20, 21+17 (mod 26) = 12…
= 12, 14, 20, 12, 19, 4, 3, 13, 15, 13, 16, 2
Perhatikan bahawa jika seseorang memintas ini dan TIDAK mempunyai kunci, menyahsulitnya adalah mustahil sepenuhnya! Malah kedua-dua "u" dalam "quantum" tidak dikodkan dengan nombor yang sama! Yang pertama ialah 3, dan yang kedua ialah 16… dalam perkataan yang sama!
Jadi, saya hantar ini kepada anda, dan anda mempunyai kunci yang sama dengan saya. Anda membuat asal penambahan modulo 26 yang anda tahu saya lakukan:
12, 14, 20, 12, 19, 4, 3, 13, 15, 13, 16, 2
=(4+x1) (mod 26), (3+x2) (mod 26), (6+x3) (mod 26), (17+x4) (mod 26),…
Supaya mesej x1, x2, x3, x4… mestilah
8, 11, 14, 21…
Akhirnya, menukarkan ini kepada teks, kita mendapat
"I love quantum".
Inilah pad sekali guna.
Perlu diingat bahawa jika kunci lebih pendek daripada mesej, kita mula mengulangi pengekodan kita. Itu masih merupakan masalah penyahsulitan yang sukar untuk diselesaikan, tetapi bukan mustahil jika ia diulang cukup banyak kali. Jadi, anda memerlukan kunci (atau "pad") yang panjang.
Dalam banyak konteks, pelajar sudah biasa dengan penyulitan ini, sehingga aktiviti ini boleh dilangkau. Tetapi ini adalah peringatan semula yang agak cepat dan mudah.
Langkah 1: Dapatkan rakan, dan kongsi urutan 4 huruf untuk digunakan sebagai kunci. Mana-mana urutan 4 huruf yang sesuai untuk kelas boleh digunakan.
Langkah 2: Pilih perkataan rahsia 4 huruf yang anda mahu hantar kepada rakan anda (kedua-dua rakan melakukan ini supaya anda menghantar perkataan rahsia yang berbeza kepada satu sama lain)
Langkah 3: Tukarkan kunci/pad 4 huruf dan setiap perkataan rahsia 4 huruf kepada nombor menggunakan A = 1, B = 2, dan seterusnya.
Langkah 4: Gabungkan perkataan 4 huruf anda dengan pad sekali guna menggunakan penambahan modulo 26.
Langkah 5: Serahkan kepada rakan anda urutan nombor yang mengekodkan perkataan rahsia anda, dan rakan anda akan menyerahkan miliknya kepada anda.
Langkah 6: Nyahkod perkataan masing-masing menggunakan penolakan modulo 26.
Langkah 7: Sahkan. Adakah ia berjaya?
Soalan susulan​
Tukar perkataan yang disulitkan dengan kumpulan lain, yang tidak mempunyai akses kepada pad sekali guna anda. Boleh anda menyahsulitnya? Terangkan mengapa atau mengapa tidak?
Diharapkan aktiviti di atas menjelaskan bahawa pad sekali guna adalah satu bentuk penyulitan yang tidak boleh dipecahkan, dengan beberapa andaian, seperti:
- Kunci mempunyai panjang yang sama dengan mesej yang dihantar, atau lebih panjang
- Kunci benar-benar rawak
- Kunci digunakan hanya sekali kemudian dibuang
Jadi, ini sangat bagus. Kita mempunyai penyulitan yang tidak boleh dipecahkan... melainkan seseorang mendapat kunci kita. Jika seseorang mendapat kunci kita, semua perkara akan terdedah. Perbezaan antara penyulitan yang tidak boleh dipecahkan dan semua rahsia kita terdedah menjadikan perkongsian kunci yang selamat amat penting. Matlamat pengagihan kunci kuantum adalah untuk memanfaatkan kekangan yang alam semula jadi telah kenakan ke atas maklumat kuantum bagi mengamankan kunci/pad sekali guna yang dikongsi.
Menggunakan keadaan kuantum sebagai kunci​
Mari kita anggap kita bekerja dengan Qubit (menekankan bahawa Qubit mempunyai dua eigenstate). Seseorang boleh menggunakan sistem kuantum dengan bilangan keadaan kuantum yang lebih tinggi, tetapi komputer kuantum terkini di IBM® menggunakan Qubit. Tidak ada masalah untuk mengekodkan A, B, C kita kepada jujukan 0 dan 1. Jadi, sudah cukup bagi kita untuk berkongsi kunci yang terdiri daripada 0 dan 1 dan melakukan penambahan modulo 2 pada setiap bit yang menyimpan huruf.
Semak pemahaman anda​
Baca soalan di bawah, fikirkan jawapan anda, kemudian klik segitiga untuk mendedahkan penyelesaian.
Jika kita benar-benar hanya mengambil berat tentang huruf Inggeris, berapa banyak bit yang kita perlukan?
Jawapan:
Rakan-rakan kita, Alice dan Bob ingin berkongsi kunci kuantum dengan cara yang tiada orang lain dapat memintas (sekurang-kurangnya tidak tanpa mereka mengetahuinya). Mereka perlu mempunyai cara untuk menghantar keadaan kuantum kepada satu sama lain. Melakukan ini dengan kesetiaan tinggi dan tanpa hingar/ralat TIDAK lah mudah. Tetapi terdapat dua pendekatan yang patut kita faham pada peringkat ini:
- Kabel gentian optik membolehkan anda menghantar cahaya… yang sangat mekanik-kuantum. Foton tunggal boleh dikesan dengan kesetiaan tinggi melalui banyak kilometer kabel gentian optik. Ini bukan saluran kuantum yang sempurna dan bebas ralat, tetapi ia boleh sangat baik.
- Kita boleh menggunakan teleportasi kuantum, seperti yang dihuraikan dalam modul sebelumnya. Iaitu, Alice dan Bob boleh berkongsi Qubit yang terjerat dan keadaan boleh dihantar dari Alice kepada Bob menggunakan protokol teleportasi.
Untuk modul ini, kita tidak mahu memerlukan anda mempunyai persediaan optik kesetiaan tinggi untuk berkongsi foton, jadi kita akan menggunakan kaedah kedua untuk berkongsi keadaan kuantum. Tetapi ini bukan bermakna ia adalah yang paling realistik untuk perkongsian kunci kuantum jarak jauh.
Kita kini akan meneroka protokol yang pertama kali digariskan oleh Charles Bennett dan Gilles Brassard pada tahun 1984 untuk berkongsi keadaan yang diukur dalam asas yang berbeza dari Alice kepada Bob. Kita akan menggunakan regimen pengukuran yang bijak untuk membina kunci yang akan digunakan dalam penyulitan kemudian. Dalam erti kata lain, kita mengagihkan kunci kuantum antara dua pihak yang ingin berkomunikasi, justeru "pengagihan kunci kuantum" (QKD).
Langkah QKD 1: Bit rawak dan asas rawak Alice​
Alice akan mulakan dengan menjana jujukan rawak 0 dan 1. Dia kemudian akan memilih secara rawak asas untuk menyediakan keadaan kuantum, berdasarkan setiap bit rawak, menggunakan jadual di bawah (jadual yang juga dimiliki Bob):
| Asas | bit = 0 | bit = 1 |
|---|---|---|
| Z | ||
| X |
Sebagai contoh, katakanlah Alice menjana secara rawak angka 0, dan memilih secara rawak asas X. Maka dia akan menyediakan keadaan kuantum . Seseorang pasti boleh memanfaatkan kerawakan kuantum untuk menjana set rawak 0 dan 1, dan pilihan asas yang rawak. Buat masa ini, mari kita hanya anggap set rawak telah dijana, seperti berikut:
| Bit Alice | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | ... |
|---|---|---|---|---|---|---|---|---|---|---|
| Asas Alice | X | X | Z | Z | Z | X | Z | Z | X | ... |
| Keadaan Alice |