Cryptography .. ทฤษฎีแห่งการเข้ารหัส - Cryptography .. ทฤษฎีแห่งการเข้ารหัส นิยาย Cryptography .. ทฤษฎีแห่งการเข้ารหัส : Dek-D.com - Writer

    Cryptography .. ทฤษฎีแห่งการเข้ารหัส

    เกร็ดความรู้วันละเรื่องจากผม เส้นผม (Online)

    ผู้เข้าชมรวม

    2,937

    ผู้เข้าชมเดือนนี้

    0

    ผู้เข้าชมรวม


    2.93K

    ความคิดเห็น


    2

    คนติดตาม


    0
    เรื่องสั้น
    อัปเดตล่าสุด :  19 มี.ค. 49 / 15:51 น.


    ข้อมูลเบื้องต้น
    ตั้งค่าการอ่าน

    ค่าเริ่มต้น

    • เลื่อนอัตโนมัติ

      ในคืนนั้น.. เจมส์ บอนด์ (คั้ง คั้ง ฉิก..แสดงโดย โจวซิงฉือ) เข้าไปขโมยเอาแผ่น

      disk แบบแปลนอาวุธร้ายแรงอันล่าสุดของแก๊งแมงป่องแดงแห่งจังหวัดไซตะมะได้

      สำเร็จ .. เขาเอาแผ่น disk เสียบเข้า PC เพื่อเปิดดูข้อมูลทันที...เสียง drive อ่านแผ่น

      ได้ซักครู่ก็ปรากฏข้อความที่หน้าจอ.."กรุณาใส่กุญแจถอดรหัส แล้วกด enter" ..ฮั่น

      แน่..มันร้ายเว้ย..007 คิดในใจ..เขายิ้มที่มุมปากเล็กน้อย ..แล้วก็เอากุญแจ keylock ที่

      ขโมยมาจากแก๊งคูณสามแห่งจังหวัดบางกอกมาไขที่ keylock ของ PC พร้อมกับกด

      enter..แต่มันไม่เป็นผล.."อะไรกันกุญแจปลอมรึนี่ ?" 007 บ่นกับตัวเอง "ลองใหม่อีกที

      ซิ" ..ไม่ว่าจะลองกี่ครั้งก็ไม่สำเร็จ (จะไปสำเร็จได้ยังไง ก็ไข keylock ตัว keyboard ก็

      ถูกล็อคนะสิ) .. "บ้าที่สุด..เทคโนโลยีโหลยโท่ย .. ไม่เปิดดูก็ได้ฟะ" 007 สุดยอด

      สายลับสบถกับ PC ของเขาพร้อมกับขว้าง disk ทิ้งไป...

      ถ้า 007 รู้จัก PC และเทคโนโลยีของการเข้ารหัสลับอีกซักนิดก็คงจะเปิดแผ่นได้ไม่

      ยากนักหรอกครับ.. วันนี้ก็เลยจะมาเล่าเรื่องนี้ให้ฟังกัน "Cryptography .. ทฤษฎีแห่ง

      การเข้ารหัส". อืมม ..มาเริ่มที่ปัญหาเรื่องความปลอดภัยของข้อมูลกันก่อนนะครับ..

      จริงๆ แล้วปัญหาเรื่องความปลอดภัยของข้อมูลไม่ได้มีเฉพาะการเก็บข้อมูลเป็น

      ความลับอย่างเดียวนะครับ แต่เรามักจะนึกถึงการเก็บเป็นความลับนี้เป็นอย่างแรก

      ปัญหาเรื่องความปลอดภัยของข้อมูลทั้งหมดจะมี 4 อย่างครับ

         1.การเก็บข้อมูลเป็นความลับ (Confidentiality)
         2.การตรวจสอบความสมบูรณ์ของข้อมูล (Integrity)
         3.การตรวจสอบตัวตน และแหล่งที่มาของข้อมูล (Authentication)
         4.การป้องกันการปฏิเสธทั้งได้รับและไม่ได้รับข้อมูล (Non-repudiation)

      Confidentiality เป็นปัญหาที่เราจะมองเห็นได้ชัดที่สุดในเรื่องความปลอดภัย เป็นเรื่อง

      ของการปกปิดข้อมูลเพื่อให้เฉพาะผู้ที่มีสิทธิสามารถดูได้เท่านั้น เทคนิคในการทำ

      การเก็บข้อมูลเป็นความลับก็คือการเข้ารหัสลับไงครับ (Encryption) การเข้ารหัสลับมี

      มานานมากแล้วตั้งแต่สมัยโรมันโน่นเลย..วิธีการง่ายๆ สมัยนั้นก็คือการเลื่อนตัว

      อักษร เช่น แทน A ด้วย B แทน B ด้วย C .. ต่อไปเรื่อยๆ จากนั้นก็เป็นแทนด้วยตัว

      อักษรจริงๆ โดยไม่เลื่อนคือจะสุ่มมั่วไปเลย อย่างเช่น A เป็น Z, B เป็น Q ทั้งสองวิธี

      นี้ปัจจุบันเป็นของเด็กเล่น..ถอดรหัสกันง่ายโดยวิธีทางสถิติ .. ปัจจุบันจะใช้การเข้า

      รหัสลับใช้ algorithm ที่ซับซ้อนมาก แต่ algorithm จะไม่ได้เป็นความลับนะครับ ตัวที่

      ต้องเก็บเป็นความลับจริงๆ คือข้อมูลที่เรียกว่า "กุญแจเข้ารหัสและกุญแจถอด

      รหัส" (Key) ..แปลว่า algorithm การเข้ารหัสนี้ก็รู้กันไปทั่ว..แจกกันเห็นๆ ..ความลับ

      ของข้อมูลอยู่ที่ key ครับ เอ้อ..แล้วทำไมไม่ให้ algorithm เป็นความลับล่ะ..คำตอบ

      คือการเข้ารหัสโดย algorithm ที่เป็นความลับ (ไม่มี key) นี่มันแกะง่ายครับ..ทำลอก

      เลียนได้ง่ายกว่า เทคนิคมีมากมาย ทั้ง reverse engineering ทั้ง neural network เต็มไป

      หมด ปัจจุบันที่ใช้งานระดับสุดยอดก็จะเป็นลูกผสมคือเป็นความลับหมดทั้ง

      algorithm และ key

          การเข้ารหัสแบ่งหลักๆ ก็มีสองแบบตามการใช้งานของ key ล่ะครับ .. คือแบบที่

      เรียกว่า Symmetric key cryptography และ Asymmetric key cryptography อันแรกนี่

      เรียกอีกอย่างว่า Secret key cryptography อันที่สองบางทีเรียกว่า Public key

      cryptography สองอันนี้ต่างกันที่ key อย่างที่บอกครับ .. คือ symmetric key

      cryptography นี่จะใช้ key อันเดียวทั้งเข้าและถอดรหัส ส่วน asymmetric key

      cryptography จะมี key อันนึงสำหรับเข้ารหัส และมี key อีกอันนึงที่เข้าคู่กันกับ key

      เข้ารหัสเป็นตัวถอด กลไกของ symmetric key นี่คงเข้าใจได้ไม่ยากเนาะ..ใช้ key

      ไหนเข้ารหัสก็เอา key นั้นถอดออก ทำนองนี้น่ะ .. แต่แบบ asymmetric key นี่มันทำ

      ได้ยังไงล่ะเนี่ย ..asymmetric key cryptography จะมี key อันนึงที่ประกาศให้ชาวบ้านรู้

      ได้ไม่เป็นความลับเรียกว่า public key แล้วก็มี key ที่เข้าคู่กับ public key เราเก็บไว้เอง

      เรียกว่า private key การใช้งานก็คือถ้าเราต้องการส่งข้อมูลลับไปให้ใครบางคน ก็เข้า

      รหัสด้วย public key ของคนนั้น เมื่อส่งไปถึงเค้าก็จะแกะข้อมูลที่เข้ารหัสได้โดยใช้

      private key ซึ่งเป็นคู่ของ public key ที่เข้ารหัสมา ดังนั้นคนอื่นถึงจะเอาข้อมูลไปได้

      แต่ไม่มี private key ที่เป็นคู่ของมันก็จะแกะไม่ได้

      ปัจจุบัน ทั้ง public และ private ที่เข้าคู่กัน สร้างได้จากเลขจำนวนเฉพาะขนาดใหญ่

      มากๆ เช่น 512 bits .. ถ้ายังไม่เยอะพอก็มีบาง algorithm ที่ใช้ถึง 4096 bits ..เอ..ทำไม

      ต้องเป็นจำนวนเฉพาะล่ะ ?.. ก็เพราะว่าคุณสมบัติพิเศษอันนึงของจำนวนเฉพาะเมื่อ

      เอามาคูณกันจะมีแค่จำนวนเฉพาะคู่นั้นที่หารผลคูณได้ key ส่วนใหญ่จะสร้างโดยใช้

      จำนวณเฉพาะสองตัวคูณกันเป็นเลขยกกำลังแล้วเอาผลลัพธ์มาทำการคำนวณร่วม

      กับการ mod การจะหา key ได้จะต้องเอาผลคูณมาแยกตัวประกอบซึ่งทำได้ยาก

      เพราะมีตัวประกอบเพียงสองตัว..โดยสรุปเลขจำนวนเฉพาะทำให้การสร้าง key

      เลียนแบบทำได้ยาก ..ตัวอย่างเช่นการจะหา key ขนาด 664-bit (เลขฐานสิบ 200

      หลัก) ถ้าใช้ brute-force (เทคนิคแบบลองทุกทางที่เป็นไปได้) ก็แกะกันประมาณ

      4000 ปี โดยใช้เครื่องล้านเครื่องแต่ละเครื่องแยกตัวประกอบได้ล้านครั้งต่อวินาที ถ้า

      เป็น 1024-bit ก็ 10 กำลัง 10 ปี..(เท่านั้นเอง..) ด้วยความยากในการแกะ key ทำให้

      asymmetric key cryptography มีความปลอดภัยสูงกว่า เพราะจะรู้ข้อมูลต้องรู้ key..จะ

      รู้ key ก็ต้องแกะเอาถ้าไม่มี ถ้าแกะยากกว่าก็ปลอดภัยกว่า (symmetric key มักจะใช้

      เลขสุ่มเอาขนาดตั้งแต่ 56 bits การแกะก็ใช้ operation เท่ากับสองยกกำลังขนาดของ
      key การแกะจะเร็วกว่าเยอะ เพราะไม่ต้องเสียเวลาหาเลขจำนวนเฉพาะมาแยกตัว

      ประกอบ)

      คราวนี้มาดู algorithm ตัวที่ใช้งานกันจริงๆ บ้าง .. Symmetric key cryptography มีตัวที่

      เป็นมาตรฐานคือ Data Encryption Standard (DES) คิดค้นโดย IBM แต่กลายมาเป็น

      มาตรฐานทีหลัง DES ใช้ key 56 bits + 8 parity bits = 64 bits เป็น block cipher คือ

      เข้ารหัสเป็น block ขนาด 64 bits การเข้ารหัสจะแบ่ง block ออกเป็นสองซีกซ้าย-ขวา

      แล้วเข้ารหัสด้วย key จากนั้นทำการสลับด้านซ้าย-ขวา สร้าง key ใหม่จาก key เดิม

      มาเข้ารหัส ทำแบบนี้ 16 รอบถึงจะได้ออกมาเป็น ciphertext ..(ลืมบอก...ข้อมูลที่ยัง

      ไม่เข้ารหัสจะเรียกว่าเป็น plaintext พอเข้าแล้วก็จะเรียกว่า ciphertext) มีคนพิสูจน์ด้วย
      math แล้วว่า DES ปลอดภัยตั้งแต่การเข้ารหัสรอบที่ 4 ..น่าน..เอาเข้าไป..ฝรั่งนี่มันบ้า

      พิสูจน์จริงๆ.. DES เป็นมาตรฐานที่ตีพิมพ์และจดทะเบียนเป็น NIST FIPS PUB 46

      (หาเอาเองเด้อว่าคืออะไร..ถ้าไม่เขียนเป็นตัวย่อจะยาวมาก) ความเร็วในการเข้ารหัส

      ด้วย software บน 486DX-33MHz ได้ประมาณ 4 หมื่น blocks ต่อวินาที ถ้าเป็น DES

      VLSI Chip ความเร็วก็ประมาณ 4 ล้าน blocks ต่อวินาที แต่เพราะ key มันเล็กอาจทำ

      ให้ไม่ปลอดภัยพอ ก็มีคนแปลง DES ออกมาเป็น Triple-DES คือใช้ key สามอันเข้า

      DES สามครั้งต่อ block ..แกะยากเข้าไปอีก.. อีกอันนึงเป็นลูกพี่ลูกน้องของ DES ชื่อ
      IDEA (International Data Encryption Algorithm) ที่มี IDEA เพราะ DES นี่เค้าจดเป็น

      มาตรฐานในสหรัฐฯ ซึ่งมีกฎหมาย exportable code ควบคุมอยู่ ทำให้ประเทศอื่นใช้

      งานไม่สะดวก แต่ IDEA นี่พัฒนาในยุโรป แถม key ขนาดตั้ง 128 bits ปลอดภัยกว่า

      DES เยอะ ตัวอื่นๆ ที่เป็น symmetric key cryptography ก็มี FEAL, REDOC, LOKI,

      KHUFU, KHAFRE, RC2, และ SKIPJACK ส่วนมากจะ patents ไว้เอามาใช้หาเงิน

      ไม่ได้ แต่ถ้าจะศึกษาก็ขอเจ้าของก่อนได้ ...อ้อ Password ใน UNIX ก็ใช้ algorithm

      คล้ายๆ กับ DES นี่แหละ รู้สึกว่าจะชื่อ crypt3 ครับ

      มาดู Asymmetric key cryptography บ้าง..ที่ดังๆ คือ RSA Data Encryption คิดค้นโดย

      Ron Rivest, Adi Shamir, และ Leonard Adleman ที่อธิบายเรื่อง asymmetric key

      cryptography ก็มาจาก RSA นี่แหละ ..RSA มีข้อเสียที่ทำงานช้ามาก ประมาณ 100-

      1000 เท่าของ DES แต่มีความปลอดภัยสูงมาก ปกติเลยไม่ใช้เข้ารหัสลับกับข้อมูล

      ตรงๆ แต่ใช้เข้ารหัสเพื่อแลก key ของ symmetric key cryptography ที่ทำงานเร็วกว่า

      เช่น ใช้ RSA เข้ารหัส key ของ DES เพื่อส่งให้ปลายทาง ทีนี้ก็เข้ารหัสข้อมูลโดย

      DES ส่งหากันได้..อะไรทำนองนี้ ... RSA จดลิขสิทธ์ไว้แล้วเรียบร้อยเป็นของ RSA

      Data Security Inc. กับมหาลัยแห่งนึงในสหรัฐ RSA มีหลายเวอร์ชันตั้งแต่ 512 bits,

      จนถึง 2048 bits ครับ Asymmetric Key Cryptography นอกจาก RSA ก็มี RABIN,

      ElGamal, และ Elliptic Curve.

      ในทางปฏิบัติการเก็บรักษาความลับไม่ได้หมายความว่าจะปกปิดไปตลอดเพราะ

      ข้อมูลแต่ละอย่างจะมีอายุการใช้งานของมันเอง ซักวันมันก็ต้องล้าสมัย และไม่จำ

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

      ใช้ key ขนาดไหนกันนะครับ

             ประเภทของข้อมูล / อายุ / ขนาด key 

          1.กลยุทธ์ทางทหาร / นาที/ขั่วโมง / 56 bits 
          2.อัตราดอกเบี้ย / วัน/สัปดาห์ / 56-64 bits 
          3.ความลับทางการค้า เช่น สูตร Coca-cola / สิบปีขึ้นไป / 64 bits 
          4.ความลับทางทหาร เช่น Hydrogen bomb / มากกว่า 40 ปี / 128 bits 
          5.Identity ของสายลับ (007..หึหึหึ) / มากกว่า 50 ปี / 128 bits 
          6.ความลับส่วนตัวของบุคคล / มากกว่า 50 ปี / 128 bits 
          7.ข้อมูลทะเบียนราษฎร์ / 100 ปี / อย่างน้อย 128 bits 

      สำหรับนักศึกษาภาคคอมฯ..มีความลับเยอะและต้องเก็บรักษาเป็นเวลานาน.. แต่มัก

      ถูกเปิดเผยในเวลาอันสั้น.. โดยเฉพาะความลับแบบ"รู้แล้วอย่าบอกใครนะ.." หึๆๆ

          หลายคนสงสัยว่ามีวิธีเข้ารหัสที่ไม่มีวันแกะออกถ้าไม่มี key มั้ย ? ... แปลกแต่

      จริง..มีครับ..แถมเข้ารหัสง่ายมากเลย วิธีนี้เรียกว่า one-time pad คิดค้นในปี 1917

      โดยบริษัท AT&T เป็น Symmetric Key Cryptography ครับ วิธีเข้ารหัสและถอดรหัส

      ใช้แค่ XOR อย่างเดียวและทำแค่ครั้งเดียวก็เสร็จ..key ก็สร้างง่ายเป็นข้อมูลสุ่ม

      ธรรมดา..เป็นไปได้ยังไงเนี่ย ?? แต่..มีดีก็มีเสีย..ข้อเสียคือ key จะมีขนาดใหญ่มาก

      คือเท่ากับขนาดของข้อมูลที่จะเอามาเข้ารหัส แหะๆๆ ^^" ....เนื่องจาก key เป็นค่าที่

      สุ่มมา .. พอ XOR กับข้อมูลอะไรก็ตามมันก็จะกลายเป็นข้อมูลที่ไม่มีรูปแบบ ไม่มี

      pattern เป็นข้อมูลที่เรียกว่า truely random แกะยังไงก็ไม่ออกถ้าไม่มี key ยกตัวอย่าง

      เช่น ข้อมูลเป็น ONETIMEPAD

      มี key เป็น TBFRGFARFM

      จะเข้ารหัสได้เป็น IPKLPSFHGQ

      ถ้าแกะด้วยข้อมูลที่ไม่ใช่ key ของมัน เช่น

      POYYAEAAZX จะกลายเป็น SALMONEGGS

      หรือใช้ key BXFGBMTMXMจะได้เป็น GREENFLUID

      ซึ่งแกะได้ อ่านออก แต่ไม่ใช่ข้อมูลที่แท้จริง ดังนั้นไม่ว่าจะใช้เครื่อง supercomputer

      ซักกี่เครื่อง ใช้เวลาเท่าไหร่ก็ตามข้อมูลจะไม่มีวันถูกถอดรหัสได้ถ้าไม่มี key ของ

      จริง .. อ้อ...ที่เรียก one-timepad เพราะ key จะใช้ครั้งเดียวแล้วทิ้งเหมือนเข็มบริจาค

      เลือด (อย่าคิดเป็นอย่างอื่น...) ปัจจุบัน one-time pad ก็ยังมีคนใช้งานอยู่โดยจะเป็น

      การเข้ารหัสที่ต้องการความปลอดภัยสูงมากๆ ใน low-bandwidth communication เช่น

      สายโทรศัพท์ ..ว่ากันว่าโทรศัพท์ที่สายลับโซเวียตสมัยก่อนใช้ one-time pad เป็นตัว

      เข้ารหัสด้วยล่ะครับ

      ..วันถัดมา..ชินจังเก็บ disk ที่ 007 ทิ้งได้..เลยแอบไปใช้ PC ของคาซาม่าคุงเปิดดู.. "กรุณาใส่กุญแจถอดรหัส แล้วกด enter" ..ข้อความเดิมปรากฏที่หน้าจอ..ชินจังคิดซักครู่แล้วพิมพ์ลงไปว่า "มอระกด มะนีจ๋าย" หน้าจอ PC ค่อยๆ จางลงจนมืดสนิท...แล้วปรากฏภาพ...จุด จุด จุด....จบ

      ผู้อ่านนิยมอ่านต่อ ดูทั้งหมด

      loading
      กำลังโหลด...

      ความคิดเห็น

      ×