15
Jan
08

แด่เด็กคลิป(โต)…

 

Cryptography*

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

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 ค่อยๆ จางลงจนมืดสนิท…แล้วปรากฏภาพ…จุด จุด จุด….

—————————————————————————

ก๊อปมาเอาไว้อ่าน  แด่เพื่อนที่เรียนคลิปโต….

 credit–>http://kitty.in.th/index.php?room=article&id=63

Thx  ^_______^


2 Responses to “แด่เด็กคลิป(โต)…”


  1. 1 Chariy
    January 15, 2008 at 8:21 pm

      กว่าจะอ่านจบ…
      ผมขาวกันพอดี

  2. 2 Rattajin
    January 15, 2008 at 10:21 pm

    เห้ย แปลกใจสาระ มาจากไหน


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


[ Y e n Z a a ] - [ ♥ ]

Yenz Categories – [ ♥ ]

Yenz Calendar – [ ♥ ]

January 2008
M T W T F S S
« Dec   Feb »
 123456
78910111213
14151617181920
21222324252627
28293031  

Yenz Twitter – [ ♥ ]

Error: Please make sure the Twitter account is public.

sw

new TWTR.Widget({ version: 2, type: 'profile', rpp: 5, interval: 10000, width: 250, height: 300, theme: { shell: { background: '#6b676b', color: '#ffffff' }, tweets: { background: '#f5f0f5', color: '#3d393d', links: '#de2f18' } }, features: { scrollbar: false, loop: true, live: true, hashtags: true, timestamp: true, avatars: true, behavior: 'default' } }).render().setUser('Yenzaa').start();

%d bloggers like this: