Quantum key distribution
Para sa modyul na ito ng Qiskit in Classrooms, kailangang magkaroon ang mga estudyante ng gumaganang Python environment na may mga sumusunod na package na naka-install:
qiskitv2.1.0 o mas bagoqiskit-ibm-runtimev0.40.1 o mas bagoqiskit-aerv0.17.0 o mas bagoqiskit.visualizationnumpypylatexenc
Para i-set up at i-install ang mga package sa itaas, tingnan ang gabay na Install Qiskit. Upang makapagpatakbo ng mga trabaho sa tunay na mga quantum computer, kailangang mag-set up ng account ang mga estudyante sa IBM Quantum® sa pamamagitan ng pagsunod sa mga hakbang sa gabay na Set up your IBM Cloud account.
Ang modyul na ito ay nasubok at gumamit ng 5 segundo ng QPU time. Pagtatantya lamang ito. Maaaring mag-iba ang iyong aktwal na paggamit.
# 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'
Panoorin ang walkthrough ng modyul ni Dr. Katie McCormick sa ibaba, o mag-click dito para mapanood ito sa YouTube.
Panimula at motibasyon
Mayroon nang walang katapusang mga paraan para i-encrypt at i-decrypt ang impormasyon, at libu-libong paraan ang lubos na pag-aralan na. Dito, limitahan natin ang ating sarili sa isang napakaagang at napakasimpleng paraan ng encryption, na tinatawag na "simpleng pagpapalit" (simple replacement), upang makapag-focus sa quantum na bahagi ng protocol na ito. Ang quantum na bahagi ay maaaring i-adapt sa maraming iba pang protocol nang may medyo kaunting pagbabago.
Simpleng pagpapalit
Ang simpleng pagpapalit na encryption ay isa kung saan ang isang titik o numero ay pinapalitan ng isa pa, sa paraang mayroon nang 1:1 na pagmamapa mula sa mga titik at numero sa isang mensahe, patungo sa mga titik at numero na ginagamit sa isang naka-encrypt na pagkakasunud-sunod. Ang isang halimbawa nito sa pop culture ay ang cryptoquote o cryptogram puzzle, kung saan ang isang sipi o parirala ay ine-encrypt gamit ang simpleng pagpapalit, at ang manlalaro ay kailangang i-decrypt ito. Madaling malutas ang mga ito kung sapat ang haba nila. Isaalang-alang ang halimbawang ito:
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.
Karamihan sa mga taong naglulutas ng mga ito nang kamay ay gumagamit ng mga tricks na may kinalaman sa pamilyaridad sa istruktura ng wika ng orihinal na mensahe. Halimbawa, sa Ingles, ang mga salitang isang titik lamang tulad ng naka-encrypt na "R" ay "a" at "I" lamang. Ang mga doble titik na naka-encrypt sa, halimbawa, ang "KIVGGB" ay maaaring kumuha lamang ng ilang mga halaga. May mas banayad na mga bagay na nagbibigay ng pahiwatig tulad ng ang pinakakaraniwang salitang akma sa pattern na "GSZG" ay "that". Ang mga taong gumagamit ng code para malutas nito ay may mas maraming pagpipilian, kabilang ang simpleng pag-scan sa mga posibilidad hanggang mabawi ang isang salitang Ingles, at pag-update habang pinapanatili ang salitang iyon. Ang isang simpleng ngunit makapangyarihang paraan ay ang paggamit ng dalas ng titik, lalo na kapag ang mensahe ay sapat na haba upang maging representatibong sampol ng Ingles.
Tanong para sa pagsusuri
Subukan mong i-decrypt ito kung gusto mo, bagaman hindi ito kinakailangan para sa natitirang bahagi ng modyul. I-click ang tuldik sa ibaba para makita ang mensahe.
Sagot:
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.
Ang halimbawa sa itaas ay may kasamang "key", isang pagmamapa mula sa naka-encrypt patungo sa mga na-decrypt na titik. Sa kasong ito, ang key ay:
- A (hindi ginamit, tawagin nating Z)
- B->Y
- C (hindi ginamit, tawagin nating X)
- D->W
- E->V
- F->U
- ...
At iba pa. Hindi ito magandang key, sa mahinahon na pagsasalita. Ang mga key kung saan ang mga naka-encrypt at na-decrypt na titik ay mga bersyong inilipat lamang ng alpabeto (tulad ng A->B at B->C) ay tinatawag na "Caesar shift" ciphers.
Pansinin na ang mga ito ay napakahirap kung sila ay maikli. Sa katunayan, kung napakaikli nila, sila ay indeterminate. Isaalang-alang:
URYYP
Maraming posibleng decryption, gamit ang iba't ibang key: HELLO, PETTY, HAPPY, JIGGY, STOOL. Makakapagsalita ka ba ng iba pa?
Ngunit kung magpadala ka ng maraming mensahe na ganito, sa huli, mababasag ang encryption. Kaya, hindi dapat madalas gamitin ang parehong "key". Sa katunayan, pinakamabuti kung gagamitin mo ang isang partikular na pagpapalit nang isang beses lamang. Hindi sa isang mensahe lamang, kundi para sa isang solong karakter lamang! Ang ibig sabihin nito ay magkakaroon ka ng scheme o key ng encryption para sa bawat karakter na ginamit sa mensahe, sa pagkakasunud-sunod. Kung gusto mong magpadala ng mensahe sa isang kaibigan gamit ang schemang ito, ikaw at ang iyong kaibigan ay kailangan ng isang piraso ng papel (sa mga nakaraang panahon) kung saan naka-sulat ang palaging nagbabagong key na ito. Gagamitin mo ito nang isang beses lamang. Ito ay tinatawag na "one-time pad".
Ang one-time pad
Tingnan natin kung paano ito gumagana sa isang halimbawa. Maaaring gawin ito nang buo gamit ang mga titik, ngunit karaniwan na i-convert ang mga titik sa mga numero, sabihin, sa pamamagitan ng pagtatalaga ng A=0, B=1, C=2…. Ipagpalagay na tayo ay mga kaibigan na sangkot sa mga clandestine na aktibidad at nagbahagi tayo ng isang pad. Sa isip, magbabahagi tayo ng maraming pad, ngunit ang ngayon ay:
EDGRPOJNCUWQZVMK…
O, na-convert sa mga numero ayon sa posisyon sa alpabeto:
4,3,6,17,15, 14, 9, 13, 2, 20, 22, 16, 25, 21, 12, 10…
Ipagpalagay na gusto kong ibahagi sa iyo ang mensaheng:
"I love quantum!"
O, katumbas:
8, 11, 14, 21, 4, 16, 20, 0, 13, 19, 20, 12
Ayaw naming ipadala ang code sa itaas; ito ay isang simpleng pagpapalit, na hindi talaga ligtas. Gusto naming pagsamahin ito sa aming key sa ilang paraan. Ang isang karaniwang paraan ay ang karagdagan modulo 26. Idadagdag natin ang halaga ng mensahe sa halaga ng key, mod 26, hanggang maabot ang dulo ng mensahe. Kaya, magpapadala tayo ng
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
Pansinin na kung may sumasamsam nito at WALA silang key, ang pag-decrypt nito ay ganap na walang pag-asa! Kahit ang dalawang "u" sa "quantum" ay hindi naka-encode na may parehong numero! Ang una ay isang 3, at ang pangalawa ay isang 16… sa parehong salita!
Kaya, ipadala ko ito sa iyo, at mayroon kang parehong key na mayroon ako. I-undo mo ang karagdagan modulo 26 na alam mong ginawa ko:
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),…
Upang ang mensaheng x1, x2, x3, x4… ay dapat maging
8, 11, 14, 21…
Sa huli, pag-convert nito sa teksto, mayroon tayong
"I love quantum".
Ito ang isang one-time pad.
Pansinin na kung ang key ay mas maikli kaysa sa mensahe, magsisimula tayong ulitin ang ating encoding. Magiging mahirap pa rin ang decryption na problemang iyon, ngunit hindi imposible kung inulit ito nang sapat na beses. Kaya, kailangan mo ng mahabang key (o "pad").
Sa maraming konteksto, pamilyar na ang mga estudyante sa encryption na ito, kaya maaaring laktawan ang aktibidad na ito. Ngunit ito ay isang medyo mabilis at simpleng refresher.
Hakbang 1: Kumuha ng kasama, at magbahagi ng isang pagkakasunud-sunod ng 4 na titik upang gamitin bilang key. Anumang angkop na pagkakasunud-sunod ng 4 na titik para sa klase ay gagawin.
Hakbang 2: Pumili ng isang lihim na salitang 4 na titik na gusto mong ipadala sa iyong kasama (parehong kasosyo ang gagawa nito upang magpadala kayo ng iba't ibang lihim na salita sa isa't isa)
Hakbang 3: I-convert ang 4-titik na key/pad at bawat isa sa 4-titik na lihim na salita sa mga numero gamit ang A = 1, B = 2, at iba pa.
Hakbang 4: Pagsamahin ang iyong 4-titik na salita sa one-time pad gamit ang modulo 26 na karagdagan.
Hakbang 5: Ibigay sa iyong kasama ang pagkakasunud-sunod ng mga numero na nag-encode ng iyong lihim na salita, at ibibigay ng iyong kasama sa iyo ang kanila.
Hakbang 6: I-decode ang mga salita ng isa't isa gamit ang modulo 26 na pagbabawas.
Hakbang 7: Suriin. Gumana ba ito?
Mga follow-up na tanong
Palitan ng mga naka-encrypt na salita ang ibang grupo na walang access sa iyong one-time pad. Maaari mo bang i-decrypt ito? Ipaliwanag kung bakit o bakit hindi?
Sana ay malinaw sa aktibidad sa itaas na ang isang one-time pad ay isang hindi mababasag na anyo ng encryption, dahil sa ilang mga pagpapalagay, tulad ng:
- Ang key ay parehong haba ng mensaheng ipinapadala, o mas mahaba
- Ang key ay tunay na random
- Ang key ay ginagamit nang isang beses lamang at pagkatapos ay itatapon
Kaya, napakagaling nito. Mayroon tayong hindi mababasag na encryption... maliban kung may makakakuha ng ating key. Kung may makakakuha ng ating key, ang lahat ay mai-decrypt. Ang pagkakaiba sa pagitan ng hindi mababasag na encryption at ang pagkakalantad ng lahat ng ating mga lihim ay nagpapahalaga sa pagbabahagi ng isang ligtas na key nang labis. Ang layunin ng quantum key distribution ay ang samantalahin ang mga hadlang na ipinataw ng kalikasan sa quantum na impormasyon upang ma-secure ang isang shared key/one-time pad.
Paggamit ng mga quantum state bilang key
Ipagpalagay nating nagtatrabaho tayo gamit ang mga qubit (binibigyang-diin na ang mga qubit ay may dalawang eigenstate). Maaaring gumamit ng quantum systems na may mas mataas na bilang ng mga quantum state, ngunit ang mga pinakabagong quantum computer sa IBM® ay gumagamit ng mga qubit. Walang problema sa pag-encode ng ating A, B, C, sa mga pagkakasunud-sunod ng 0's at 1's. Kaya, sapat na para sa atin na magbahagi ng isang key ng 0's at 1's at gumawa ng karagdagan modulo 2 sa bawat bit na nag-iimbak ng isang titik.
Suriin ang iyong pag-unawa
Basahin ang tanong sa ibaba, isipin ang iyong sagot, at pagkatapos ay i-click ang tatsulok para ihayag ang solusyon.
Kung talagang pinapahalagahan lang natin ang mga titik sa Ingles, ilang bit ang kailangan natin?
Sagot:
Ang ating mga kaibigan, si Alice at Bob ay gustong magbahagi ng quantum key sa paraang walang ibang makaka-intercept nito (kahit man ay nang hindi nila malalaman). Kailangan nilang magkaroon ng paraan ng pagpapadala ng mga quantum state sa isa't isa. Ang paggawa nito nang may mataas na fidelity at walang ingay/error ay HINDI trivial. Ngunit may dalawang diskarte na dapat nating maiintindihan sa puntong ito:
- Ang isang fiber-optic cable ay nagpapahintulot sa iyo na magpadala ng liwanag… na napaka-quantum-mechanical. Ang mga solong photon ay maaaring madetekta nang may mataas na fidelity sa maraming kilometro ng fiber optic cable. Hindi ito isang perpekto, walang error na quantum channel, ngunit maaari itong maging napakagaling.
- Maaari tayong gumamit ng quantum teleportation, tulad ng inilarawan sa isang nakaraang modyul. Iyon ay, si Alice at Bob ay maaaring magbahagi ng mga entangled qubit at ang isang state ay maaaring ipadala mula kay Alice patungo kay Bob gamit ang teleportation protocol.
Para sa modyul na ito, ayaw naming hilingin sa iyo na magkaroon ng mga high-fidelity na optical setup para sa pagbabahagi ng mga photon, kaya gagamitin natin ang pangalawang paraan para sa pagbabahagi ng mga quantum state. Ngunit hindi ibig sabihin nito na ito ang pinakamakatotohanang paraan para sa mahabang distansiyang pagbabahagi ng mga quantum key.
Ating tuklasin ngayon ang isang protocol na unang inihayag nina Charles Bennett at Gilles Brassard noong 1984 para sa pagbabahagi ng mga state na sinukat sa iba't ibang base mula kay Alice patungo kay Bob. Gagamit tayo ng matalinong measurement regimen para bumuo ng key para gamitin sa susunod na encryption. Sa madaling salita, nagdi-distribute tayo ng quantum key sa pagitan ng dalawang partido na gustong makipag-communicate, kaya "quantum key distribution" (QKD).
QKD hakbang 1: Mga random na bit at random na base ni Alice
Magsisimula si Alice sa pamamagitan ng pagbuo ng random na pagkakasunud-sunod ng 0's at 1's. Pagkatapos, random siyang pipili ng base kung saan ihahanda ang isang quantum state, batay sa bawat random na bit, gamit ang talahanayan sa ibaba (isang talahanayan na mayroon din si Bob):
| Basis | bit = 0 | bit = 1 |
|---|---|---|
| Z | ||
| X |
Halimbawa, ipagpalagay nating random na bumuo si Alice ng isang 0, at random na pinili ang X basis. Pagkatapos, maghahanda siya ng quantum state na . Tiyak na maaaring samantalahin ang quantum randomness upang makabuo ng random na set ng 0's at 1's, at random na pagpili ng base. Sa ngayon, ipagpalagay na lang nating nabuo na ang isang random na set, tulad ng sumusunod:
| Mga bit ni Alice | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | ... |
|---|---|---|---|---|---|---|---|---|---|---|
| Mga base ni Alice | X | X | Z | Z | Z | X | Z | Z | X | ... |
| Mga state ni Alice | ... |
Ang set ng mga random na bit, base, at mga resultang state na ito ay magpapatuloy sa isang mahabang pagkakasunud-sunod, upang magbigay ng key na sapat na haba.
QKD hakbang 2: Mga random na base ni Bob
Gumagawa rin si Bob ng random na pagpili ng mga base. Gayunpaman, samantalang ginagamit ni Alice ang pagpili ng base upang ihanda ang kanyang state, si Bob naman ay talagang gagawa ng mga sukat sa mga base na ito. Kung si Bob ay gumagawa ng sukat sa parehong base kung saan inihanda ni Alice ang state, maaari nating hulaan ang resulta ng sukat ni Bob. Kapag nangyari na pumili si Bob ng ibang base kaysa sa base na ginamit ni Alice sa paghahanda, hindi natin malalaman ang resulta ng sukat ni Bob.
| Mga bit ni Alice | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | ... |
|---|---|---|---|---|---|---|---|---|---|---|
| Mga base ni Alice | X | X | Z | Z | Z | X | Z | Z | X | ... |
| Mga state ni Alice | ... | |||||||||
| Mga base ni Bob | X | Z | X | Z | X | X | Z | X | X | ... |
| Mga state ni Bob (a priori) | ? | ? | ? | ? | ... | |||||
| Mga state ni Bob (nasukat) |