สรุปแบบย่อๆ
การเข้ารหัส คือ การทำให้ข้อมูลเป็นความลับ เพื่อให่ข้อมูลมีคุณสมบัติ ดังนี้ Confidentiality, Integrity, Authentication/Non-repudiation
ประเภท
- Symmetric Encryption หรือ Secret Key เข้าและถอดรหัสด้วย key เดียวกัน
- เอา plain text และ secret key มาเข้ารหัสด้วยอัลกอริธึม จะได้ ciphertext ออกมา
- ผู้เข้ารหัสส่ง/แจกจ่าย secret key ให้ผู้รับ อย่างเป็นความลับ
- ผู้รับได้ cipher text มา ก็ใช้อัลกอริธึมพร้อม secret key ที่มีอยู่ถอดรหัส จะได้ plain text ออกมา
- Asymmetric Encryption หรือ Public Key เข้าและถอดรหัสด้วย key ต่างกัน
- ใช้สำหรับการเข้ารหัส
- เรามีกุญแจ 2 ดอก เอา Private key ไว้กับตัว เอา Public Key ไปวางในที่สาธาณะไว้แจก
- คนที่ต้องการจะส่งข้อความเข้ารหัสมาให้เรา ให้เค้ามาดาวน์โหลดกุญแจสาธารณะนั้น ไปทำการเข้ารหัสข้อความที่ต้องการส่งด้วยกุญแจสาธารณะ แล้วจึงส่งข้อความที่เข้ารหัสไปให้กับเราผู้เป็นเจ้าของกุญแจสาธารณะ
- วิธีนี้จะไม่มีผู้อื่นสามารถเปิดดูข้อความที่เข้ารหัสนั้นได้ยกเว้นเราที่เป็นผู้ที่ถือกุญแจส่วนตัว (ที่เป็นคู่ของกุญแจสาธารณะนั้น) จึงจะสามารถเปิดข้อความนี้ดูได้
- ใช้สำหรับการลงลายมือชื่ออิเล็กทรอนิกส์ (Digital Signature)
- ผู้ส่งนำข้อความ (Plaintext) ไปแปลงผ่าน Hash Function กลายเป็น Digest
- ผู้ส่งเอา Digest นั้นมาเข้ารหัสด้วย Private Key ของตัวเอง กลายเป็น Digital Signature
- ส่งทั้ง Plaintext และ Digital Signature ไปให้ผู้รับผ่านเน็ต
- ผู้รับ เอา Plaintext ไปแปลงผ่าน Hash Function กลายเป็น Digest
- ผู้รับ เอา Digital Signature มาถอดรหัสด้วย Public Key ที่ตนเองมี ได้ Digest
- ผู้รับ เอา Digest ทั้งคู่มาเทียบกันว่าตรงกันรึเปล่า
- Message Digest Algorithm เป็นการเข้ารหัสทางเดียว ถอดย้อนกลับไม่ได้ จะออกมาเป็นข้อมูลที่แฮชไปแล้ว 1 ชุด มีขนาดเท่าตามกำหนด (ปกติ128-256 บิต) กันไม่ว่าข้อความตั้งต้นจะยาวแค่ไหน ปกติไว้ทดสอบ Integrity ว่าข้อมูลถูกเปลี่ยนระหว่างทางรึเปล่า
1.1 จุดประสงค์ของการเข้ารหัส
- ทำให้ข้อมูลเป็นความลับ (Confidentiality) ไม่ให้ผู้ที่ไม่มีสิทธิ์สามารถเข้าถึงข้อมูลได้
- ทำให้ข้อมูลสามารถตรวจสอบความสมบูรณ์ได้ (Integrity) ให้ข้อมูลอยู่ในสภาพเดิม ผู้รับได้รับข้อมูลที่ไม่ถูกแอบแก้ไข
- ทำให้สามารถพิสูจน์ตัวตนของผู้ส่งข้อมูลได้ (Authentication/Non-repudiation) สามารถตรวจสอบได้ว่าใครคือผู้ส่งข้อมูล หรือในทางตรงกันข้าม ก็คือเพื่อป้องกันการแอบอ้างได้
1.2 ประเภทอัลกอริทึมในการเข้ารหัส
- Symmetric Encryption หรือ Secret Key เข้าและถอดรหัสด้วย key เดียวกัน
- 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 ยังมาถูกดักอีก ข้อความก็จะถูกถอดได้
- เอา plain text และ secret key มาเข้ารหัสด้วยอัลกอริธึม จะได้ ciphertext ออกมา
- ผู้เข้ารหัสส่ง/แจกจ่าย secret key ให้ผู้รับ อย่างเป็นความลับ
- ผู้รับได้ cipher text มา ก็ใช้อัลกอริธึมพร้อม secret key ที่มีอยู่ถอดรหัส จะได้ plain text ออกมา
โดยทั่วไปในการออกแบบอัลกอริทึมในการเข้ารหัสนั้น จะถือว่าประสบความสำเร็จในการรักษาความปลอดภัย เมื่อรหัสที่สร้างขึ้นมาโดยอัลกอริทึมนั้น สามารถบรรลุข้อกำหนดใดใน 2 ข้อกำหนดต่อไปนี้
- ค่าใช้จ่ายที่ต้องใช้ในการถอดรหัสจะต้องมากกว่ามูลค่าของข้อมูลที่เข้ารหัส
- เวลาที่ใช้ในการถอดรหัส จะต้องมากกว่าอายุการใช้งานของข้อมูลนั้น
ค่าใช้จ่ายนั้นประเมินได้ยาก จึงจ้องประเมินจากเวลา โดยมีสมมติฐานเรื่องการพยายามถอดรหัสด้วย Brute Force ลองทุกๆ ค่าของ key ที่เป็นไปได้
2.2 โครงสร้างต้นแบบของการเข้ารหัส (Feistel Cipher)
โครงสร้างต้นแบบของการเข้ารหัสแบบ Symmetric เข้ารหัสแบบบล็อก
- แบ่งข้อมูลออกเป็นชุด ๆ
- แล้วประมวลผลทีละชุดไปเรื่อย ๆ จนหมดข้อมูล (ในกรณีที่ข้อมูลชุดสุดท้ายเหลือไม่ถึง 64 บิต ก็จะเติมให้ครบ 64 บิต)
- แบ่งซ้ายขวา ใช้ Round Function ประมวลผลหลายๆ รอบซ้ำกัน
- การถอดรหัสทำแบบเดียวกัน แต่จะใช้คีย์ย่อยย้อนกลับ
- ขนาดบล็อกข้อมูล ยิ่งใหญ่ยิ่งปลอดถัยแต่จะเข้า/ถอดรหัสช้าไปด้วย โดยปกติใช้ 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 ประการ ซึ่งเป็นข้อจำกัดในการใช้งานอัลกอริทึมนี้
- การแลกเปลี่ยนกุญแจระหว่าง 2 องค์กร อาจทำได้ยากและไม่สะดวก
- ทั้งสองกลุ่มต้องรักษากุญแจลับนั้นไว้เป็นอย่างดี ห้ามเปิดเผยให้ผู้อื่นล่วงรู้โดยเด็ดขาด การที่กุญแจถูกเปิดเผยออกไปสู่ผู้อื่น (จะโดยกลุ่มใดกลุ่มหนึ่งก็ตาม) และอีกกลุ่มหนึ่งไม่ได้รับทราบปัญหานี้ อาจก่อให้เกิดปัญหากับกลุ่มที่ไม่ทราบนี้ได้
- สำหรับสองกลุ่มที่ต้องการติดต่อกัน จำเป็นต้องใช้กุญแจลับเป็นจำนวน 1 กุญแจเพื่อติดต่อกัน สมมติว่ามีผู้ที่ต้องติดต่อกันเป็นจำนวน n กลุ่ม จำนวนกุญแจลับทั้งหมดที่ต้องแลกเปลี่ยนกันคิดเป็นจำนวนทั้งหมด C 2n หรือเท่ากับ n(n-1)/2 กุญแจ ซึ่งจะเห็นได้ว่าจานวนกุญแจมีมากมายเกินไป ซึ่งอาจก่อให้เกิดปัญหาด้านการรักษาความปลอดภัยให้กับกุญแจเหล่านี้
Asymmetric Encryption
อัลกอริทึมแบบกุญแจสาธารณะ (ซึ่งเป็นแบบอสมมาตร) ช่วยแก้ปัญหาข้่างต้นได้ทั้งหมด ผู้ใช้ที่ถือกุญแจส่วนตัวและต้องการให้บุคคลอื่นที่ตนติดต่อด้วยส่งเอกสารหรือข้อความที่เข้ารหัสมาหาตน สามารถเผยแพร่กุญแจสาธารณะของตนไว้บนเว็บไซต์หรือในที่สาธารณะซึ่งผู้อื่นสามารถเข้ามาดาวน์โหลดไปใช้งานได้
3.1 ประเภทของ Asymmetric Encryption
- ใช้สำหรับการเข้ารหัส
- ใช้สำหรับการลงลายมือชื่ออิเล็กทรอนิกส์ (Digital Signature)
3.2 วิธีการใช้งานการเข้ารหัส
- เรามีกุญแจ 2 ดอก เอา Private key ไว้กับตัว เอา Public Key ไปวางในที่สาธาณะไว้แจก
- คนที่ต้องการจะส่งข้อความเข้ารหัสมาให้เรา ให้เค้ามาดาวน์โหลดกุญแจสาธารณะนั้น ไปทำการเข้ารหัสข้อความที่ต้องการส่งด้วยกุญแจสาธารณะ แล้วจึงส่งข้อความที่เข้ารหัสไปให้กับเราผู้เป็นเจ้าของกุญแจสาธารณะ
- วิธีนี้จะไม่มีผู้อื่นสามารถเปิดดูข้อความที่เข้ารหัสนั้นได้ยกเว้นเราที่เป็นผู้ที่ถือกุญแจส่วนตัว (ที่เป็นคู่ของกุญแจสาธารณะนั้น) จึงจะสามารถเปิดข้อความนี้ดูได้
3.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 บิต และจะไม่ขึ้นกับขนาดความยาวของข้อความตั้งต้น
เป็น 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 วิธีการ
- คนส่ง ส่งข้อความ หรือสิ่งที่จะส่ง (plaintext ไม่ได้เข้ารหัส) มาพร้อม ข้อความนั้นๆ ที่ถูกเข้ารหัส
- คนรับ ได้รับทั้งคู่ ลองเอา ข้อความมาเข้ารหัส แล้วเทียบดูผลที่เข้ารหัสว่าเหมือนกันมั้ย
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 การแก้ไขเพิ่มเติมมีความปลอดภัยที่สูงขึ้น
- NIST เป็นผู้นาเสนออัลกอริทึมทั้งสามนี้ในปี 2001 เพื่อใช้งานร่วมกับอัลกอริทึมแบบสมมาตร AES
- สร้าง Digest ที่มีขนาด 256, 384 และ 512 บิต ตามลาดับ
- นอกจากอัลกอริทึมสาหรับการสร้างไดเจสต์ที่กล่าวถึงไปแล้วนั้น อัลกอริทึมสาหรับการเข้ารหัสแบบสมมาตร เช่น DES สามารถใช้ในการสร้างไดเจสต์เช่นกัน
- ให้เลือก Private Key สำหรับการเข้ารหัสขึ้นมา 1 กุญแจโดยวิธีการเลือกแบบสุ่ม
- ต่อมาใช้กุญแจนี้เพื่อเข้ารหัสข้อความตั้งต้น แล้วใช้เฉพาะบล็อกสุดท้ายที่เข้ารหัสแล้วเพื่อเป็นไดเจสต์ของข้อความทั้งหมด (ไม่รวมบล็อคอื่นๆ ที่เข้ารหัสแล้ว)
ไดเจสต์ยังเป็นส่วนหนึ่งของการลงลายมือชื่ออิเล็กทรอนิกส์ กล่าวคือการลงลายมือชื่ออิเล็กทรอนิกส์ในปัจจุบัน จะใช้การลงลายมือชื่อกับไดเจสต์ของข้อความตั้งต้นแทนการลงลายมือชื่อกับข้อความตั้งต้นทั้งข้อความ
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 ไปติดตั้ง
เว็บไซต์ที่ใช้วิธีการเข้ารหัสเพื่อป้องกันข้อมูลจะใช้ Digital Certification ร่วมกับ Security Protocol เพื่อทำให้มีความปลอดภัยสูงขึ้น โดยโปรโตคอลที่นิยมใช้งานมี 3 ชนิด คือ
- Secure Socket Layer (SSL)
- Secure Hypertext Transport Protcocol (S-HTTP)
- Secure Electronic Transaction (SET)
- เข้ารหัสข้อมูลด้วย Public Key
- นำข้อมูลมาเข้ารหัสและถอดรหัสด้วยเทคนิค Cryptography และใบรับรองอิเล็กทรอนิกส์(Digital Certificates)
- มีการทำงานที่ TCP/IP จะใช้ SSL ในการทำระบบรักษาความปลอดภัย เรียกเว็บติดต่อกับเซิร์ฟเวอร์ แล้วจะขึ้น https
- ภายหลังกลายเป็นมาตรฐานกลางของโพรโตคอลบนอินเตอร์เน็ต โดยเปลี่ยนชื่อเป็น Transport Layer Security หรือ TLS
- เป็นส่วนของโปรโตคอล HTTP ทำหน้าที่ตรวจสอบสิทธิผู้ใช้ ซึ่งจะเข้ารหัสการลงลายเซ็นดิจิตอล (Digital Signature)
- ระบบนี้จะอนุญาตให้ผู้ใช้และเครื่องให้บริการติดต่อกันได้ เมื่อทั้ง 2 ฝ่ายมี Digital Certificate
- ระบบรักษาความปลอดภัยรูปแบบนี้ยุ่งยากกว่า SSL แต่มีความปลอดภัยมากกว่า นิยมใช้ในธุรกิจการเงิน
ใช้สำหรับตรวจสอบการชำระเงินด้วยบัตรเครดิตอย่างปลอดภัยบนอินเทอร์เน็ต ซึ่งได้รับการสนับสนุนเริ่มต้นโดย MasterCard, Visa, Microsoft, Netscape และ อื่น ๆ สร้างรหัส SET ซึ่งเป็นการเข้ารหัสด้วยกุญแจสาธารณะ แต่ไม่ค่อยมีคนใช้
4) อื่นๆ Secure Shell (SSH) Internet Security (IPSEC) Kerberos
5.3 Digital Signature
- ผู้ส่งนำข้อความ (Plaintext) ไปแปลงผ่าน Hash Function กลายเป็น Digest
- ผู้ส่งเอา Digest นั้นมาเข้ารหัสด้วย Private Key ของตัวเอง กลายเป็น Digital Signature
- ส่งทั้ง Plaintext และ Digital Signature ไปให้ผู้รับผ่านเน็ต
- ผู้รับ เอา Plaintext ไปแปลงผ่าน Hash Function กลายเป็น Digest
- ผู้รับ เอา Digital Signature มาถอดรหัสด้วย Public Key ที่ตนเองมี ได้ Digest
- ผู้รับ เอา Digest ทั้งคู่มาเทียบกันว่าตรงกันรึเปล่า
Sign up here with your email
ConversionConversion EmoticonEmoticon