การเข้ารหัส: เมื่อคณิตศาสตร์ถูกใช้เพื่อปกป้องข้อมูล

29 สิงหาคม 2024

พรรษ วติวุฒิพงศ์
พรรษ วติวุฒิพงศ์นักคณิตศาสตร์ แอดมินเพจ คณิตศาสตร์อย่างที่ควรจะเป็น

เทคโนโลยีหลาย ๆ อย่างที่เราใช้กันในปัจจุบันไม่ว่าจะเป็นอีเมล โซเชียลมีเดีย หรือแม้แต่การทำธุรกรรมทางการเงินผ่านโทรศัพท์มือถือหรือผ่านตู้ ATM ล้วนผ่านกระบวนการเข้ารหัสเพื่อความปลอดภัยของข้อมูล มนุษย์เราคิดค้นการเข้ารหัส (cryptography) มาตั้งนานแล้ว โดยเฉพาะอย่างยิ่งในการสงคราม ข้อมูลที่รั่วไหลออกไปถึงฝ่ายตรงข้ามอาจนำมาสู่ความพ่ายแพ้ได้เลย ลองนึกภาพว่าหน่วยบัญชาการหลักต้องการแจ้งไปยังหน่วยหน้าถึงแผนการรบในวันพรุ่งนี้แล้วดันโดนฝ่ายตรงข้ามดักฟังได้ขึ้นมา แต่ละฝ่ายจึงต้องคิดค้นวิธีการเข้ารหัสข้อความของตัวเอง ให้ถึงแม้จะถูกดักฟังได้ แต่อีกฝ่ายก็ไม่รู้อยู่ดีว่าข้อความนั้นหมายความว่าอะไร อย่างในสงครามโลกครั้งที่สอง ฝ่ายนาซีเยอรมันใช้เครื่องเข้ารหัสที่แสนซับซ้อนชื่อว่าเครื่องอีนิกม่า (Enigma machine) เพื่อเข้ารหัสข้อความที่จะส่งหากัน สิ่งนี้สร้างความวุ่นวายกับฝ่ายสัมพันธ์มิตรอย่างมาก จนพวกเขาต้องระดมนักคณิตศาสตร์และวิศวกร นำทีมโดยแอลัน ทัวริง นักคณิตศาสตร์ชาวอังกฤษ เพื่อหาทางถอดรหัสเจ้าเครื่องอีนิกม่านี้ และพวกเขาก็ทำได้สำเร็จและทำให้ฝ่ายสัมพันธมิตรสามารถชนะสงครามได้ในที่สุด

อีนิกม่าเป็นกล่องไม้ที่ประกอบไปด้วยเฟือง 3 ตัวและแป้นพิมพ์ เมื่อผู้ส่งข้อความพิมพ์ข้อความที่ต้องการด้วยการกดแป้นพิมพ์ทีละตัวอักษร กลไกของเฟืองเหล่านั้นก็แปลงตัวอักษรที่กดไปเป็นอีกตัวหนึ่งแล้วแสดงออกมาด้วยแสงไฟ ผู้ใช้ก็แค่จดตัวอักษรที่แสดงขึ้นมา แล้วทำแบบนี้ไปเรื่อย ๆ จนจบทั้งข้อความ แล้วก็ส่งไปได้เลย ผู้รับข้อความก็จะเอาข้อความที่ได้ไปใช้เครื่องอีนิกม่าอีกเครื่องที่ตั้งค่าไว้ให้เหมือนกันเป้ะมาถอดรหัสจนได้เป็นข้อความดั้งเดิมกลับมา สิ่งที่ทำให้อีนิกม่านั้นเจ๋งมาก ๆ คือด้วยระบบการทำงานที่ซับซ้อนจึงทำให้มันแปลงคำเดียวกันได้ออกมาเป็นหลายคำ เช่นในประโยคภาษาอังกฤษที่มักจะมีคำว่า the ซ้ำบ่อย ๆ จนทำให้ฝ่ายตรงข้ามแกะรหัสได้ง่าย เครื่องอีนิกม่านั้นจะแปลง the แต่ละที่ออกมาเป็นคนละคำ ทำให้ยากต่อการเดาวิธีถอดรหัสขึ้นไปอีก ยิ่งไปกว่านั้นมันยังสามารถเปลี่ยนวิธีการตั้งค่าได้ถึงราว 150 ล้านล้านวิธี จึงแทบจะเป็นไปไม่ได้เลยที่ฝ่ายตรงข้ามจะลองสุ่มไปเรื่อย ๆ ยิ่งไปกว่านั้นคือพวกเขาเปลี่ยนวิธีตั้งค่าทุกวัน ดังนั้นกว่าฝ่ายตรงข้ามจะสุ่มกุญแจถูกจนถอดรหัสได้ วิธีการตั้งค่าก็เปลี่ยนไปแล้ว แต่อย่าลืมว่านั่นคือเมื่อหลายร้อยปีก่อน

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

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

ระบบการเข้ารหัสแบบที่ผู้ส่งกับผู้รับใช้กุญแจเดียวกันนั้นเรียกว่าการเข้ารหัสแบบกุญแจสมมาตร (symmetric key) ตัวอย่างแบบง่าย ๆ ของการเข้ารหัสด้วยกุญแจสมมาตรคือการเลื่อนตัวอักษรที่ต้องการพิมพ์ไป 3 ตัวตามลำดับภาษาอังกฤษ เช่นถ้าจะส่งคำว่า HELLO เราก็จะส่งเป็นคำว่า KHOOR แทน พอคนรับสาส์นได้ข้อความมา และรู้ว่าต้องเอาแต่ละตัวอักษรถอยไปหนึ่งตำแหน่ง ก็จะได้คำว่า HELLO กลับมา แต่อย่างที่บอกว่าหากถูกฝ่ายตรงข้ามล่วงรู้กุญแจได้ว่าวิธีเข้ารหัสของเราเป็นอย่างไร เขาก็จะสามารถถอดรหัสข้อความของเราได้ทันที ใคร ๆ ที่รู้วิธีการเข้ารหัสนี้ก็จะถอดได้หมด นึกภาพง่าย ๆ เหมือนเวลาเราไปต่างประเทศแล้วนินทาคนต่างชาติเป็นภาษาไทยแต่คนที่เรานินทาดันฟังไทยออกซะอย่างนั้น

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

การเข้ารหัสแบบกุญแจอสมมาตรถูกเอามาประยุกต์ใช้ในการสร้างลายเซ็นต์ดิจิทัล (Digital signatures) อีกด้วย เราไม่ได้หมายถึงลายเซ็นต์อิเล็กทรอนิกส์อย่างการเซ็นต์ลงบนไฟล์ pdf หรืออะไรพวกนั้นที่เอาเข้าจริงคือไม่ได้มีความปลอดภัยอะไร แต่ลายเซ็นต์ดิจิทัลที่กำลังพูดถึงนี้จะใช้การเข้ารหัสเพื่อยืนยันตัวตนของผู้เซ็นต์ที่แน่ใจได้ว่าเป็นเจ้าตัวจริง ๆ ไม่ใช่คนอื่นแอบมาเซ็นต์แทน โดยแทนที่จะใช้กุญแจสาธารณะมาเข้ารหัสข้อความที่เราอย่างยืนยันตัวตน สิ่งที่เราจะทำคือใช้กุญแจส่วนตัวของเราเข้ารหัสข้อความนั้นแทนแล้วส่งออกไป ทีนี้เมื่อมันเข้ารหัสด้วยกุญแจส่วนตัว แปลว่าทุกคนในโลกนี้ก็จะสามารถใช้กุญแจสาธารณะของเราในการถอดรหัสและอ่านข้อความนี้ได้ ถึงแม้ข้อความนี้จะไม่ใช่ความลับอีกต่อไป แต่การทำแบบนี้จะมีเพียงแค่กุญแจสาธารณะของผู้เขียนเท่านั้นที่สามารถไขเพื่อดูได้ ซึ่งเป็นเครื่องยืนยันตัวตนว่าใครคือคนเขียนข้อความนี้นั่นเอง

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

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

จำนวนเฉพาะคือจำนวนที่มีเพียงหนึ่งและตัวมันเองเป็นตัวประกอบ เช่น 2 3 5 7 11 13 … ซึ่งนักคณิตศาสตร์พบว่าจำนวนเต็มบวกทุกจำนวนสามารถแยกตัวประกอบ หรือเขียนในรูปผลคูณของจำนวนเฉพาะได้ เช่น 30 นั้นเท่ากับ 2 3 5 เป็นต้น การแยกตัวประกอบของจำนวนที่มีค่าน้อย ๆ นั้นไม่ใช่เรื่องยาก แต่พอจำนวนมีค่าเยอะขึ้น และยิ่งถ้าจำนวนที่ว่านั้นเกิดจากจำนวนเฉพาะเพียงสองตัวมาคูณกันด้วยนั้น การแยกตัวประกอบของมันจะยิ่งต้องใช้เวลามากแม้จะทำด้วยคอมพิวเตอร์

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

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

สิ่งนี้แทบจะเป็นไปไม่ได้เลยด้วยคอมพิวเตอร์แบบที่เราใช้กันอยู่ในปัจจุบัน แม้แต่ซุปเปอร์คอมพิวเตอร์ที่เรามีก็ยังต้องใช้เวลาระดับร้อยถึงพันปีในการถอดรหัสลับข้อมูลที่มีกุญแจรหัสลับที่ยาวเพียงพอ แต่สิ่งนี้อาจจะเกิดขึ้นเร็วกว่าที่เราคิด เมื่อโลกได้รู้จักการควอนตัมคอมพิวเตอร์ (Quantum Computing) ที่เปลี่ยนวิธีเก็บข้อมูลในหน่วยย่อยที่สุดจากแบบบิตที่มีค่าที่เป็นไปได้คือ 0 กับ 1 ให้กลายเป็นแบบควอนตัมบิตที่สามารถเก็บข้อมูลได้มากกว่า สิ่งนี้ทำให้ควอนตัมคอมพิวเตอร์สามารถในการคำนวณที่สูงกว่าคอมพิวเตอร์ทั่วไป ผู้เชี่ยวชาญเชื่อกันว่าหากใช้งานมันได้อย่างสมบูรณ์มันจะสามารถแยกตัวประกอบจำนวนเฉพาะจากตัวเลขขนาดใหญ่ได้อย่างง่ายดาย นั่นหมายความว่าการเข้ารหัสด้วยวิธี RSA หรือวิธีอื่น ๆ ที่เราใช้กันอยู่ทุกวันนี้ก็จะไม่ปลอดภัยอีกต่อไป

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

 

ที่มา: learning.quantum , ionos , Understanding Digital Signatures | CISA , nist , What Is Quantum Computing? | IBM

บทความที่เกี่ยวข้อง