อินเทอร์เน็ต: การเข้ารหัสและกุญแจสาธารณะ
สวัสดีค่ะ ฉันมีอา กิล-เอปเนอร์
เรียนเอกวิทยาศาสตร์คอมพิวเตอร์ ที่ UC เบิร์กลีย์
และทำงานที่กระทรวงกลาโหมค่ะ
หน้าที่รักษาความปลอดภัยของข้อมูลค่ะ
อินเทอร์เน็ตเป็นระบบเปิดสาธารณะ
เราทุกคนรับส่งข้อมูล ผ่านสายไฟและการเชื่อมต่อที่เราแชร์กัน
แต่แม้จะเป็นระบบเปิด เรายัง แลกเปลี่ยนข้อมูลกันแบบส่วนตัวกันมากค่ะ
เช่นหมายเลขบัตรเครดิจ ข้อมูลธนาคาร รหัสผ่านและอีเมล
แล้วของส่วนตัวพวกนี้ จะเป็นความลับได้ยังไง
ข้อมูลทุกประเภทสามารถเป็นความลับได้ ผ่านกระบวนการที่เรียกว่าการเข้ารหัส
คือการสลับตำแหน่งหรือเปลี่ยนข้อความ เพื่อซ่อนข้อความต้นฉบับ
ส่วนการถอดรหัสก็คือการไขรหัสข้อความนั้น เพื่อให้มันอ่านได้นั่นเอง
ไอเดียแบบนี้เรียบง่ายมาก มนุษย์เราทำมาหลายศตวรรษแล้วค่ะ
การเข้ารหัสยุคแรก ๆ ที่รู้จักกันดี คือการเข้ารหัสของซีซาร์ ไซเฟอร์
นายพลชาวโรมันที่ถูกตั้งชื่อตาม จูเลียส ซีซาร์เข้ารหัสคำสั่งทางทหาร
เพื่อที่ว่า หากศัตรูได้ข้อความนั้นไปแล้ว
จะไม่สามารถเข้าใจได้
ซีซาร์ ไซเฟอร์เป็นอัลกอริธึม ที่แทนที่ตัวอักษรในข้อความต้นฉบับ
ด้วยอักษรตัวถัดไปในลิสต์อักขระ
หากตัวเลขนั้นเป็นสิ่งที่ มีเพียงผู้ส่งและผู้รับที่รู้กัน
ก็จะเรียกว่ากุญแจ ที่ให้ผู้อ่านปลดล็อกข้อความลับ
ตัวอย่างเช่น หากข้อความต้นฉบับเขียนว่า 'HELLO'
การใช้อัลกอริธึม ซีซาร์ ไซเฟอร์ ที่มีกุญแจเป็น 5
ข้อความที่เข้ารหัสก็จะเป็นแบบนี้ค่ะ
ในการไขรหัสข้อความ ผู้รับก็เพียงใช้กุญแจเพื่อคืนค่าเดิม
แต่ปัญหาใหญ่ของซีซาร์ ไซเฟอร์คือ
ใครก็แกะข้อความได้ด้วยการลองทุกกุญแจ
ซึ่งภาษาอังกฤษมีอักษรเพียง 26 ตัว
แปลว่าแค่ลองกุญแจอย่างมาก 26 ดอก ก็แกะข้อความสำเร็จแล้ว
การลองใช้กุญแจ 26 ดอกไม่ได้ยากมาก ใช้เวลาอย่างมากก็ 1-2 ชั่วโมง
มาทำให้ยากขึ้นดีกว่า
แทนที่จะเปลี่ยนอักษรแต่ละตัว ในจำนวนที่เท่ากัน
เรามาเปลี่ยนแต่ละตัว ในจำนวนที่ไม่เท่ากันดีกว่า
ตัวอย่างนี้เป็นกุญแจสิบหลัก แสดงถึง จำนวนตำแหน่งทีอักษรแต่ละตัวต้องเปลี่ยน
เพื่อเข้ารหัสข้อความยาว ๆ
การเดากุญแจนี้จะยากมาก
การเข้ารหัส 10 หลัก มีผลลัพธ์ที่เป็นไปได้ถึง 1 หมื่นล้านผล
คงไม่มีมนุษย์คนไหนที่แก้ได้
เพราะจะใช้เวลาหลายศตวรรษ
แต่คอมพิวเตอร์ทั่วไปยุคนี้ใช้เวลา เพียงไม่กี่วินาทีในการลอง 10 ล้านผลลัพธ์
โลกยุคใหม่ที่คนร้ายติดอาวุธ เป็นคอมพิวเตอร์แทนดินสอ
คุณจะเข้ารหัสข้อความให้ปลอดภัย และยากต่อการแกะได้อย่างไร
ที่ว่ายาก หมายถึงมีความเป็นไปได้มาก เกินกว่าที่จะคำนวณในเวลาที่ไม่นานเกินไป
การสื่อสารที่ปลอดภัยในปัจจุบัน มีการเข้ารหัสด้วยกุญแจ 256 บิท
แปลว่าคอมพิวเตอร์ของคนร้าย ที่แทรกแซงข้อความของคุณ
ต้องพยายามใช้ตัวเลือกที่เป็นไปได้ขนาดนี้
จนกว่าจะเจอกุญแจและไขข้อความได้
ต่อให้คุณมี ซูเปอร์คอมพิวเตอร์ 100,000 เครื่อง
แต่ละเครื่องลองกุญแจได้ 1 ล้าน* 1 พันล้านดอกต่อวินาที
ก็ยังต้องใช้เวลาหลายล้านล้านปี กว่าจะลองครบทุกทางเลือก
เพื่อแกะข้อความเดียวที่เข้ารหัส 256 บิท
แน่นอนว่าชิปคอมพิวเตอร์เร็วขึ้นเท่าตัว และเล็กลงครึ่งหนึ่งทุกปี
หากมันพัฒนาแบบนี้ต่อไปเรื่อย ๆ
ปัญหาที่เป็นไปไม่ได้ในปัจจุบัน ก็จะแก้ได้ในอีกไม่กี่ร้อยปี
และ 256 บิทก็จะไม่ปลอดภัยพอแล้ว
ที่จริงเราได้ลองเพิ่มมาตรฐานความยาว เพื่อให้ทันต่อความเร็วคอมพิวเตอร์
ข่าวดีคือการใช้กุญแจที่ยาวขึ้นไม่ทำให้ การเข้ารหัสข้อความยากขึ้นมากนัก
แต่มันเพิ่มจำนวนการคาดเดาเพื่อแกะรหัส เป็นทวีคูณ
เมื่อผู้รับและผู้ส่งมีกุญแจดอกเดียวกัน ในการเข้ารหัสและแกะรหัส
แบบนั้นเรียกว่าการเข้ารหัสแบบสมมาตร ซึ่งเหมือนซีซาร์ ไซเฟอร์
ที่ต้องมีการตกลงกุญแจลับกันล่วงหน้า ระหว่างคนสองคนที่พื้นที่ส่วนตัว
ก็ดีนะคะ แต่อินเทอร์เน็ตมันเปิดกว้าง เป็นสาธารณะ
จึงเป็นไปไม่ได้ที่คอมพิวเตอร์สองเครื่อง จะมา "พบกัน" แบบส่วนตัว
เพื่อตกลงกันเรื่องกุญแจลับ
คอมพิวเตอร์จึง ใช้กุญแจการเข้ารหัสแบบไม่สมมาตร
ซึ่งเป็นกุญแจสาธารณะที่สามารถแลก กับใครก็ได้ และกุญแจส่วนตัวที่ไม่ได้แชร์
กุญแจสาธารณะใช้เพื่อเข้ารหัสข้อมูล ใครก็ใช้เพื่อสร้างข้อความลับได้
แต่จะไขความลับได้นั้นต้องใช้คอมพิวเตอร์ ที่เข้าถึงกุญแจส่วนตัวได้เท่านั้น
วิธีการของมันคือคณิตศาสตร์ ที่เราจะยังไม่พูดถึงในตอนนี้
ลองคิดตามว่าคุณมีตู้จดหมายส่วนตัว
ที่ใครก็มาหย่อนจดหมายก็ได้ แต่ว่าต้องใช้กุญแจ
คุณจะปั๊มกุญแจเพื่อหย่อนจดหมาย กี่ดอกก็ได้
ก่อนแจกให้เพื่อนคนหนึ่ง หรือจะให้คนทั่วไปมาเปิดก็ได้
เพื่อนคุณหรือคนแปลกหน้า ใช้กุญแจสาธารณะ ในการเปิดรูหย่อนจดหมาย
แต่มีแค่คุณที่เปิดตู้จดหมายได้ ด้วยกุญแจส่วนตัว
เพื่อเข้าถึงข้อความลับที่คุณได้รับ
คุณก็ส่งข้อความที่ปลอดภัยให้เพื่อนได้
ด้วยการใช้กุญแจสาธารณะ ในการหย่อนตู้จดหมายเพื่อน
วิธีนี้ทำให้คนแลกข้อความกันอย่างปลอดภัย โดยไม่ต้องตกลงเรื่องกุญแจส่วนตัว
การเข้ารหัสกุญแจสาธารณะคือรากฐาน
ของการส่งข้อความในอินเทอร์เน็ตสาธารณะ อย่างปลอดภัย
รวมถึงโพรโตคอลด้านการรักษาความปลอดภัย อย่าง SSL และ TLS
ที่คอยปกป้องเราเวลาเราใช้อินเทอร์เน็ต
ปัจจุบัน คอมพิวเตอร์ก็ใช้เจ้าตัวนี้ ทุกครั้งที่คุณเห็นแม่กุญแจเล็ก ๆ
หรือตัว https ในแถบที่อยู่ของเบราว์เซอร์
นั่นแปลว่าคอมพิวเตอร์คุณ ใช้การเข้ารหัสกุญแจสาธารณะ
เพื่อแลกเปลี่ยนข้อมูลอย่างปลอดภัย ในเว็บไซต์ที่คุณเปิดใช้อยู่
เมื่อมีผู้ใช้อินเทอร์เน็ตมากขึ้น
ก็จะมีการส่งข้อมูลส่วนตัวมากขึ้น
การทำให้ข้อมูลปลอดภัย ก็จะสำคัญมากขึ้น
และเมื่อคอมพิวเตอร์เร็วขึ้นเรื่อย ๆ
เราต้องพัฒนาวิธีใหม่ ๆ ในการเข้ารหัส ให้ถอดรหัสยากขึ้นสำหรับคอมพิวเตอร์
นี่แหละค่ะงานของฉัน ซึ่งมันเปลี่ยนอยู่ตลอดเวลาค่ะ