การเข้ารหัส - คู่มือฉบับย่อ
มนุษย์ในวัยมีสองความต้องการโดยธรรมชาติ - (ก) ในการสื่อสารและแบ่งปันข้อมูลและ (ข) เพื่อสื่อสารอย่างเลือกได้ ความต้องการทั้งสองนี้ก่อให้เกิดศิลปะในการเข้ารหัสข้อความในลักษณะที่มีเพียงผู้ที่ต้องการเท่านั้นที่สามารถเข้าถึงข้อมูลได้ ผู้ที่ไม่ได้รับอนุญาตไม่สามารถดึงข้อมูลใด ๆ ได้แม้ว่าข้อความที่มีสัญญาณรบกวนจะอยู่ในมือก็ตาม
ศิลปะและศาสตร์ในการปกปิดข้อความเพื่อแนะนำความลับในการรักษาความปลอดภัยของข้อมูลถือได้ว่าเป็นการเข้ารหัส
คำว่า 'การเข้ารหัส' ได้รับการประกาศเกียรติคุณจากการรวมคำภาษากรีกสองคำ 'Krypto' ซึ่งมีความหมายซ่อนอยู่และ 'graphene' หมายถึงการเขียน
ประวัติความเป็นมาของการเข้ารหัส
ศิลปะการเข้ารหัสถือได้ว่าเกิดขึ้นพร้อมกับศิลปะการเขียน เมื่ออารยธรรมพัฒนาขึ้นมนุษย์จึงถูกจัดเป็นเผ่ากลุ่มและอาณาจักรต่างๆ สิ่งนี้นำไปสู่การเกิดขึ้นของความคิดเช่นอำนาจการต่อสู้อำนาจสูงสุดและการเมือง แนวคิดเหล่านี้กระตุ้นความต้องการตามธรรมชาติของผู้คนในการสื่อสารอย่างลับๆกับผู้รับที่ได้รับการคัดเลือกซึ่งจะทำให้มั่นใจได้ถึงวิวัฒนาการของการเข้ารหัสอย่างต่อเนื่อง
รากของการเข้ารหัสพบได้ในอารยธรรมโรมันและอียิปต์
อักษรอียิปต์โบราณ - เทคนิคการเข้ารหัสที่เก่าแก่ที่สุด
หลักฐานการเข้ารหัสที่ทราบเป็นครั้งแรกสามารถโยงไปถึงการใช้ 'อักษรอียิปต์โบราณ' ประมาณ 4000 ปีก่อนชาวอียิปต์ใช้ในการสื่อสารด้วยข้อความที่เขียนด้วยอักษรอียิปต์โบราณ รหัสนี้เป็นความลับที่รู้กันเฉพาะในหมู่ธรรมาจารย์ที่ใช้ในการส่งข้อความในนามของกษัตริย์ อักษรอียิปต์โบราณดังกล่าวแสดงไว้ด้านล่าง
ต่อมานักวิชาการได้ย้ายไปใช้การเข้ารหัสการแทนที่ด้วยตัวอักษรเดี่ยวแบบง่ายในช่วง 500 ถึง 600 ปีก่อนคริสตกาล สิ่งนี้เกี่ยวข้องกับการแทนที่ตัวอักษรของข้อความด้วยตัวอักษรอื่นด้วยกฎลับบางประการ นี้rule กลายเป็น key เพื่อดึงข้อความกลับมาจากข้อความที่อ่านไม่ออก
วิธีการเข้ารหัสของโรมันก่อนหน้านี้เรียกกันว่า Caesar Shift Cipher, อาศัยการเลื่อนตัวอักษรของข้อความตามหมายเลขที่ตกลงกัน (สามตัวเป็นตัวเลือกทั่วไป) จากนั้นผู้รับข้อความนี้จะเลื่อนตัวอักษรกลับด้วยหมายเลขเดียวกันและได้รับข้อความต้นฉบับ
Steganography
Steganography คล้ายกัน แต่เพิ่มมิติอื่นให้กับการเข้ารหัส ในวิธีนี้ผู้คนไม่เพียงต้องการปกป้องความลับของข้อมูลด้วยการปกปิดข้อมูล แต่พวกเขายังต้องการให้แน่ใจว่าบุคคลที่ไม่ได้รับอนุญาตจะไม่ได้รับหลักฐานว่าข้อมูลนั้นมีอยู่จริง ตัวอย่างเช่น,invisible watermarking.
ใน Steganography ผู้รับที่ไม่ได้ตั้งใจหรือผู้บุกรุกจะไม่ทราบว่าข้อมูลที่สังเกตได้มีข้อมูลที่ซ่อนอยู่ ในการเข้ารหัสโดยปกติผู้บุกรุกจะทราบว่ามีการสื่อสารข้อมูลเนื่องจากสามารถเห็นข้อความที่เข้ารหัส / สัญญาณรบกวนได้
วิวัฒนาการของการเข้ารหัส
ในระหว่างและหลังยุคฟื้นฟูศิลปวิทยาของยุโรปรัฐต่างๆของอิตาลีและสมเด็จพระสันตะปาปาได้นำเทคนิคการเข้ารหัสลับไปแพร่กระจายอย่างรวดเร็ว เทคนิคการวิเคราะห์และการโจมตีต่างๆได้รับการวิจัยในยุคนี้เพื่อทำลายรหัสลับ
ปรับปรุงเทคนิคการเข้ารหัสเช่น Vigenere Codingเข้ามาอยู่ใน 15 THศตวรรษซึ่งนำเสนอการย้ายตัวอักษรในข้อความที่มีจำนวนของสถาตัวแปรแทนการย้ายพวกเขาหมายเลขเดียวกันของสถานที่
แต่หลังจาก 19 วันศตวรรษที่วิวัฒนาการมาจากการเข้ารหัสเฉพาะกิจวิธีการเข้ารหัสเพื่อศิลปะที่ซับซ้อนมากขึ้นและวิทยาศาสตร์ของการรักษาความปลอดภัยข้อมูล
ในช่วงต้นยุค 20 THศตวรรษที่ประดิษฐ์เครื่องจักรกลและไฟฟ้าเช่นนั้นEnigma rotor machine, ให้วิธีการเข้ารหัสข้อมูลขั้นสูงและมีประสิทธิภาพมากขึ้น
ในช่วงสงครามโลกครั้งที่สองทั้งสอง cryptography และ cryptanalysis กลายเป็นคณิตศาสตร์มากเกินไป
ด้วยความก้าวหน้าที่เกิดขึ้นในสาขานี้องค์กรของรัฐหน่วยงานทางทหารและองค์กรบางแห่งเริ่มใช้การเข้ารหัส พวกเขาใช้การเข้ารหัสเพื่อปกป้องความลับจากผู้อื่น ตอนนี้การมาถึงของคอมพิวเตอร์และอินเทอร์เน็ตทำให้การเข้ารหัสที่มีประสิทธิภาพอยู่ในมือคนทั่วไป
การเข้ารหัสสมัยใหม่เป็นรากฐานที่สำคัญของการรักษาความปลอดภัยของคอมพิวเตอร์และการสื่อสาร รากฐานของมันมาจากแนวคิดต่างๆของคณิตศาสตร์เช่นทฤษฎีจำนวนทฤษฎีความซับซ้อนเชิงคำนวณและทฤษฎีความน่าจะเป็น
ลักษณะของการเข้ารหัสสมัยใหม่
มีลักษณะสำคัญสามประการที่แยกการเข้ารหัสสมัยใหม่ออกจากแนวทางคลาสสิก
การเข้ารหัสแบบคลาสสิก | การเข้ารหัสสมัยใหม่ |
---|---|
มันจัดการอักขระแบบดั้งเดิมเช่นตัวอักษรและตัวเลขโดยตรง | มันทำงานบนลำดับบิตไบนารี |
มันขึ้นอยู่กับ 'การรักษาความปลอดภัยผ่านความสับสน' เป็นหลัก เทคนิคที่ใช้ในการเข้ารหัสถูกเก็บเป็นความลับและมีเพียงฝ่ายที่เกี่ยวข้องกับการสื่อสารเท่านั้นที่รู้เกี่ยวกับพวกเขา | มันอาศัยอัลกอริทึมทางคณิตศาสตร์ที่รู้จักกันทั่วไปในการเข้ารหัสข้อมูล การรักษาความลับได้มาจากคีย์ลับซึ่งใช้เป็นเมล็ดพันธุ์สำหรับอัลกอริทึม ความยากในการคำนวณของอัลกอริทึมการไม่มีคีย์ลับ ฯลฯ ทำให้ผู้โจมตีไม่สามารถรับข้อมูลต้นฉบับได้แม้ว่าเขาจะรู้อัลกอริทึมที่ใช้ในการเข้ารหัสก็ตาม |
ต้องใช้ระบบเข้ารหัสทั้งหมดสำหรับการสื่อสารอย่างเป็นความลับ | การเข้ารหัสสมัยใหม่ต้องการให้บุคคลที่สนใจในการสื่อสารที่ปลอดภัยต้องมีคีย์ลับเท่านั้น |
บริบทของการเข้ารหัส
Cryptology การศึกษา cryptosystems สามารถแบ่งย่อยออกเป็นสองสาขา -
- Cryptography
- Cryptanalysis
Cryptography คืออะไร?
การเข้ารหัสเป็นศิลปะและวิทยาศาสตร์ในการสร้างระบบเข้ารหัสที่สามารถให้ความปลอดภัยของข้อมูลได้
การเข้ารหัสเกี่ยวข้องกับการรักษาความปลอดภัยข้อมูลดิจิทัลที่แท้จริง หมายถึงการออกแบบกลไกตามอัลกอริทึมทางคณิตศาสตร์ที่ให้บริการพื้นฐานด้านความปลอดภัยของข้อมูล คุณสามารถคิดว่าการเข้ารหัสเป็นการสร้างชุดเครื่องมือขนาดใหญ่ที่มีเทคนิคต่าง ๆ ในแอปพลิเคชันด้านความปลอดภัย
Cryptanalysis คืออะไร?
ศิลปะและวิทยาศาสตร์ในการทำลายข้อความรหัสเรียกว่าการเข้ารหัสลับ
Cryptanalysis เป็นสาขาย่อยของการเข้ารหัสและทั้งสองมีอยู่ร่วมกัน กระบวนการเข้ารหัสจะส่งผลให้ข้อความเข้ารหัสสำหรับการส่งหรือการจัดเก็บ มันเกี่ยวข้องกับการศึกษากลไกการเข้ารหัสโดยมีเจตนาที่จะทำลายพวกมัน นอกจากนี้ยังใช้การเข้ารหัสลับในระหว่างการออกแบบเทคนิคการเข้ารหัสใหม่เพื่อทดสอบจุดแข็งด้านความปลอดภัย
Note - การเข้ารหัสเกี่ยวข้องกับการออกแบบ cryptosystems ในขณะที่ cryptanalysis ศึกษาการแตกของ cryptosystems
บริการรักษาความปลอดภัยของการเข้ารหัส
วัตถุประสงค์หลักของการใช้การเข้ารหัสคือเพื่อให้บริการรักษาความปลอดภัยข้อมูลพื้นฐานสี่อย่างต่อไปนี้ ตอนนี้ให้เราเห็นเป้าหมายที่เป็นไปได้ที่ตั้งใจจะบรรลุโดยการเข้ารหัส
การรักษาความลับ
การรักษาความลับเป็นบริการรักษาความปลอดภัยขั้นพื้นฐานที่ให้บริการโดยการเข้ารหัส เป็นบริการรักษาความปลอดภัยที่เก็บข้อมูลจากบุคคลที่ไม่ได้รับอนุญาต บางครั้งเรียกว่าprivacy หรือ secrecy.
การรักษาความลับสามารถทำได้โดยใช้วิธีการมากมายตั้งแต่การรักษาความปลอดภัยทางกายภาพไปจนถึงการใช้อัลกอริทึมทางคณิตศาสตร์สำหรับการเข้ารหัสข้อมูล
ความสมบูรณ์ของข้อมูล
เป็นบริการรักษาความปลอดภัยที่เกี่ยวข้องกับการระบุการเปลี่ยนแปลงใด ๆ กับข้อมูล ข้อมูลอาจถูกแก้ไขโดยหน่วยงานที่ไม่ได้รับอนุญาตโดยตั้งใจหรือไม่ตั้งใจ บริการความสมบูรณ์ยืนยันว่าข้อมูลยังคงอยู่หรือไม่เนื่องจากข้อมูลถูกสร้างส่งหรือจัดเก็บครั้งล่าสุดโดยผู้ใช้ที่ได้รับอนุญาต
ความสมบูรณ์ของข้อมูลไม่สามารถป้องกันการเปลี่ยนแปลงข้อมูลได้ แต่เป็นวิธีการตรวจสอบว่าข้อมูลถูกจัดการในลักษณะที่ไม่ได้รับอนุญาตหรือไม่
การรับรองความถูกต้อง
การพิสูจน์ตัวตนเป็นการระบุตัวตนของผู้ริเริ่ม เป็นการยืนยันกับผู้รับว่าข้อมูลที่ได้รับถูกส่งโดยผู้ส่งที่ระบุและตรวจสอบแล้วเท่านั้น
บริการรับรองความถูกต้องมีสองรูปแบบ -
Message authentication ระบุผู้สร้างข้อความโดยไม่คำนึงถึงเราเตอร์หรือระบบที่ส่งข้อความ
Entity authentication คือการรับรองว่าได้รับข้อมูลจากหน่วยงานใดเว็บไซต์หนึ่งโดยเฉพาะ
นอกเหนือจากผู้ริเริ่มแล้วการพิสูจน์ตัวตนยังอาจให้การรับรองเกี่ยวกับพารามิเตอร์อื่น ๆ ที่เกี่ยวข้องกับข้อมูลเช่นวันที่และเวลาในการสร้าง / ส่ง
การไม่ปฏิเสธ
เป็นบริการรักษาความปลอดภัยที่รับรองว่านิติบุคคลไม่สามารถปฏิเสธความเป็นเจ้าของข้อผูกพันหรือการดำเนินการก่อนหน้านี้ได้ เป็นการรับรองว่าผู้สร้างข้อมูลต้นฉบับไม่สามารถปฏิเสธการสร้างหรือส่งข้อมูลดังกล่าวไปยังผู้รับหรือบุคคลที่สามได้
การไม่ปฏิเสธเป็นคุณสมบัติที่เป็นที่ต้องการมากที่สุดในสถานการณ์ที่มีโอกาสเกิดข้อพิพาทในการแลกเปลี่ยนข้อมูล ตัวอย่างเช่นเมื่อมีการสั่งซื้อทางอิเล็กทรอนิกส์แล้วผู้ซื้อจะไม่สามารถปฏิเสธใบสั่งซื้อได้หากเปิดใช้บริการที่ไม่ใช่การปฏิเสธในธุรกรรมนี้
Cryptography Primitives
Cryptography primitives ไม่ใช่เครื่องมือและเทคนิคใน Cryptography ที่สามารถเลือกใช้เพื่อจัดหาชุดบริการความปลอดภัยที่ต้องการ -
- Encryption
- ฟังก์ชันแฮช
- รหัสการตรวจสอบข้อความ (MAC)
- ลายเซ็นดิจิทัล
ตารางต่อไปนี้แสดงให้เห็นถึงพื้นฐานที่สามารถบรรลุบริการรักษาความปลอดภัยเฉพาะได้ด้วยตัวเอง
Note - การเข้ารหัสดั้งเดิมมีความสัมพันธ์กันอย่างซับซ้อนและมักจะรวมเข้าด้วยกันเพื่อให้ได้ชุดบริการความปลอดภัยที่ต้องการจากระบบเข้ารหัส
cryptosystem คือการนำเทคนิคการเข้ารหัสและโครงสร้างพื้นฐานที่มาพร้อมกันเพื่อให้บริการด้านความปลอดภัยของข้อมูล cryptosystem เรียกอีกอย่างว่าไฟล์cipher system.
ขอให้เราพูดถึงรูปแบบง่ายๆของระบบเข้ารหัสที่ให้การรักษาความลับแก่ข้อมูลที่กำลังส่ง โมเดลพื้นฐานนี้แสดงอยู่ในภาพประกอบด้านล่าง -
ภาพประกอบแสดงผู้ส่งที่ต้องการถ่ายโอนข้อมูลที่ละเอียดอ่อนบางส่วนไปยังผู้รับในลักษณะที่ฝ่ายใดฝ่ายหนึ่งดักฟังหรือดักฟังช่องทางการสื่อสารไม่สามารถดึงข้อมูลได้
วัตถุประสงค์ของการเข้ารหัสอย่างง่ายนี้คือในตอนท้ายของกระบวนการมีเพียงผู้ส่งและผู้รับเท่านั้นที่จะรู้ข้อความธรรมดา
ส่วนประกอบของ Cryptosystem
ส่วนประกอบต่างๆของระบบเข้ารหัสพื้นฐานมีดังนี้ -
Plaintext. เป็นข้อมูลที่ต้องป้องกันระหว่างการส่ง
Encryption Algorithm.เป็นกระบวนการทางคณิตศาสตร์ที่สร้าง ciphertext สำหรับข้อความธรรมดาและคีย์เข้ารหัสใด ๆ ที่กำหนด เป็นอัลกอริทึมการเข้ารหัสที่ใช้ข้อความธรรมดาและคีย์การเข้ารหัสเป็นอินพุตและสร้างรหัสลับ
Ciphertext.เป็นเวอร์ชันที่มีสัญญาณรบกวนของข้อความธรรมดาที่สร้างโดยอัลกอริธึมการเข้ารหัสโดยใช้คีย์เข้ารหัสเฉพาะ ไม่มีการป้องกันข้อความเข้ารหัส กระแสในช่องสาธารณะ ทุกคนที่เข้าถึงช่องทางการสื่อสารสามารถดักฟังหรือบุกรุกได้
Decryption Algorithm,เป็นกระบวนการทางคณิตศาสตร์ที่สร้างข้อความธรรมดาที่ไม่ซ้ำกันสำหรับรหัสลับและรหัสถอดรหัสใด ๆ ที่กำหนด เป็นอัลกอริทึมการเข้ารหัสที่ใช้การเข้ารหัสและคีย์การถอดรหัสเป็นอินพุตและส่งออกข้อความธรรมดา อัลกอริธึมการถอดรหัสจะย้อนกลับอัลกอริทึมการเข้ารหัสเป็นหลักดังนั้นจึงมีความเกี่ยวข้องอย่างใกล้ชิด
Encryption Key.เป็นค่าที่ผู้ส่งทราบ ผู้ส่งป้อนคีย์การเข้ารหัสลงในอัลกอริทึมการเข้ารหัสพร้อมกับข้อความธรรมดาเพื่อคำนวณการเข้ารหัส
Decryption Key.มันเป็นค่าที่คนรับรู้ คีย์การถอดรหัสเกี่ยวข้องกับคีย์การเข้ารหัส แต่อาจไม่เหมือนกันเสมอไป ผู้รับจะป้อนคีย์การถอดรหัสลงในอัลกอริทึมการถอดรหัสพร้อมกับข้อความเข้ารหัสเพื่อคำนวณข้อความธรรมดา
สำหรับระบบเข้ารหัสที่กำหนดคอลเลกชันของคีย์การถอดรหัสที่เป็นไปได้ทั้งหมดเรียกว่าไฟล์ key space.
อัน interceptor(ผู้โจมตี) เป็นหน่วยงานที่ไม่ได้รับอนุญาตซึ่งพยายามกำหนดข้อความธรรมดา เขาสามารถเห็นไซเฟอร์เท็กซ์และอาจรู้อัลกอริทึมการถอดรหัส อย่างไรก็ตามเขาต้องไม่เคยรู้คีย์การถอดรหัส
ประเภทของ Cryptosystems
โดยพื้นฐานแล้ว cryptosystems มีอยู่สองประเภทตามลักษณะการเข้ารหัส - ถอดรหัสในระบบ -
- การเข้ารหัสคีย์สมมาตร
- การเข้ารหัสคีย์แบบไม่สมมาตร
ความแตกต่างหลักระหว่างระบบเข้ารหัสเหล่านี้คือความสัมพันธ์ระหว่างการเข้ารหัสและคีย์การถอดรหัส ตามหลักเหตุผลในระบบเข้ารหัสใด ๆ คีย์ทั้งสองมีความสัมพันธ์กันอย่างใกล้ชิด แทบจะเป็นไปไม่ได้เลยที่จะถอดรหัสรหัสลับด้วยคีย์ที่ไม่เกี่ยวข้องกับคีย์เข้ารหัส
การเข้ารหัสคีย์สมมาตร
กระบวนการเข้ารหัสที่ same keys are used for encrypting and decrypting ข้อมูลนี้เรียกว่า Symmetric Key Encryption
การศึกษาระบบเข้ารหัสแบบสมมาตรเรียกว่า symmetric cryptography. ระบบเข้ารหัสแบบสมมาตรบางครั้งเรียกอีกอย่างว่าsecret key cryptosystems.
ตัวอย่างวิธีการเข้ารหัสคีย์สมมาตรที่รู้จักกันดี ได้แก่ - Digital Encryption Standard (DES), Triple-DES (3DES), IDEA และ BLOWFISH
ก่อนปี 1970 ระบบเข้ารหัสทั้งหมดใช้การเข้ารหัสคีย์แบบสมมาตร แม้ในปัจจุบันความเกี่ยวข้องของมันยังสูงมากและมีการใช้อย่างกว้างขวางในระบบเข้ารหัสหลายแห่ง ไม่น่าเป็นไปได้มากที่การเข้ารหัสนี้จะจางหายไปเนื่องจากมีข้อได้เปรียบเหนือการเข้ารหัสคีย์แบบไม่สมมาตร
คุณสมบัติเด่นของระบบเข้ารหัสที่ใช้การเข้ารหัสคีย์สมมาตรคือ -
บุคคลที่ใช้การเข้ารหัสคีย์แบบสมมาตรจะต้องแชร์คีย์ร่วมกันก่อนที่จะแลกเปลี่ยนข้อมูล
ขอแนะนำให้เปลี่ยนคีย์เป็นประจำเพื่อป้องกันการโจมตีระบบ
จำเป็นต้องมีกลไกที่แข็งแกร่งเพื่อแลกเปลี่ยนกุญแจระหว่างฝ่ายสื่อสาร เนื่องจากต้องเปลี่ยนกุญแจเป็นประจำกลไกนี้จึงมีราคาแพงและยุ่งยาก
ในกลุ่มของ n คนเพื่อเปิดใช้งานการสื่อสารสองฝ่ายระหว่างบุคคลสองคนจำนวนคีย์ที่จำเป็นสำหรับกลุ่มคือ n × (n – 1)/2.
ความยาวของคีย์ (จำนวนบิต) ในการเข้ารหัสนี้มีขนาดเล็กกว่าและด้วยเหตุนี้กระบวนการเข้ารหัส - ถอดรหัสจึงเร็วกว่าการเข้ารหัสคีย์แบบไม่สมมาตร
พลังการประมวลผลของระบบคอมพิวเตอร์ที่จำเป็นในการเรียกใช้อัลกอริทึมแบบสมมาตรนั้นน้อยกว่า
ความท้าทายของ Symmetric Key Cryptosystem
มีความท้าทายสองประการในการใช้การเข้ารหัสคีย์สมมาตร
Key establishment- ก่อนการสื่อสารใด ๆ ทั้งผู้ส่งและผู้รับจำเป็นต้องตกลงกันเกี่ยวกับคีย์สมมาตรที่เป็นความลับ ต้องมีกลไกการสร้างคีย์ที่ปลอดภัย
Trust Issue- เนื่องจากผู้ส่งและผู้รับใช้คีย์สมมาตรเดียวกันจึงมีข้อกำหนดโดยปริยายที่ผู้ส่งและผู้รับ "เชื่อใจ" ซึ่งกันและกัน ตัวอย่างเช่นอาจเกิดขึ้นได้ว่าผู้รับทำกุญแจหายไปให้กับผู้โจมตีและผู้ส่งไม่ได้รับแจ้ง
ความท้าทายทั้งสองนี้ยับยั้งอย่างมากสำหรับการสื่อสารในยุคปัจจุบัน วันนี้ผู้คนจำเป็นต้องแลกเปลี่ยนข้อมูลกับฝ่ายที่ไม่คุ้นเคยและไม่น่าเชื่อถือ ตัวอย่างเช่นการสื่อสารระหว่างผู้ขายและลูกค้าออนไลน์ ข้อ จำกัด เหล่านี้ของการเข้ารหัสคีย์แบบสมมาตรทำให้เกิดรูปแบบการเข้ารหัสคีย์แบบไม่สมมาตร
การเข้ารหัสคีย์แบบไม่สมมาตร
กระบวนการเข้ารหัสที่ different keys are used for encrypting and decrypting the informationเรียกว่า Asymmetric Key Encryption แม้ว่าคีย์จะแตกต่างกัน แต่ก็มีความสัมพันธ์กันทางคณิตศาสตร์ดังนั้นการดึงข้อความธรรมดาโดยการถอดรหัสรหัสลับจึงเป็นไปได้ กระบวนการแสดงอยู่ในภาพประกอบต่อไปนี้ -
ไม่สมมาตรคีย์เข้ารหัสถูกประดิษฐ์ขึ้นใน 20 วันศตวรรษที่จะมามากกว่าความจำเป็นของการคีย์ลับก่อนที่ใช้ร่วมกันระหว่างบุคคลการสื่อสาร คุณสมบัติเด่นของรูปแบบการเข้ารหัสนี้มีดังนี้ -
ผู้ใช้ทุกคนในระบบนี้จำเป็นต้องมีคีย์ที่ไม่เหมือนกันสองคู่ private key และ public key. คีย์เหล่านี้มีความเกี่ยวข้องทางคณิตศาสตร์ - เมื่อใช้คีย์หนึ่งในการเข้ารหัสอีกคีย์หนึ่งสามารถถอดรหัสไซเฟอร์เท็กซ์กลับไปเป็นข้อความธรรมดาดั้งเดิมได้
ต้องใส่คีย์สาธารณะในที่เก็บสาธารณะและคีย์ส่วนตัวเป็นความลับที่มีการป้องกันอย่างดี ดังนั้นรูปแบบของการเข้ารหัสนี้จึงเรียกอีกอย่างว่าPublic Key Encryption.
แม้ว่าคีย์สาธารณะและคีย์ส่วนตัวของผู้ใช้จะมีความเกี่ยวข้องกัน แต่ก็ไม่สามารถคำนวณได้จากที่อื่น นี่คือจุดแข็งของโครงการนี้
เมื่อHost1ต้องการส่งข้อมูลไปยังHost2เขาจะได้รับคีย์สาธารณะของHost2จากที่เก็บเข้ารหัสข้อมูลและส่ง
Host2ใช้คีย์ส่วนตัวของเขาเพื่อแยกข้อความธรรมดา
ความยาวของคีย์ (จำนวนบิต) ในการเข้ารหัสนี้มีขนาดใหญ่และด้วยเหตุนี้กระบวนการถอดรหัสการเข้ารหัสจึงช้ากว่าการเข้ารหัสคีย์แบบสมมาตร
พลังการประมวลผลของระบบคอมพิวเตอร์ที่จำเป็นในการเรียกใช้อัลกอริทึมแบบไม่สมมาตรนั้นสูงกว่า
ระบบนิเวศแบบสมมาตรเป็นแนวคิดตามธรรมชาติ ในทางตรงกันข้ามระบบเข้ารหัสคีย์สาธารณะนั้นค่อนข้างยากที่จะเข้าใจ
คุณอาจคิดว่าคีย์เข้ารหัสและคีย์ถอดรหัสมีความ 'เกี่ยวข้องกัน' ได้อย่างไร แต่ก็เป็นไปไม่ได้ที่จะระบุคีย์ถอดรหัสจากคีย์เข้ารหัส คำตอบอยู่ในแนวคิดทางคณิตศาสตร์ เป็นไปได้ที่จะออกแบบระบบเข้ารหัสที่คีย์มีคุณสมบัตินี้ แนวคิดของการเข้ารหัสคีย์สาธารณะค่อนข้างใหม่ มีอัลกอริธึมคีย์สาธารณะที่รู้จักน้อยกว่าอัลกอริทึมแบบสมมาตร
ความท้าทายของ Public Key Cryptosystem
ระบบเข้ารหัสคีย์สาธารณะมีความท้าทายที่สำคัญอย่างหนึ่งนั่นคือผู้ใช้ต้องเชื่อมั่นว่าคีย์สาธารณะที่เขาใช้ในการสื่อสารกับบุคคลนั้นเป็นคีย์สาธารณะของบุคคลนั้นจริงๆและไม่ได้ถูกปลอมแปลงโดยบุคคลที่สามที่เป็นอันตราย
โดยปกติจะทำได้ผ่าน Public Key Infrastructure (PKI) ซึ่งประกอบด้วยบุคคลที่สามที่เชื่อถือได้ บุคคลที่สามจัดการและรับรองความถูกต้องของกุญแจสาธารณะอย่างปลอดภัย เมื่อบุคคลที่สามได้รับการร้องขอให้จัดหาคีย์สาธารณะสำหรับบุคคลที่สื่อสาร X บุคคลเหล่านั้นจะได้รับความไว้วางใจให้ระบุคีย์สาธารณะที่ถูกต้อง
บุคคลที่สามพึงพอใจในตัวเองเกี่ยวกับตัวตนของผู้ใช้โดยขั้นตอนการรับรองการรับรองเอกสารหรือกระบวนการอื่น ๆ - X นั้นเป็น X เพียงหนึ่งเดียวหรือไม่ซ้ำกันทั่วโลกวิธีการทั่วไปในการทำให้คีย์สาธารณะที่ได้รับการยืนยันพร้อมใช้งานคือการฝังไว้ ในใบรับรองซึ่งลงนามแบบดิจิทัลโดยบุคคลที่สามที่เชื่อถือได้
ความสัมพันธ์ระหว่างรูปแบบการเข้ารหัส
สรุปคุณสมบัติที่สำคัญพื้นฐานของระบบเข้ารหัสสองประเภทได้รับด้านล่าง -
Symmetric Cryptosystems | Public Key Cryptosystems | |
---|---|---|
Relation between Keys | เหมือนกัน | แตกต่างกัน แต่เกี่ยวข้องกันทางคณิตศาสตร์ |
คีย์การเข้ารหัส | สมมาตร | สาธารณะ |
คีย์ถอดรหัส | สมมาตร | เอกชน |
เนื่องจากข้อดีและข้อเสียของทั้งสองระบบจึงมักใช้คีย์สมมาตรและระบบรหัสลับสาธารณะร่วมกันในระบบรักษาความปลอดภัยข้อมูลที่ใช้งานได้จริง
หลักการของ Kerckhoff สำหรับ Cryptosystem
ใน 19 วันศตวรรษดัตช์ถอดรหัส A. Kerckhoff ที่ตกแต่งด้วยเฟอร์นิเจอร์ต้องการของ cryptosystem ดี Kerckhoff ระบุว่าระบบการเข้ารหัสควรมีความปลอดภัยแม้ว่าทุกอย่างเกี่ยวกับระบบยกเว้นกุญแจจะเป็นความรู้สาธารณะก็ตาม หลักการออกแบบหกประการที่ Kerckhoff กำหนดไว้สำหรับระบบเข้ารหัสคือ -
ระบบเข้ารหัสไม่ควรแตกในทางปฏิบัติหากไม่ใช่ทางคณิตศาสตร์
การล่มสลายของระบบนิเวศในมือของผู้บุกรุกไม่ควรนำไปสู่การประนีประนอมใด ๆ ของระบบเพื่อป้องกันความไม่สะดวกให้กับผู้ใช้
กุญแจสำคัญควรสื่อสารได้ง่ายน่าจดจำและเปลี่ยนแปลงได้
การเข้ารหัสควรส่งผ่านทางโทรเลขซึ่งเป็นช่องทางที่ไม่ปลอดภัย
อุปกรณ์เข้ารหัสและเอกสารควรพกพาและใช้งานได้โดยบุคคลเดียว
สุดท้ายนี้จำเป็นที่ระบบจะใช้งานได้ง่ายโดยไม่ต้องใช้ความเครียดทางจิตใจหรือความรู้เกี่ยวกับกฎเกณฑ์ที่ยาวนานในการปฏิบัติตาม
ปัจจุบันกฎข้อที่สองเรียกว่า Kerckhoff principle. มันถูกนำไปใช้ในอัลกอริธึมการเข้ารหัสร่วมสมัยแทบทั้งหมดเช่น DES, AES ฯลฯ อัลกอริทึมสาธารณะเหล่านี้ถือว่ามีความปลอดภัย ความปลอดภัยของข้อความที่เข้ารหัสนั้นขึ้นอยู่กับความปลอดภัยของคีย์เข้ารหัสลับเท่านั้น
การเก็บอัลกอริทึมเป็นความลับอาจทำหน้าที่เป็นอุปสรรคสำคัญในการเข้ารหัสลับ อย่างไรก็ตามการเก็บอัลกอริทึมเป็นความลับจะทำได้ก็ต่อเมื่อใช้ในวง จำกัด อย่างเคร่งครัด
ในยุคปัจจุบันการเข้ารหัสจำเป็นต้องตอบสนองผู้ใช้ที่เชื่อมต่อกับอินเทอร์เน็ต ในกรณีเช่นนี้การใช้อัลกอริทึมลับไม่สามารถทำได้ด้วยเหตุนี้หลักการของ Kerckhoff จึงกลายเป็นแนวทางที่จำเป็นสำหรับการออกแบบอัลกอริทึมในการเข้ารหัสสมัยใหม่
ในยุคปัจจุบันไม่เพียง แต่ธุรกิจ แต่เกือบทุกแง่มุมของชีวิตมนุษย์ล้วนขับเคลื่อนด้วยข้อมูล ดังนั้นจึงมีความจำเป็นที่จะต้องปกป้องข้อมูลที่เป็นประโยชน์จากกิจกรรมที่เป็นอันตรายเช่นการโจมตี ให้เราพิจารณาประเภทของการโจมตีที่ข้อมูลมักถูกโจมตี
โดยทั่วไปการโจมตีจะแบ่งตามการกระทำของผู้โจมตี ดังนั้นการโจมตีสามารถpassive หรือ active.
การโจมตีแบบพาสซีฟ
เป้าหมายหลักของการโจมตีแบบแฝงคือการได้รับ unauthorized access to the information. ตัวอย่างเช่นการดำเนินการเช่นการดักฟังและการดักฟังในช่องทางการสื่อสารถือได้ว่าเป็นการโจมตีแบบพาสซีฟ
การกระทำเหล่านี้เป็นไปตามธรรมชาติเนื่องจากไม่ส่งผลกระทบต่อข้อมูลหรือรบกวนช่องทางการสื่อสาร การโจมตีแฝงมักถูกมองว่าเป็นการขโมยข้อมูล ความแตกต่างเพียงอย่างเดียวในการขโมยสินค้าที่จับต้องได้และการขโมยข้อมูลก็คือการขโมยข้อมูลยังคงทำให้เจ้าของครอบครองข้อมูลนั้นได้ การโจมตีข้อมูลแบบพาสซีฟจึงเป็นอันตรายมากกว่าการขโมยสินค้าเนื่องจากการขโมยข้อมูลอาจไม่มีใครสังเกตเห็นโดยเจ้าของ
การโจมตีที่ใช้งานอยู่
การโจมตีที่ใช้งานอยู่เกี่ยวข้องกับการเปลี่ยนแปลงข้อมูลไม่ทางใดก็ทางหนึ่งโดยการดำเนินการบางอย่างกับข้อมูล ตัวอย่างเช่น,
การแก้ไขข้อมูลในลักษณะที่ไม่ได้รับอนุญาต
การเริ่มต้นการส่งข้อมูลโดยไม่ได้ตั้งใจหรือไม่ได้รับอนุญาต
การแก้ไขข้อมูลการพิสูจน์ตัวตนเช่นชื่อผู้เริ่มต้นหรือการประทับเวลาที่เกี่ยวข้องกับข้อมูล
การลบข้อมูลโดยไม่ได้รับอนุญาต
การปฏิเสธการเข้าถึงข้อมูลสำหรับผู้ใช้ที่ถูกต้องตามกฎหมาย (การปฏิเสธการให้บริการ)
การเข้ารหัสมีเครื่องมือและเทคนิคมากมายสำหรับการใช้ระบบเข้ารหัสที่สามารถป้องกันการโจมตีส่วนใหญ่ที่อธิบายไว้ข้างต้น
สมมติฐานของผู้โจมตี
ให้เราดูสภาพแวดล้อมที่แพร่หลายรอบ ๆ cryptosystems ตามด้วยประเภทของการโจมตีที่ใช้เพื่อทำลายระบบเหล่านี้ -
สภาพแวดล้อมรอบ ๆ Cryptosystem
ในขณะที่พิจารณาการโจมตีที่เป็นไปได้ในระบบเข้ารหัสนั้นจำเป็นต้องทราบสภาพแวดล้อมของระบบเข้ารหัส สมมติฐานและความรู้เกี่ยวกับสิ่งแวดล้อมของผู้โจมตีจะตัดสินความสามารถของเขา
ในการเข้ารหัสมีสมมติฐานสามข้อต่อไปนี้เกี่ยวกับสภาพแวดล้อมการรักษาความปลอดภัยและความสามารถของผู้โจมตี
รายละเอียดของโครงการเข้ารหัส
การออกแบบระบบเข้ารหัสขึ้นอยู่กับอัลกอริทึมการเข้ารหัสสองแบบต่อไปนี้ -
Public Algorithms - ด้วยตัวเลือกนี้รายละเอียดทั้งหมดของอัลกอริทึมจะอยู่ในสาธารณสมบัติที่ทุกคนรู้จัก
Proprietary algorithms - รายละเอียดของอัลกอริทึมเป็นที่รู้จักโดยผู้ออกแบบและผู้ใช้ระบบเท่านั้น
ในกรณีของอัลกอริธึมที่เป็นกรรมสิทธิ์จะมีการรักษาความปลอดภัยผ่านการปิดบัง อัลกอริทึมส่วนตัวอาจไม่ใช่อัลกอริทึมที่แข็งแกร่งที่สุดเนื่องจากได้รับการพัฒนาขึ้นเองและอาจไม่ได้รับการตรวจสอบจุดอ่อนอย่างครอบคลุม
ประการที่สองอนุญาตให้มีการสื่อสารระหว่างกลุ่มปิดเท่านั้น ดังนั้นจึงไม่เหมาะสำหรับการสื่อสารสมัยใหม่ที่ผู้คนสื่อสารกับหน่วยงานที่รู้จักหรือไม่รู้จักจำนวนมาก นอกจากนี้ตามหลักการ Kerckhoff ของอัลกอริทึมที่เป็นที่ต้องการจะเป็นประชาชนที่มีความแรงของการเข้ารหัสโกหกในที่สำคัญ
ดังนั้นสมมติฐานแรกเกี่ยวกับสภาพแวดล้อมความปลอดภัยคือไฟล์ encryption algorithm is known to the attacker.
ความพร้อมใช้งานของ Ciphertext
เราทราบดีว่าเมื่อมีการเข้ารหัสข้อความธรรมดาเป็น ciphertext แล้วข้อความนั้นจะถูกใส่ไว้ในช่องสาธารณะที่ไม่ปลอดภัย (เช่นอีเมล) สำหรับการส่ง ดังนั้นผู้โจมตีสามารถสันนิษฐานได้อย่างชัดเจนว่ามีaccess to the ciphertext generated by the cryptosystem.
ความพร้อมใช้งานของ Plaintext และ Ciphertext
ข้อสันนิษฐานนี้ไม่ชัดเจนเท่ากับข้อสันนิษฐานอื่น ๆ อย่างไรก็ตามอาจมีสถานการณ์ที่ผู้โจมตีสามารถมีได้access to plaintext and corresponding ciphertext. สถานการณ์ที่เป็นไปได้บางประการ ได้แก่ -
ผู้โจมตีมีอิทธิพลต่อผู้ส่งในการแปลงข้อความธรรมดาตามที่เขาเลือกและได้รับไซเฟอร์เท็กซ์
ผู้รับอาจเปิดเผยข้อความธรรมดาแก่ผู้โจมตีโดยไม่ได้ตั้งใจ ผู้โจมตีสามารถเข้าถึง ciphertext ที่เกี่ยวข้องที่รวบรวมจากช่องทางเปิด
ในระบบเข้ารหัสคีย์สาธารณะคีย์การเข้ารหัสจะอยู่ในโดเมนเปิดและเป็นที่รู้กันว่าผู้โจมตีที่มีศักยภาพ การใช้คีย์นี้เขาสามารถสร้างคู่ของข้อความธรรมดาและการเข้ารหัสที่สอดคล้องกัน
การโจมตีด้วยการเข้ารหัส
ความตั้งใจพื้นฐานของผู้โจมตีคือทำลายระบบเข้ารหัสและค้นหาข้อความธรรมดาจากไซเฟอร์เท็กซ์ ในการรับข้อความธรรมดาผู้โจมตีจะต้องค้นหาคีย์การถอดรหัสลับเท่านั้นเนื่องจากอัลกอริทึมเป็นสาธารณสมบัติแล้ว
ดังนั้นเขาจึงใช้ความพยายามอย่างเต็มที่ในการค้นหาคีย์ลับที่ใช้ในระบบเข้ารหัส เมื่อผู้โจมตีสามารถที่จะตรวจสอบที่สำคัญระบบการโจมตีถือว่าเป็นเสียหรือถูกบุกรุก
ตามวิธีการที่ใช้การโจมตีบนระบบเข้ารหัสแบ่งออกเป็นดังนี้ -
Ciphertext Only Attacks (COA)- ในวิธีนี้ผู้โจมตีสามารถเข้าถึงชุดของการเข้ารหัสได้ เขาไม่สามารถเข้าถึงข้อความธรรมดาที่เกี่ยวข้องได้ กล่าวว่า COA จะประสบความสำเร็จเมื่อสามารถกำหนดข้อความธรรมดาที่สอดคล้องกันได้จากชุดของการเข้ารหัสที่กำหนด ในบางครั้งคีย์การเข้ารหัสสามารถกำหนดได้จากการโจมตีนี้ ระบบเข้ารหัสสมัยใหม่ได้รับการปกป้องจากการโจมตีแบบเข้ารหัสเท่านั้น
Known Plaintext Attack (KPA)- ในวิธีนี้ผู้โจมตีจะรู้ข้อความธรรมดาสำหรับบางส่วนของไซเฟอร์เท็กซ์ ภารกิจคือการถอดรหัสรหัสลับส่วนที่เหลือโดยใช้ข้อมูลนี้ ซึ่งอาจทำได้โดยการกำหนดคีย์หรือวิธีอื่น ๆ ตัวอย่างที่ดีที่สุดของการโจมตีนี้คือการเข้ารหัสเชิงเส้นกับการเข้ารหัสบล็อก
Chosen Plaintext Attack (CPA)- ในวิธีนี้ผู้โจมตีจะเข้ารหัสข้อความที่เขาเลือกไว้ ดังนั้นเขาจึงมีคู่ ciphertext-plaintext ที่เขาเลือก สิ่งนี้ทำให้งานของเขาง่ายขึ้นในการกำหนดคีย์เข้ารหัส ตัวอย่างของการโจมตีนี้คือการเข้ารหัสแบบดิฟเฟอเรนเชียลที่ใช้กับบล็อกไซเฟอร์และฟังก์ชันแฮช ระบบเข้ารหัสคีย์สาธารณะที่เป็นที่นิยม RSA ยังเสี่ยงต่อการโจมตีแบบข้อความธรรมดา
Dictionary Attack- การโจมตีนี้มีหลายรูปแบบซึ่งทั้งหมดนี้เกี่ยวข้องกับการรวบรวม 'พจนานุกรม' ในวิธีที่ง่ายที่สุดของการโจมตีนี้ผู้โจมตีจะสร้างพจนานุกรมของไซเฟอร์เท็กซ์และข้อความธรรมดาที่เกี่ยวข้องซึ่งเขาได้เรียนรู้ในช่วงเวลาหนึ่ง ในอนาคตเมื่อผู้โจมตีได้รับ ciphertext เขาจะอ้างอิงพจนานุกรมเพื่อค้นหาข้อความธรรมดาที่เกี่ยวข้อง
Brute Force Attack (BFA)- ในวิธีนี้ผู้โจมตีจะพยายามระบุคีย์โดยพยายามคีย์ที่เป็นไปได้ทั้งหมด หากคีย์มีความยาว 8 บิตจำนวนคีย์ที่เป็นไปได้คือ 2 8 = 256 ผู้โจมตีรู้จักไซเฟอร์เท็กซ์และอัลกอริทึมตอนนี้เขาพยายามคีย์ 256 ทั้งหมดทีละคีย์เพื่อถอดรหัส เวลาในการโจมตีจะสูงมากหากคีย์ยาว
Birthday Attack- การโจมตีนี้เป็นรูปแบบหนึ่งของเทคนิค brute-force ใช้กับฟังก์ชันแฮชการเข้ารหัส เมื่อนักเรียนในชั้นเรียนถูกถามเกี่ยวกับวันเกิดของพวกเขาคำตอบคือหนึ่งใน 365 วันที่เป็นไปได้ ให้เราสมมติวันเกิดของนักเรียนคนแรกคือ 3 ถสิงหาคมจากนั้นจะหานักเรียนต่อไปที่มีวันเกิดคือ 3 ถส.ค. เราต้องสอบถาม 1.25 * ?? √365≈ 25 คน
ในทำนองเดียวกันถ้าฟังก์ชันแฮชผลิต 64 บิตค่ากัญชากัญชาค่าที่เป็นไปได้ 1.8x10 19 โดยการประเมินฟังก์ชันซ้ำ ๆ สำหรับอินพุตที่แตกต่างกันผลลัพธ์เดียวกันคาดว่าจะได้รับหลังจากอินพุตสุ่มประมาณ 5.1x10 9
หากผู้โจมตีสามารถค้นหาอินพุตที่แตกต่างกันสองอินพุตที่ให้ค่าแฮชเท่ากันแสดงว่าเป็นไฟล์ collision และฟังก์ชันแฮชนั้นถูกกล่าวว่าเสีย
Man in Middle Attack (MIM) - เป้าหมายของการโจมตีนี้ส่วนใหญ่เป็นระบบรหัสลับสาธารณะที่มีการแลกเปลี่ยนคีย์ก่อนที่การสื่อสารจะเกิดขึ้น
โฮสต์ต้องการที่จะสื่อสารไปยังโฮสต์BจึงขอกุญแจสาธารณะของB
ผู้โจมตีสกัดกั้นคำขอนี้และส่งคีย์สาธารณะของเขาแทน
ดังนั้นไม่ว่าโฮสต์Aจะส่งไปยังโฮสต์Bผู้โจมตีสามารถอ่านได้
เพื่อรักษาสื่อสารโจมตีอีกครั้งเข้ารหัสข้อมูลหลังจากที่ได้อ่านด้วยกุญแจสาธารณะของเขาและส่งไปยังB
ผู้โจมตีจะส่งกุญแจสาธารณะของเขาในฐานะ‘s คีย์สาธารณะเพื่อให้Bใช้มันราวกับว่ามันคือการได้จาก
Side Channel Attack (SCA)- การโจมตีประเภทนี้ไม่ได้ต่อต้านระบบเข้ารหัสหรืออัลกอริทึมประเภทใดประเภทหนึ่ง แต่เป็นการเปิดตัวเพื่อใช้ประโยชน์จากจุดอ่อนในการนำระบบเข้ารหัสไปใช้จริง
Timing Attacks- พวกเขาใช้ประโยชน์จากข้อเท็จจริงที่ว่าการคำนวณที่แตกต่างกันใช้เวลาในการคำนวณบนโปรเซสเซอร์ต่างกัน การวัดเวลาดังกล่าวทำให้สามารถทราบเกี่ยวกับการคำนวณเฉพาะที่โปรเซสเซอร์กำลังดำเนินการอยู่ ตัวอย่างเช่นหากการเข้ารหัสใช้เวลานานขึ้นแสดงว่าคีย์ลับนั้นยาว
Power Analysis Attacks - การโจมตีเหล่านี้คล้ายกับการโจมตีตามเวลายกเว้นว่าจะใช้ปริมาณการใช้พลังงานเพื่อรับข้อมูลเกี่ยวกับลักษณะของการคำนวณพื้นฐาน
Fault analysis Attacks - ในการโจมตีเหล่านี้ข้อผิดพลาดเกิดขึ้นในระบบเข้ารหัสและผู้โจมตีจะศึกษาผลลัพธ์ที่ได้เพื่อหาข้อมูลที่เป็นประโยชน์
ความเป็นจริงของการโจมตี
การโจมตีระบบเข้ารหัสที่อธิบายไว้ในที่นี้ถือเป็นเรื่องวิชาการสูงเนื่องจากส่วนใหญ่มาจากชุมชนวิชาการ ในความเป็นจริงการโจมตีทางวิชาการจำนวนมากเกี่ยวข้องกับสมมติฐานที่ไม่เป็นจริงเกี่ยวกับสภาพแวดล้อมและความสามารถของผู้โจมตี ตัวอย่างเช่นในการโจมตีด้วยรหัสลับที่เลือกผู้โจมตีต้องการจำนวนคู่ธรรมดา - รหัสลับที่เลือกโดยเจตนา อาจไม่สามารถใช้งานได้จริงทั้งหมด
อย่างไรก็ตามความจริงที่ว่าการโจมตีเกิดขึ้นควรเป็นสาเหตุของความกังวลโดยเฉพาะอย่างยิ่งหากเทคนิคการโจมตีมีศักยภาพในการปรับปรุง
ในบทที่สองเราได้กล่าวถึงพื้นฐานของการเข้ารหัสสมัยใหม่ เราจัดเตรียมการเข้ารหัสด้วยชุดเครื่องมือซึ่งเทคนิคการเข้ารหัสต่างๆถือเป็นเครื่องมือพื้นฐาน หนึ่งในเครื่องมือเหล่านี้คือ Symmetric Key Encryption ซึ่งคีย์ที่ใช้ในการเข้ารหัสและถอดรหัสเหมือนกัน
ในบทนี้เราจะพูดถึงเทคนิคนี้เพิ่มเติมและการประยุกต์ใช้เพื่อพัฒนาระบบเข้ารหัสต่างๆ
ระบบการเข้ารหัสก่อนหน้านี้
ก่อนที่จะดำเนินการต่อไปคุณจำเป็นต้องทราบข้อเท็จจริงบางประการเกี่ยวกับระบบนิเวศทางประวัติศาสตร์ -
ระบบทั้งหมดนี้คือ based on symmetric key encryption โครงการ
บริการรักษาความปลอดภัยเดียวที่ระบบเหล่านี้มีให้คือการรักษาความลับของข้อมูล
ซึ่งแตกต่างจากระบบสมัยใหม่ซึ่งเป็นดิจิทัลและถือว่าข้อมูลเป็นเลขฐานสองระบบก่อนหน้านี้ทำงานบนตัวอักษรเป็นองค์ประกอบพื้นฐาน
ระบบเข้ารหัสก่อนหน้านี้เรียกอีกอย่างว่า Ciphers โดยทั่วไปการเข้ารหัสเป็นเพียงชุดของขั้นตอน (อัลกอริทึม) สำหรับดำเนินการทั้งการเข้ารหัสและการถอดรหัสที่เกี่ยวข้อง
ซีซาร์ไซเฟอร์
มันคือการเข้ารหัสแบบโมโน - อักษรโดยตัวอักษรแต่ละตัวของข้อความธรรมดาจะถูกแทนที่ด้วยตัวอักษรอื่นเพื่อสร้างไซเฟอร์เท็กซ์ มันเป็นรูปแบบของการเปลี่ยนรหัสรูปแบบที่ง่ายที่สุด
ระบบเข้ารหัสนี้โดยทั่วไปเรียกว่า Shift Cipher. แนวคิดคือการแทนที่ตัวอักษรแต่ละตัวด้วยตัวอักษรอื่นซึ่ง 'เลื่อน' ด้วยตัวเลขคงที่ระหว่าง 0 ถึง 25
สำหรับโครงร่างประเภทนี้ทั้งผู้ส่งและผู้รับยอมรับ 'หมายเลขกะลับ' สำหรับการเลื่อนตัวอักษร ตัวเลขนี้ซึ่งอยู่ระหว่าง 0 ถึง 25 กลายเป็นกุญแจสำคัญในการเข้ารหัส
ชื่อ 'Caesar Cipher' บางครั้งใช้เพื่ออธิบาย Shift Cipher เมื่อใช้ 'shift of three'
กระบวนการของ Shift Cipher
ในการเข้ารหัสตัวอักษรข้อความธรรมดาผู้ส่งจะวางตำแหน่งไม้บรรทัดเลื่อนไว้ข้างใต้ตัวอักษรข้อความธรรมดาชุดแรกและเลื่อนไปทางซ้ายตามจำนวนตำแหน่งของการกะความลับ
จากนั้นตัวอักษรข้อความธรรมดาจะถูกเข้ารหัสเป็นตัวอักษรไซเฟอร์เท็กซ์บนไม้บรรทัดเลื่อนด้านล่าง ผลลัพธ์ของกระบวนการนี้แสดงอยู่ในภาพประกอบต่อไปนี้สำหรับการเปลี่ยนตำแหน่งที่ตกลงกันสามตำแหน่ง ในกรณีนี้ 'บทช่วยสอน' แบบข้อความธรรมดาจะถูกเข้ารหัสเป็นรหัสลับ 'WXWRULDO' นี่คือตัวอักษรไซเฟอร์เท็กซ์สำหรับ Shift จาก 3 -
ในการรับข้อความเข้ารหัสผู้รับที่รู้การกะความลับด้วยให้วางไม้บรรทัดเลื่อนของเขาไว้ใต้ตัวอักษรไซเฟอร์เท็กซ์แล้วเลื่อนไปทางขวาตามหมายเลขกะที่ตกลงกัน 3 ในกรณีนี้
จากนั้นเขาจะแทนที่ตัวอักษรไซเฟอร์เท็กซ์ด้วยตัวอักษรธรรมดาบนไม้บรรทัดเลื่อนด้านล่าง ดังนั้นการเข้ารหัส 'WXWRULDO' จึงถูกถอดรหัสเป็น 'บทช่วยสอน' ในการถอดรหัสข้อความที่เข้ารหัสด้วย Shift จาก 3 ให้สร้างตัวอักษรข้อความธรรมดาโดยใช้ shift '-3' ดังที่แสดงด้านล่าง -
ค่าความปลอดภัย
Caesar Cipher คือ not a securecryptosystem เนื่องจากมีเพียง 26 คีย์ที่เป็นไปได้ที่จะลองใช้ ผู้โจมตีสามารถทำการค้นหาคีย์ที่ละเอียดถี่ถ้วนด้วยทรัพยากรคอมพิวเตอร์ที่มีอยู่ จำกัด
รหัสการแทนที่อย่างง่าย
มันเป็นการปรับปรุง Caesar Cipher แทนที่จะเปลี่ยนตัวอักษรด้วยตัวเลขบางตัวโครงร่างนี้ใช้การเรียงลำดับของตัวอักษรในตัวอักษร
ตัวอย่างเช่น AB … ..YZ และ ZY …… BA เป็นสองการเรียงสับเปลี่ยนที่ชัดเจนของตัวอักษรทั้งหมดในตัวอักษร การเรียงสับเปลี่ยนไม่ใช่อะไรนอกจากชุดตัวอักษรที่สับสน
ด้วยตัวอักษร 26 ตัวการเรียงลำดับที่เป็นไปได้คือ 26! (ปัจจัย of 26) ซึ่งเท่ากับ 4x10 26 ผู้ส่งและผู้รับสามารถเลือกการเปลี่ยนแปลงใด ๆ ที่เป็นไปได้เหล่านี้เป็นตัวอักษรไซเฟอร์เท็กซ์ การเปลี่ยนแปลงนี้เป็นกุญแจลับของโครงร่าง
ขั้นตอนการเปลี่ยนรหัสอย่างง่าย
เขียนตัวอักษร A, B, C, ... , Z ตามลำดับธรรมชาติ
ผู้ส่งและผู้รับจะตัดสินใจเลือกการเรียงลำดับตัวอักษรของตัวอักษรที่สุ่มเลือก
ภายใต้ตัวอักษรลำดับธรรมชาติให้เขียนการเรียงลำดับที่เลือกของตัวอักษรของตัวอักษร สำหรับการเข้ารหัสผู้ส่งจะแทนที่ตัวอักษรธรรมดาแต่ละตัวโดยแทนที่ตัวอักษรการเรียงสับเปลี่ยนที่อยู่ด้านล่างในตารางโดยตรง กระบวนการนี้แสดงในภาพประกอบต่อไปนี้ ในตัวอย่างนี้การเรียงสับเปลี่ยนที่เลือกคือ K, D, G, ... , O. ข้อความธรรมดา 'point' ถูกเข้ารหัสเป็น 'MJBXZ'
นี่คือตัวอักษร Ciphertext ที่สับสนซึ่งลำดับของตัวอักษรไซเฟอร์เท็กซ์เป็นกุญแจสำคัญ
ในการรับไซเฟอร์เท็กซ์ผู้รับซึ่งทราบการเรียงสับเปลี่ยนที่เลือกแบบสุ่มจะแทนที่ตัวอักษรไซเฟอร์เท็กซ์แต่ละตัวในแถวล่างด้วยตัวอักษรข้อความธรรมดาที่สอดคล้องกันในแถวบนสุด การเข้ารหัส 'MJBXZ' ถูกถอดรหัสเป็น 'point'
ค่าความปลอดภัย
Simple Substitution Cipher เป็นการปรับปรุงที่ดีกว่า Caesar Cipher จำนวนคีย์ที่เป็นไปได้มีขนาดใหญ่ (26!) และแม้แต่ระบบคอมพิวเตอร์สมัยใหม่ก็ยังไม่มีประสิทธิภาพเพียงพอที่จะเปิดการโจมตีด้วยกำลังเดรัจฉานเพื่อทำลายระบบได้อย่างสะดวกสบาย อย่างไรก็ตาม Simple Substitution Cipher มีการออกแบบที่เรียบง่ายและมีแนวโน้มที่จะออกแบบข้อบกพร่องกล่าวว่าการเลือกการเปลี่ยนแปลงที่ชัดเจนระบบเข้ารหัสนี้สามารถแตกหักได้ง่าย
Monoalphabetic และ Polyalphabetic Cipher
Monoalphabetic cipher คือการเข้ารหัสแทนซึ่งสำหรับคีย์ที่กำหนดตัวอักษรการเข้ารหัสสำหรับตัวอักษรธรรมดาแต่ละตัวจะได้รับการแก้ไขตลอดกระบวนการเข้ารหัส ตัวอย่างเช่นหาก 'A' ถูกเข้ารหัสเป็น 'D' สำหรับจำนวนเหตุการณ์ใด ๆ ในข้อความธรรมดานั้น 'A' จะถูกเข้ารหัสเป็น 'D' เสมอ
รหัสการทดแทนทั้งหมดที่เราได้พูดถึงก่อนหน้านี้ในบทนี้คือ monoalphabetic การเข้ารหัสเหล่านี้มีความอ่อนไหวต่อการเข้ารหัสลับอย่างมาก
Polyalphabetic Cipher คือการเข้ารหัสแทนซึ่งตัวอักษรการเข้ารหัสสำหรับตัวอักษรธรรมดาอาจแตกต่างกันไปตามสถานที่ต่างๆในระหว่างกระบวนการเข้ารหัส สองตัวอย่างถัดไปplayfair and Vigenere Cipher are polyalphabetic ciphers.
Playfair Cipher
ในรูปแบบนี้คู่ของตัวอักษรจะถูกเข้ารหัสแทนที่จะเป็นตัวอักษรเดี่ยวในกรณีของการเข้ารหัสการแทนที่อย่างง่าย
ใน playfair cipher เริ่มแรกจะมีการสร้างตารางสำคัญ ตารางคีย์คือตาราง 5 × 5 ของตัวอักษรที่ทำหน้าที่เป็นคีย์สำหรับเข้ารหัสข้อความธรรมดา ตัวอักษร 25 ตัวแต่ละตัวต้องไม่ซ้ำกันและตัวอักษรหนึ่งตัว (โดยปกติคือ J) จะถูกละไว้จากตารางเนื่องจากเราต้องการเพียง 25 ตัวอักษรแทนที่จะเป็น 26 หากข้อความธรรมดามี J ก็จะถูกแทนที่ด้วย I
ผู้ส่งและผู้รับจะฆ่าตัวตายในคีย์หนึ่ง ๆ โดยพูดว่า "บทช่วยสอน" ในตารางสำคัญอักขระตัวแรก (จากซ้ายไปขวา) ในตารางคือวลีโดยไม่รวมตัวอักษรที่ซ้ำกัน ส่วนที่เหลือของตารางจะเต็มไปด้วยตัวอักษรที่เหลือของตัวอักษรตามลำดับตามธรรมชาติ ตารางสำคัญทำงานออกมาเป็น -
กระบวนการของ Playfair Cipher
ขั้นแรกข้อความธรรมดาจะแบ่งออกเป็นคู่ของตัวอักษรสองตัว (digraphs) หากมีตัวอักษรจำนวนคี่ Z จะถูกเพิ่มเข้าไปในตัวอักษรตัวสุดท้าย สมมติว่าเราต้องการเข้ารหัสข้อความ "ซ่อนเงิน" มันจะเขียนเป็น -
HI DE MO NE YZ
กฎของการเข้ารหัสคือ -
หากตัวอักษรทั้งสองอยู่ในคอลัมน์เดียวกันให้นำตัวอักษรด้านล่างแต่ละตัว (กลับไปด้านบนสุดหากอยู่ด้านล่างสุด)
ที | ยู | โอ | ร | ผม | 'H' และ 'I' อยู่ในคอลัมน์เดียวกันดังนั้นจึงต้องใช้ตัวอักษรด้านล่างแทน HI → QC |
ก | ล | ส | ข | ค | |
ง | จ | ฉ | ช | ซ | |
เค | ม | น | ป | ถาม | |
วี | ว | X | ย | Z |
หากตัวอักษรทั้งสองอยู่ในแถวเดียวกันให้นำตัวอักษรไปทางขวาของแต่ละตัวอักษร (กลับไปทางซ้ายถ้าอยู่ทางขวาสุด)
ที | ยู | โอ | ร | ผม | 'D' และ 'E' อยู่ในแถวเดียวกันดังนั้นจึงนำตัวอักษรทางขวาของพวกเขามาแทนที่ DE → EF |
ก | ล | ส | ข | ค | |
ง | จ | ฉ | ช | ซ | |
เค | ม | น | ป | ถาม | |
วี | ว | X | ย | Z |
หากกฎสองข้อก่อนหน้านี้ไม่เป็นจริงให้สร้างรูปสี่เหลี่ยมผืนผ้าที่มีตัวอักษรทั้งสองตัวแล้วนำตัวอักษรไปวางบนมุมตรงข้ามแนวนอนของสี่เหลี่ยมผืนผ้า
การใช้กฎเหล่านี้ผลลัพธ์ของการเข้ารหัส 'ซ่อนเงิน' ด้วยคีย์ของ 'บทช่วยสอน' จะเป็น -
QC EF NU MF ZV
การถอดรหัสรหัส Playfair ทำได้ง่ายเพียงทำกระบวนการเดียวกันในแบบย้อนกลับ ผู้รับมีคีย์เดียวกันและสามารถสร้างตารางคีย์เดียวกันจากนั้นถอดรหัสข้อความใด ๆ ที่สร้างขึ้นโดยใช้คีย์นั้น
ค่าความปลอดภัย
นอกจากนี้ยังเป็นรหัสทดแทนและยากที่จะทำลายเมื่อเทียบกับการเข้ารหัสแบบง่าย เช่นเดียวกับในกรณีของการเปลี่ยนรหัสการเข้ารหัสการเข้ารหัสก็เป็นไปได้ในการเข้ารหัสของ Playfair เช่นกันอย่างไรก็ตามจะเทียบกับตัวอักษรที่เป็นไปได้ 625 คู่ (ตัวอักษร 25x25 ตัว) แทนที่จะเป็นตัวอักษรที่เป็นไปได้ 26 ตัว
การเข้ารหัส Playfair ส่วนใหญ่ใช้เพื่อปกป้องความลับที่สำคัญ แต่ไม่สำคัญเนื่องจากใช้งานได้รวดเร็วและไม่ต้องใช้อุปกรณ์พิเศษ
รหัส Vigenere
รูปแบบการเข้ารหัสนี้ใช้สตริงข้อความ (พูดเป็นคำ) เป็นคีย์ซึ่งจะใช้สำหรับการเปลี่ยนแปลงจำนวนมากบนข้อความธรรมดา
ตัวอย่างเช่นสมมติว่าคีย์คือ 'จุด' ตัวอักษรแต่ละตัวของคีย์จะถูกแปลงเป็นค่าตัวเลขตามลำดับ: ในกรณีนี้
p → 16, o → 15, i → 9, n → 14 และ t → 20
ดังนั้นกุญแจสำคัญคือ 16 15 9 14 20
กระบวนการของ Vigenere Cipher
ผู้ส่งและผู้รับจะตัดสินใจเลือกคีย์ พูดว่า "จุด" คือกุญแจสำคัญ การแสดงตัวเลขของคีย์นี้คือ '16 15 9 14 20 '
ผู้ส่งต้องการเข้ารหัสข้อความโดยพูดว่า "โจมตีจากตะวันออกเฉียงใต้" เขาจะจัดเรียงข้อความธรรมดาและคีย์ตัวเลขดังนี้ -
ตอนนี้เขาเลื่อนตัวอักษรธรรมดาแต่ละตัวตามตัวเลขที่เขียนไว้ด้านล่างเพื่อสร้าง ciphertext ดังที่แสดงด้านล่าง -
ที่นี่อักขระข้อความธรรมดาแต่ละตัวจะถูกเลื่อนไปตามจำนวนที่แตกต่างกัน - และจำนวนนั้นจะถูกกำหนดโดยคีย์ คีย์ต้องน้อยกว่าหรือเท่ากับขนาดของข้อความ
สำหรับการถอดรหัสเครื่องรับจะใช้คีย์เดียวกันและเลื่อนการเข้ารหัสที่ได้รับในลำดับย้อนกลับเพื่อรับข้อความธรรมดา
ค่าความปลอดภัย
Vigenere Cipher ได้รับการออกแบบโดยการปรับแต่งการเข้ารหัสซีซาร์มาตรฐานเพื่อลดประสิทธิภาพของการเข้ารหัสลับบนไซเฟอร์เท็กซ์และทำให้ระบบเข้ารหัสมีความแข็งแกร่งมากขึ้น เป็นอย่างมากmore secure than a regular Caesar Cipher.
ในประวัติศาสตร์มักใช้เพื่อปกป้องข้อมูลทางการเมืองและการทหารที่ละเอียดอ่อน มันถูกเรียกว่าunbreakable cipher เนื่องจากความยากลำบากในการเข้ารหัสลับ
ตัวแปรของ Vigenere Cipher
การเข้ารหัส Vigenere มีสองกรณีพิเศษ -
ความยาวของคีย์เวิร์ดเหมือนกับข้อความร้องเรียน กรณีนี้เรียกว่าVernam Cipher. มีความปลอดภัยมากกว่ารหัส Vigenere ทั่วไป
Vigenere cipher กลายเป็นระบบเข้ารหัสที่มีความลับสมบูรณ์แบบซึ่งเรียกว่า One-time pad.
แพดครั้งเดียว
สถานการณ์คือ -
- ความยาวของคีย์เวิร์ดจะเหมือนกับความยาวของข้อความธรรมดา
- คีย์เวิร์ดคือสตริงตัวอักษรที่สร้างขึ้นแบบสุ่ม
- คำหลักถูกใช้เพียงครั้งเดียว
ค่าความปลอดภัย
ให้เราเปรียบเทียบ Shift cipher กับ one-time pad
Shift Cipher - ง่ายต่อการทำลาย
ในกรณีของ Shift cipher ข้อความทั้งหมดอาจมีการเปลี่ยนแปลงระหว่าง 1 ถึง 25 นี่เป็นขนาดที่เล็กมากและบังคับได้ง่ายมาก อย่างไรก็ตามเมื่ออักขระแต่ละตัวมีการเลื่อนระหว่าง 1 ถึง 26 ของตัวเองคีย์ที่เป็นไปได้จะเพิ่มขึ้นเป็นทวีคูณสำหรับข้อความ
แผ่นครั้งเดียว - เป็นไปไม่ได้ที่จะทำลาย
สมมติว่าเราเข้ารหัสชื่อ "จุด" ด้วยแผ่นครั้งเดียว เป็นข้อความ 5 ตัวอักษร ในการทำลายไซเฟอร์เท็กซ์ด้วยกำลังเดรัจฉานคุณต้องลองใช้ความเป็นไปได้ทั้งหมดของคีย์และทำการคำนวณสำหรับ (26 x 26 x 26 x 26 x 26) = 26 5 = 11881376 ครั้ง สำหรับข้อความที่มีตัวอักษร 5 ตัว ดังนั้นสำหรับข้อความที่ยาวขึ้นการคำนวณจะเพิ่มขึ้นแบบทวีคูณพร้อมกับตัวอักษรเพิ่มเติมทุกตัว สิ่งนี้ทำให้ไม่สามารถคำนวณได้ที่จะทำลายไซเฟอร์เท็กซ์ด้วยกำลังเดรัจฉาน
การเปลี่ยนรหัส
เป็นรหัสอีกประเภทหนึ่งที่มีการจัดเรียงลำดับของตัวอักษรในข้อความธรรมดาเพื่อสร้างการเข้ารหัส ตัวอักษรธรรมดาจริงจะไม่ถูกแทนที่
ตัวอย่างคือการเข้ารหัสแบบ 'การเปลี่ยนตำแหน่งคอลัมน์อย่างง่าย' ซึ่งข้อความธรรมดาจะเขียนในแนวนอนโดยมีความกว้างของตัวอักษร จากนั้น ciphertext จะถูกอ่านในแนวตั้งดังที่แสดง
ตัวอย่างเช่นข้อความธรรมดาคือ“ รูปปั้นทองคำอยู่ในถ้ำที่สิบเอ็ด” และรหัสลับแบบสุ่มที่เลือกคือ“ ห้า” เราจัดเรียงข้อความนี้ในแนวนอนในตารางโดยมีจำนวนคอลัมน์เท่ากับค่าคีย์ ข้อความที่ได้แสดงไว้ด้านล่าง
การเข้ารหัสได้มาจากการอ่านคอลัมน์ในแนวตั้งจากคอลัมน์แรกถึงคอลัมน์สุดท้าย ciphertext คือ 'gnuneaoseenvltiltedasehetivc'
ในการถอดรหัสผู้รับจะเตรียมตารางที่คล้ายกัน จำนวนคอลัมน์เท่ากับหมายเลขคีย์ จำนวนแถวหาได้จากการหารจำนวนตัวอักษรไซเฟอร์เท็กซ์ทั้งหมดด้วยค่าคีย์และการปัดเศษของผลหารเป็นค่าจำนวนเต็มถัดไป
จากนั้นผู้รับจะเขียนไซเฟอร์เท็กซ์ที่ได้รับในแนวตั้งลงและจากคอลัมน์ซ้ายไปขวา ในการรับข้อความเขาอ่านในแนวนอนจากซ้ายไปขวาและจากแถวบนลงล่าง
ข้อมูลดิจิทัลแสดงในสตริงของเลขฐานสอง (บิต) ซึ่งแตกต่างจากตัวอักษร ระบบเข้ารหัสสมัยใหม่จำเป็นต้องประมวลผลสตริงไบนารีนี้เพื่อแปลงเป็นสตริงไบนารีอื่น ขึ้นอยู่กับวิธีการประมวลผลสตริงไบนารีเหล่านี้โครงร่างการเข้ารหัสแบบสมมาตรสามารถจัดประเภทเป็น -
บล็อก Ciphers
ในโครงร่างนี้ข้อความไบนารีธรรมดาจะถูกประมวลผลเป็นกลุ่ม (กลุ่ม) ทีละบิต เช่นบล็อกของบิตข้อความธรรมดาถูกเลือกชุดของการดำเนินการจะดำเนินการบนบล็อกนี้เพื่อสร้างบล็อกของบิตไซเฟอร์เท็กซ์ จำนวนบิตในบล็อกได้รับการแก้ไข ตัวอย่างเช่นโครงร่าง DES และ AES มีขนาดบล็อก 64 และ 128 ตามลำดับ
สตรีม Ciphers
ในโครงร่างนี้ข้อความธรรมดาจะถูกประมวลผลทีละบิตเช่นใช้ข้อความธรรมดาหนึ่งบิตและชุดของการดำเนินการจะดำเนินการเพื่อสร้างไซเฟอร์เท็กซ์หนึ่งบิต ในทางเทคนิคแล้วการเข้ารหัสสตรีมคือบล็อกไซเฟอร์ที่มีขนาดบล็อกหนึ่งบิต
รูปแบบพื้นฐานของการเข้ารหัสบล็อกมีดังต่อไปนี้ -
การเข้ารหัสบล็อกใช้บล็อกของบิตเท็กซ์ธรรมดาและสร้างบล็อกของบิตไซเฟอร์เท็กซ์โดยทั่วไปมีขนาดเท่ากัน ขนาดของบล็อกได้รับการแก้ไขในรูปแบบที่กำหนด การเลือกขนาดบล็อกไม่ส่งผลโดยตรงต่อความแข็งแกร่งของรูปแบบการเข้ารหัส ความแรงของการเข้ารหัสขึ้นอยู่กับความยาวของคีย์
ขนาดบล็อก
แม้ว่าขนาดของบล็อกจะเป็นที่ยอมรับได้ แต่จะต้องคำนึงถึงประเด็นต่อไปนี้ในขณะที่เลือกขนาดของบล็อก
Avoid very small block size- บอกว่าขนาดบล็อกคือ m บิต จากนั้นการรวมบิตข้อความธรรมดาที่เป็นไปได้คือ 2 ม . หากผู้โจมตีค้นพบบล็อกข้อความธรรมดาที่ตรงกับบล็อกข้อความเข้ารหัสที่ส่งไปก่อนหน้านี้ผู้โจมตีสามารถเรียกใช้ 'การโจมตีพจนานุกรม' ประเภทหนึ่งโดยการสร้างพจนานุกรมของคู่ข้อความธรรมดา / รหัสลับที่ส่งโดยใช้คีย์เข้ารหัสนั้น ขนาดบล็อกที่ใหญ่ขึ้นทำให้การโจมตียากขึ้นเนื่องจากพจนานุกรมต้องมีขนาดใหญ่ขึ้น
Do not have very large block size- ด้วยขนาดบล็อกที่ใหญ่มากการเข้ารหัสจึงไม่มีประสิทธิภาพในการทำงาน ข้อความธรรมดาดังกล่าวจะต้องได้รับการปรับแต่งก่อนที่จะเข้ารหัส
Multiples of 8 bit - ขนาดบล็อกที่ต้องการคือผลคูณของ 8 เนื่องจากง่ายต่อการนำไปใช้เนื่องจากโปรเซสเซอร์คอมพิวเตอร์ส่วนใหญ่จัดการข้อมูลในจำนวน 8 บิต
Padding ใน Block Cipher
บล็อกการเข้ารหัสประมวลผลบล็อกที่มีขนาดคงที่ (พูด 64 บิต) ความยาวของข้อความธรรมดาส่วนใหญ่ไม่ใช่จำนวนบล็อก ตัวอย่างเช่นข้อความธรรมดา 150 บิตจะมีสองบล็อก 64 บิตแต่ละบล็อกมีบาลานซ์ 22 บิตบล็อกที่สาม บล็อกสุดท้ายของบิตจะต้องมีข้อมูลซ้ำซ้อนเพื่อให้ความยาวของบล็อกสุดท้ายเท่ากับขนาดบล็อกของโครงร่าง ในตัวอย่างของเรา 22 บิตที่เหลือจะต้องมีการเพิ่มอีก 42 บิตซ้ำซ้อนเพื่อให้เป็นบล็อกที่สมบูรณ์ กระบวนการเพิ่มบิตในบล็อกสุดท้ายเรียกว่าpadding.
ช่องว่างภายในมากเกินไปทำให้ระบบไม่มีประสิทธิภาพ นอกจากนี้การเติมช่องว่างอาจทำให้ระบบไม่ปลอดภัยในบางครั้งหากการขยายช่องว่างนั้นทำด้วยบิตเดียวกันเสมอ
Block Cipher Schemes
มีรูปแบบการเข้ารหัสบล็อกจำนวนมากที่ใช้งานอยู่ หลายคนเป็นที่รู้จักของสาธารณชน รหัสบล็อกที่เป็นที่นิยมและโดดเด่นที่สุดมีอยู่ด้านล่าง
Digital Encryption Standard (DES)- บล็อกตัวเลขยอดนิยมของปี 1990 ตอนนี้ถือว่าเป็นรหัสบล็อกที่ 'เสีย' เนื่องจากมีขนาดคีย์ที่เล็กเป็นหลัก
Triple DES- เป็นรูปแบบที่แตกต่างกันตามการใช้งาน DES ซ้ำ ๆ ยังคงเป็นรหัสบล็อกที่ได้รับการยอมรับ แต่ไม่มีประสิทธิภาพเมื่อเทียบกับรหัสบล็อกใหม่ที่เร็วกว่าที่มีอยู่
Advanced Encryption Standard (AES) - เป็นบล็อกการเข้ารหัสที่ค่อนข้างใหม่โดยใช้อัลกอริทึมการเข้ารหัส Rijndael ที่ชนะการแข่งขันการออกแบบ AES
IDEA- เป็นรหัสบล็อกที่แข็งแรงเพียงพอโดยมีขนาดบล็อก 64 และขนาดคีย์ 128 บิต แอปพลิเคชันจำนวนหนึ่งใช้การเข้ารหัส IDEA รวมถึงโปรโตคอล Pretty Good Privacy (PGP) เวอร์ชันแรก ๆ การใช้โครงการ IDEA มีข้อ จำกัด ในการนำมาใช้เนื่องจากปัญหาสิทธิบัตร
Twofish- รูปแบบของการเข้ารหัสบล็อกนี้ใช้ขนาดบล็อก 128 บิตและคีย์ของความยาวตัวแปร เป็นหนึ่งในผู้เข้ารอบ AES มันขึ้นอยู่กับ Blowfish การเข้ารหัสบล็อกก่อนหน้านี้ที่มีขนาดบล็อก 64 บิต
Serpent- รหัสบล็อกที่มีขนาดบล็อก 128 บิตและความยาวคีย์ 128, 192 หรือ 256 บิตซึ่งเป็นผู้เข้ารอบสุดท้ายของการแข่งขัน AES เป็นการออกแบบที่ช้ากว่า แต่มีความปลอดภัยมากกว่าการเข้ารหัสบล็อกอื่น ๆ
ในส่วนถัดไปเราจะกล่าวถึงรูปแบบของการเข้ารหัสบล็อกก่อนตามด้วย DES และ AES ซึ่งเป็นรหัสบล็อกสมัยใหม่ที่มีอิทธิพลมากที่สุดสองตัว
Feistel Cipher ไม่ใช่รูปแบบเฉพาะของการเข้ารหัสบล็อก เป็นรูปแบบการออกแบบที่ได้มาจากการเข้ารหัสบล็อกต่างๆ DES เป็นเพียงตัวอย่างหนึ่งของ Feistel Cipher ระบบการเข้ารหัสตามโครงสร้างการเข้ารหัสของ Feistel ใช้อัลกอริทึมเดียวกันสำหรับทั้งการเข้ารหัสและการถอดรหัส
กระบวนการเข้ารหัส
กระบวนการเข้ารหัสใช้โครงสร้าง Feistel ซึ่งประกอบด้วยการประมวลผลข้อความธรรมดาหลายรอบโดยแต่ละรอบประกอบด้วยขั้นตอน "การแทนที่" ตามด้วยขั้นตอนการเปลี่ยนแปลง
โครงสร้าง Feistel แสดงในภาพประกอบต่อไปนี้ -
บล็อกอินพุตของแต่ละรอบแบ่งออกเป็นสองส่วนที่สามารถแสดงเป็น L และ R สำหรับครึ่งซ้ายและครึ่งขวา
ในแต่ละรอบครึ่งขวาของบล็อก R จะผ่านไปไม่เปลี่ยนแปลง แต่ครึ่งซ้าย L จะดำเนินการที่ขึ้นอยู่กับ R และคีย์เข้ารหัส ขั้นแรกเราใช้ฟังก์ชันการเข้ารหัส 'f' ที่รับอินพุตสองอินพุต - คีย์ K และ R ฟังก์ชันจะสร้างเอาต์พุต f (R, K) จากนั้นเรา XOR ผลลัพธ์ของฟังก์ชันทางคณิตศาสตร์ด้วย L.
ในการนำ Feistel Cipher ไปใช้งานจริงเช่น DES แทนที่จะใช้คีย์เข้ารหัสทั้งหมดในแต่ละรอบคีย์ที่ขึ้นกับรอบ (คีย์ย่อย) จะได้มาจากคีย์การเข้ารหัส ซึ่งหมายความว่าแต่ละรอบจะใช้คีย์ที่แตกต่างกันแม้ว่าคีย์ย่อยทั้งหมดเหล่านี้จะเกี่ยวข้องกับคีย์ดั้งเดิมก็ตาม
ขั้นตอนการเรียงสับเปลี่ยนในตอนท้ายของแต่ละรอบจะสลับ L ที่แก้ไขและ R ที่ไม่ได้แก้ไขดังนั้น L สำหรับรอบถัดไปจะเป็น R ของรอบปัจจุบัน และ R สำหรับรอบถัดไปเป็นเอาต์พุต L ของรอบปัจจุบัน
ขั้นตอนการแทนที่และการเปลี่ยนรูปด้านบนเป็น 'รอบ' จำนวนรอบถูกระบุโดยการออกแบบอัลกอริทึม
เมื่อรอบสุดท้ายเสร็จสิ้นแล้วบล็อกย่อยสองบล็อก 'R' และ 'L' จะถูกต่อเข้าด้วยกันเพื่อสร้างบล็อกไซเฟอร์เท็กซ์
ส่วนที่ยากในการออกแบบ Feistel Cipher คือการเลือกฟังก์ชันกลม 'f' เพื่อให้เป็นรูปแบบที่ไม่แตกหักฟังก์ชันนี้จำเป็นต้องมีคุณสมบัติที่สำคัญหลายประการซึ่งอยู่นอกเหนือขอบเขตของการสนทนาของเรา
กระบวนการถอดรหัส
กระบวนการถอดรหัสใน Feistel cipher เกือบจะคล้ายกัน แทนที่จะเริ่มต้นด้วยบล็อกของข้อความธรรมดาบล็อกไซเฟอร์เท็กซ์จะถูกป้อนเข้าไปในจุดเริ่มต้นของโครงสร้าง Feistel จากนั้นกระบวนการหลังจากนั้นจะเหมือนกับที่อธิบายไว้ในภาพประกอบที่กำหนด
กระบวนการดังกล่าวเกือบจะคล้ายกันและไม่เหมือนกันทุกประการ ในกรณีของการถอดรหัสข้อแตกต่างเพียงอย่างเดียวคือคีย์ย่อยที่ใช้ในการเข้ารหัสจะใช้ในลำดับย้อนกลับ
การสลับ 'L' และ 'R' ครั้งสุดท้ายในขั้นตอนสุดท้ายของ Feistel Cipher เป็นสิ่งสำคัญ หากไม่มีการสลับสิ่งเหล่านี้จะไม่สามารถถอดรหัสรหัสที่ได้โดยใช้อัลกอริทึมเดียวกัน
จำนวนรอบ
จำนวนรอบที่ใช้ใน Feistel Cipher ขึ้นอยู่กับความปลอดภัยที่ต้องการจากระบบ จำนวนรอบที่มากขึ้นทำให้ระบบปลอดภัยมากขึ้น แต่ในขณะเดียวกันรอบที่มากขึ้นหมายถึงกระบวนการเข้ารหัสและถอดรหัสที่ช้าไม่มีประสิทธิภาพ จำนวนรอบในระบบจึงขึ้นอยู่กับประสิทธิภาพและความปลอดภัยในการแลกเปลี่ยน
Data Encryption Standard (DES) คือรหัสบล็อกคีย์สมมาตรที่เผยแพร่โดย National Institute of Standards and Technology (NIST)
DES คือการนำ Feistel Cipher มาใช้ ใช้โครงสร้าง Feistel 16 รอบ ขนาดบล็อกคือ 64 บิต แม้ว่าความยาวของคีย์จะเป็น 64 บิต แต่ DES ก็มีความยาวคีย์ที่ใช้งานได้จริงที่ 56 บิตเนื่องจากอัลกอริทึมการเข้ารหัส 8 จาก 64 บิตไม่ได้ใช้คีย์ (ทำหน้าที่เป็นบิตตรวจสอบเท่านั้น) โครงสร้างทั่วไปของ DES แสดงอยู่ในภาพประกอบต่อไปนี้ -
เนื่องจาก DES ขึ้นอยู่กับ Feistel Cipher สิ่งที่จำเป็นในการระบุ DES คือ -
- ฟังก์ชันกลม
- กำหนดการสำคัญ
- การประมวลผลเพิ่มเติมใด ๆ - การเปลี่ยนแปลงเริ่มต้นและขั้นสุดท้าย
การเรียงสับเปลี่ยนเริ่มต้นและขั้นสุดท้าย
การเรียงสับเปลี่ยนเริ่มต้นและขั้นสุดท้ายคือกล่องการเรียงสับเปลี่ยนแบบตรง (P-box) ที่ผกผันซึ่งกันและกัน พวกเขาไม่มีความสำคัญในการเข้ารหัสใน DES การเรียงสับเปลี่ยนเริ่มต้นและขั้นสุดท้ายจะแสดงดังต่อไปนี้ -
ฟังก์ชัน Round
หัวใจของตัวเลขนี้เป็นฟังก์ชั่น DES, F ฟังก์ชัน DES ใช้คีย์ 48 บิตกับ 32 บิตขวาสุดเพื่อสร้างเอาต์พุต 32 บิต
Expansion Permutation Box- เนื่องจากอินพุตด้านขวาคือ 32 บิตและคีย์กลมเป็น 48 บิตก่อนอื่นเราจึงต้องขยายอินพุตด้านขวาเป็น 48 บิต ตรรกะการเรียงสับเปลี่ยนแสดงเป็นภาพกราฟิกในภาพประกอบต่อไปนี้ -
ตรรกะการเรียงสับเปลี่ยนที่แสดงเป็นภาพโดยทั่วไปอธิบายไว้ในตารางในข้อกำหนดของ DES ที่แสดงดังที่แสดง -
XOR (Whitener).- หลังจากการเปลี่ยนรูปแบบการขยาย DES จะดำเนินการ XOR ในส่วนด้านขวาที่ขยายและปุ่มกลม ปุ่มกลมจะใช้ในการดำเนินการนี้เท่านั้น
Substitution Boxes.- กล่อง S ดำเนินการผสมจริง (สับสน) DES ใช้ 8 S-box แต่ละอันมีอินพุต 6 บิตและเอาต์พุต 4 บิต ดูภาพประกอบต่อไปนี้ -
กฎ S-box แสดงอยู่ด้านล่าง -
มีทั้งหมดแปดตาราง S-box เอาท์พุตของ s-box ทั้งแปดจะรวมกันเป็นส่วน 32 บิต
Straight Permutation - จากนั้นเอาต์พุต 32 บิตของ S-box จะอยู่ภายใต้การเปลี่ยนรูปแบบตรงตามกฎที่แสดงในภาพประกอบต่อไปนี้:
การสร้างคีย์
ตัวสร้างคีย์กลมสร้างคีย์ 48 บิตสิบหกคีย์จากคีย์การเข้ารหัส 56 บิต ขั้นตอนการสร้างคีย์แสดงอยู่ในภาพประกอบต่อไปนี้ -
ตรรกะสำหรับ Parity drop, shifting และ Compression P-box มีให้ในคำอธิบาย DES
การวิเคราะห์ DES
DES ตอบสนองทั้งคุณสมบัติที่ต้องการของการเข้ารหัสบล็อก คุณสมบัติทั้งสองนี้ทำให้การเข้ารหัสแข็งแกร่งมาก
Avalanche effect - การเปลี่ยนแปลงเพียงเล็กน้อยในข้อความธรรมดาส่งผลให้เกิดการเปลี่ยนแปลงที่ยิ่งใหญ่มากในการเข้ารหัส
Completeness - การเข้ารหัสแต่ละบิตขึ้นอยู่กับข้อความธรรมดาหลายบิต
ในช่วงสองสามปีที่ผ่านมาการเข้ารหัสลับพบจุดอ่อนบางอย่างใน DES เมื่อคีย์ที่เลือกเป็นคีย์ที่อ่อนแอ จะต้องหลีกเลี่ยงคีย์เหล่านี้
DES ได้พิสูจน์แล้วว่าเป็นรหัสบล็อกที่ออกแบบมาอย่างดี ไม่มีการโจมตีด้วยการเข้ารหัสลับอย่างมีนัยสำคัญใน DES นอกเหนือจากการค้นหาคีย์ที่ละเอียดถี่ถ้วน
ความเร็วในการค้นหาคีย์อย่างละเอียดถี่ถ้วนกับ DES หลังปี 1990 เริ่มทำให้ผู้ใช้ DES ไม่สะดวก อย่างไรก็ตามผู้ใช้ไม่ต้องการแทนที่ DES เนื่องจากต้องใช้เวลาและเงินมหาศาลในการเปลี่ยนอัลกอริทึมการเข้ารหัสที่ใช้กันอย่างแพร่หลายและฝังอยู่ในสถาปัตยกรรมความปลอดภัยขนาดใหญ่
แนวทางปฏิบัติไม่ได้เป็นการละทิ้ง DES โดยสิ้นเชิง แต่เป็นการเปลี่ยนวิธีการใช้ DES สิ่งนี้นำไปสู่รูปแบบการแก้ไขของ Triple DES (บางครั้งเรียกว่า 3DES)
อนึ่งมี Triple DES สองแบบที่เรียกว่า 3-key Triple DES (3TDES) และ 2-key Triple DES (2TDES)
3-KEY Triple DES
ก่อนที่จะใช้ 3TDES ผู้ใช้ครั้งแรกที่สร้างและจัดจำหน่าย 3TDES K สำคัญซึ่งประกอบด้วยสามปุ่ม DES ที่แตกต่างกัน K 1 , K 2และภาค3 ซึ่งหมายความว่าคีย์ 3TDES จริงมีความยาว 3 × 56 = 168 บิต รูปแบบการเข้ารหัสมีภาพประกอบดังนี้ -
กระบวนการเข้ารหัส - ถอดรหัสมีดังนี้ -
การเข้ารหัสลับบล็อกธรรมดาโดยใช้เพียงครั้งเดียว DES ด้วยคีย์ K 1
ตอนนี้ถอดรหัสการส่งออกของขั้นตอนที่ 1 โดยใช้เพียงครั้งเดียว DES กับ K สำคัญ2
สุดท้ายเข้ารหัสการส่งออกของขั้นที่ 2 โดยใช้เพียงครั้งเดียว DES กับ K สำคัญ3
ผลลัพธ์ของขั้นตอนที่ 3 คือไซเฟอร์เท็กซ์
การถอดรหัสรหัสลับเป็นกระบวนการย้อนกลับ ผู้ใช้ถอดรหัสครั้งแรกที่ใช้ K 3เข้ารหัสแล้วกับภาคที่ 2และในที่สุดก็ถอดรหัสกับ K 1
เนื่องจากการออกแบบ Triple DES นี้เป็นกระบวนการเข้ารหัส - ถอดรหัส - เข้ารหัสจึงเป็นไปได้ที่จะใช้การใช้งาน 3TDES (ฮาร์ดแวร์) สำหรับ DES เดียวโดยตั้งค่า K 1, K 2และ K 3ให้เป็นค่าเดียวกัน สิ่งนี้ให้ความเข้ากันได้ย้อนหลังกับ DES
ตัวแปรที่สองของ Triple DES (2TDES) เป็นเหมือน 3TDES ยกเว้นว่าภาค3จะถูกแทนที่ด้วย K 1 กล่าวอีกนัยหนึ่งคือผู้ใช้เข้ารหัสบล็อกข้อความธรรมดาด้วยคีย์ K 1จากนั้นถอดรหัสด้วยคีย์ K 2และสุดท้ายเข้ารหัสด้วย K 1อีกครั้ง ดังนั้น 2TDES จึงมีความยาวคีย์ 112 บิต
ระบบ Triple DES มีความปลอดภัยมากกว่า DES เดี่ยวอย่างเห็นได้ชัด แต่กระบวนการเหล่านี้ช้ากว่าการเข้ารหัสโดยใช้ DES เดียวอย่างชัดเจน
อัลกอริธึมการเข้ารหัสแบบสมมาตรที่ได้รับความนิยมและนำมาใช้อย่างแพร่หลายในปัจจุบันคือ Advanced Encryption Standard (AES) พบเร็วกว่า triple DES อย่างน้อยหกเท่า
จำเป็นต้องมีการเปลี่ยน DES เนื่องจากขนาดคีย์เล็กเกินไป ด้วยพลังการประมวลผลที่เพิ่มขึ้นจึงถือว่าเสี่ยงต่อการโจมตีด้วยการค้นหาคีย์อย่างละเอียดถี่ถ้วน Triple DES ได้รับการออกแบบมาเพื่อเอาชนะข้อเสียเปรียบนี้ แต่พบว่าช้า
คุณสมบัติของ AES มีดังนี้ -
- รหัสบล็อกสมมาตรคีย์สมมาตร
- ข้อมูล 128 บิต, ปุ่ม 128/192/256-bit
- แรงและเร็วกว่า Triple-DES
- ระบุข้อกำหนดและรายละเอียดการออกแบบทั้งหมด
- ซอฟต์แวร์ที่ใช้งานได้ใน C และ Java
การดำเนินงานของ AES
AES เป็นการทำซ้ำมากกว่าการเข้ารหัส Feistel มันขึ้นอยู่กับ 'การทดแทน - เครือข่ายการเปลี่ยนแปลง' ประกอบด้วยชุดของการดำเนินการที่เชื่อมโยงซึ่งบางส่วนเกี่ยวข้องกับการแทนที่อินพุตโดยเอาต์พุตเฉพาะ (การแทนที่) และอื่น ๆ เกี่ยวข้องกับการสับบิตรอบ ๆ (การเรียงสับเปลี่ยน)
ที่น่าสนใจคือ AES ทำการคำนวณทั้งหมดด้วยไบต์แทนที่จะเป็นบิต ดังนั้น AES จึงถือว่าบล็อก 128 บิตของข้อความธรรมดาเป็น 16 ไบต์ 16 ไบต์เหล่านี้จัดเรียงเป็นสี่คอลัมน์และสี่แถวสำหรับการประมวลผลเป็นเมทริกซ์ -
ไม่เหมือนกับ DES จำนวนรอบใน AES จะแปรผันและขึ้นอยู่กับความยาวของคีย์ AES ใช้ 10 รอบสำหรับคีย์ 128 บิต 12 รอบสำหรับคีย์ 192 บิตและ 14 รอบสำหรับคีย์ 256 บิต แต่ละรอบเหล่านี้ใช้คีย์รอบ 128 บิตที่แตกต่างกันซึ่งคำนวณจากคีย์ AES ดั้งเดิม
แผนผังของโครงสร้าง AES มีให้ในภาพประกอบต่อไปนี้ -
กระบวนการเข้ารหัส
ที่นี่เรา จำกัด เฉพาะคำอธิบายของการเข้ารหัส AES ทั่วไป แต่ละรอบประกอบด้วยสี่กระบวนการย่อย ขั้นตอนรอบแรกแสดงไว้ด้านล่าง -
การแทนที่ไบต์ (SubBytes)
อินพุต 16 ไบต์ถูกแทนที่โดยการค้นหาตารางคงที่ (S-box) ที่กำหนดในการออกแบบ ผลลัพธ์อยู่ในเมทริกซ์ของสี่แถวและสี่คอลัมน์
กะ
แต่ละแถวสี่แถวของเมทริกซ์จะเลื่อนไปทางซ้าย รายการใด ๆ ที่ "หลุด" จะถูกแทรกใหม่ที่ด้านขวาของแถว กะจะดำเนินการดังนี้ -
ไม่เลื่อนแถวแรก
แถวที่สองเลื่อนตำแหน่งหนึ่ง (ไบต์) ไปทางซ้าย
แถวที่สามเลื่อนไปทางซ้ายสองตำแหน่ง
แถวที่สี่เลื่อนไปทางซ้ายสามตำแหน่ง
ผลลัพธ์ที่ได้คือเมทริกซ์ใหม่ที่ประกอบด้วย 16 ไบต์เท่ากัน แต่เลื่อนตามกัน
MixColumns
แต่ละคอลัมน์ของสี่ไบต์จะถูกแปลงโดยใช้ฟังก์ชันพิเศษทางคณิตศาสตร์ ฟังก์ชันนี้ใช้เป็นอินพุตสี่ไบต์ของหนึ่งคอลัมน์และเอาต์พุตสี่ไบต์ใหม่ทั้งหมดซึ่งจะแทนที่คอลัมน์เดิม ผลลัพธ์คือเมทริกซ์ใหม่อื่นที่ประกอบด้วย 16 ไบต์ใหม่ ควรสังเกตว่าขั้นตอนนี้ไม่ได้ดำเนินการในรอบที่แล้ว
Addroundkey
ตอนนี้เมทริกซ์ 16 ไบต์ถือเป็น 128 บิตและ XORed เป็น 128 บิตของคีย์กลม หากนี่เป็นรอบสุดท้ายผลลัพธ์จะเป็นไซเฟอร์เท็กซ์ มิฉะนั้นผลลัพธ์ 128 บิตจะถูกตีความเป็น 16 ไบต์และเราจะเริ่มรอบที่คล้ายกันอีกครั้ง
กระบวนการถอดรหัส
กระบวนการถอดรหัสรหัสลับ AES คล้ายกับกระบวนการเข้ารหัสในลำดับย้อนกลับ แต่ละรอบประกอบด้วยสี่กระบวนการที่ดำเนินการตามลำดับย้อนกลับ -
- เพิ่มปุ่มกลม
- ผสมคอลัมน์
- เปลี่ยนแถว
- การทดแทนไบต์
เนื่องจากกระบวนการย่อยในแต่ละรอบเป็นไปในลักษณะย้อนกลับซึ่งแตกต่างจาก Feistel Cipher อัลกอริทึมการเข้ารหัสและการถอดรหัสจึงจำเป็นต้องดำเนินการแยกกันแม้ว่าจะมีความสัมพันธ์กันอย่างใกล้ชิดก็ตาม
การวิเคราะห์ AES
ในปัจจุบันการเข้ารหัส AES ได้รับการยอมรับและสนับสนุนอย่างกว้างขวางทั้งในฮาร์ดแวร์และซอฟต์แวร์ จนถึงปัจจุบันยังไม่มีการค้นพบการโจมตีด้วยการเข้ารหัสที่ใช้งานได้จริงกับ AES นอกจากนี้ AES ยังมีความยืดหยุ่นในตัวของความยาวของคีย์ซึ่งช่วยให้ระดับของ 'การพิสูจน์ในอนาคต' เทียบกับความสามารถในการค้นหาคีย์ที่ละเอียดถี่ถ้วน
อย่างไรก็ตามเช่นเดียวกับ DES การรักษาความปลอดภัย AES จะมั่นใจได้ก็ต่อเมื่อมีการใช้งานอย่างถูกต้องและมีการใช้การจัดการคีย์ที่ดี
ในบทนี้เราจะพูดถึงโหมดต่างๆของการทำงานของรหัสบล็อก นี่คือกฎขั้นตอนสำหรับรหัสบล็อกทั่วไป ที่น่าสนใจคือโหมดที่แตกต่างกันส่งผลให้เกิดคุณสมบัติที่แตกต่างกันซึ่งเพิ่มความปลอดภัยของการเข้ารหัสบล็อกที่อยู่เบื้องหลัง
รหัสบล็อกจะประมวลผลบล็อกข้อมูลที่มีขนาดคงที่ โดยปกติขนาดของข้อความจะใหญ่กว่าขนาดบล็อก ดังนั้นข้อความขนาดยาวจะถูกแบ่งออกเป็นชุดของบล็อกข้อความตามลำดับและการเข้ารหัสจะดำเนินการกับบล็อกเหล่านี้ทีละบล็อก
โหมด Electronic Code Book (ECB)
โหมดนี้เป็นวิธีที่ตรงไปตรงมาที่สุดในการประมวลผลชุดบล็อกข้อความตามลำดับ
การดำเนินการ
ผู้ใช้รับบล็อกแรกของข้อความธรรมดาและเข้ารหัสด้วยคีย์เพื่อสร้างไซเฟอร์เท็กซ์บล็อกแรก
จากนั้นเขาก็ใช้ข้อความธรรมดาบล็อกที่สองและทำตามขั้นตอนเดียวกันด้วยคีย์เดียวกันไปเรื่อย ๆ
โหมด ECB คือ deterministicนั่นคือถ้าบล็อกข้อความธรรมดา P1, P2, …, Pm ถูกเข้ารหัสสองครั้งภายใต้คีย์เดียวกันบล็อกการเข้ารหัสเอาต์พุตจะเหมือนกัน
ในความเป็นจริงสำหรับคีย์ที่กำหนดในทางเทคนิคเราสามารถสร้าง codebook ของ ciphertexts สำหรับบล็อกข้อความธรรมดาทั้งหมดที่เป็นไปได้ จากนั้นการเข้ารหัสจะทำให้เกิดการค้นหาเฉพาะข้อความธรรมดาที่จำเป็นและเลือกไซเฟอร์เท็กซ์ที่เกี่ยวข้อง ดังนั้นการดำเนินการจึงคล้ายคลึงกับการกำหนดคำรหัสใน Codebook และด้วยเหตุนี้จึงได้รับชื่ออย่างเป็นทางการ - โหมดการทำงานของ Electronic Codebook (ECB) มีภาพประกอบดังนี้ -
การวิเคราะห์โหมด ECB
ในความเป็นจริงข้อมูลแอปพลิเคชันใด ๆ มักจะมีข้อมูลบางส่วนซึ่งสามารถคาดเดาได้ ตัวอย่างเช่นช่วงของเงินเดือนสามารถเดาได้ การเข้ารหัสจาก ECB สามารถทำให้ผู้โจมตีสามารถเดาข้อความธรรมดาได้โดยการลองผิดลองถูกหากข้อความธรรมดาอยู่ในสภาพที่คาดเดาได้
ตัวอย่างเช่นหากทราบว่าไซเฟอร์เท็กซ์จากโหมด ECB เข้ารหัสตัวเลขเงินเดือนการทดลองจำนวนเล็กน้อยจะทำให้ผู้โจมตีสามารถกู้คืนตัวเลขได้ โดยทั่วไปเราไม่ต้องการใช้การเข้ารหัสแบบกำหนดและด้วยเหตุนี้จึงไม่ควรใช้โหมด ECB ในแอปพลิเคชันส่วนใหญ่
โหมด Cipher Block Chaining (CBC)
โหมดการทำงานของ CBC ให้การพึ่งพาข้อความสำหรับการสร้างไซเฟอร์เท็กซ์และทำให้ระบบไม่ถูกกำหนด
การดำเนินการ
การทำงานของโหมด CBC แสดงอยู่ในภาพประกอบต่อไปนี้ ขั้นตอนมีดังนี้ -
โหลด n-bit Initialization Vector (IV) ในรีจิสเตอร์ด้านบน
XOR บล็อกข้อความธรรมดา n-bit ที่มีค่าข้อมูลใน top register
เข้ารหัสผลลัพธ์ของการดำเนินการ XOR ด้วยการเข้ารหัสบล็อกที่มีคีย์ K
ป้อนบล็อก ciphertext ลงในรีจิสเตอร์ด้านบนและดำเนินการต่อไปจนกว่าบล็อกข้อความธรรมดาทั้งหมดจะถูกประมวลผล
สำหรับการถอดรหัสข้อมูล IV จะถูก XORed โดยมีการถอดรหัสบล็อกการเข้ารหัสแรก บล็อกไซเฟอร์เท็กซ์แรกยังถูกป้อนเพื่อรีจิสเตอร์แทนที่ IV สำหรับถอดรหัสบล็อกไซเฟอร์เท็กซ์ถัดไป
การวิเคราะห์โหมด CBC
ในโหมด CBC บล็อกข้อความธรรมดาปัจจุบันจะถูกเพิ่มไปยังบล็อกการเข้ารหัสก่อนหน้าจากนั้นผลลัพธ์จะถูกเข้ารหัสด้วยคีย์ การถอดรหัสจึงเป็นกระบวนการย้อนกลับซึ่งเกี่ยวข้องกับการถอดรหัสรหัสลับปัจจุบันแล้วเพิ่มบล็อกการเข้ารหัสก่อนหน้าลงในผลลัพธ์
ข้อดีของ CBC มากกว่า ECB คือการเปลี่ยน IV ทำให้เกิดการเข้ารหัสที่แตกต่างกันสำหรับข้อความที่เหมือนกัน ในทางกลับกันข้อผิดพลาดในการส่งข้อมูลจะแพร่กระจายไปยังบล็อกถัดไปอีกสองสามบล็อกระหว่างการถอดรหัสเนื่องจากเอฟเฟกต์โซ่
เป็นมูลค่าการกล่าวขวัญว่าโหมด CBC เป็นพื้นฐานสำหรับกลไกการตรวจสอบแหล่งที่มาของข้อมูลที่รู้จักกันดี ดังนั้นจึงมีข้อได้เปรียบสำหรับแอปพลิเคชันที่ต้องการทั้งการเข้ารหัสแบบสมมาตรและการตรวจสอบแหล่งที่มาของข้อมูล
โหมด Cipher Feedback (CFB)
ในโหมดนี้บล็อกไซเฟอร์เท็กซ์แต่ละบล็อกจะ 'ป้อนกลับ' เข้าสู่กระบวนการเข้ารหัสเพื่อเข้ารหัสบล็อกข้อความธรรมดาถัดไป
การดำเนินการ
การทำงานของโหมด CFB แสดงอยู่ในภาพประกอบต่อไปนี้ ตัวอย่างเช่นในระบบปัจจุบันบล็อกข้อความมีบิตขนาดโดยที่ 1 <s <n. โหมด CFB ต้องการเวกเตอร์การเริ่มต้น (IV) เป็นบล็อกอินพุต n-bit แบบสุ่มเริ่มต้น IV ไม่จำเป็นต้องเป็นความลับ ขั้นตอนการดำเนินการคือ -
โหลด IV ในการลงทะเบียนด้านบน
เข้ารหัสค่าข้อมูลในการลงทะเบียนด้านบนด้วยรหัสบล็อกที่อยู่ภายใต้คีย์ K
ใช้เฉพาะจำนวนบิตที่สำคัญที่สุด (บิตด้านซ้าย) ของเอาต์พุตของกระบวนการเข้ารหัสและ XOR กับบล็อกข้อความธรรมดาของบิตเพื่อสร้างบล็อกไซเฟอร์เท็กซ์
ป้อนบล็อก ciphertext ลงในรีจิสเตอร์ด้านบนโดยเลื่อนข้อมูลที่มีอยู่แล้วไปทางซ้ายและดำเนินการต่อจนกว่าบล็อกข้อความธรรมดาทั้งหมดจะได้รับการประมวลผล
โดยพื้นฐานแล้วบล็อกไซเฟอร์เท็กซ์ก่อนหน้านี้จะถูกเข้ารหัสด้วยคีย์จากนั้นผลลัพธ์คือ XORed ไปยังบล็อกข้อความธรรมดาปัจจุบัน
ตามขั้นตอนที่คล้ายกันสำหรับการถอดรหัส IV ที่ตัดสินใจล่วงหน้าจะถูกโหลดครั้งแรกเมื่อเริ่มการถอดรหัส
การวิเคราะห์โหมด CFB
โหมด CFB แตกต่างจากโหมด ECB อย่างมีนัยสำคัญการเข้ารหัสที่สอดคล้องกับบล็อกข้อความธรรมดาที่กำหนดนั้นไม่เพียงขึ้นอยู่กับบล็อกข้อความธรรมดาและคีย์เท่านั้น แต่ยังรวมถึงบล็อกการเข้ารหัสก่อนหน้าด้วย กล่าวอีกนัยหนึ่งบล็อกการเข้ารหัสจะขึ้นอยู่กับข้อความ
CFB มีคุณสมบัติที่แปลกมาก ในโหมดนี้ผู้ใช้จะถอดรหัสรหัสลับโดยใช้กระบวนการเข้ารหัสของรหัสบล็อกเท่านั้น ไม่เคยใช้อัลกอริทึมการถอดรหัสของการเข้ารหัสบล็อกที่อยู่เบื้องหลัง
เห็นได้ชัดว่าโหมด CFB กำลังแปลงรหัสบล็อกเป็นประเภทของการเข้ารหัสสตรีม อัลกอริธึมการเข้ารหัสใช้เป็นตัวสร้างคีย์สตรีมเพื่อสร้างคีย์สตรีมที่อยู่ในรีจิสเตอร์ด้านล่าง จากนั้นคีย์สตรีมนี้จะ XORed ด้วยข้อความธรรมดาเช่นเดียวกับในกรณีของการเข้ารหัสสตรีม
ด้วยการแปลงรหัสบล็อกเป็นรหัสแบบสตรีมโหมด CFB จะให้คุณสมบัติที่เป็นประโยชน์บางประการของการเข้ารหัสสตรีมในขณะที่ยังคงรักษาคุณสมบัติที่เป็นประโยชน์ของรหัสบล็อกไว้
ในทางกลับกันข้อผิดพลาดของการส่งจะแพร่กระจายเนื่องจากการเปลี่ยนบล็อก
โหมดการตอบรับเอาต์พุต (OFB)
มันเกี่ยวข้องกับการป้อนบล็อกเอาต์พุตที่ต่อเนื่องกันจากการเข้ารหัสบล็อกที่อยู่เบื้องหลังกลับไป บล็อกข้อเสนอแนะเหล่านี้ให้สตริงบิตเพื่อป้อนอัลกอริทึมการเข้ารหัสซึ่งทำหน้าที่เป็นตัวสร้างคีย์สตรีมเช่นเดียวกับในโหมด CFB
คีย์สตรีมที่สร้างขึ้นคือ XOR-ed พร้อมกับบล็อกข้อความธรรมดา โหมด OFB ต้องการ IV เป็นบล็อกอินพุต n-bit แบบสุ่มเริ่มต้น IV ไม่จำเป็นต้องเป็นความลับ
การดำเนินการดังแสดงในภาพประกอบต่อไปนี้ -
โหมดตัวนับ (CTR)
ถือได้ว่าเป็นโหมด CFB แบบตอบโต้โดยไม่มีข้อเสนอแนะ ในโหมดนี้ทั้งผู้ส่งและผู้รับจำเป็นต้องเข้าถึงตัวนับที่เชื่อถือได้ซึ่งจะคำนวณค่าที่ใช้ร่วมกันใหม่ทุกครั้งที่มีการแลกเปลี่ยนบล็อกไซเฟอร์เท็กซ์ ตัวนับที่ใช้ร่วมกันนี้ไม่จำเป็นต้องเป็นค่าลับ แต่ความท้าทายคือทั้งสองฝ่ายต้องทำให้ตัวนับตรงกัน
การดำเนินการ
ทั้งการเข้ารหัสและการถอดรหัสในโหมด CTR แสดงอยู่ในภาพประกอบต่อไปนี้ ขั้นตอนในการดำเนินการคือ -
โหลดค่าตัวนับเริ่มต้นในรีจิสเตอร์ด้านบนจะเหมือนกันสำหรับทั้งผู้ส่งและผู้รับ มีบทบาทเช่นเดียวกับ IV ในโหมด CFB (และ CBC)
เข้ารหัสเนื้อหาของตัวนับด้วยคีย์และวางผลลัพธ์ในทะเบียนด้านล่าง
นำบล็อกข้อความธรรมดา P1 และ XOR แรกไปที่เนื้อหาของการลงทะเบียนด้านล่าง ผลลัพธ์ของสิ่งนี้คือ C1 ส่ง C1 ไปยังผู้รับและอัปเดตตัวนับ การปรับปรุงตัวนับจะแทนที่คำติชมของการเข้ารหัสในโหมด CFB
ดำเนินการต่อในลักษณะนี้จนกว่าบล็อกข้อความธรรมดาสุดท้ายจะถูกเข้ารหัส
การถอดรหัสเป็นกระบวนการย้อนกลับ บล็อกไซเฟอร์เท็กซ์คือ XORed พร้อมเอาต์พุตของเนื้อหาที่เข้ารหัสของค่าตัวนับ หลังจากการถอดรหัสตัวนับบล็อกการเข้ารหัสแต่ละตัวจะได้รับการอัปเดตเช่นเดียวกับในกรณีของการเข้ารหัส
การวิเคราะห์โหมดตัวนับ
ไม่มีการขึ้นต่อข้อความดังนั้นบล็อกการเข้ารหัสจึงไม่ขึ้นอยู่กับบล็อกข้อความธรรมดาก่อนหน้านี้
เช่นเดียวกับโหมด CFB โหมด CTR ไม่เกี่ยวข้องกับกระบวนการถอดรหัสของรหัสบล็อก นี่เป็นเพราะโหมด CTR ใช้บล็อกการเข้ารหัสเพื่อสร้างคีย์สตรีมซึ่งเข้ารหัสโดยใช้ฟังก์ชัน XOR กล่าวอีกนัยหนึ่งโหมด CTR ยังแปลงรหัสบล็อกเป็นรหัสสตรีม
ข้อเสียที่ร้ายแรงของโหมด CTR คือต้องใช้ตัวนับซิงโครนัสที่ผู้ส่งและผู้รับ การสูญเสียการซิงโครไนซ์นำไปสู่การกู้คืนข้อความธรรมดาที่ไม่ถูกต้อง
อย่างไรก็ตามโหมด CTR มีข้อดีเกือบทั้งหมดของโหมด CFB นอกจากนี้ยังไม่เผยแพร่ข้อผิดพลาดของการส่งสัญญาณเลย
การเข้ารหัสคีย์สาธารณะ
ซึ่งแตกต่างจากการเข้ารหัสคีย์สมมาตรเราไม่พบการใช้การเข้ารหัสคีย์สาธารณะในอดีต เป็นแนวคิดที่ค่อนข้างใหม่
การเข้ารหัสแบบสมมาตรเหมาะอย่างยิ่งสำหรับองค์กรต่างๆเช่นรัฐบาลทหารและ บริษัท การเงินขนาดใหญ่ที่เกี่ยวข้องกับการสื่อสารประเภทต่างๆ
ด้วยการแพร่กระจายของเครือข่ายคอมพิวเตอร์ที่ไม่ปลอดภัยมากขึ้นในช่วงไม่กี่ทศวรรษที่ผ่านมาจึงมีความจำเป็นอย่างยิ่งที่จะต้องใช้การเข้ารหัสในระดับที่ใหญ่ขึ้น พบว่าคีย์สมมาตรไม่สามารถใช้งานได้จริงเนื่องจากต้องเผชิญกับความท้าทายในการจัดการคีย์ สิ่งนี้ก่อให้เกิดระบบรหัสลับสาธารณะ
กระบวนการเข้ารหัสและถอดรหัสมีดังภาพต่อไปนี้ -
คุณสมบัติที่สำคัญที่สุดของรูปแบบการเข้ารหัสคีย์สาธารณะคือ -
ใช้คีย์ที่แตกต่างกันสำหรับการเข้ารหัสและถอดรหัส นี่คือคุณสมบัติที่กำหนดโครงร่างนี้แตกต่างจากโครงร่างการเข้ารหัสแบบสมมาตร
ผู้รับแต่ละคนมีคีย์การถอดรหัสที่ไม่ซ้ำกันโดยทั่วไปเรียกว่าคีย์ส่วนตัวของเขา
ผู้รับจำเป็นต้องเผยแพร่คีย์การเข้ารหัสซึ่งเรียกว่าคีย์สาธารณะของเขา
จำเป็นต้องมีการรับรองความถูกต้องของคีย์สาธารณะในโครงการนี้เพื่อหลีกเลี่ยงการปลอมแปลงโดยฝ่ายตรงข้ามเป็นผู้รับ โดยทั่วไป cryptosystem ประเภทนี้เกี่ยวข้องกับบุคคลที่สามที่เชื่อถือได้ซึ่งรับรองว่าคีย์สาธารณะนั้นเป็นของบุคคลหรือนิติบุคคลที่เฉพาะเจาะจงเท่านั้น
อัลกอริทึมการเข้ารหัสมีความซับซ้อนเพียงพอที่จะห้ามมิให้ผู้โจมตีอนุมานข้อความธรรมดาจากไซเฟอร์เท็กซ์และคีย์การเข้ารหัส (สาธารณะ)
แม้ว่าคีย์ส่วนตัวและคีย์สาธารณะจะเกี่ยวข้องกันทางคณิตศาสตร์ แต่ก็ไม่สามารถคำนวณคีย์ส่วนตัวจากคีย์สาธารณะได้ ในความเป็นจริงส่วนที่ชาญฉลาดของระบบเข้ารหัสคีย์สาธารณะคือการออกแบบความสัมพันธ์ระหว่างสองคีย์
แผนการเข้ารหัสคีย์สาธารณะมีสามประเภท เราจะพูดถึงพวกเขาในส่วนต่อไปนี้ -
RSA Cryptosystem
ระบบเข้ารหัสนี้เป็นระบบเริ่มต้นระบบหนึ่ง ยังคงเป็นระบบเข้ารหัสที่มีการใช้งานมากที่สุดจนถึงทุกวันนี้ ระบบถูกคิดค้นโดยนักวิชาการสามคนRon Rivest, Adi Shamir, และ Len Adleman ดังนั้นจึงเรียกว่า RSA cryptosystem
เราจะเห็นสองแง่มุมของ RSA cryptosystem การสร้างคู่คีย์ประการแรกและอัลกอริธึมการถอดรหัสการเข้ารหัสที่สอง
การสร้างคู่คีย์ RSA
แต่ละคนหรือฝ่ายที่ต้องการมีส่วนร่วมในการสื่อสารโดยใช้การเข้ารหัสจำเป็นต้องสร้างคีย์คู่หนึ่ง ได้แก่ คีย์สาธารณะและคีย์ส่วนตัว ขั้นตอนที่ตามมาในการสร้างคีย์อธิบายไว้ด้านล่าง -
Generate the RSA modulus (n)
เลือกสองช่วงเวลาขนาดใหญ่ p และ q
คำนวณ n = p * q สำหรับการเข้ารหัสที่แข็งแกร่งไม่แตกหักให้ n เป็นตัวเลขจำนวนมากโดยทั่วไปต้องมีอย่างน้อย 512 บิต
Find Derived Number (e)
จำนวน e ต้องมากกว่า 1 และน้อยกว่า (p - 1) (q - 1)
ต้องไม่มีปัจจัยร่วมสำหรับ e และ (p - 1) (q - 1) ยกเว้น 1 ในคำอื่น ๆ สองจำนวน e และ (p - 1) (q - 1) เป็น coprime
Form the public key
คู่ของตัวเลข (n, e) เป็นคีย์สาธารณะ RSA และเปิดเผยต่อสาธารณะ
สิ่งที่น่าสนใจคือแม้ว่า n จะเป็นส่วนหนึ่งของคีย์สาธารณะ แต่ความยากลำบากในการแยกตัวประกอบจำนวนเฉพาะจำนวนมากทำให้มั่นใจได้ว่าผู้โจมตีไม่สามารถค้นหาได้ในเวลาที่ จำกัด ซึ่งสองไพรม์ (p & q) ที่ใช้เพื่อรับ n นี่คือจุดแข็งของ RSA
Generate the private key
คีย์ส่วนตัว d คำนวณจาก p, q และ e สำหรับ n และ e ที่กำหนดจะมีหมายเลขเฉพาะ d
ตัวเลข d คือค่าผกผันของ e modulo (p - 1) (q - 1) ซึ่งหมายความว่า d เป็นจำนวนที่น้อยกว่า (p - 1) (q - 1) ดังนั้นเมื่อคูณด้วย e จะเท่ากับ 1 โมดูโล (p - 1) (q - 1)
ความสัมพันธ์นี้เขียนในเชิงคณิตศาสตร์ดังนี้ -
ed = 1 mod (p − 1)(q − 1)
อัลกอริทึมแบบยุคลิดแบบขยายใช้ p, q และ e เป็นอินพุตและให้ d เป็นเอาต์พุต
ตัวอย่าง
ตัวอย่างการสร้างคู่คีย์ RSA แสดงไว้ด้านล่าง (เพื่อความง่ายในการทำความเข้าใจ primes p & q ที่นำมานี้เป็นค่าเล็กน้อยในทางปฏิบัติแล้วค่าเหล่านี้สูงมาก)
ให้สองไพรม์คือ p = 7 และ q = 13 ดังนั้นโมดูลัส n = pq = 7 x 13 = 91
เลือก e = 5 ซึ่งเป็นตัวเลือกที่ถูกต้องเนื่องจากไม่มีตัวเลขที่เป็นปัจจัยร่วมของ 5 และ (p - 1) (q - 1) = 6 × 12 = 72 ยกเว้น 1
คู่ของตัวเลข (n, e) = (91, 5) เป็นกุญแจสาธารณะและสามารถให้ใครก็ได้ที่เราต้องการให้สามารถส่งข้อความที่เข้ารหัสถึงเราได้
อินพุต p = 7, q = 13 และ e = 5 ไปยังอัลกอริทึมแบบยุคลิดขยาย ผลลัพธ์จะเป็น d = 29
ตรวจสอบว่า d ที่คำนวณถูกต้องโดยการคำนวณ -
de = 29 × 5 = 145 = 1 mod 72
ดังนั้นคีย์สาธารณะคือ (91, 5) และคีย์ส่วนตัวคือ (91, 29)
การเข้ารหัสและถอดรหัส
เมื่อสร้างคู่คีย์แล้วขั้นตอนการเข้ารหัสและถอดรหัสจะค่อนข้างตรงไปตรงมาและง่ายต่อการคำนวณ
ที่น่าสนใจคือ RSA ไม่ได้ทำงานโดยตรงกับสตริงของบิตเช่นเดียวกับการเข้ารหัสคีย์สมมาตร ทำงานกับตัวเลขโมดูโล n ดังนั้นจึงจำเป็นต้องแสดงข้อความธรรมดาเป็นชุดของตัวเลขที่น้อยกว่า n
การเข้ารหัส RSA
สมมติว่าผู้ส่งต้องการส่งข้อความถึงคนที่มีคีย์สาธารณะคือ (n, e)
จากนั้นผู้ส่งจะแสดงข้อความธรรมดาเป็นชุดตัวเลขที่น้อยกว่า n
ในการเข้ารหัสข้อความธรรมดา P ตัวแรกซึ่งเป็นตัวเลขโมดูโล n กระบวนการเข้ารหัสเป็นขั้นตอนทางคณิตศาสตร์ง่ายๆดังนี้ -
C = Pe mod n
กล่าวอีกนัยหนึ่งไซเฟอร์เท็กซ์ C เท่ากับข้อความธรรมดา P คูณด้วยตัวมันเอง e คูณแล้วลดโมดูโล n ซึ่งหมายความว่า C เป็นตัวเลขที่น้อยกว่า n ด้วย
กลับไปที่ตัวอย่างการสร้างคีย์ของเราด้วยข้อความธรรมดา P = 10 เราจะได้รับการเข้ารหัส C -
C = 105 mod 91
การถอดรหัส RSA
กระบวนการถอดรหัสสำหรับ RSA นั้นตรงไปตรงมามากเช่นกัน สมมติว่าผู้รับของ public-key pair (n, e) ได้รับ ciphertext C
ตัวรับยก C ให้เป็นพลังของคีย์ส่วนตัว d โมดูโล n ผลลัพธ์จะเป็นข้อความธรรมดา P
Plaintext = Cd mod n
กลับไปที่ตัวอย่างตัวเลขของเราอีกครั้งการเข้ารหัส C = 82 จะถูกถอดรหัสเป็นหมายเลข 10 โดยใช้คีย์ส่วนตัว 29 -
Plaintext = 8229 mod 91 = 10
การวิเคราะห์ RSA
ความปลอดภัยของ RSA ขึ้นอยู่กับจุดแข็งของสองฟังก์ชันที่แยกจากกัน ระบบเข้ารหัส RSA เป็นระบบเข้ารหัสคีย์สาธารณะที่ได้รับความนิยมมากที่สุดซึ่งขึ้นอยู่กับความยากลำบากในทางปฏิบัติในการแยกตัวเลขจำนวนมาก
Encryption Function - ถือเป็นฟังก์ชันทางเดียวในการแปลงข้อความธรรมดาเป็นไซเฟอร์เท็กซ์และสามารถย้อนกลับได้เฉพาะเมื่อมีความรู้เกี่ยวกับคีย์ส่วนตัว d
Key Generation- ความยากในการกำหนดคีย์ส่วนตัวจากคีย์สาธารณะ RSA นั้นเทียบเท่ากับการแยกตัวประกอบโมดูลัส n ดังนั้นผู้โจมตีจึงไม่สามารถใช้ความรู้เกี่ยวกับคีย์สาธารณะ RSA เพื่อกำหนดคีย์ส่วนตัวของ RSA ได้เว้นแต่เขาจะแยกตัวประกอบ n ได้ นอกจากนี้ยังเป็นฟังก์ชันทางเดียวการเปลี่ยนจากค่า p & q ไปเป็นโมดูลัส n นั้นง่าย แต่ไม่สามารถย้อนกลับได้
หากฟังก์ชันทั้งสองนี้พิสูจน์แล้วว่าไม่ใช่ทางเดียว RSA ก็จะเสีย ในความเป็นจริงหากมีการพัฒนาเทคนิคการแยกตัวประกอบอย่างมีประสิทธิภาพแล้ว RSA ก็จะไม่ปลอดภัยอีกต่อไป
ความแข็งแกร่งของการเข้ารหัส RSA ลดลงอย่างมากในการต่อต้านการโจมตีหากหมายเลข p และ q ไม่ใช่จำนวนครั้งใหญ่และ / หรือคีย์สาธารณะที่เลือก e เป็นตัวเลขที่น้อย
ElGamal Cryptosystem
นอกจาก RSA แล้วยังมีระบบเข้ารหัสคีย์สาธารณะอื่น ๆ ที่เสนอ จำนวนมากขึ้นอยู่กับปัญหาลอการิทึมแบบไม่ต่อเนื่องในเวอร์ชันต่างๆ
ElGamal cryptosystem เรียกว่า Elliptic Curve Variant มีพื้นฐานมาจากปัญหาลอการิทึมแบบไม่ต่อเนื่อง ได้รับความแข็งแกร่งจากสมมติฐานที่ว่าไม่พบลอการิทึมแบบไม่ต่อเนื่องในกรอบเวลาที่ใช้งานได้จริงสำหรับจำนวนที่กำหนดในขณะที่การดำเนินการผกผันของกำลังสามารถคำนวณได้อย่างมีประสิทธิภาพ
ให้เราดู ElGamal เวอร์ชันง่ายๆที่ทำงานร่วมกับตัวเลข modulo p ในกรณีของรูปแบบของเส้นโค้งรูปไข่จะขึ้นอยู่กับระบบตัวเลขที่แตกต่างกันมาก
การสร้างคู่คีย์ ElGamal
ผู้ใช้ ElGamal cryptosystem แต่ละคนจะสร้างคู่คีย์ผ่านดังนี้ -
Choosing a large prime p. โดยทั่วไปจะเลือกจำนวนเฉพาะที่มีความยาว 1024 ถึง 2048 บิต
Choosing a generator element g.
ตัวเลขนี้ต้องอยู่ระหว่าง 1 ถึง p - 1 แต่ต้องไม่เป็นตัวเลขใด ๆ
มันเป็นเครื่องกำเนิดของกลุ่มจำนวนเต็มแบบทวีคูณโมดูโลพี ซึ่งหมายความว่าสำหรับทุกจำนวนเต็ม m co-prime ถึง p จะมีจำนวนเต็ม k ซึ่ง g k = a mod n
ตัวอย่างเช่น 3 คือตัวสร้างของกลุ่ม 5 (Z 5 = {1, 2, 3, 4})
น | 3 n | 3 n mod 5 |
---|---|---|
1 | 3 | 3 |
2 | 9 | 4 |
3 | 27 | 2 |
4 | 81 | 1 |
Choosing the private key. คีย์ส่วนตัว x คือตัวเลขใด ๆ ที่ใหญ่กว่า 1 และเล็กกว่า p − 1
Computing part of the public key. ค่า y คำนวณจากพารามิเตอร์ p, g และคีย์ส่วนตัว x ดังนี้ -
y = gx mod p
Obtaining Public key. คีย์สาธารณะ ElGamal ประกอบด้วยพารามิเตอร์สามตัว (p, g, y)
ตัวอย่างเช่นสมมติว่า p = 17 และ g = 6 (ยืนยันได้ว่า 6 เป็นตัวกำเนิดของกลุ่ม Z 17 ) คีย์ส่วนตัว x สามารถเป็นตัวเลขใดก็ได้ที่ใหญ่กว่า 1 และเล็กกว่า 71 ดังนั้นเราจึงเลือก x = 5 จากนั้นค่า y จะถูกคำนวณดังนี้ -
y = 65 mod 17 = 7
ดังนั้นคีย์ส่วนตัวคือ 62 และคีย์สาธารณะคือ (17, 6, 7)
การเข้ารหัสและถอดรหัส
การสร้างคู่คีย์ ElGamal ค่อนข้างง่ายกว่ากระบวนการเทียบเท่าสำหรับ RSA แต่การเข้ารหัสและถอดรหัสนั้นซับซ้อนกว่า RSA เล็กน้อย
การเข้ารหัส ElGamal
สมมติว่าผู้ส่งต้องการส่งข้อความธรรมดาถึงคนที่มีคีย์สาธารณะ ElGamal คือ (p, g, y) แล้ว -
ผู้ส่งแทนข้อความธรรมดาเป็นอนุกรมของตัวเลขโมดูโลพี
ในการเข้ารหัสข้อความธรรมดา P ตัวแรกซึ่งแสดงเป็นตัวเลขโมดูโล p กระบวนการเข้ารหัสเพื่อรับ ciphertext C มีดังต่อไปนี้ -
- สุ่มสร้างตัวเลข k;
- คำนวณสองค่า C1 และ C2 โดยที่ -
C1 = gk mod p
C2 = (P*yk) mod p
ส่ง ciphertext C ซึ่งประกอบด้วยสองค่าที่แยกจากกัน (C1, C2) ส่งไปพร้อมกัน
อ้างอิงถึงตัวอย่างการสร้างคีย์ ElGamal ที่ให้ไว้ข้างต้นข้อความธรรมดา P = 13 จะถูกเข้ารหัสดังนี้ -
- สร้างตัวเลขแบบสุ่มพูดว่า k = 10
- คำนวณค่าสองค่า C1 และ C2 โดยที่ -
C1 = 610 mod 17
C2 = (13*710) mod 17 = 9
ส่งข้อความรหัส C = (C1, C2) = (15, 9)
การถอดรหัส ElGamal
ในการถอดรหัสรหัสลับ (C1, C2) โดยใช้คีย์ส่วนตัว x ให้ดำเนินการสองขั้นตอนต่อไปนี้ -
คำนวณค่าผกผันโมดูลาร์ของ (C1) xโมดูโล p ซึ่งก็คือ (C1) -xโดยทั่วไปเรียกว่าปัจจัยการถอดรหัส
รับข้อความธรรมดาโดยใช้สูตรต่อไปนี้ -
C2 × (C1)-x mod p = Plaintext
ในตัวอย่างของเราในการถอดรหัสรหัสลับ C = (C1, C2) = (15, 9) โดยใช้คีย์ส่วนตัว x = 5 ปัจจัยการถอดรหัสคือ
15-5 mod 17 = 9
แยกข้อความธรรมดา P = (9 × 9) mod 17 = 13
การวิเคราะห์ ElGamal
ในระบบ ElGamal ผู้ใช้แต่ละคนมีคีย์ส่วนตัว x และมีthree components ของคีย์สาธารณะ - prime modulus p, generator g, and public Y = gx mod p. จุดแข็งของ ElGamal ขึ้นอยู่กับความยากของปัญหาลอการิทึมแบบไม่ต่อเนื่อง
ขนาดคีย์ที่ปลอดภัยโดยทั่วไปคือ> 1024 บิต ทุกวันนี้ยังใช้คีย์แบบยาว 2048 บิต ในส่วนหน้าความเร็วในการประมวลผล Elgamal ค่อนข้างช้าซึ่งส่วนใหญ่จะใช้สำหรับโปรโตคอลการตรวจสอบสิทธิ์ที่สำคัญ เนื่องจากประสิทธิภาพในการประมวลผลที่สูงขึ้นรูปแบบ Elliptic Curve ของ ElGamal จึงได้รับความนิยมมากขึ้นเรื่อย ๆ
การเข้ารหัส Elliptic Curve (ECC)
Elliptic Curve Cryptography (ECC) เป็นคำที่ใช้อธิบายชุดเครื่องมือและโปรโตคอลการเข้ารหัสที่มีการรักษาความปลอดภัยตามเวอร์ชันพิเศษของปัญหาลอการิทึมแบบไม่ต่อเนื่อง ไม่ใช้ตัวเลขโมดูโลพี
ECC ขึ้นอยู่กับชุดของตัวเลขที่เกี่ยวข้องกับวัตถุทางคณิตศาสตร์ที่เรียกว่าเส้นโค้งวงรี มีกฎสำหรับการเพิ่มและคำนวณทวีคูณของตัวเลขเหล่านี้เช่นเดียวกับที่มีสำหรับตัวเลขโมดูโลพี
ECC ประกอบด้วยรูปแบบของรูปแบบการเข้ารหัสจำนวนมากที่ออกแบบมาสำหรับหมายเลขโมดูลเช่นการเข้ารหัส ElGamal และอัลกอริทึมลายเซ็นดิจิทัล
เชื่อกันว่าปัญหาลอการิทึมแบบไม่ต่อเนื่องนั้นยากกว่ามากเมื่อนำไปใช้กับจุดบนเส้นโค้งวงรี สิ่งนี้แจ้งให้เปลี่ยนจากตัวเลขโมดูโล p เป็นจุดบนเส้นโค้งวงรี นอกจากนี้ยังสามารถรับระดับการรักษาความปลอดภัยที่เทียบเท่าได้ด้วยคีย์ที่สั้นกว่าหากเราใช้ตัวแปรตามเส้นโค้งรูปไข่
คีย์ที่สั้นกว่าส่งผลให้เกิดประโยชน์สองประการ -
- ง่ายต่อการจัดการที่สำคัญ
- การคำนวณที่มีประสิทธิภาพ
ประโยชน์เหล่านี้ทำให้รูปแบบการเข้ารหัสรูปไข่โค้งตามรูปแบบที่น่าสนใจอย่างมากสำหรับแอปพลิเคชันที่ทรัพยากรคอมพิวเตอร์มีข้อ จำกัด
RSA และ ElGamal Schemes - การเปรียบเทียบ
ให้เราเปรียบเทียบโครงร่าง RSA และ ElGamal สั้น ๆ ในแง่มุมต่างๆ
RSA | ElGamal |
---|---|
มีประสิทธิภาพมากขึ้นสำหรับการเข้ารหัส | มีประสิทธิภาพมากขึ้นสำหรับการถอดรหัส |
มีประสิทธิภาพน้อยกว่าสำหรับการถอดรหัส | มีประสิทธิภาพมากขึ้นสำหรับการถอดรหัส |
สำหรับระดับความปลอดภัยเฉพาะต้องใช้คีย์ยาวใน RSA | เพื่อความปลอดภัยในระดับเดียวกันจำเป็นต้องใช้คีย์ที่สั้นมาก |
เป็นที่ยอมรับและใช้กันอย่างแพร่หลาย | เป็นสินค้าใหม่และไม่เป็นที่นิยมในตลาด |
จนถึงตอนนี้เราได้พูดคุยเกี่ยวกับการใช้โครงร่างสมมาตรและคีย์สาธารณะเพื่อให้ข้อมูลเป็นความลับ ในบทนี้เราเริ่มการสนทนาเกี่ยวกับเทคนิคการเข้ารหัสต่างๆที่ออกแบบมาเพื่อให้บริการด้านความปลอดภัยอื่น ๆ
จุดเน้นของบทนี้อยู่ที่ความสมบูรณ์ของข้อมูลและเครื่องมือการเข้ารหัสที่ใช้เพื่อให้บรรลุสิ่งเดียวกัน
ภัยคุกคามต่อความสมบูรณ์ของข้อมูล
เมื่อมีการแลกเปลี่ยนข้อมูลที่ละเอียดอ่อนผู้รับจะต้องมั่นใจได้ว่าข้อความนั้นมาจากผู้ส่งที่ตั้งใจไว้และไม่มีการแก้ไขโดยไม่ได้ตั้งใจหรืออย่างอื่น ภัยคุกคามความสมบูรณ์ของข้อมูลมีสองประเภทที่แตกต่างกัน ได้แก่passive และ active.
ภัยคุกคามแฝง
ภัยคุกคามประเภทนี้เกิดขึ้นเนื่องจากการเปลี่ยนแปลงข้อมูลโดยไม่ได้ตั้งใจ
ข้อผิดพลาดของข้อมูลเหล่านี้มักเกิดขึ้นเนื่องจากสัญญาณรบกวนในช่องทางการสื่อสาร นอกจากนี้ข้อมูลอาจเสียหายในขณะที่ไฟล์ถูกเก็บไว้ในดิสก์
รหัสแก้ไขข้อผิดพลาดและการตรวจสอบอย่างง่ายเช่น Cyclic Redundancy Checks (CRCs) ใช้เพื่อตรวจจับการสูญเสียความสมบูรณ์ของข้อมูล ในเทคนิคเหล่านี้ส่วนย่อยของข้อมูลจะคำนวณทางคณิตศาสตร์และผนวกเข้ากับข้อมูล
ภัยคุกคามที่ใช้งานอยู่
ในภัยคุกคามประเภทนี้ผู้โจมตีสามารถจัดการข้อมูลโดยมีเจตนาร้าย
ในระดับที่ง่ายที่สุดหากข้อมูลไม่มีการแยกย่อยก็สามารถแก้ไขได้โดยไม่ต้องตรวจพบ ระบบสามารถใช้เทคนิคการต่อท้าย CRC เข้ากับข้อมูลเพื่อตรวจจับการแก้ไขที่ใช้งานอยู่
ในระดับภัยคุกคามที่สูงขึ้นผู้โจมตีอาจแก้ไขข้อมูลและพยายามดึงข้อมูลสรุปใหม่สำหรับข้อมูลที่แก้ไขจากการออกจากไดเจสต์ สิ่งนี้จะเกิดขึ้นได้หากมีการคำนวณส่วนย่อยโดยใช้กลไกง่ายๆเช่น CRC
กลไกการรักษาความปลอดภัยเช่นฟังก์ชัน Hash ถูกใช้เพื่อจัดการกับภัยคุกคามการปรับเปลี่ยนที่ใช้งานอยู่
ฟังก์ชันแฮชมีประโยชน์อย่างยิ่งและปรากฏในแอปพลิเคชันการรักษาความปลอดภัยข้อมูลเกือบทั้งหมด
ฟังก์ชันแฮชเป็นฟังก์ชันทางคณิตศาสตร์ที่แปลงค่าอินพุตตัวเลขเป็นค่าตัวเลขอื่นที่บีบอัด อินพุตไปยังฟังก์ชันแฮชมีความยาวโดยพลการ แต่เอาต์พุตจะมีความยาวคงที่เสมอ
ค่าที่ส่งกลับโดยฟังก์ชันแฮชจะถูกเรียก message digest หรือเพียงแค่ hash values. ภาพต่อไปนี้แสดงฟังก์ชันแฮช -
คุณสมบัติของฟังก์ชันแฮช
คุณสมบัติทั่วไปของฟังก์ชันแฮชคือ -
Fixed Length Output (Hash Value)
ฟังก์ชันแฮชจะปกปิดข้อมูลที่มีความยาวโดยพลการเป็นความยาวคงที่ กระบวนการนี้มักเรียกว่าhashing the data.
โดยทั่วไปแฮชจะมีขนาดเล็กกว่าข้อมูลอินพุตมากดังนั้นจึงมีการเรียกฟังก์ชันแฮชในบางครั้ง compression functions.
เนื่องจากแฮชเป็นการแสดงข้อมูลขนาดใหญ่ที่เล็กกว่าจึงเรียกอีกอย่างว่าไฟล์ digest.
ฟังก์ชันแฮชที่มีเอาต์พุต n บิตเรียกว่าไฟล์ n-bit hash function. ฟังก์ชันแฮชยอดนิยมสร้างค่าระหว่าง 160 ถึง 512 บิต
Efficiency of Operation
โดยทั่วไปสำหรับฟังก์ชันแฮช h ใด ๆ ที่มีอินพุต x การคำนวณ h (x) เป็นการดำเนินการที่รวดเร็ว
ฟังก์ชันแฮชเชิงคำนวณนั้นเร็วกว่าการเข้ารหัสแบบสมมาตรมาก
คุณสมบัติของฟังก์ชันแฮช
เพื่อให้เป็นเครื่องมือเข้ารหัสที่มีประสิทธิภาพฟังก์ชันแฮชจึงต้องการคุณสมบัติดังต่อไปนี้ -
Pre-Image Resistance
คุณสมบัตินี้หมายความว่าควรคำนวณย้อนกลับฟังก์ชันแฮชได้ยาก
กล่าวอีกนัยหนึ่งคือถ้าฟังก์ชันแฮช h สร้างค่าแฮช z ก็น่าจะเป็นกระบวนการที่ยากในการหาค่าอินพุต x ที่แฮชเป็น z
คุณสมบัตินี้ป้องกันผู้โจมตีที่มีเพียงค่าแฮชและพยายามค้นหาอินพุต
Second Pre-Image Resistance
คุณสมบัตินี้หมายถึงอินพุตและแฮชที่ได้รับมันน่าจะยากที่จะหาอินพุตอื่นที่มีแฮชเดียวกัน
กล่าวอีกนัยหนึ่งถ้าฟังก์ชันแฮช h สำหรับอินพุต x สร้างค่าแฮช h (x) ก็น่าจะยากที่จะหาค่าอินพุตอื่น ๆ y เช่นนั้น h (y) = h (x)
คุณสมบัติของฟังก์ชันแฮชนี้ป้องกันผู้โจมตีที่มีค่าอินพุตและแฮชและต้องการแทนที่ค่าที่แตกต่างกันเป็นค่าที่ถูกต้องแทนค่าอินพุตดั้งเดิม
Collision Resistance
คุณสมบัตินี้หมายความว่ามันยากที่จะหาอินพุตที่แตกต่างกันสองอินพุตที่มีความยาวใด ๆ ที่ส่งผลให้แฮชเดียวกัน คุณสมบัตินี้เรียกอีกอย่างว่าฟังก์ชันแฮชแบบไม่มีการชนกัน
กล่าวอีกนัยหนึ่งสำหรับฟังก์ชันแฮช h มันยากที่จะหาอินพุต x และ y ที่แตกต่างกันสองรายการดังนั้น h (x) = h (y)
เนื่องจากฟังก์ชันแฮชกำลังบีบอัดฟังก์ชันที่มีความยาวแฮชคงที่จึงเป็นไปไม่ได้ที่ฟังก์ชันแฮชจะไม่มีการชนกัน คุณสมบัติที่ไม่มีการชนกันนี้ยืนยันเพียงว่าการชนเหล่านี้น่าจะหาได้ยาก
คุณสมบัตินี้ทำให้ผู้โจมตีค้นหาค่าอินพุตสองค่าที่มีแฮชเดียวกันได้ยากมาก
นอกจากนี้หากฟังก์ชันแฮชทนต่อการชนกัน then it is second pre-image resistant.
การออกแบบอัลกอริทึมการแฮช
หัวใจสำคัญของการแฮชคือฟังก์ชันทางคณิตศาสตร์ที่ทำงานบนบล็อกข้อมูลขนาดคงที่สองบล็อกเพื่อสร้างรหัสแฮช ฟังก์ชันแฮชนี้เป็นส่วนหนึ่งของอัลกอริทึมการแฮช
ขนาดของแต่ละบล็อกข้อมูลจะแตกต่างกันไปขึ้นอยู่กับอัลกอริทึม โดยทั่วไปขนาดบล็อกจะอยู่ระหว่าง 128 บิตถึง 512 บิต ภาพประกอบต่อไปนี้แสดงให้เห็นถึงฟังก์ชันแฮช -
อัลกอริทึมการแฮชเกี่ยวข้องกับรอบของฟังก์ชันแฮชด้านบนเช่นการเข้ารหัสบล็อก แต่ละรอบจะใช้อินพุตที่มีขนาดคงที่โดยทั่วไปจะเป็นการรวมกันของบล็อกข้อความล่าสุดและเอาต์พุตของรอบสุดท้าย
กระบวนการนี้จะทำซ้ำหลายรอบเท่าที่จำเป็นในการแฮชข้อความทั้งหมด แผนผังของอัลกอริทึมการแฮชแสดงอยู่ในภาพประกอบต่อไปนี้ -
เนื่องจากค่าแฮชของบล็อกข้อความแรกจะกลายเป็นอินพุตสำหรับการดำเนินการแฮชที่สองซึ่งเอาต์พุตจะเปลี่ยนแปลงผลลัพธ์ของการดำเนินการที่สามและอื่น ๆ เอฟเฟกต์นี้เรียกว่าavalanche ผลของการแฮช
เอฟเฟกต์ Avalanche ส่งผลให้ค่าแฮชที่แตกต่างกันอย่างมีนัยสำคัญสำหรับสองข้อความที่แตกต่างกันโดยข้อมูลแม้แต่บิตเดียว
เข้าใจความแตกต่างระหว่างฟังก์ชันแฮชและอัลกอริทึมอย่างถูกต้อง ฟังก์ชันแฮชสร้างโค้ดแฮชโดยดำเนินการกับข้อมูลไบนารีความยาวคงที่สองบล็อก
อัลกอริธึมการแฮชเป็นกระบวนการในการใช้ฟังก์ชันแฮชโดยระบุว่าข้อความจะถูกแยกออกอย่างไรและผลลัพธ์จากบล็อกข้อความก่อนหน้านี้ถูกผูกติดกันอย่างไร
ฟังก์ชันแฮชยอดนิยม
ให้เราดูสั้น ๆ ฟังก์ชั่นแฮชยอดนิยม -
ไดเจสต์ข้อความ (MD)
MD5 เป็นฟังก์ชันแฮชที่ได้รับความนิยมและใช้กันอย่างแพร่หลายมากที่สุดเป็นเวลาหลายปี
ตระกูล MD ประกอบด้วยฟังก์ชันแฮช MD2, MD4, MD5 และ MD6 มันถูกนำมาใช้เป็นมาตรฐานอินเทอร์เน็ต RFC 1321 มันเป็นฟังก์ชันแฮช 128 บิต
ไดเจสต์ MD5 ถูกนำมาใช้กันอย่างแพร่หลายในโลกของซอฟต์แวร์เพื่อรับประกันความสมบูรณ์ของไฟล์ที่ถ่ายโอน ตัวอย่างเช่นเซิร์ฟเวอร์ไฟล์มักจะจัดเตรียมการตรวจสอบ MD5 ที่คำนวณไว้ล่วงหน้าสำหรับไฟล์เพื่อให้ผู้ใช้สามารถเปรียบเทียบการตรวจสอบของไฟล์ที่ดาวน์โหลดกับไฟล์นั้นได้
ในปี 2547 พบการชนกันใน MD5 มีรายงานว่าการโจมตีเชิงวิเคราะห์จะประสบความสำเร็จภายในหนึ่งชั่วโมงโดยใช้คลัสเตอร์คอมพิวเตอร์ การโจมตีแบบชนกันนี้ส่งผลให้ MD5 ถูกบุกรุกดังนั้นจึงไม่แนะนำให้ใช้อีกต่อไป
ฟังก์ชัน Secure Hash (SHA)
ตระกูล SHA ประกอบด้วยอัลกอริทึม SHA สี่แบบ SHA-0, SHA-1, SHA-2 และ SHA-3 แม้ว่าจะมาจากครอบครัวเดียวกัน แต่ก็มีโครงสร้างที่แตกต่างกัน
เวอร์ชันดั้งเดิมคือ SHA-0 ซึ่งเป็นฟังก์ชันแฮช 160 บิตซึ่งเผยแพร่โดยสถาบันมาตรฐานและเทคโนโลยีแห่งชาติ (NIST) ในปี พ.ศ. 2536 มีจุดอ่อนเล็กน้อยและไม่ได้รับความนิยมมากนัก ต่อมาในปี 1995 SHA-1 ได้รับการออกแบบมาเพื่อแก้ไขจุดอ่อนของ SHA-0 ที่ถูกกล่าวหา
SHA-1 เป็นฟังก์ชันแฮช SHA ที่มีอยู่อย่างแพร่หลายมากที่สุด มีการใช้งานในแอพพลิเคชั่นและโปรโตคอลที่ใช้กันอย่างแพร่หลายรวมถึงการรักษาความปลอดภัย Secure Socket Layer (SSL)
ในปี 2548 มีการค้นพบวิธีการในการเปิดเผยการชนกันของ SHA-1 ภายในกรอบเวลาที่ใช้งานได้จริงทำให้การจ้างงาน SHA-1 เป็นหนี้สงสัยจะสูญในระยะยาว
ตระกูล SHA-2 มีตัวแปร SHA เพิ่มเติมอีกสี่แบบ ได้แก่ SHA-224, SHA-256, SHA-384 และ SHA-512 ขึ้นอยู่กับจำนวนบิตในค่าแฮช ยังไม่มีรายงานการโจมตีที่ประสบความสำเร็จในฟังก์ชันแฮช SHA-2
แม้ว่า SHA-2 จะเป็นฟังก์ชันแฮชที่แข็งแกร่ง แม้ว่าจะแตกต่างกันอย่างมีนัยสำคัญ แต่การออกแบบพื้นฐานยังคงเป็นไปตามการออกแบบของ SHA-1 ดังนั้น NIST จึงเรียกร้องให้มีการออกแบบฟังก์ชันแฮชที่มีการแข่งขันใหม่
ในเดือนตุลาคม 2555 NIST ได้เลือกอัลกอริทึม Keccak เป็นมาตรฐาน SHA-3 ใหม่ Keccak มีประโยชน์มากมายเช่นประสิทธิภาพที่มีประสิทธิภาพและความต้านทานที่ดีสำหรับการโจมตี
RIPEMD
RIPEMD เป็นคำย่อของ RACE Integrity Primitives Evaluation Message Digest ฟังก์ชันแฮชชุดนี้ได้รับการออกแบบโดยชุมชนการวิจัยแบบเปิดและโดยทั่วไปรู้จักกันในชื่อฟังก์ชันแฮชของยุโรป
ชุดประกอบด้วย RIPEMD, RIPEMD-128 และ RIPEMD-160 นอกจากนี้ยังมีอัลกอริทึมรุ่น 256 และ 320 บิต
RIPEMD ดั้งเดิม (128 บิต) ขึ้นอยู่กับหลักการออกแบบที่ใช้ใน MD4 และพบว่ามีความปลอดภัยที่น่าสงสัย RIPEMD เวอร์ชัน 128 บิตมาแทนการแก้ไขอย่างรวดเร็วเพื่อเอาชนะช่องโหว่บน RIPEMD ดั้งเดิม
RIPEMD-160 เป็นเวอร์ชันที่ได้รับการปรับปรุงและเป็นเวอร์ชันที่ใช้กันอย่างแพร่หลายในตระกูล เวอร์ชัน 256 และ 320 บิตช่วยลดโอกาสในการชนกันโดยไม่ได้ตั้งใจ แต่ไม่มีระดับความปลอดภัยที่สูงกว่าเมื่อเทียบกับ RIPEMD-128 และ RIPEMD-160 ตามลำดับ
วังวน
นี่คือฟังก์ชันแฮช 512 บิต
ได้มาจาก Advanced Encryption Standard (AES) เวอร์ชันแก้ไข หนึ่งในผู้ออกแบบคือ Vincent Rijmen ผู้ร่วมสร้าง AES
วังวนสามรุ่นได้รับการเผยแพร่; ได้แก่ WHIRLPOOL-0, WHIRLPOOL-T และ WHIRLPOOL
การใช้ฟังก์ชันแฮช
มีสองแอปพลิเคชันโดยตรงของฟังก์ชันแฮชตามคุณสมบัติการเข้ารหัส
ที่เก็บรหัสผ่าน
ฟังก์ชันแฮชช่วยป้องกันการจัดเก็บรหัสผ่าน
แทนที่จะเก็บรหัสผ่านอย่างชัดเจนกระบวนการล็อกออนส่วนใหญ่จะเก็บค่าแฮชของรหัสผ่านไว้ในไฟล์
ไฟล์รหัสผ่านประกอบด้วยตารางคู่ซึ่งอยู่ในรูปแบบ (รหัสผู้ใช้, h (P))
ขั้นตอนการเข้าสู่ระบบแสดงอยู่ในภาพประกอบต่อไปนี้ -
ผู้บุกรุกจะเห็นเฉพาะแฮชของรหัสผ่านแม้ว่าเขาจะเข้าถึงรหัสผ่านก็ตาม เขาไม่สามารถล็อกออนโดยใช้แฮชและไม่สามารถรับรหัสผ่านจากค่าแฮชได้เนื่องจากฟังก์ชันแฮชมีคุณสมบัติในการต้านทานภาพก่อน
การตรวจสอบความสมบูรณ์ของข้อมูล
การตรวจสอบความสมบูรณ์ของข้อมูลเป็นแอปพลิเคชั่นแฮชที่ใช้กันทั่วไป ใช้เพื่อสร้างเช็คซัมบนไฟล์ข้อมูล แอปพลิเคชั่นนี้ให้การรับรองแก่ผู้ใช้เกี่ยวกับความถูกต้องของข้อมูล
กระบวนการแสดงอยู่ในภาพประกอบต่อไปนี้ -
การตรวจสอบความสมบูรณ์ช่วยให้ผู้ใช้ตรวจพบการเปลี่ยนแปลงใด ๆ ที่เกิดขึ้นกับไฟล์ต้นฉบับ อย่างไรก็ตามไม่ได้ให้การรับรองใด ๆ เกี่ยวกับความเป็นต้นฉบับ ผู้โจมตีแทนที่จะแก้ไขข้อมูลไฟล์สามารถเปลี่ยนทั้งไฟล์และคำนวณแฮชใหม่ทั้งหมดเข้าด้วยกันแล้วส่งไปยังผู้รับ แอปพลิเคชันตรวจสอบความสมบูรณ์นี้มีประโยชน์ก็ต่อเมื่อผู้ใช้แน่ใจเกี่ยวกับความเป็นต้นฉบับของไฟล์
ในบทที่แล้วเราได้กล่าวถึงภัยคุกคามความสมบูรณ์ของข้อมูลและการใช้เทคนิคการแฮชเพื่อตรวจสอบว่ามีการโจมตีดัดแปลงข้อมูลหรือไม่
ภัยคุกคามอีกประเภทหนึ่งที่มีอยู่สำหรับข้อมูลคือการขาด message authentication. ในภัยคุกคามนี้ผู้ใช้ไม่แน่ใจเกี่ยวกับผู้สร้างข้อความ สามารถให้การรับรองความถูกต้องของข้อความได้โดยใช้เทคนิคการเข้ารหัสที่ใช้คีย์ลับเช่นเดียวกับที่ทำในกรณีของการเข้ารหัส
รหัสรับรองความถูกต้องของข้อความ (MAC)
อัลกอริทึม MAC เป็นเทคนิคการเข้ารหัสคีย์สมมาตรเพื่อให้การตรวจสอบข้อความ สำหรับการสร้างกระบวนการ MAC ผู้ส่งและผู้รับจะแชร์คีย์สมมาตร K
โดยพื้นฐานแล้ว MAC คือการตรวจสอบข้อมูลที่เข้ารหัสที่สร้างขึ้นบนข้อความพื้นฐานที่ส่งไปพร้อมกับข้อความเพื่อให้แน่ใจว่ามีการตรวจสอบความถูกต้องของข้อความ
ขั้นตอนการใช้ MAC สำหรับการพิสูจน์ตัวตนมีดังภาพต่อไปนี้ -
ให้เราพยายามทำความเข้าใจกระบวนการทั้งหมดโดยละเอียด -
ผู้ส่งใช้อัลกอริทึม MAC ที่เป็นที่รู้จักทั่วไปป้อนข้อความและคีย์ลับ K และสร้างค่า MAC
เช่นเดียวกับแฮชฟังก์ชัน MAC ยังบีบอัดอินพุตแบบยาวโดยพลการลงในเอาต์พุตที่มีความยาวคงที่ ความแตกต่างที่สำคัญระหว่างแฮชและ MAC คือ MAC ใช้คีย์ลับระหว่างการบีบอัด
ผู้ส่งส่งต่อข้อความพร้อมกับ MAC ในที่นี้เราถือว่าข้อความถูกส่งอย่างชัดเจนเนื่องจากเรากังวลเกี่ยวกับการให้การรับรองความถูกต้องที่มาของข้อความไม่ใช่การรักษาความลับ หากจำเป็นต้องมีการรักษาความลับข้อความจะต้องมีการเข้ารหัส
เมื่อได้รับข้อความและ MAC เครื่องรับจะป้อนข้อความที่ได้รับและคีย์ลับที่ใช้ร่วมกัน K ลงในอัลกอริทึม MAC และคำนวณค่า MAC ใหม่
ขณะนี้เครื่องรับจะตรวจสอบความเท่าเทียมกันของ MAC ที่คำนวณใหม่กับ MAC ที่ได้รับจากผู้ส่ง หากตรงกันแสดงว่าผู้รับยอมรับข้อความและมั่นใจว่าข้อความนั้นถูกส่งโดยผู้ส่งที่ตั้งใจไว้
หาก MAC ที่คำนวณไม่ตรงกับ MAC ที่ส่งโดยผู้ส่งผู้รับจะไม่สามารถระบุได้ว่าเป็นข้อความที่ถูกเปลี่ยนแปลงหรือเป็นต้นทางที่ถูกปลอมแปลง สิ่งที่สำคัญที่สุดผู้รับจะถือว่าข้อความนั้นไม่ใช่ของแท้
ข้อ จำกัด ของ MAC
มีข้อ จำกัด ที่สำคัญสองประการของ MAC ทั้งเนื่องจากลักษณะการทำงานที่สมมาตร -
Establishment of Shared Secret.
สามารถให้การรับรองความถูกต้องของข้อความในหมู่ผู้ใช้ที่ถูกต้องตามกฎหมายที่ตัดสินใจไว้ล่วงหน้าซึ่งมีคีย์ร่วมกัน
ต้องมีการสร้างความลับร่วมกันก่อนใช้ MAC
Inability to Provide Non-Repudiation
การไม่ปฏิเสธเป็นการรับรองว่าผู้สร้างข้อความไม่สามารถปฏิเสธข้อความและข้อผูกพันหรือการกระทำที่ส่งไปก่อนหน้านี้
เทคนิค MAC ไม่ได้ให้บริการแบบไม่ปฏิเสธ หากผู้ส่งและผู้รับเข้าไปเกี่ยวข้องกับข้อพิพาทเกี่ยวกับการสร้างข้อความ MAC จะไม่สามารถพิสูจน์ได้ว่าผู้ส่งเป็นผู้ส่งข้อความ
แม้ว่าบุคคลที่สามจะไม่สามารถคำนวณ MAC ได้ แต่ผู้ส่งก็ยังสามารถปฏิเสธว่าไม่ได้ส่งข้อความและอ้างว่าผู้รับปลอมแปลงเนื่องจากไม่สามารถระบุได้ว่าบุคคลใดในสองฝ่ายคำนวณ MAC
ข้อ จำกัด ทั้งสองนี้สามารถเอาชนะได้โดยใช้ลายเซ็นดิจิทัลที่ใช้คีย์สาธารณะซึ่งกล่าวถึงในส่วนต่อไปนี้
ลายเซ็นดิจิทัลเป็นพื้นฐานของคีย์สาธารณะของการพิสูจน์ตัวตนข้อความ ในโลกทางกายภาพเป็นเรื่องปกติที่จะใช้ลายเซ็นที่เขียนด้วยลายมือในข้อความที่เขียนด้วยลายมือหรือพิมพ์ ใช้เพื่อผูกผู้ลงนามในข้อความ
ในทำนองเดียวกันลายเซ็นดิจิทัลเป็นเทคนิคที่ผูกบุคคล / นิติบุคคลเข้ากับข้อมูลดิจิทัล การผูกนี้สามารถตรวจสอบได้อย่างอิสระโดยผู้รับและบุคคลที่สาม
ลายเซ็นดิจิทัลคือค่าการเข้ารหัสที่คำนวณจากข้อมูลและคีย์ลับที่ผู้ลงนามรู้จักเท่านั้น
ในโลกแห่งความเป็นจริงผู้รับข้อความต้องการความมั่นใจว่าข้อความนั้นเป็นของผู้ส่งและเขาไม่น่าจะปฏิเสธที่มาของข้อความนั้นได้ ข้อกำหนดนี้มีความสำคัญอย่างยิ่งในการใช้งานทางธุรกิจเนื่องจากความเป็นไปได้ที่จะเกิดข้อพิพาทเกี่ยวกับข้อมูลที่แลกเปลี่ยนนั้นสูงมาก
รูปแบบของลายเซ็นดิจิทัล
ดังที่ได้กล่าวไว้ก่อนหน้านี้รูปแบบลายเซ็นดิจิทัลจะขึ้นอยู่กับการเข้ารหัสคีย์สาธารณะ รูปแบบของโครงร่างลายเซ็นดิจิทัลแสดงอยู่ในภาพประกอบต่อไปนี้ -
ประเด็นต่อไปนี้อธิบายกระบวนการทั้งหมดโดยละเอียด -
แต่ละคนที่ใช้โครงการนี้จะมีคู่คีย์สาธารณะและคีย์ส่วนตัว
โดยทั่วไปคู่คีย์ที่ใช้ในการเข้ารหัส / ถอดรหัสและการลงนาม / ยืนยันจะแตกต่างกัน คีย์ส่วนตัวที่ใช้ในการเซ็นชื่อเรียกว่าคีย์ลายเซ็นและคีย์สาธารณะเป็นคีย์ยืนยัน
Signer ดึงข้อมูลไปยังฟังก์ชันแฮชและสร้างแฮชของข้อมูล
จากนั้นค่าแฮชและคีย์ลายเซ็นจะถูกป้อนเข้ากับอัลกอริทึมลายเซ็นซึ่งสร้างลายเซ็นดิจิทัลบนแฮชที่กำหนด ลายเซ็นจะต่อท้ายข้อมูลจากนั้นทั้งสองจะถูกส่งไปยังผู้ยืนยัน
ผู้ตรวจสอบจะป้อนลายเซ็นดิจิทัลและคีย์การยืนยันลงในอัลกอริทึมการตรวจสอบ อัลกอริทึมการตรวจสอบจะให้ค่าบางอย่างเป็นผลลัพธ์
Verifier ยังเรียกใช้ฟังก์ชันแฮชเดียวกันกับข้อมูลที่ได้รับเพื่อสร้างค่าแฮช
สำหรับการตรวจสอบจะเปรียบเทียบค่าแฮชและผลลัพธ์ของอัลกอริทึมการตรวจสอบ จากผลการเปรียบเทียบผู้ตรวจสอบจะตัดสินใจว่าลายเซ็นดิจิทัลถูกต้องหรือไม่
เนื่องจากลายเซ็นดิจิทัลถูกสร้างขึ้นโดยคีย์ "ส่วนตัว" ของผู้ลงนามและไม่มีใครสามารถมีคีย์นี้ได้ ผู้ลงนามไม่สามารถปฏิเสธการลงนามในข้อมูลได้ในอนาคต
ควรสังเกตว่าแทนที่จะเซ็นข้อมูลโดยตรงโดยการลงนามอัลกอริทึมมักจะมีการสร้างแฮชของข้อมูล เนื่องจากการแฮชข้อมูลเป็นการแสดงข้อมูลที่ไม่ซ้ำกันจึงเพียงพอที่จะเซ็นชื่อแฮชแทนข้อมูล เหตุผลที่สำคัญที่สุดของการใช้แฮชแทนข้อมูลโดยตรงสำหรับการลงนามคือประสิทธิภาพของโครงการ
สมมติว่า RSA ถูกใช้เป็นอัลกอริทึมการลงนาม ตามที่กล่าวไว้ในบทการเข้ารหัสคีย์สาธารณะกระบวนการเข้ารหัส / การลงนามโดยใช้ RSA เกี่ยวข้องกับการยกกำลังแบบแยกส่วน
การลงนามข้อมูลขนาดใหญ่ผ่านการยกกำลังแบบแยกส่วนมีค่าใช้จ่ายในการคำนวณและใช้เวลานาน แฮชของข้อมูลเป็นส่วนย่อยของข้อมูลที่ค่อนข้างเล็กดังนั้นsigning a hash is more efficient than signing the entire data.
ความสำคัญของลายเซ็นดิจิทัล
จากพื้นฐานการเข้ารหัสทั้งหมดลายเซ็นดิจิทัลที่ใช้การเข้ารหัสคีย์สาธารณะถือเป็นเครื่องมือที่สำคัญและมีประโยชน์มากในการบรรลุความปลอดภัยของข้อมูล
นอกเหนือจากความสามารถในการให้การไม่ปฏิเสธข้อความแล้วลายเซ็นดิจิทัลยังให้การรับรองความถูกต้องของข้อความและความสมบูรณ์ของข้อมูล ให้เราดูสั้น ๆ ว่าสิ่งนี้ทำได้อย่างไรโดยลายเซ็นดิจิทัล -
Message authentication - เมื่อผู้ยืนยันตรวจสอบลายเซ็นดิจิทัลโดยใช้คีย์สาธารณะของผู้ส่งเขาจะมั่นใจได้ว่าลายเซ็นถูกสร้างขึ้นโดยผู้ส่งที่มีคีย์ส่วนตัวลับที่เกี่ยวข้องเท่านั้นและไม่มีใครอื่น
Data Integrity- ในกรณีที่ผู้โจมตีสามารถเข้าถึงข้อมูลและแก้ไขได้การตรวจสอบลายเซ็นดิจิทัลที่ปลายทางผู้รับจะล้มเหลว แฮชของข้อมูลที่แก้ไขและผลลัพธ์ที่ได้จากอัลกอริทึมการตรวจสอบจะไม่ตรงกัน ดังนั้นผู้รับสามารถปฏิเสธข้อความได้อย่างปลอดภัยโดยถือว่าความสมบูรณ์ของข้อมูลถูกละเมิด
Non-repudiation- เนื่องจากสันนิษฐานว่ามีเพียงผู้ลงนามเท่านั้นที่มีความรู้เกี่ยวกับคีย์ลายเซ็นเขาจึงสามารถสร้างลายเซ็นเฉพาะบนข้อมูลที่กำหนดได้เท่านั้น ดังนั้นผู้รับจึงสามารถนำเสนอข้อมูลและลายเซ็นดิจิทัลแก่บุคคลที่สามเพื่อเป็นหลักฐานหากมีข้อโต้แย้งเกิดขึ้นในอนาคต
ด้วยการเพิ่มการเข้ารหัสคีย์สาธารณะในรูปแบบลายเซ็นดิจิทัลเราสามารถสร้างระบบเข้ารหัสที่สามารถให้องค์ประกอบที่สำคัญ 4 ประการของการรักษาความปลอดภัย ได้แก่ - ความเป็นส่วนตัวการรับรองความถูกต้องความสมบูรณ์และการไม่ปฏิเสธ
การเข้ารหัสด้วยลายเซ็นดิจิทัล
ในการสื่อสารแบบดิจิทัลจำนวนมากควรแลกเปลี่ยนข้อความที่เข้ารหัสมากกว่าข้อความธรรมดาเพื่อให้เกิดการรักษาความลับ ในรูปแบบการเข้ารหัสคีย์สาธารณะคีย์สาธารณะ (การเข้ารหัส) ของผู้ส่งจะพร้อมใช้งานในโดเมนแบบเปิดดังนั้นใคร ๆ ก็สามารถปลอมแปลงตัวตนของเขาและส่งข้อความที่เข้ารหัสไปยังผู้รับได้
สิ่งนี้ทำให้จำเป็นสำหรับผู้ใช้ที่ใช้ PKC ในการเข้ารหัสเพื่อค้นหาลายเซ็นดิจิทัลพร้อมกับข้อมูลที่เข้ารหัสเพื่อให้มั่นใจในการตรวจสอบความถูกต้องของข้อความและการไม่ปฏิเสธ
สิ่งนี้สามารถเก็บถาวรโดยการรวมลายเซ็นดิจิทัลเข้ากับรูปแบบการเข้ารหัส ให้เราพูดคุยสั้น ๆ ว่าจะบรรลุข้อกำหนดนี้ได้อย่างไร มีtwo possibilities, sign-then-encrypt และ encrypt-then-sign.
อย่างไรก็ตามระบบการเข้ารหัสลับที่ใช้การลงชื่อแล้วเข้ารหัสสามารถใช้ประโยชน์จากผู้รับเพื่อปลอมแปลงตัวตนของผู้ส่งและส่งข้อมูลนั้นไปยังบุคคลที่สาม ดังนั้นจึงไม่แนะนำวิธีนี้ กระบวนการเข้ารหัสแล้วลงชื่อมีความน่าเชื่อถือและนำไปใช้อย่างกว้างขวาง นี่คือภาพในภาพประกอบต่อไปนี้ -
ผู้รับหลังจากได้รับข้อมูลที่เข้ารหัสและลายเซ็นแล้วให้ตรวจสอบลายเซ็นโดยใช้คีย์สาธารณะของผู้ส่งก่อน หลังจากตรวจสอบความถูกต้องของลายเซ็นแล้วเขาก็ดึงข้อมูลผ่านการถอดรหัสโดยใช้คีย์ส่วนตัวของเขา
คุณลักษณะที่ชัดเจนที่สุดของ Public Key Infrastructure (PKI) คือการใช้คีย์คู่หนึ่งเพื่อให้ได้บริการความปลอดภัยพื้นฐาน คู่คีย์ประกอบด้วยคีย์ส่วนตัวและคีย์สาธารณะ
เนื่องจากคีย์สาธารณะอยู่ในโดเมนเปิดจึงมีแนวโน้มที่จะถูกใช้ในทางที่ผิด ดังนั้นจึงจำเป็นต้องสร้างและบำรุงรักษาโครงสร้างพื้นฐานที่เชื่อถือได้เพื่อจัดการคีย์เหล่านี้
การจัดการที่สำคัญ
มันเป็นไปโดยไม่ได้บอกว่าความปลอดภัยของระบบเข้ารหัสใด ๆ ขึ้นอยู่กับวิธีการจัดการคีย์ของมันอย่างปลอดภัย หากไม่มีขั้นตอนที่ปลอดภัยสำหรับการจัดการคีย์การเข้ารหัสผลประโยชน์ของการใช้รูปแบบการเข้ารหัสที่เข้มงวดอาจสูญหายไป
เป็นที่สังเกตว่าโครงร่างการเข้ารหัสมักไม่ค่อยมีจุดอ่อนในการออกแบบ อย่างไรก็ตามมักถูกบุกรุกจากการจัดการคีย์ที่ไม่ดี
มีลักษณะสำคัญบางประการของการจัดการที่สำคัญดังต่อไปนี้ -
คีย์การเข้ารหัสไม่ใช่เพียงข้อมูลพิเศษ การจัดการคีย์หมายถึงการดูแลคีย์การเข้ารหัสอย่างปลอดภัย
การจัดการคีย์เกี่ยวข้องกับวงจรชีวิตของคีย์ทั้งหมดตามที่แสดงในภาพประกอบต่อไปนี้ -
มีข้อกำหนดเฉพาะสองประการสำหรับการจัดการคีย์สำหรับการเข้ารหัสคีย์สาธารณะ
Secrecy of private keys. ตลอดวงจรชีวิตของคีย์คีย์ลับจะต้องเป็นความลับจากทุกฝ่ายยกเว้นผู้ที่เป็นเจ้าของและได้รับอนุญาตให้ใช้คีย์ดังกล่าว
Assurance of public keys.ในการเข้ารหัสคีย์สาธารณะคีย์สาธารณะจะอยู่ในโดเมนเปิดและถูกมองว่าเป็นข้อมูลสาธารณะ โดยค่าเริ่มต้นจะไม่มีการรับรองว่าคีย์สาธารณะนั้นถูกต้องหรือไม่สามารถเชื่อมโยงกับใครหรือใช้ทำอะไรได้บ้าง ดังนั้นการจัดการคีย์สาธารณะจึงจำเป็นต้องให้ความสำคัญกับการประกันวัตถุประสงค์ของกุญแจสาธารณะอย่างชัดเจนมากขึ้น
ข้อกำหนดที่สำคัญที่สุดของ 'การประกันกุญแจสาธารณะ' สามารถทำได้ผ่านโครงสร้างพื้นฐานคีย์สาธารณะ (PKI) ซึ่งเป็นระบบการจัดการคีย์สำหรับรองรับการเข้ารหัสคีย์สาธารณะ
โครงสร้างพื้นฐานคีย์สาธารณะ (PKI)
PKI ให้การประกันกุญแจสาธารณะ เป็นการระบุรหัสสาธารณะและการแจกจ่าย กายวิภาคของ PKI ประกอบด้วยส่วนประกอบต่อไปนี้
- Public Key Certificate หรือโดยทั่วไปเรียกว่า 'ใบรับรองดิจิทัล'
- โทเค็นคีย์ส่วนตัว
- ผู้ออกใบรับรอง.
- ผู้มีอำนาจลงทะเบียน.
- ระบบการจัดการใบรับรอง
ใบรับรองดิจิทัล
สำหรับการเปรียบเทียบใบรับรองถือได้ว่าเป็นบัตรประจำตัวที่ออกให้กับบุคคล ผู้คนใช้บัตรประจำตัวประชาชนเช่นใบขับขี่หนังสือเดินทางเพื่อพิสูจน์ตัวตน ใบรับรองดิจิทัลเป็นสิ่งพื้นฐานเดียวกันในโลกอิเล็กทรอนิกส์ แต่มีข้อแตกต่างอย่างหนึ่ง
ใบรับรองดิจิทัลไม่ได้ออกให้เฉพาะกับผู้คนเท่านั้น แต่ยังสามารถออกให้กับคอมพิวเตอร์แพ็คเกจซอฟต์แวร์หรือสิ่งอื่นใดที่ต้องการพิสูจน์ตัวตนในโลกอิเล็กทรอนิกส์
ใบรับรองดิจิทัลเป็นไปตามมาตรฐาน ITU X.509 ซึ่งกำหนดรูปแบบใบรับรองมาตรฐานสำหรับใบรับรองคีย์สาธารณะและการตรวจสอบการรับรอง ดังนั้นบางครั้งใบรับรองดิจิทัลจึงเรียกอีกอย่างว่าใบรับรอง X.509
คีย์สาธารณะที่เกี่ยวข้องกับไคลเอนต์ผู้ใช้จะถูกเก็บไว้ในใบรับรองดิจิทัลโดยหน่วยงานออกใบรับรอง (CA) พร้อมกับข้อมูลอื่น ๆ ที่เกี่ยวข้องเช่นข้อมูลไคลเอนต์วันหมดอายุการใช้งานผู้ออก ฯลฯ
CA ลงนามในข้อมูลทั้งหมดนี้แบบดิจิทัลและรวมลายเซ็นดิจิทัลไว้ในใบรับรอง
ใครก็ตามที่ต้องการความมั่นใจเกี่ยวกับคีย์สาธารณะและข้อมูลที่เกี่ยวข้องของลูกค้าเขาจะดำเนินกระบวนการตรวจสอบลายเซ็นโดยใช้คีย์สาธารณะของ CA การตรวจสอบความถูกต้องจะทำให้มั่นใจได้ว่าคีย์สาธารณะที่ระบุในใบรับรองเป็นของบุคคลที่มีรายละเอียดระบุไว้ในใบรับรอง
ขั้นตอนการขอรับใบรับรองดิจิทัลโดยบุคคล / หน่วยงานแสดงอยู่ในภาพประกอบต่อไปนี้
ตามที่แสดงในภาพประกอบ CA ยอมรับแอปพลิเคชันจากลูกค้าเพื่อรับรองคีย์สาธารณะของเขา CA หลังจากยืนยันตัวตนของลูกค้าอย่างถูกต้องแล้วจะออกใบรับรองดิจิทัลให้กับลูกค้ารายนั้น
หน่วยงานรับรอง (CA)
ตามที่กล่าวไว้ข้างต้น CA จะออกใบรับรองให้กับไคลเอ็นต์และช่วยเหลือผู้ใช้รายอื่นในการตรวจสอบใบรับรอง CA รับผิดชอบในการระบุตัวตนของลูกค้าอย่างถูกต้องเพื่อขอใบรับรองที่จะออกและตรวจสอบให้แน่ใจว่าข้อมูลที่อยู่ในใบรับรองนั้นถูกต้องและลงนามแบบดิจิทัล
หน้าที่หลักของ CA
หน้าที่สำคัญของ CA มีดังนี้ -
Generating key pairs - CA อาจสร้างคู่คีย์โดยอิสระหรือร่วมกับลูกค้า
Issuing digital certificates- CA อาจถูกมองว่าเทียบเท่า PKI ของหน่วยงานหนังสือเดินทาง - CA จะออกใบรับรองหลังจากที่ลูกค้าให้ข้อมูลรับรองเพื่อยืนยันตัวตนของเขา จากนั้น CA จะลงนามในใบรับรองเพื่อป้องกันการแก้ไขรายละเอียดที่มีอยู่ในใบรับรอง
Publishing Certificates- CA จำเป็นต้องเผยแพร่ใบรับรองเพื่อให้ผู้ใช้สามารถค้นหาได้ มีสองวิธีในการบรรลุเป้าหมายนี้ หนึ่งคือการเผยแพร่ใบรับรองในเทียบเท่ากับสมุดโทรศัพท์อิเล็กทรอนิกส์ อีกวิธีหนึ่งคือการส่งใบรับรองของคุณให้กับคนที่คุณคิดว่าอาจต้องการโดยวิธีใดวิธีหนึ่ง
Verifying Certificates - CA ทำให้คีย์สาธารณะพร้อมใช้งานในสภาพแวดล้อมเพื่อช่วยในการตรวจสอบลายเซ็นของเขาในใบรับรองดิจิทัลของลูกค้า
Revocation of Certificates- ในบางครั้ง CA เพิกถอนใบรับรองที่ออกเนื่องจากสาเหตุบางประการเช่นการบุกรุกคีย์ส่วนตัวโดยผู้ใช้หรือการสูญเสียความไว้วางใจในไคลเอนต์ หลังจากการเพิกถอน CA จะเก็บรักษารายการใบรับรองที่ถูกเพิกถอนทั้งหมดที่พร้อมใช้งานสำหรับสภาพแวดล้อม
ประเภทของใบรับรอง
ใบรับรองทั่วไปมีสี่คลาส -
Class 1 - ใบรับรองเหล่านี้สามารถรับได้อย่างง่ายดายโดยการส่งที่อยู่อีเมล
Class 2 - ใบรับรองเหล่านี้จำเป็นต้องให้ข้อมูลส่วนบุคคลเพิ่มเติม
Class 3 - ใบรับรองเหล่านี้สามารถซื้อได้หลังจากมีการตรวจสอบเกี่ยวกับตัวตนของผู้ร้องขอเท่านั้น
Class 4 - อาจใช้โดยรัฐบาลและองค์กรทางการเงินที่ต้องการความไว้วางใจในระดับสูงมาก
หน่วยงานการลงทะเบียน (RA)
CA อาจใช้หน่วยงานจดทะเบียนบุคคลที่สาม (RA) เพื่อดำเนินการตรวจสอบที่จำเป็นเกี่ยวกับบุคคลหรือ บริษัท ที่ขอใบรับรองเพื่อยืนยันตัวตน RA อาจปรากฏต่อไคลเอ็นต์เป็น CA แต่ไม่ได้ลงนามในใบรับรองที่ออกให้
ระบบการจัดการใบรับรอง (CMS)
เป็นระบบการจัดการที่เผยแพร่ใบรับรองระงับชั่วคราวหรือถาวรต่ออายุหรือเพิกถอน โดยปกติระบบการจัดการใบรับรองจะไม่ลบใบรับรองเนื่องจากอาจจำเป็นต้องพิสูจน์สถานะในช่วงเวลาหนึ่งอาจเป็นเพราะเหตุผลทางกฎหมาย CA พร้อมกับ RA ที่เกี่ยวข้องเรียกใช้ระบบการจัดการใบรับรองเพื่อให้สามารถติดตามความรับผิดชอบและหนี้สินของตนได้
โทเค็นคีย์ส่วนตัว
แม้ว่าคีย์สาธารณะของไคลเอ็นต์จะถูกเก็บไว้ในใบรับรอง แต่คีย์ส่วนตัวลับที่เกี่ยวข้องจะถูกเก็บไว้ในคอมพิวเตอร์ของเจ้าของคีย์ โดยทั่วไปไม่ใช้วิธีนี้ หากผู้โจมตีเข้าถึงคอมพิวเตอร์ได้เขาจะสามารถเข้าถึงคีย์ส่วนตัวได้อย่างง่ายดาย ด้วยเหตุนี้คีย์ส่วนตัวจึงถูกเก็บไว้ในการเข้าถึงโทเค็นหน่วยเก็บข้อมูลแบบถอดได้ที่ปลอดภัยซึ่งได้รับการป้องกันด้วยรหัสผ่าน
ผู้ขายหลายรายมักใช้รูปแบบการจัดเก็บที่แตกต่างกันและบางครั้งก็เป็นกรรมสิทธิ์ในการจัดเก็บคีย์ ตัวอย่างเช่น Entrust ใช้รูปแบบ. epf ที่เป็นกรรมสิทธิ์ในขณะที่ Verisign, GlobalSign และ Baltimore ใช้รูปแบบ. p12 มาตรฐาน
ลำดับชั้นของ CA
ด้วยเครือข่ายที่กว้างขวางและข้อกำหนดของการสื่อสารทั่วโลกในทางปฏิบัติจึงเป็นไปไม่ได้ที่จะมี CA ที่เชื่อถือได้เพียงแห่งเดียวซึ่งผู้ใช้ทั้งหมดจะได้รับใบรับรองของตน ประการที่สองความพร้อมใช้งานของ CA เพียงแห่งเดียวอาจทำให้เกิดปัญหาได้หาก CA ถูกบุกรุก
ในกรณีเช่นนี้รูปแบบการรับรองตามลำดับชั้นเป็นที่สนใจเนื่องจากอนุญาตให้ใช้ใบรับรองคีย์สาธารณะในสภาพแวดล้อมที่ผู้สื่อสารสองฝ่ายไม่มีความสัมพันธ์ที่เชื่อถือได้กับ CA เดียวกัน
CA หลักอยู่ที่ด้านบนสุดของลำดับชั้น CA และใบรับรองของ CA หลักเป็นใบรับรองที่ลงนามด้วยตนเอง
CA ซึ่งเป็นรองโดยตรงของ CA ราก (ตัวอย่างเช่น CA1 และ CA2) มีใบรับรอง CA ที่ลงนามโดย CA หลัก
CA ที่อยู่ภายใต้ CA รองในลำดับชั้น (ตัวอย่างเช่น CA5 และ CA6) มีใบรับรอง CA ที่ลงนามโดย CA รองระดับสูงกว่า
ลำดับชั้นของผู้ออกใบรับรอง (CA) จะแสดงในกลุ่มใบรับรอง ห่วงโซ่ใบรับรองจะติดตามเส้นทางของใบรับรองจากสาขาในลำดับชั้นไปยังรากของลำดับชั้น
ภาพประกอบต่อไปนี้แสดงลำดับชั้นของ CA ที่มีห่วงโซ่ใบรับรองที่นำหน้าจากใบรับรองเอนทิตีผ่านใบรับรอง CA รองสองใบ (CA6 และ CA3) ไปยังใบรับรอง CA สำหรับ CA หลัก
การตรวจสอบห่วงโซ่ใบรับรองเป็นกระบวนการในการตรวจสอบว่าห่วงโซ่ใบรับรองเฉพาะนั้นถูกต้องมีการลงนามอย่างถูกต้องและน่าเชื่อถือ ขั้นตอนต่อไปนี้จะตรวจสอบห่วงโซ่ใบรับรองโดยเริ่มจากใบรับรองที่นำเสนอสำหรับการพิสูจน์ตัวตน -
ไคลเอ็นต์ที่มีการตรวจสอบความถูกต้องจะเป็นผู้จัดหาใบรับรองของเขาโดยทั่วไปพร้อมกับสายของใบรับรองจนถึง Root CA
ผู้ตรวจสอบรับใบรับรองและตรวจสอบความถูกต้องโดยใช้คีย์สาธารณะของผู้ออก คีย์สาธารณะของผู้ออกอยู่ในใบรับรองของผู้ออกซึ่งอยู่ในห่วงโซ่ถัดจากใบรับรองของลูกค้า
ตอนนี้หาก CA ที่สูงกว่าซึ่งลงนามในใบรับรองของผู้ออกใบรับรองได้รับความไว้วางใจจากผู้ตรวจสอบการยืนยันจะสำเร็จและหยุดที่นี่
มิฉะนั้นใบรับรองของผู้ออกจะได้รับการตรวจสอบในลักษณะเดียวกันกับที่ทำกับลูกค้าในขั้นตอนข้างต้น กระบวนการนี้จะดำเนินต่อไปจนกว่า CA ที่เชื่อถือได้จะอยู่ระหว่างหรือมิฉะนั้นจะดำเนินต่อไปจนถึง Root CA
ปัจจุบันเครือข่ายได้แพร่หลายไปทั่วโลกและข้อมูลได้อยู่ในรูปแบบดิจิทัลของบิตและไบต์ ปัจจุบันข้อมูลสำคัญได้รับการจัดเก็บประมวลผลและส่งในรูปแบบดิจิทัลบนระบบคอมพิวเตอร์และช่องทางการสื่อสารแบบเปิด
เนื่องจากข้อมูลมีบทบาทสำคัญเช่นนี้ฝ่ายตรงข้ามจึงกำหนดเป้าหมายไปที่ระบบคอมพิวเตอร์และเปิดช่องทางการสื่อสารเพื่อขโมยข้อมูลที่ละเอียดอ่อนหรือทำลายระบบข้อมูลที่สำคัญ
การเข้ารหัสสมัยใหม่มีชุดเทคนิคที่มีประสิทธิภาพเพื่อให้แน่ใจว่าเจตนาร้ายของฝ่ายตรงข้ามจะถูกขัดขวางในขณะเดียวกันก็ทำให้มั่นใจได้ว่าผู้ใช้ที่ถูกต้องจะสามารถเข้าถึงข้อมูลได้ ในบทนี้เราจะพูดถึงประโยชน์ที่เราได้รับจากการเข้ารหัสข้อ จำกัด ตลอดจนอนาคตของการเข้ารหัส
การเข้ารหัส - ประโยชน์
การเข้ารหัสเป็นเครื่องมือรักษาความปลอดภัยข้อมูลที่จำเป็น ให้บริการขั้นพื้นฐานที่สุดสี่อย่างในด้านความปลอดภัยของข้อมูล -
Confidentiality - เทคนิคการเข้ารหัสสามารถป้องกันข้อมูลและการสื่อสารจากการเปิดเผยและการเข้าถึงข้อมูลโดยไม่ได้รับอนุญาต
Authentication - เทคนิคการเข้ารหัสเช่น MAC และลายเซ็นดิจิทัลสามารถป้องกันข้อมูลจากการปลอมแปลงและการปลอมแปลง
Data Integrity - ฟังก์ชันแฮชการเข้ารหัสมีบทบาทสำคัญในการสร้างความมั่นใจให้กับผู้ใช้เกี่ยวกับความสมบูรณ์ของข้อมูล
Non-repudiation - ลายเซ็นดิจิทัลให้บริการไม่ปฏิเสธเพื่อป้องกันข้อพิพาทที่อาจเกิดขึ้นเนื่องจากการปฏิเสธการส่งข้อความโดยผู้ส่ง
บริการพื้นฐานทั้งหมดที่นำเสนอโดยการเข้ารหัสได้ช่วยให้สามารถดำเนินธุรกิจผ่านเครือข่ายโดยใช้ระบบคอมพิวเตอร์ได้อย่างมีประสิทธิภาพและประสิทธิผลสูงสุด
การเข้ารหัส - ข้อเสีย
นอกเหนือจากองค์ประกอบพื้นฐาน 4 ประการของความปลอดภัยของข้อมูลแล้วยังมีประเด็นอื่น ๆ ที่ส่งผลต่อการใช้ข้อมูลอย่างมีประสิทธิภาพ -
ข้อมูลที่เข้ารหัสอย่างเข้มงวดเป็นของจริงและเซ็นชื่อแบบดิจิทัลได้ difficult to access even for a legitimate userในช่วงเวลาสำคัญของการตัดสินใจ เครือข่ายหรือระบบคอมพิวเตอร์อาจถูกโจมตีและไม่สามารถใช้งานได้โดยผู้บุกรุก
High availability,หนึ่งในลักษณะพื้นฐานของการรักษาความปลอดภัยของข้อมูลไม่สามารถมั่นใจได้ผ่านการใช้การเข้ารหัส จำเป็นต้องใช้วิธีการอื่น ๆ เพื่อป้องกันภัยคุกคามเช่นการปฏิเสธการให้บริการหรือการทำลายระบบข้อมูลโดยสมบูรณ์
ความต้องการพื้นฐานอีกประการหนึ่งของการรักษาความปลอดภัยข้อมูลของ selective access controlยังไม่สามารถรับรู้ได้ด้วยการใช้การเข้ารหัส การควบคุมและขั้นตอนการบริหารจำเป็นต้องใช้เช่นเดียวกัน
การเข้ารหัสไม่ได้ป้องกันช่องโหว่และ threats that emerge from the poor design of systems,โปรโตคอลและขั้นตอน สิ่งเหล่านี้จำเป็นต้องได้รับการแก้ไขโดยการออกแบบที่เหมาะสมและการตั้งค่าโครงสร้างพื้นฐานการป้องกัน
การเข้ารหัสมีค่าใช้จ่าย ต้นทุนอยู่ในรูปของเวลาและเงิน -
การเพิ่มเทคนิคการเข้ารหัสในการประมวลผลข้อมูลทำให้เกิดความล่าช้า
การใช้การเข้ารหัสคีย์สาธารณะจำเป็นต้องมีการตั้งค่าและบำรุงรักษาโครงสร้างพื้นฐานคีย์สาธารณะซึ่งต้องใช้งบประมาณทางการเงินที่ดี
ความปลอดภัยของเทคนิคการเข้ารหัสขึ้นอยู่กับความยากลำบากในการคำนวณของปัญหาทางคณิตศาสตร์ ความก้าวหน้าใด ๆ ในการแก้ปัญหาทางคณิตศาสตร์ดังกล่าวหรือการเพิ่มพลังในการประมวลผลอาจทำให้เทคนิคการเข้ารหัสมีช่องโหว่
อนาคตของการเข้ารหัส
Elliptic Curve Cryptography(ECC) ได้ถูกคิดค้นขึ้นแล้ว แต่ยังไม่เข้าใจข้อดีและข้อเสีย ECC ช่วยให้สามารถเข้ารหัสและถอดรหัสได้ในเวลาที่น้อยลงอย่างมากจึงทำให้สามารถส่งผ่านข้อมูลจำนวนมากขึ้นด้วยความปลอดภัยที่เท่าเทียมกัน อย่างไรก็ตามในฐานะวิธีการเข้ารหัสอื่น ๆ ECC จะต้องได้รับการทดสอบและพิสูจน์ความปลอดภัยก่อนที่จะได้รับการยอมรับสำหรับการใช้งานในภาครัฐเชิงพาณิชย์และส่วนตัว
Quantum computationคือปรากฏการณ์ใหม่ ในขณะที่คอมพิวเตอร์สมัยใหม่จัดเก็บข้อมูลโดยใช้รูปแบบไบนารีที่เรียกว่า "บิต" ซึ่งสามารถจัดเก็บ "1" หรือ "0" ได้ คอมพิวเตอร์ควอนตัมเก็บข้อมูลโดยใช้การซ้อนทับทางควอนตัมของหลายสถานะ สถานะที่มีค่าต่างๆเหล่านี้จะถูกเก็บไว้ใน "ควอนตัมบิต" หรือ "ควิท" สิ่งนี้ช่วยให้การคำนวณตัวเลขมีขนาดหลายลำดับได้เร็วกว่าโปรเซสเซอร์ทรานซิสเตอร์แบบเดิม
เพื่อให้เข้าใจถึงพลังของคอมพิวเตอร์ควอนตัมให้พิจารณา RSA-640 ซึ่งเป็นตัวเลขที่มี 193 หลักซึ่งสามารถคำนวณได้ด้วยคอมพิวเตอร์ 2.2GHz แปดสิบเครื่องในช่วง 5 เดือนคอมพิวเตอร์ควอนตัมหนึ่งเครื่องจะแยกตัวประกอบภายในเวลาน้อยกว่า 17 วินาที ตัวเลขที่โดยทั่วไปจะใช้เวลาหลายพันล้านปีในการคำนวณอาจใช้เวลาเพียงไม่กี่ชั่วโมงหรือหลายนาทีด้วยคอมพิวเตอร์ควอนตัมที่พัฒนาเต็มที่
ในมุมมองของข้อเท็จจริงเหล่านี้การเข้ารหัสสมัยใหม่จะต้องมองหาปัญหาที่ยากขึ้นในการคำนวณหรือคิดค้นเทคนิคใหม่ ๆ ในการจัดเก็บเป้าหมายที่ใช้ในปัจจุบันโดยการเข้ารหัสสมัยใหม่