การเข้ารหัสทางควอนตัม (Quantum Crytography)

เกรินนำ

ในยุคปัจจุบันที่เป็นโลกของการทำธุรกรรมเกือบทุกอย่างผ่านอินเตอร์เน็ต ไม่ว่าเป็น การจ่ายบิล การซื้อของ หรือ สื่อโซเชียลต่างๆ

https://marketingland.com/16-social-media-updates-for-marketers-in-2019-so-far-264950

สิ่งที่เราต้องทำคือ การสร้างฐานข้อมูลส่วนตัวของเรา ซึ่งสิ่งแรกที่เราต้องสร้างคือ รหัส สำหรับล็อกอิน ซึ่งรหัสนี้เป็นของส่วนตัวสำหรับเราคนเดียว บางเวปนั้นอาจจะให้เราสร้างรหัสที่เกิดจากการประสมตัวอักษรกับตัวเลขอย่างน้อยก็ 4 หลัก เพื่อความปลอดภัย คำถามคือเพื่อความปลอดภัยจากใคร….. ก็ปลอดภัยจากบุคคลอื่นที่ไม่ใช่เราหรือเวปนั้นเอง เรียกว่า พวกแฮกเกอร์ ซึ่งหากได้รหัสไป เขาก็สามารถเขาไปเป็นเราและทำธุรกรรมแทนเราทุกอย่างได้ ดังนั้นการปกป้องรหัสนั้นสำคัญมากๆ

นอกจากการเข้ารหัสเพื่อปกป้องข้อมูลส่วนตัวบนโลกอินเตอร์เน็ตแล้วการสร้างรหัสเพื่อปกป้องข้อมูลลับ เช่น ข้อมูลบางอย่างของรัฐบาล ข้อมูลทางการทหาร ที่สำคัญรหัสในการปลดล๊อกอาวุธต่างๆเหมือนในภาพยนต์ประมาณนั้น

https://workingnation.com/urgent-demand-cybersecurity-experts/

ปัจจุบันมีการสร้างวิธีในการเข้ารหัสข้อมูลที่ซับซ้อนเพิ่มขึ้นเรื่อยๆ เช่น การอาศัยสมบัติของจำนวนเฉพาะ (prime number) อย่างไรก็ตามถึงการเข้ารหัสจะมีความยุ่งยากมากขึ้น แต่ด้วยประสิทธิภาพของคอมพิวเตอร์ที่เพิ่มขึ้นตลอดจึงเป็นไปได้ว่าการปลดล๊อกรหัสของแฮกเกอร์ก็มีโอกาศเป็นไปได้เสมอ

พื้นฐานการเข้ารหัส

หัวใจของการเข้ารหัสคือ เราต้องการให้สื่อสารนั้นเป็นความลับระหว่างต้น(Sender)ทางและปลายทาง(Recipient) ดังนั้นข้อความที่เราต้องการส่ง(Plaintext)ไปยังปลายทางต้องได้รับการเข้ารหัส(Encrypt) หน้าตาข้อความเปลี่ยนไปจากเดิม(Ciphertext) เมื่อข้อความไปถึงปลายทางก็ทำการถอดรหัส(Decrypt) ก็จะได้ข้อความเดิมกลับ(Plaintext)มา ดังรูปแสดง

https://blockgeeks.com/guides/cryptocurrencies-cryptography/

ข้อยกตัวอย่างของการเข้ารหัสข้อความที่มีมาแต่สมัยของ จูเลียส ซีซาร์ (Julius Caesar) ประมาณ 2000 ปีที่แล้ว เป็นการเข้ารหัสที่ไม่ยากต่อการทำความเข้าใจ เงื่อนไขคือการเลื่อนตำแหน่งตัวอักษรไป k ตำแหน่ง ดังรูปแสดงนั้น k=3 ทำให้ลำดับของตัวอักษรจาก ABCDEFGHIJKLMNOPQRSTUVWXYZ ไปเป็น DEFGHIJKLMNOPQRSTUVWXYZABC หากเราต้องการส่งข้อความ SECRET เมื่อเข้ารหัสด้วยเงื่อนไขข้างต้นข้อความจะเป็น VHFUHW เมื่อถึงปลายทางทำการเลื่อนลำดับอักษรกลับก็จะได้ข้อความเดิมกลับมา

https://en.wikipedia.org/wiki/Cryptography

แน่นอนว่า รหัส นั้นต้องการมีการกระจายกันระหว่างต้นทางและปลายทางผ่านช่องทางสื่อสารปกติ (communication channel) หากมีบุคคลที่สาม (Interceptor) เดารหัสหรือดักเอารหัสจากนั้นสร้างรหัสขึ้นมาอีกชุด

 

ดังนั้นสิ่งที่บุคคลที่สามทำได้คือ ทำการถอดข้อความและทำการเข้ารหัสเหมือนเดิม จากนั้นก็ส่งไปยังปลายทาง สิ่งที่เกิดขึ้นคือ ผู้ส่งและผู้รับนั้นไม่สามารถรับรู้ได้เลยว่าข้อความที่พวกเขาสื่อสารกันนั้นโดนดักถอดรหัสไปแล้วเพราะไม่มีอะไรผิดปกติไปจากกรณีที่ไม่มีการดักฟังเลย

การเข้าระหัสแบบ one-time pad

มีการพัฒนาการเข้ารหัสที่ยุ่งยากขึ้นที่เรียกว่า one-time pad ซึ่งทำการสร้างรหัสแบบสุ่ม เช่น เราให้ค่าตัวเลขตามลำดับตัวอักษรทั้งหมด 26 ตัว เช่น A=1,B=2,C=3,….,Z=26 หากเราต้องการส่งข้อความ HELLO ไปยังปลายทาง เราก็ต้องทำการสร้างรหัสสำหรับกรณีนี้เรามี 5 ตัวอักษร เราก็ต้องสร้างรหัสในจำนวนเท่ากันโดยการสุ่มตัวอักษรในกรณีนี้เป็น XMCKL

ขั้นตอนเข้ารหัส

     7(H)   4(E)   11(L)  11(L) 14(0)    ข้อความ

+ 23(X) 12(M)   2(C)  10(K) 11(L)     รหัส

= 30       16        13       21      25      ข้อความ+รหัส

= 4         16        13       21      25       mod 26 (ตัวเลขไหนเกิน 26 ก็ลบออก)

   4(E)    16(Q)  13(N) 21(V) 25(Z)

ดังนั้นข้อความที่ส่งไปคือ EQNVZ

ขั้นตอนถอดรหัส

     4(E)    16(Q)  13(N) 21(V) 25(Z)  ข้อความ+รหัส

– 23(X) 12(M)   2(C)  10(K) 11(L)     รหัส

=-19       4        11       11      14       ข้อความ

= 7         4        11       11      14        mod 26 (ตัวเลขไหนติดลบก็บวกด้วย 26)

   7(H)   4(E)   11(L)  11(L) 14(0)      ข้อความ

ท้ายสุดเราก็จะได้คำว่า HELLO กลับมา

ประเด็นคือ 1 ตัวอักษรนั้นเราสามารถสุ่มตัวอักษรมาเข้ารหัสได้ 26 แบบ ดังนั้นสำหรับการข้อความ 5 ตัวอักษร เราสามารถสร้างหรัสได้ทั้งหมด 26*26*26*26*26=11,881,376 แบบ(pad) หากต้นทางตกลงกับปลายทางว่าครั้งแรกของการส่งจะใช่รหัสแบบอันไหน ต่อไปอันไหน และต่อไปอันไหน จะเห็นได้ว่ายากมากในการคาดเดา อย่างไรก็ดีรหัสนั้นต้องมีการแชร์กันระหว่างต้นทางและปลายทาง หากโดนดักเอาลำดับแบบสุ่มทั้งชุดไปก็จบ

สำหรับคนที่ชอลเลขฐาน 2 เราสามารถใช้ บิต 0 และ 1 ในการแสดงข้อความของเราได้ และก็ใช้สร้างรหัสขึ้นมาได้ เช่นตัวอย่างด้านล่างผ่านการดำเนินการแบบ XOR หาก 2 บิตเหมือนกันเป็น 0 หากต่างเป็น 1

ขั้นตอนการเข้ารหัส

            11010011100001  ข้อความ

XOR       00101011101011  รหัส(สร้างขึ้นมาแบบสุ่ม)

            11111000001010   ข้อความ+รหัส

ขั้นตอนการถอดรหัส

            11111000001010   ข้อความ+รหัส

XOR       00101011101011  รหัส

            11010011100001  ข้อความ

ประเด็นสำคัญคือ หากอลิสต้องการสื่อสารลับๆกับกลุ่มคน แสดงว่าทุกคนก็ต้องมีกุญแจชุดเดี่ยวกันหรือต้องมีการกระจายกุญให้กับทุกคนในกลุ่ม ซึ่งมีความเสี่ยงสูงครับที่จะโดนขโมยกุญแจไประหว่างการแชร์

การกระจายกุญแจ

การเข้ารหัสแบบ RSA

เพื่อการปัญหาการกระจายกุญแจแบบเดียวกันให้กับทุกคนที่ต้องการสื่อสารด้วย จึงได้มีการคิดค้นวิธีสร้างกุญแจแบบใหม่ขึ้นมาเรียกว่า วิธี RSA ย่อมาจากชื่อคน 3 คน ได้แก่ Ron Rivest, Adi Shamir และ Leonard Adleman การเข้ารหัสนั้นอาศัยสมบัติของจำนวนเฉพาะ (prime number) ซึ่งจะมีกุญแจสาธารณะ(public key) ที่ทุกคนมีอยู่เพื่อใช้ในการเข้ารหัสข้อมูล และกุญแจอีกชุดที่เรียกว่ากุญแจส่วนตัว (private key) ซึ่งเฉพาะคนรับเท่านั้นที่รู้

หมายความว่าใครที่ต้องการสื่อสารแบบลับๆกับอลิสก็เอากุญแจสาธารณะเข้ารหัส(เหมือนเอาแม่กุญแจล๊อกกล่อง) แล้วส่งให้อลิส ซึ่งอลิศคนเดี่ยวที่มีกุญแจส่วนตัวเอาไวถอดรหัสป่ะครับ (มีลูกกุญแจคนเดียว)

สมมติว่าอลิสต้องการส่งข้อความ “B” ให้กับบ๊อบแต่เพื่อให้เป็นความลับเธอต้องเข้ารหัสแต่จะเป็นแบบ RSA ดังนั้นอลิสจะมีคู่ของตัวเลขในที่นี้คือ (5,14) ซึ่งในที่นี้คือกุญแจสาธารณะ

การเข้ารหัส

ขั้นที่ 1 อลิสเปลี่ยนข้อความให้เป็นตัวเลข ซึ่งในที่นี้ง่ายเลยคือ 2

ขั้นที่ 2 นำเลข 2 มายกกำลัง 5 ซึ่งจะได้ 32

ขั้นที่ 3 นำเลข 32 ไป mod กับ 14 หรือเขียนเป็น 32(mod 14) เราพบว่า 2×14 ได้ 28 ดังนั้นยังเหลืออีก 4  ( 2×14+4=32)

ขั้นที่ 4 ตัวเลข 4 คือข้อความที่โดนเข้ารหัสแล้วซึ่งแปลงเป็นตัวอักษรได้เป็น D และจะส่งไปให้บ๊อบ

 

ขั้นต่อไปคือบ๊อบต้องถอดรหัสข้อความที่อลิสส่งมาให้ เขาจะมีตัวเลขอีกคู่คือ (11,14) ซึ่งเขารู้คนเดี่ยว

การถอดรหัส

ขั้นที่ 1 บ๊อบนำอักษร D มาแปลงเป็นตัวเลขซึ่งคือ 4

ขั้นที่ 2 นำเลข 4 มายกกำลัง 11 ซึ่งจะได้ 4194304

ขั้นที่ 3 นำเลข 4194304 ไป mod กับ 14 หรือเขียนเป็น 4194304(mod 14) และเราพบว่าเหลือตัวเลข 2 

ขั้นที่ 4 ตัวเลข 2 ก็คือตัวอักษร B ที่อลิสส่งมานั้นเอง

 

ตอนนี้คนอ่านคงมีคำถามว่าแล้วเขาทั้งคู่เสกชุดตัวเลขที่ใช้ในการเข้ารหัสมาจากไหน

ขั้นตอนการสร้างรหัส

ขั้นที่ 1 เลขคู่จำนวนเฉพาะ ซึ่งในที่นี้คือ p=2 และ q=7 (จริงเลือกคู่อื่นก็ได้ และต้องโตๆ แต่เพื่อให้ง่ายจึงเอาคู่นี้)

ขั้นที่ 2 นำมาคูณกัน N=pq=(2)(7)=14 ซึ่งก็คือตัวเลขที่เราไว้ใช้ mod นั้นเอง

ขั้นที่ 3 ทำการเขียนตัวเลขที่หมดที่มีค่าระหว่าง 1 และ 14 ซึ่งได้แก่

 1 2 3 4 5 6 7 8 9 10 11 12 13 14

ขั้นที่ 4 ทำการตัดตัวเลขที่ไม่มีตัวประกอบร่วมกับ 14 (=2×7) ได้แก่ เลขคู่ทั้งหมด และเลข 7

 1 2 3 4 5 6 7 8 9 10 11 12 13 14—>1 3 5 9 11 13

ขั้นที่ 5 จากขั้นที่แล้วเรามีตัวเลขเหลือ 6 ตัว ซึ่งเรียกตัวเลขทั้งหมดนั้นว่า จำนวนเฉพาะสัมพัทธ์ (coprime number) กับ 14 

ตอนนี้เรานิยาม W(N)=(p-1)(q-1)=6 

ขั้นที่ 6 เลือกตัวเลขซึ่งให้เป็น e โดยมี

           เงื่อนไขที่ 1 ว่า 1<e<W(N) -> 1<e<6

           เงื่อนไขที่ 2 e ต้องเป็นจำนวนเฉพาะสัมพัทธ์ของ N=14 และ W(N)=6

จากเงื่อนไขที่ 1 จะเหลือตัวเลข  2 3 4 5 และจากเงื่อนไขที่ 2 เราตัดเลข 2 4 ออกไปก่อนได้เลย และแน่นอนว่า 3 นั้นไม่ได้เพราะมีตัวประกอบร่วมกับ 6  ดังนั้นเหลือเลขเดี่ยวคือ 5 

ตอนนี้เราได้คู่ตัวเลขที่จะใช้ในการเข้ารหัสล่ะ คือ (e,N)=(5,14) หรือกุญแจสาธารณะ

ขั้นที่ 7 เราเลือกเลข d ที่ทำให้ de (mod W(N))=1 หรือ d=(kW(N)+1)/e สำหรับจำนวนเต็ม k บางค่า ในตัวอย่างนี้ d=(k6+1)/5 หากเราเลือก k=9 เราจะได้ d=11 (จริงๆยังมีค่าอื่นๆอีก)

ดังนั้นตอนนี้เรามีคู่ตัวเลข (d,N)=(11,14) ซึ่งเป็นกุญแจส่วนตัวของบ๊อบนั้นเอง

สำหรับคนที่ต้องการถอดหรัสจะรู้แค่คู่ (e,N) หากเขาต้องการถอดรหัสเขาต้องรู้ d งี้เขามีทางคำนวณจาก e และ N มั้ย คำตอบคือ หากเขารู้ค่า N และ W(N) แน่นอนว่าเขาสามารถคำนวณหาค่า p และ q ได้ เพราะ W(N)=(p-1)(q-1) =pq-p-q+1 =N-(p+q)+1=N-(p+N/p)+1 ดังนั้นสมการนี้สามารถแก้หา p ได้และแน่นอนว่าเมื่อรู้ p เราก็รู้ q ด้วย  ประเด็นคือเขาต้องการแยกส่วนจำนวนเฉพาะที่ประกอบกันขึ้นมาเป็น N=pq เพื่อใช้ในการคำนวณค่า W(N) สำครับ N ที่ไม่โตมากก็ยังพอที่จะทำและเดาได้ แต่หาก N โตมากๆ ปัญหาจะยากมากๆ ในการนั้งแยกตัวประกอบจำนวนเฉพาะ เช่น N=32 พบว่าประกอบไปด้วย  1 32, 2 16, 4 8 เป็นต้น (อันนี้ก็ยังไม่ยาก) แต่หาก N=266389664617004986624097978187739779643 ล่ะ  

จากกราฟเราจะเห็นว่าเวลาที่จะใช้ในการแยกตัวประกอบนั้นเพิ่มตามจำนวนดิจิตของ N ในปัจจุบัน RSA มีความยาวอยู่ที่ 1024 ดิจิต หรือ 2048 ดิจิต 

สำหรับ RSA นั้นเชื่อกันว่าหาก quantum computer มาถึง การแยกตัวประกอบที่เป็นจำนวนเฉพาะนั้นก็จะทำได้ไม่ยากอีกต่อไป

ทางออกสำหรับการมาของ quantum computer ของการเข้ารหัสแบบ RSA

ในเมื่อการมาของควอนตัมจะให้เกิดปัญหา เราก็ต้องเอาควอนตัมเข้าสู่ครับ เหมือนหนามยอกต้องเอาหนามบ่ง

ปัญหาดังกล่าวแก้ได้ด้วยการสร้างรหัสโดยอาศัยสมบัติอันประหลาดของกลศาสตร์

ควอนตัม

1) หลักความไม่แน่นอนของไฮเซนเบิร์ก (Heisenberg uncertainty principle)

2) สถานะควอนตัมไม่สามารถโคลนได้ (No-cloning theorem)

โมเดลต้นแบบของการสร้างรหัสควอนตัม คือ BB84 เสนอโดย Charles Bennett และ Gilles Brassard ในปี 1984 สิ่งที่เราจะนำมาใช่ในการสร้างรหัสควอนตัมคือ โฟตอนเดี่ยว(Single photon) ซึ่งเป็นอนุภาคควอนตัมของแสง สมบัติที่เราสนใจของโฟตอนในที่นี้คือ โพลาไรเซชัน (Polarisation) ซึ่งเลือก 2 เบสิส คือ

1 เบสิสปกติ(Rectangular basis) มีแนวดิ่ง(แทนด้วย 0)และแนวราบ (แทนด้วย 1)

2 เบสิสแทยง(Diagonal basis) แนวแทยงซ้าย (แทนด้วย 0) และแทยงขวา (แทนด้วย 1)

การวัดทิศของโพลาไรเซชันนั้นสามารถทำได้ส่งโฟตอนผ่านฟิลเตอร์ (Filter) ซึ่งมีอยู่ 2 แบบตามเบสิสตามแนวทิศของโพลาไรเซชัน

กรณีที่ 1 หากเราเลือกฟิลเตอร์ที่สอดคล้องกับทิศของโพลาไรเซชัน เราจะได้ผลของการวัดที่แน่นอน ตามรูปด้านล่าง เข้าทางซ้ายออกทางขวา

กรณีที่ 2 หากเราเลือกฟิลเตอรไม่สอดคล้องกับทิศของโพลาไรเซชัน เช่น

นั้นคือ มีโอกาศ 50% ที่จะได้แทยงซ้ายและ 50% ที่จะได้แทยงขวา อันนี้เป็นผลมาจากหลักความไม่แน่นอนของไฮเซนเบิร์ก หรือเราอาจมองได้ว่าเนื่องจากทิศโพลาไรเซชันของโฟตอนแนวดิ่งสามารถเขียนในรูปของสถานะซ้อนทับ (Superposition) ระหว่างทิศแทยงซ้ายและแทยงขวา

สำหรับกรณีนี้ก็มีโอกาศ 50% ที่จะได้แทยงซ้ายและ 50% ที่จะได้แทยงขวา เนื่องจากทิศโพลาไรเซชันของโฟตอนแนวราบสามารถเขียนในรูปของสถานะซ้อนทับ (Superposition) ระหว่างทิศแทยงซ้ายและแทยงขวา

สำหรับกรณีนี้ก็มีโอกาศ 50% ที่จะได้แนวราบและ 50% ที่จะได้แนวดิ่ง เนื่องจากทิศโพลาไรเซชันของโฟตอนแนวแทยงซ้ายสามารถเขียนในรูปของสถานะซ้อนทับ (Superposition) ระหว่างทิศแนวดิ่งและแนวราบ

สำหรับกรณีนี้ก็มีโอกาศ 50% ที่จะได้แนวราบและ 50% ที่จะได้แนวดิ่ง เนื่องจากทิศโพลาไรเซชันของโฟตอนแนวแทยงซ้ายสามารถเขียนในรูปของสถานะซ้อนทับ (Superposition) ระหว่างทิศแนวดิ่งและแนวราบ

กระบวนการสร้างรหัสควอนตัม สมมุติว่า ตอนนี้อลิสและบ๊อบต้องการสื่อสารกันอย่างเป็นความลับดังนั้นทั้งสองต้องสร้างรหัส วิธีการก็คืออลิสทำการส่งสายของโฟตอนเดี่ยวที่ไม่มีทิศของโพลาไรเซชันผ่านฟิลเตอร์ 4 แบบ โดยทำการเลือกชนิดของฟิลเตอร์แบบสุ่ม ส่งผลทำให้โฟตอนที่ออกมามีทิศโพลาไรเซชันแบบสุ่มแล้วส่งไปให้บ๊อบผ่านช่องทางควอนตัม (Quantum channel)

บ๊อบซึ่งไม่รู้ทิศโพราไลเซชันของแต่โฟตอนที่ส่งมาหรือไม่รู้เป็นเบสิสแบบไหน สิ่งที่บ๊อบทำได้คือ เลือกฟิลเตอร์ที่มี 2 แบบอย่างสุ่ม เพื่อทำการวัดทิศของโพลาไรเซชัน ดังรูปด้านล่าง ซึ่งมีทั้งตรงและไม่ตรง

หากบ๊อบเลือกฟิลเตอร์ผิด จะเกิดโอกาศ 50%/50% ในการที่จะได้โพราไลเซชันในแต่ละทิศสำหรับเบสิสใหม่ หากเลือกถูกก็จะได้ผลถูกต้อง 100% ดังอธิบายไปแล้วก่อนหน้านี้

เมื่อบ๊อบวัดเสร็จแล้ว ก็ทำการสื่อสารกับอลิสผ่านช่องทางสาธารณะ (Classical channel) เช่น โทรศัพย์ เพื่อบอกลำดับฟิลเตอร์ที่ใช่ในการวัดทิศของโพลาไรเซชัน(โดยไม่ได้บอกค่าบิตที่ได้) อลิสแค่บอกว่าฟิลเตอร์ไหนถูกต้อง เมื่อบอกหมดแล้วก็ทำการทิ้งค่าบิตที่เกิดจากการวัดที่ฟิลเตอร์ไม่ถูกต้อง แล้วเก็บค่าบิตที่ฟิลเตอร์ตรงกันไว้อย่างเดียว

ทั้งคู่จะแชร์ลำดับบิต 00111 ซึ่งจะถูกใช้เป็นรหัสในการสื่อสาร ลำดับบิตดังกล่าวสร้างขึ้นมาแบบสุ่ม ซึ่งนำไปใช้ในการเข้ารหัสแบบ one-time pad อย่างที่ได้อธิบายไปก่อนหน้านี้ (ปล ความยาวรหัสสามารถสร้างยาวได้เท่าที่ต้องการ)

หากตอนนี้ข้าวเกรียบ ต้องการรู้ว่าทั้งสองพูดคุยอะไรกัน จึงต้องทำการดักเอารหัสในขั้นตอนของการสร้างรหัส สถานะการณ์ของข้าวเกรียบก็ไม่ต่างจากบ๊อบเพราะต้องเลือกฟิลเตอร์แบบสุ่มเหมือนกันดังรูปด้านล่าง

จากนั้นข้าวเกรียบต้องสร้างโฟตอนทั้งชุดที่มีสถานะตามที่วัดได้แล้วส่งไปให้บ๊อบ ซึ่งบ๊อบจะทำการวัดทิศโฟตอนโพลาไรเซชันเหมือนเดิม 

เราจะเห็นได้ว่าลำดับของรหัสนั้นเปลี่ยนไปจาก 00111 เป็น 00011 เป็นผลของการที่ข้าวเกรียบเข้ามาวัดทิศของโพลาไรเซชันซึ่งเลือกฟิลเตอร์ผิดส่งผลทำให้ทิศเปลี่ยนไปเมื่อถึงบ๊อบจึงทำให้ผลการวัดเปลี่ยนไปด้วย ทำให้ทั้งคู่รู้ทันทีว่ามีคนมาดักเอารหัส

เมื่ออลิสและบ๊อบรู้ว่ารหัสโดนดักไปแล้วทั้งคู่ก็แค่ทิ้งรหัสชุดนั้นไป แล้วไปสร้างใหม่ยังช่องทางควอนตัมอื่นแทน ข้าวเกรียบซึ่งดักเอารหัสทางช่องทางควอนตัมแต่ไม่สำเร็จ อาจจะพยายามในการดักฟังโทรศัพย์ระหว่างอลิสและบ๊อบแต่สิ่งที่จะได้คือแค่ลำดับของฟิลเตอร์แต่ไม่ได้ค่าบิต ดังนั้นไม่ว่าข้าวเกรียบจะดักเอารหัสช่องทางไหน ไม่ว่าจะเป็นช่องทางสาธารณะทั่วไป (Classical channel) หรือจะเป็นช่องทางควอนตัม (Quantum channel) ก็ไม่สามารถเอารหัสไปได้

การเข้าไปวัดทิศของโพลาไรเซชันของข้าวเกรียบนั้น เป็นการรบกวนระบบและยิ่งหากเลือกฟิลเตอร์ผิดจะทำให้ทิศของโพลาไรเซชันเปลี่ยนเบสิสไปจากเดิน อันเป็นผลของหลักความไม่แน่นอนของไฮเซนเบิร์ก (Heisenberg uncertainty principle) อันนี้สามารถมองได้จากตัวอย่างด้านล่าง

เราจะเห็นได้ว่า หากเรารู้ว่าทิศของโพลาไรเซชันในแบบเบสิสปกติแน่นอนว่าเป็นแนวดิ่ง เมื่อเราต้องการรู้ว่าทิศของโพลาไรเซชันในแนวแทยงนั้นเกิดความไม่แน่นอน 50/50 ดังรูป หรือเราไม่สามารถรู้ทิศของโพลาไรเซชันทั้งสอบเบสิสได้แน่นอนพร้อมกัน

คำถามคือ ก็ในเมื่อการวัดทำให้ทิศของโพลาไรเซชันเปลี่ยนไป ยังงี้ผมก็ก๊อปปี้ชุดของโฟตอนขึ้นมาอีกชุดสิครับ แล้วก็ส่งชุดจริงไปบ๊อบไป เราก็สามารถทำการวัดโดยไม่รบกวนกระบวนระหว่างอลิสกับบ๊อบแล้วนิครับ

คำตอบคือ เพราะว่าเราไม่สามารถสร้างชุดโฟตอนที่เหมือนกันกับชุดโฟตอน(ซึ่งสถานะของแต่ล่ะโฟตอนอยู่ในสภาวะซ้อนทับ)เริ่มต้นได้ครับตามทฤษฎีบท No-cloning 

สรุปว่า หัวใจของการเข้ารหัสแบบควอนตัมนั้นอยู่ที่การสร้างรหัสที่สามารถตรวจสอบการเข้ามาของบุคคลที่ 3 หากสร้างระหัสสำเร็จก็นำไปเข้ารหัสข้อความแบบปกติ

นอกจากโมเดล BB84 แล้วยังมีแบบอื่นอีกคือ E91 เสนอโดย Artur Ekert ในปี 1991 ซึ่งอาศัยคุณสมบัอันแปลกประหลาดอีกอันหนึ่งที่เรียก entanglement ซึ่งโดยภาพรวมนั้นเหมือนกับ BB84 ซึ่งสามารถบอกได้ถึงการเข้าของบุคคลที่ 3

อย่างไรก็ดีงานวิจัยทางด้านนี้ก้าวหน้าไปมาก ผู้อ่านสามารถหาอ่านเพิ่มเติมได้เอง โดยใช้บริการอากู๋ บริการดียิ่งกว่า 7/11 อีก ฮาาาาาา

เราขอจบด้วยภาพ อลิสและบ๊อบ ในตำนาน ฮาาาาาาาาา ใครอ่านบทความเสร็จแล้วอยากออกกำลังกาย โทรเลยครับ ตามคำพูด Choose wisely live well

จบครับ

เรียบเรียง

สิขรินทร์ อยู่คง (QuTE Co-Founder)

วิทยาลัยเพื่อการค้นคว้าระดับรากฐาน (Institute for Fundamental Study: IF)

มหาวิทยาลัยนเรศวร

ผู้เขียนขอขอบคุณ ดร.เอกรัฐ พงษ์โอภาศ (QuTE Co-Founder) สำหรับคำชี้แนะในการเรียบเรียงบทความ