การเข้ารหัส



สรุปแบบย่อๆ

การเข้ารหัส คือ การทำให้ข้อมูลเป็นความลับ เพื่อให่ข้อมูลมีคุณสมบัติ ดังนี้ Confidentiality, Integrity, Authentication/Non-repudiation

ประเภท
  1. Symmetric Encryption หรือ Secret Key เข้าและถอดรหัสด้วย key เดียวกัน
    1. เอา plain text และ secret key มาเข้ารหัสด้วยอัลกอริธึม จะได้ ciphertext ออกมา
    2. ผู้เข้ารหัสส่ง/แจกจ่าย secret key ให้ผู้รับ อย่างเป็นความลับ
    3. ผู้รับได้ cipher text มา ก็ใช้อัลกอริธึมพร้อม secret key ที่มีอยู่ถอดรหัส จะได้ plain text ออกมา
  2. Asymmetric Encryption หรือ Public Key เข้าและถอดรหัสด้วย key ต่างกัน
    1. ใช้สำหรับการเข้ารหัส
      1. เรามีกุญแจ 2 ดอก เอา Private key ไว้กับตัว เอา Public Key ไปวางในที่สาธาณะไว้แจก
      2. คนที่ต้องการจะส่งข้อความเข้ารหัสมาให้เรา ให้เค้ามาดาวน์โหลดกุญแจสาธารณะนั้น ไปทำการเข้ารหัสข้อความที่ต้องการส่งด้วยกุญแจสาธารณะ แล้วจึงส่งข้อความที่เข้ารหัสไปให้กับเราผู้เป็นเจ้าของกุญแจสาธารณะ
      3. วิธีนี้จะไม่มีผู้อื่นสามารถเปิดดูข้อความที่เข้ารหัสนั้นได้ยกเว้นเราที่เป็นผู้ที่ถือกุญแจส่วนตัว (ที่เป็นคู่ของกุญแจสาธารณะนั้น) จึงจะสามารถเปิดข้อความนี้ดูได้
    2. ใช้สำหรับการลงลายมือชื่ออิเล็กทรอนิกส์ (Digital Signature)
      1. ผู้ส่งนำข้อความ (Plaintext) ไปแปลงผ่าน Hash Function กลายเป็น Digest
      2. ผู้ส่งเอา Digest นั้นมาเข้ารหัสด้วย Private Key ของตัวเอง กลายเป็น Digital Signature
      3. ส่งทั้ง Plaintext และ Digital Signature ไปให้ผู้รับผ่านเน็ต
      4. ผู้รับ เอา Plaintext ไปแปลงผ่าน Hash Function กลายเป็น Digest
      5. ผู้รับ เอา Digital Signature มาถอดรหัสด้วย Public Key ที่ตนเองมี ได้ Digest
      6. ผู้รับ เอา Digest ทั้งคู่มาเทียบกันว่าตรงกันรึเปล่า 
  3. Message Digest Algorithm เป็นการเข้ารหัสทางเดียว ถอดย้อนกลับไม่ได้ จะออกมาเป็นข้อมูลที่แฮชไปแล้ว 1 ชุด มีขนาดเท่าตามกำหนด (ปกติ128-256 บิต) กันไม่ว่าข้อความตั้งต้นจะยาวแค่ไหน ปกติไว้ทดสอบ Integrity ว่าข้อมูลถูกเปลี่ยนระหว่างทางรึเปล่า



1.1 จุดประสงค์ของการเข้ารหัส 
  1. ทำให้ข้อมูลเป็นความลับ (Confidentiality) ไม่ให้ผู้ที่ไม่มีสิทธิ์สามารถเข้าถึงข้อมูลได้
  2. ทำให้ข้อมูลสามารถตรวจสอบความสมบูรณ์ได้ (Integrity) ให้ข้อมูลอยู่ในสภาพเดิม ผู้รับได้รับข้อมูลที่ไม่ถูกแอบแก้ไข
  3. ทำให้สามารถพิสูจน์ตัวตนของผู้ส่งข้อมูลได้ (Authentication/Non-repudiation) สามารถตรวจสอบได้ว่าใครคือผู้ส่งข้อมูล หรือในทางตรงกันข้าม ก็คือเพื่อป้องกันการแอบอ้างได้
1.2 ประเภทอัลกอริทึมในการเข้ารหัส
  1. Symmetric Encryption หรือ Secret Key เข้าและถอดรหัสด้วย key เดียวกัน
  2. Asymmetric Encryption หรือ Public Key เข้าและถอดรหัสด้วย key ต่างกัน
1.3 ปัจจัยที่ทำให้อัลกอริธึมแข็งแกร่ง
  • ห้ามทำกุญแจหาย
  • ความยาวกุญแจ ยิ่งบิตเยอะยิ่งดี (1 บิต = 2^1 ตัวเลข 0,1; 2 บิต = 2^2 ตัวเลข 0, 1, 2, 3 เป็นต้น )
  • เปิดเผยอัลกอริธึมให้ศึกษาได้ โดยไม่กลัวว่าจะถูกจับรูปแบบได้
  • ห้ามมีประตูลับในอัลกอริธึมที่ทำให้ถอดรหัสโดยไม่ต้องมีกุญแจ
  • ไม่เกรงกลัวต่อปัญหาการหาความสัมพันธ์ในข้อมูลที่ได้รับ (Known plaintext attack)
  • อัลกอริทึมที่ดีต้องไม่ใช้คุณสมบัติของข้อความเป็นกลไกในการเข้ารหัส

Symmetric Encryption


2.1 วิธีการของ Secret Key

ทั้งผู้เข้าและถอดรหัส ต่างก็ต้องรู้ key ตัวเดียวกัน การส่งรับ key จึงต้องมีความปลอดภัยไม่รั่วไหล จึงเรียก key นั้นว่า secret key เพราะโดยปกติอัลกอริธึมในการเข้าถอดรหัสมักเป็นที่เปิดเผย cipher text ก็ถูกดักได้ ถ้า secret key ยังมาถูกดักอีก ข้อความก็จะถูกถอดได้
  1. เอา plain text และ secret key มาเข้ารหัสด้วยอัลกอริธึม จะได้ ciphertext ออกมา
  2. ผู้เข้ารหัสส่ง/แจกจ่าย secret key ให้ผู้รับ อย่างเป็นความลับ
  3. ผู้รับได้ cipher text มา ก็ใช้อัลกอริธึมพร้อม secret key ที่มีอยู่ถอดรหัส จะได้ plain text ออกมา
โดยทั่วไปในการออกแบบอัลกอริทึมในการเข้ารหัสนั้น จะถือว่าประสบความสำเร็จในการรักษาความปลอดภัย เมื่อรหัสที่สร้างขึ้นมาโดยอัลกอริทึมนั้น สามารถบรรลุข้อกำหนดใดใน 2 ข้อกำหนดต่อไปนี้
  • ค่าใช้จ่ายที่ต้องใช้ในการถอดรหัสจะต้องมากกว่ามูลค่าของข้อมูลที่เข้ารหัส
  • เวลาที่ใช้ในการถอดรหัส จะต้องมากกว่าอายุการใช้งานของข้อมูลนั้น
ค่าใช้จ่ายนั้นประเมินได้ยาก จึงจ้องประเมินจากเวลา โดยมีสมมติฐานเรื่องการพยายามถอดรหัสด้วย Brute Force ลองทุกๆ ค่าของ key ที่เป็นไปได้

2.2 โครงสร้างต้นแบบของการเข้ารหัส (Feistel Cipher)

โครงสร้างต้นแบบของการเข้ารหัสแบบ Symmetric เข้ารหัสแบบบล็อก
  1. แบ่งข้อมูลออกเป็นชุด ๆ
  2. แล้วประมวลผลทีละชุดไปเรื่อย ๆ จนหมดข้อมูล (ในกรณีที่ข้อมูลชุดสุดท้ายเหลือไม่ถึง 64 บิต ก็จะเติมให้ครบ 64 บิต)
  3. แบ่งซ้ายขวา ใช้ Round Function ประมวลผลหลายๆ รอบซ้ำกัน
  4. การถอดรหัสทำแบบเดียวกัน แต่จะใช้คีย์ย่อยย้อนกลับ
  • ขนาดบล็อกข้อมูล ยิ่งใหญ่ยิ่งปลอดถัยแต่จะเข้า/ถอดรหัสช้าไปด้วย โดยปกติใช้ 64 บิต
  • ขนาดของ key ยิ่งใหญ่ยิ่งปลอดถัยแต่จะเข้า/ถอดรหัสช้าไปด้วย โดยปกติใช้ 128 บิต
  • จำนวนครั้งการประมวลผล มากรอบยิ่งปลอดภัย ปกติใช้ 16 รอบ
  • อัลกอริทึมที่ใช้ในการสร้างคีย์ย่อย และ Round Function ยิ่งซับซ้อนยิ่งแกะยาก

2.3 Symmetric Encryption Algorithm แบบต่างๆ

ในการเข้ารหัสแบบ Block Cipher นั้น มีอัลกอริทึมอยู่หลายตัวที่มีการออกแบบและใช้งานในปัจจุบัน โดยอัลกอริทึมที่มีความสำคัญ และใช้งานมากที่สุด คือ DES (Data Encryption Standard) และ 3DES (Triple Data Encryption Standard) ซึ่งถือว่าเป็นรากฐานของระบบเข้ารหัสที่ใช้ในปัจจุบัน และแบบที่ออกมาใหม่คือ AES (Advanced Encryption Stabdard)

1) DES
  • DES เป็นอัลกอริทึมแบบ Block Cipher ที่มีการใช้งานมากที่สุด โดย DES เป็นมาตรฐานของ NIST
  • Block Size = 64 บิต
  • Key = 56 บิต
  • การเข้ารหัสกับบล็อกข้อมูล ก็จะได้ออกมาเป็น Ciphertext ที่มีความยาวเท่ากับ Plaintext ที่เข้าไปคือ 64 บิต
2) 3DES
  • เริ่มแรกเป็นมาตรฐานของ ANSI จากนั้น NIST ได้นำมาใช้ใน 3DES
  • จะใช้อัลกอริทึมเดียวกับ DES แต่จะใช้คีย์จำนวน 3 คีย์และทำ DES จำนวน 3 ครั้ง ดังนั้นคีย์ทั้งหมดจะมีความยาว Key = 56*3 = 168 บิต
  • อย่างไรก็ตาม FIPS PUB 46-3 ยอมให้ใช้คีย์เพียง 2 คีย์ คือ กำหนดให้คีย์ K1 เท่ากับ K3 ได้ ดังนั้นความยาวคีย์จะเหลือเท่ากับ 112 บิต

3) AES (Rijndael)

3DES ถูกออกแบบมาให้ง่ายต่อการสร้างด้วยฮาร์ดแวร์มากกว่าซอฟต์แวร์ และการทำ DES ถึง 3 ครั้ง ทำให้เข้ารหัสช้า และบล็อกข้อมูลขนาด 64 บิต ถือว่าเล็กเกินไปในปัจจุบัน จึงมีการนำอัลกอริธึมใหม่ Rijndael มาใช้ เรียกว่า AES
  • อัลกอริทึมนี้จะยังคงเป็นแบบ Block Cipher
  • ใช้ Block size = 128 บิต 196 บิต และ 256 บิต
  • Key = ได้ยาวถึง 128 บิต 196 บิต และ 256 บิต
  • โดยอัลกอริทึมนี้ได้รับการออกแบบให้มีการทำงานที่เหมาะสมกับโพรเซสเซอร์รุ่นใหม่ ๆ และสามารถใช้งานกับ Smart Card ได้ เพราะใช้หน่วยความจำน้อย
  • และใช้ฟังก์ชัน Round ที่สามารถเลือกได้ว่าจะทำ 10, 12 หรือ 14 ครั้ง
4) IDEA
  • ใช้ Key = 128 บิต
  • ใช้งานกับโปรแกรมยอดฮิตและลงลายมือชื่ออิเล็กทรอนิกส์ในระบบอีเมล์ที่มีชื่อว่า PGP
  • แต่ติดปัญหาลิขสิทธิ์ คนเลยไม่ค่อยใช้
5) Blowfish
  • อัลกอริทึมที่มีความรวดเร็วในการทางาน มีขนาดเล็กกระทัดรัด ไม่ได้จดสิทธิบัตร
  • ใช้ Key ที่มีการเปลี่ยนค่าความยาวตั้งแต่น้อยๆ จนถึง 448 บิต (แต่ปกติใช้ 128 บิต)
  • วนรอบ 16 ครั้ง มีความเร็วในการทำงานสูง
  • ออกแบบรองรับหน่วยประมวลผลขนาด 32 หรือ 64 บิต
6) CAST-128
  • Key = 40 – 128 บิต โดยเพิ่มทีละ 8 บิต
  • ฟังก์ชันแบบ Non-Linear ทำให้แกะรหัสยาก
  • ใช้ฟังก์ชัน Round แต่ละรอบที่แตกต่างกันไป
7) RC4
  • อัลกอริทึมแบบสตรีม (ทำงานกับข้อมูลทีละไบต์)
  • สามารถใช้ขนาดความยาวของ Key ตั้งแต่ 1 – 2048 บิต
  • ได้รับการพัฒนาขึ้นมาโดย Ronald Riverst และถูกเก็บเป็นความลับทางการค้าโดยบริษัท RSA Data Security ในภายหลังอัลกอริทึมนี้ได้รับการเปิดเผยใน Usenet เมื่อปี ค.ศ. 1994 และเป็นที่ทราบกันว่าเป็นอัลกอริทึมที่มีความแข็งแกร่ง
8) One-time Pads
  • ถูกยอมรับว่าเป็นอัลกอริทึมที่ไม่มีใครสามารถเจาะความแข็งแกร่งของอัลกอริทึมได้
  • ใช้ Key ที่มีขนาดความยาวซึ่งอาจจะมากกว่าขนาดความยาวของข้อความที่ต้องการเข้ารหัส
  • สร้าง Key ออกมาแบบสุ่ม และโดยปกติจะใช้งานแค่เพียงครั้งเดียวแล้วทิ้งไป
  • แต่ละไบต์ของข้อความที่ต้องการส่งไปจะถูกเข้าและถอดรหัสโดยหนึ่งไบต์ (ชนิดไบต์ต่อไบต์) ของกุญแจที่ถูกสร้างขึ้นมาใช้งาน
  • ข้อจำกัด คือขนาดของ Key ที่อาจมีขนาดยาวกว่าข้อความที่ต้องการส่ง ทำให้การส่งมอบกุญแจที่มีขนาดใหญ่ทำได้ไม่สะดวกนัก รวมทั้งการสร้างกุญแจให้มีความสุ่มสูงไม่ใช่เป็นสิ่งที่ทาได้ง่ายนัก อย่างไรก็ตามอัลกอริทึมนี้ก็ยังมีการใช้งานในระบบเครือข่ายที่ต้องการความปลอดภัยสูง
2.5 ปัญหาของอัลกอริทึมแบบสมมาตร

อัลกอริทึมแบบสมมาตรมีความสาคัญไม่ด้อยไปกว่าอัลกอริทึมแบบอสมมาตร เนื่องจากทำงานได้รวดเร็วกว่าและง่ายต่อการใช้งาน อย่างไรก็ตามอัลกอริทึมแบบสมมาตรยังมีปัญหาที่สำคัญ 3 ประการ ซึ่งเป็นข้อจำกัดในการใช้งานอัลกอริทึมนี้
  1. การแลกเปลี่ยนกุญแจระหว่าง 2 องค์กร อาจทำได้ยากและไม่สะดวก
  2. ทั้งสองกลุ่มต้องรักษากุญแจลับนั้นไว้เป็นอย่างดี ห้ามเปิดเผยให้ผู้อื่นล่วงรู้โดยเด็ดขาด การที่กุญแจถูกเปิดเผยออกไปสู่ผู้อื่น (จะโดยกลุ่มใดกลุ่มหนึ่งก็ตาม) และอีกกลุ่มหนึ่งไม่ได้รับทราบปัญหานี้ อาจก่อให้เกิดปัญหากับกลุ่มที่ไม่ทราบนี้ได้
  3. สำหรับสองกลุ่มที่ต้องการติดต่อกัน จำเป็นต้องใช้กุญแจลับเป็นจำนวน 1 กุญแจเพื่อติดต่อกัน สมมติว่ามีผู้ที่ต้องติดต่อกันเป็นจำนวน n กลุ่ม จำนวนกุญแจลับทั้งหมดที่ต้องแลกเปลี่ยนกันคิดเป็นจำนวนทั้งหมด C 2n หรือเท่ากับ n(n-1)/2 กุญแจ ซึ่งจะเห็นได้ว่าจานวนกุญแจมีมากมายเกินไป ซึ่งอาจก่อให้เกิดปัญหาด้านการรักษาความปลอดภัยให้กับกุญแจเหล่านี้

Asymmetric Encryption


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

3.1 ประเภทของ Asymmetric Encryption 
  1. ใช้สำหรับการเข้ารหัส
  2. ใช้สำหรับการลงลายมือชื่ออิเล็กทรอนิกส์ (Digital Signature)
3.2 วิธีการใช้งานการเข้ารหัส
  1. เรามีกุญแจ 2 ดอก เอา Private key ไว้กับตัว เอา Public Key ไปวางในที่สาธาณะไว้แจก
  2. คนที่ต้องการจะส่งข้อความเข้ารหัสมาให้เรา ให้เค้ามาดาวน์โหลดกุญแจสาธารณะนั้น ไปทำการเข้ารหัสข้อความที่ต้องการส่งด้วยกุญแจสาธารณะ แล้วจึงส่งข้อความที่เข้ารหัสไปให้กับเราผู้เป็นเจ้าของกุญแจสาธารณะ
  3. วิธีนี้จะไม่มีผู้อื่นสามารถเปิดดูข้อความที่เข้ารหัสนั้นได้ยกเว้นเราที่เป็นผู้ที่ถือกุญแจส่วนตัว (ที่เป็นคู่ของกุญแจสาธารณะนั้น) จึงจะสามารถเปิดข้อความนี้ดูได้
3.3 ข้อดี/ข้อเสีย

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

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

3.4 Asymmetric Encryption Algorithm แบบต่างๆ

1) RSA สามารถใช้ในการเข้ารหัสข้อมูลรวมทั้งการลงลายมือชื่ออิเล็กทรอนิกส์ด้วย

2) DSS ย่อมาจาก Digital Signature Standard ได้รับการรับรองโดย NIST ให้เป็นมาตรฐานกลางสำหรับการลงลายมือชื่ออิเล็กทรอนิกส์ใน USA

Message Digest Algorithm


Message Digest หรือเรียกสั้นๆ ว่าไดเจสต์ แปลว่าข้อความสรุปจากเนื้อหาข้อความตั้งต้น โดยปกติข้อความสรุปจะมีความยาวน้อยกว่าความยาวของข้อความตั้งต้นมาก จุดประสงค์สำคัญของอัลกอริทึมนี้คือ การสร้างข้อความสรุปที่สามารถใช้เป็นตัวแทนของข้อความตั้งต้นได้

เป็น secure one-way hash functions that take arbitrary-sized data and output a fixed-length hash value โดยทั่วไปข้อความสรุปจะมีความยาวอยู่ระหว่าง 128 ถึง 256 บิต และจะไม่ขึ้นกับขนาดความยาวของข้อความตั้งต้น

4.1 คุณสมบัติอัลกอริทึมสำหรับสร้างไดเจสต์
  • ทุกๆ บิตของไดเจสต์จะขึ้นอยู่กับทุกบิตของข้อความตั้งต้น
  • ถ้าบิตใดบิตหนึ่งของข้อความตั้งต้นเกิดการเปลี่ยนแปลง ทุกๆ บิตของไดเจสต์จะมีโอกาสร้อยละ 50 ที่จะแปรเปลี่ยนค่าไปด้วย ซึ่งหมายถึงว่า 0 เปลี่ยนค่าเป็น 1 และ 1 เปลี่ยนเป็น 0 ทำให้รู้ได้ว่าข้อความถูกแก้ไขแม้จะแค่ 1 บิตก็ตาม
  • โอกาสที่ข้อความตั้งต้น 2 ข้อความใดๆ ที่มีความแตกต่างกัน จะสามารถคำนวณได้ค่าไดเจสต์เดียวกันมีโอกาสน้อยมาก อย่างไรก็ตามในทางทฤษฎีแล้ว มีโอกาสที่ข้อความ 2 ข้อความที่แตกต่างกันจะสามารถคานวณแล้วได้ค่าไดเจสต์เดียวกัน ปัญหานี้เรียกกันว่าการชนกันของไดเจสต์ (Collision)
4.2 วิธีการ
  1. คนส่ง ส่งข้อความ หรือสิ่งที่จะส่ง (plaintext ไม่ได้เข้ารหัส) มาพร้อม ข้อความนั้นๆ ที่ถูกเข้ารหัส
  2. คนรับ ได้รับทั้งคู่ ลองเอา ข้อความมาเข้ารหัส แล้วเทียบดูผลที่เข้ารหัสว่าเหมือนกันมั้ย
4.3 อัลกอริธึมแบบต่างๆ

1) MD2
  • สร้าง Digest ที่มีความยาว 128 บิต
  • แข็งแกร่งที่สุดในบรรดาอัลกอริทึมต่างๆ ที่ Rivest พัฒนาขึ้นมา
  • ข้อเสียคือใช้เวลามากในการคำนวณไดเจสต์หนึ่งๆ จึงไม่ค่อยนิยม
2) MD4
  • สร้าง Digest ที่มีความยาว 128 บิต
  • Rivest พัฒนาขึ้นมาเพื่อแก้ปัญหาความล่าช้าในการคานวณของ MD2
  • อย่างไรก็ตามในภายหลังได้พบว่าอัลกอริทึมมีข้อบกพร่องที่เกี่ยวข้องกับคุณสมบัติข้อที่สามโดยตรง กล่าวคือปัญหาการชนกันของไดเจสต์มีโอกาสเกิดขึ้นได้ไม่น้อย ซึ่งผู้บุกรุกอาจใช้ประโยชน์จากจุดอ่อนนี้เพื่อทาการแก้ไขข้อความตั้งต้นที่ส่งมาให้ได้ MD4
3) MD5
  • สร้าง Digest ที่มีความยาว 128 บิต
  • Rivest พัฒนาต่อจาก MD4 เพื่อให้มีความปลอดภัยที่สูงขึ้น ถึงแม้จะเป็นที่นิยมใช้งานกันอย่างแพร่หลาย ทว่าในปี 1996 ก็มีผู้พบจุดบกพร่องของ MD5 (เช่นเดียวกับ MD4) จึงลดความนิยม
4) SHA
  • สร้าง Digest ที่มีขนาด 160 บิต
  • SHA ย่อจาก Secure Hash Algorithm อัลกอริทึม SHA ได้รับแนวคิดในการพัฒนามาจาก MD4 และได้รับการพัฒนาขึ้นมาเพื่อใช้งานร่วมกับอัลกอริทึม DSS (ซึ่งใช้ใน Digital Signature)
5) SHA-1
  • สร้าง Digest ที่มีขนาด 160 บิต
  • แก้ไขเพิ่มเติมเล็กน้อยจาก SHA การแก้ไขเพิ่มเติมมีความปลอดภัยที่สูงขึ้น
6) SHA-256, SHA-384 และ SHA-512
  • NIST เป็นผู้นาเสนออัลกอริทึมทั้งสามนี้ในปี 2001 เพื่อใช้งานร่วมกับอัลกอริทึมแบบสมมาตร AES
  • สร้าง Digest ที่มีขนาด 256, 384 และ 512 บิต ตามลาดับ
  • นอกจากอัลกอริทึมสาหรับการสร้างไดเจสต์ที่กล่าวถึงไปแล้วนั้น อัลกอริทึมสาหรับการเข้ารหัสแบบสมมาตร เช่น DES สามารถใช้ในการสร้างไดเจสต์เช่นกัน
4.4 วิธีการใช้งาน Symmetric Algorithm เพื่อสร้าง Digest
  1. ให้เลือก Private Key สำหรับการเข้ารหัสขึ้นมา 1 กุญแจโดยวิธีการเลือกแบบสุ่ม
  2. ต่อมาใช้กุญแจนี้เพื่อเข้ารหัสข้อความตั้งต้น แล้วใช้เฉพาะบล็อกสุดท้ายที่เข้ารหัสแล้วเพื่อเป็นไดเจสต์ของข้อความทั้งหมด (ไม่รวมบล็อคอื่นๆ ที่เข้ารหัสแล้ว)
อัลกอริทึมแบบสมมาตรสามารถสร้างไดเจสต์ที่มีคุณภาพดี แต่ข้อเสียคือต้องใช้เวลาในการคำนวณไดเจสต์มาก

ไดเจสต์ยังเป็นส่วนหนึ่งของการลงลายมือชื่ออิเล็กทรอนิกส์ กล่าวคือการลงลายมือชื่ออิเล็กทรอนิกส์ในปัจจุบัน จะใช้การลงลายมือชื่อกับไดเจสต์ของข้อความตั้งต้นแทนการลงลายมือชื่อกับข้อความตั้งต้นทั้งข้อความ

Public Key Infrastructure (PKI)


5.1 Digital Certificate
  • ใบรับรองอิเล็กทรอนิกส์ (Digital Certificate) คือ ข้อมูลอิเล็กทรอนิกส์ที่ใช้บ่งบอกถึงความมีตัวตนที่แท้จริงของ ผู้ ใช้ ใบรับรองอิเล็กทรอนิกส์
  • ออกโดยผู้ ให้ บริการ ออกใบรับรอง (Certification Authority : CA) ทำให้ผู้ประกอบธุรกรรมต่างๆ ผ่าน อินเทอร์เน็ตสามารถมั่นใจได้ว่าบุคคล หรือ อุปกรณ์เครือข่าย เช่น Web Server ที่ทำการติดต่อด้วยมีตัวตนจริง
  • อาศัยเทคโนโลยีที่เรียกว่า เทคโนโลยีโครงสร้างพื้นฐานกุญแจสาธารณะ (Public Key – Infrastructure – PKI) สามารถนำมาใช้ในการลงลายมือชื่อดิจิตอล (Digital Signature) หรือ การเข้ารหัส ถอดรหัส (Encryption) ได้
  • ลายมือชื่ออิเล็กทรอนิกส์ของผู้ใดผู้หนึ่งจะไม่เหมือนกันในแต่ละ ครั้งที่เซ็น ขึ้นอยู่กับเอกสารนั้นๆ สิ่งที่ไม่เปลี่ยนสำหรับผู้ใดผู้หนึ่ง คือ ใบรับรองดิจิทัล (Digital Certificate)
  • เป็น CD USB หรือ Smart Card ให้เอาไปติดตั้ง
  • มี 2 ประเภท
    • Personal Certificate ออกให้บุคคลธรรมดาหรือนิติบุคคล ใช้สำหรับการรับ – ส่ง Secure e-mail ที่มีการลง ลายมือชื่อดิจิตอล (Signing) และ/หรือการเข้ารหัสข้อมูล (Encryption) โดยต้องใช้ งานผ่าน e-mail Client ของ Outlook
    • Web Server Certificate (SSL) สำหรับเครื่อง Web Server เชื่อมต่อแบบปลอดภัย รวมถึงการรับรองชื่อ Domain Name และผู้ที่เป็นเจ้าของ ปกติเป็น CD ไปติดตั้ง
5.2 Protocol ที่ใช้งานร่วมกับการเข้ารหัส

เว็บไซต์ที่ใช้วิธีการเข้ารหัสเพื่อป้องกันข้อมูลจะใช้ Digital Certification ร่วมกับ Security Protocol เพื่อทำให้มีความปลอดภัยสูงขึ้น โดยโปรโตคอลที่นิยมใช้งานมี 3 ชนิด คือ
  • Secure Socket Layer (SSL)
  • Secure Hypertext Transport Protcocol (S-HTTP)
  • Secure Electronic Transaction (SET)
1) SSL
  • เข้ารหัสข้อมูลด้วย Public Key
  • นำข้อมูลมาเข้ารหัสและถอดรหัสด้วยเทคนิค Cryptography และใบรับรองอิเล็กทรอนิกส์(Digital Certificates)
  • มีการทำงานที่ TCP/IP จะใช้ SSL ในการทำระบบรักษาความปลอดภัย เรียกเว็บติดต่อกับเซิร์ฟเวอร์ แล้วจะขึ้น https
  • ภายหลังกลายเป็นมาตรฐานกลางของโพรโตคอลบนอินเตอร์เน็ต โดยเปลี่ยนชื่อเป็น Transport Layer Security หรือ TLS
2) S-HTTP
  • เป็นส่วนของโปรโตคอล HTTP  ทำหน้าที่ตรวจสอบสิทธิผู้ใช้ ซึ่งจะเข้ารหัสการลงลายเซ็นดิจิตอล (Digital Signature)
  • ระบบนี้จะอนุญาตให้ผู้ใช้และเครื่องให้บริการติดต่อกันได้ เมื่อทั้ง 2 ฝ่ายมี Digital Certificate
  • ระบบรักษาความปลอดภัยรูปแบบนี้ยุ่งยากกว่า SSL แต่มีความปลอดภัยมากกว่า   นิยมใช้ในธุรกิจการเงิน
3) SET

ใช้สำหรับตรวจสอบการชำระเงินด้วยบัตรเครดิตอย่างปลอดภัยบนอินเทอร์เน็ต ซึ่งได้รับการสนับสนุนเริ่มต้นโดย MasterCard, Visa, Microsoft, Netscape และ อื่น ๆ สร้างรหัส SET ซึ่งเป็นการเข้ารหัสด้วยกุญแจสาธารณะ  แต่ไม่ค่อยมีคนใช้

4) อื่นๆ Secure Shell (SSH) Internet Security (IPSEC) Kerberos

5.3 Digital Signature
  1. ผู้ส่งนำข้อความ (Plaintext) ไปแปลงผ่าน Hash Function กลายเป็น Digest
  2. ผู้ส่งเอา Digest นั้นมาเข้ารหัสด้วย Private Key ของตัวเอง กลายเป็น Digital Signature
  3. ส่งทั้ง Plaintext และ Digital Signature ไปให้ผู้รับผ่านเน็ต
  4. ผู้รับ เอา Plaintext ไปแปลงผ่าน Hash Function กลายเป็น Digest
  5. ผู้รับ เอา Digital Signature มาถอดรหัสด้วย Public Key ที่ตนเองมี ได้ Digest
  6. ผู้รับ เอา Digest ทั้งคู่มาเทียบกันว่าตรงกันรึเปล่า
Previous
Next Post »