หลักการของการเข้ารหัสแบ่งออกใหญ่ๆได้สองแบบ
1. หลักการแบบ Substitution แบบนี้คืออาศัยการเปลี่ยนข้อมูลทุกตัวให้กลายไปเป็นอย่างอื่นเช่นหลักการของ Caesar cipher จะใช้การเลื่อนข้อมูล (shift)
ไปทางขวา อาจจะเลื่อนไปสามครั้งเช่นจากตัว "a" เมื่อเข้ารหัสแล้วก็กลายเป็นตัว "d" หรือจาก b ก็กลายเป็น "e" เป็นต้น ซึ่งอาจจะเลื่อนสาม เลื่อนสี่ เลื่อนห้า หรือ เลื่อนจำนวนกี่ครั้งก็แล้วแต่ ซึ่งไอ้จำนวนที่ใช้เลื่อนเนี่ย (n) เขาเรียกว่า กุญแจ (key)
2. หลักการแบบ Transposition แบบนี้ใช้หลักการทำข้อมูลให้ยุ่งเหยิง (scrambling) ก็คือทำให้มันมั่วนั่นเอง แบบว่าเดาไม่ถูกเลยเพราะมันไม่ได้เหมือนกับแบบแรกที่ยังพอเดาได้ถ้าเรารู้จำนวน n ที่เลื่อนไป
โดยทั่วไปเขาแบ่งอัลกอริทึ่มในการเข้ารหัสได้ดังนี้
1. Symmetric algorithm แบบนี้จะใช้ key ตัวเดียวกันในการเข้าและถอดรหัสซึ่งได้แก่ DES, Triple-DES, Blowfish, IDEA, RC2, RC4, RC5, Rijindeal (AES)
- DES มาจากคำว่า Data Encryption Standard มีต้นกำเนิดมาจากรัฐบาลสหรัฐในปี 1977 และ ANSI ปี 1981 โดย DES จะใช้ key ขนาด 56 บิท ในการเข้าและถอดรหัส
- Triple-DES หรือ 3DES จะมีความปลอดภัยสูงกว่าแบบ DES โดยจะอาศัย DES ในการเข้ารหัส 3 ครั้งและแต่ละครั้งจะใช้ key ไม่เหมือนกัน ความยาวของ key ทั้งหมดของ Triple-DES เท่ากับ 168 บิต
- Blowfish เป็นอัลกอริทึ่มที่ชื่อได้ชื่อว่า เร็ว เรียบง่าย และกระชับ Blowfish ถูกสร้างโดย Bruce Schneier ซึ่งเขาเขียนหนังสื้อชื่อ "Applied Cryptography" ISBN 0471128457 อัลกอริทึ่มนี้ใช้ key ในการเข้าและถอดรหัสที่มีความยาวไม่คงที่ โดยความยาวสูงสุดที่เป็นไปได้คือ 448 บิท
- IDEA มาจากคำว่า International Data Encryption Algorithm ถูกพัฒนาโดย Janes L. Massey และ Xuejia Lai จากประเทศสวิสเซอร์แลนด์
- RC2, RC4 ถูกพัฒนาโดย Ronald Rivest ทั้ง RC2 และ RC4 จะใช้ key ที่มีความยาวตั้งแต่ 1 ถึง 2048 บิท ส่วน RC5 นั้นจะให้ user เป็นผู้กำหนดความยาวของ key, ขนาดข้อมูลแต่ละ block รวมไปถึงจำนวนรอบที่เข้ารหัสด้วยตัวเอง
- Rijindael (AES) ถูกพัฒนาโดย Joan Daemen และ Vincent Rijmen เป็นอัลกอริทึ่มที่เร็วและกระชับใช้คีย์ขนาด 128 บิท 192 บิท และ 256 บิท
2. Asymmetric Algorithm แบบนี้จะใช้กุญแจ (key) ที่เข้ารหัสและถอดรหัสคนละตัวกัน เรียกเทคโนโลยีแบบนี้ว่า PKI มาจากคำว่า Public Key Infrastructure
Asymmetric algorithm ถูกประยุกต์ใช้ในงานต่างๆเช่น Secure Socket Layer(SSL) หรือ Transport Socket Layer (TSL) และงานเข้ารหัสอื่นๆที่ต้องการความปลอดภัยสูงกว่าแบบ Symmetric
ทีนี้คุณจะเห็นว่า PKI มันต้องมีกุญแจสองดอก ดอกนึงเรียก public key อีกดอกเรียก private key ในทางปฎิบัตส่วนใหญ่จะใช้วิธีการ "Diffie-Hellman key exchange" หรือ Diginal Signature Standard(DSS) หรือ Elliptic Curve Crytosystems
เพื่อแลกเปลี่ยน key ระหว่างกัน
การเข้ารหัสแบบ asymmetric นี้ ความจริงแล้ว มันเข้าด้วยดอกไหนก็ได้แต่ต้องถอดด้วยอีกดอกนึงเท่านั้น ใช้ดอกเดิมที่เป็นตัวเข้าก็ถอดไม่ได้ ถอดได้เฉพาะ key ที่เป็นคู่ของมันเท่านั้น
algorithm แบบ asymmetric ก็ได้แก่
- DSA/DSS มาจาก Digital SignatureAlgorithm / Digital Signature Standard ถูกพัฒนาโดย National Security Agency ใช้ความยาว key ขนาดกี่บิทก็ได้
- RSA ถูกประกาศใช้ในปี 1978 โดย Ron Rivest , Adi Shamir และ Leonard Adleman ที่ MIT โดยที่ RSA มาจากนามสกุลของทั้ง 3 คน เป็นที่เล่ากันว่า คิดค้นระหว่างพิธีกรรมทางศาสนาของชาวยิว (Passover seder) ในเมืองสเกเน็กตาดี มลรัฐนิวยอร์ก (Schenectady, NY)
3. Message Digest Algorithm หรืออีกชื่อนึงคือ Hash algorithm
การเข้ารหัสแบบนี้เรียกว่า one-way encryption คือเข้าได้ถอดไม่ได้ต่างจากสองแบบแรกที่เข้าได้ถอดได้ (two-way encryption)
เช่น พวกเข้า password เข้าแล้วถอดออกไม่ได้ reset password ได้อย่างเดียว
วิธี check password ว่ามันถูกได้ไง ก็เอา key ตัวเดิมที่เข้า เข้ารหัสข้อมูลที่จาก user input ด้วย algorithm เดียวกันแล้วไปเทียบกับที่เข้ารหัสเรียบร้อยแล้ว ถ้าข้อมูลทุก byte ตรงกันก็คือใช่
หรืออีกตัวอย่างที่เขาใช้กันบ่อยๆก็เอาไว้ check ว่าไฟล์ สองไฟล์ เหมือนกันป่าว เช่น server1 มีไฟล์ชื่อ a.txt ส่งไปยัง server2 ถ้าระหว่างทางตอนส่งไปมีบาง byte หายไป เราก็เทียบข้อมูล hash ทั้ง server1 และ server2 ถ้าเกิดมันไม่ตรงกันแสดงว่าไฟล์ที่ server2 พัง
algorithm hash ที่มีใน .NET Framework ได้แก่
- HMACSHA-1
- MACTripleDES
- MD-5
- SHA-1
- SHA-256
- SHA-384
- SHA-512
ที่มา http://www.narisa.com/forums/index.php?showtopic=29150
ไม่มีความคิดเห็น:
แสดงความคิดเห็น