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