อ่าน 2 นาที
ไอแซค (รหัสลับ)
ISAAC ( การอ้อม การเลื่อน การสะสม การบวก และการนับ ) เป็น ตัวสร้างเลขสุ่มเทียมที่มีความปลอดภัยทางด้านการเข้ารหัส และเป็น รหัสสตรีม ที่ออกแบบโดย Robert J. Jenkins Jr.
ไอแซค (รหัสลับ)
ISAAC ( การอ้อม การเลื่อน การสะสม การบวก และการนับ ) เป็นตัวสร้างเลขสุ่มเทียมที่มีความปลอดภัยทางด้านการเข้ารหัสและเป็นรหัสสตรีมที่ออกแบบโดยRobert J. Jenkins Jr.ในปี 1993 [ 1 ]ซอร์สโค้ด การ ใช้งานอ้างอิง ถูกมอบให้แก่สาธารณะ[ 2 ]
"ฉันได้พัฒนา (...) การทดสอบเพื่อทำลายเครื่องกำเนิดไฟฟ้า และฉันได้พัฒนาเครื่องกำเนิดไฟฟ้าเพื่อให้ผ่านการทดสอบ เครื่องกำเนิดไฟฟ้านั้นคือ ISAAC" [ 3 ]
การดำเนินการ
อัลกอริทึม ISAAC มีความคล้ายคลึงกับRC4โดยใช้อาร์เรย์ ของ จำนวนเต็มสี่ไบต์จำนวน 256 ตัวเป็นสถานะภายใน และเขียนผลลัพธ์ลงในอาร์เรย์จำนวนเต็มสี่ไบต์อีก 256 ตัว จากนั้นจึงอ่านค่าทีละค่าจนกว่าจะว่างเปล่า แล้วจึงคำนวณใหม่ การคำนวณประกอบด้วยการเปลี่ยนแปลง ค่า iด้วยค่า ( i ⊕ 128) สองค่าจากอาร์เรย์สถานะที่ได้จากการอ้างอิงทางอ้อม ตัวสะสม และตัวนับ สำหรับค่าi ทุกค่า ตั้งแต่ 0 ถึง 255 เนื่องจากใช้การดำเนินการ 32 บิตเพียงประมาณ 19 ครั้งต่อคำเอาต์พุต 32 บิต จึงทำงานได้เร็วมากบนคอมพิวเตอร์ 32 บิต
การวิเคราะห์รหัส
Marina Pudovkina (2001) ได้ทำการวิเคราะห์การเข้ารหัส[ 4 ]การโจมตีของเธอสามารถกู้คืนสถานะเริ่มต้นได้ด้วยความซับซ้อนที่ประมาณว่าน้อยกว่าเวลาที่จำเป็นสำหรับการค้นหาผ่านรากที่สองของสถานะเริ่มต้นที่เป็นไปได้ทั้งหมด ในทางปฏิบัติหมายความว่าการโจมตีต้องการแทนที่จะเป็นผลลัพธ์นี้ไม่มีผลกระทบในทางปฏิบัติต่อความปลอดภัยของ ISAAC [ 5 ]
ในปี 2549 Jean-Philippe Aumasson ค้นพบชุดสถานะที่อ่อนแอหลายชุด[ 6 ]ชุดสถานะที่อ่อนแอชุดที่สี่ (และเล็กที่สุด) ที่นำเสนอจะนำไปสู่เอาต์พุตที่มีอคติสูงสำหรับรอบแรกของ ISAAC และอนุญาตให้มีการอนุมานสถานะภายใน ซึ่งคล้ายกับจุดอ่อนใน RC4ยังไม่ชัดเจนว่าผู้โจมตีสามารถบอกได้จากเอาต์พุตเพียงอย่างเดียวหรือไม่ว่าตัวสร้างอยู่ในสถานะที่อ่อนแอเหล่านี้หรือไม่ เขายังแสดงให้เห็นว่าการโจมตีครั้งก่อน[ 7 ]มีข้อบกพร่อง เนื่องจาก การโจมตี Paul - Preneelนั้นใช้พื้นฐานจากอัลกอริทึมที่ผิดพลาดมากกว่า ISAAC จริง มีการเสนอ ISAAC เวอร์ชันปรับปรุงใหม่ที่เรียกว่า ISAAC+ [ 5 ]
การใช้งานนอกเหนือจากการเข้ารหัส
การใช้งาน ISAAC จำนวนมากนั้นเร็วมากจนสามารถแข่งขันกับ PRNG ความเร็วสูงอื่นๆ ได้ แม้กระทั่งกับ PRNG ที่ออกแบบมาเพื่อความเร็วเป็นหลัก ไม่ใช่เพื่อความปลอดภัย มีเพียงไม่กี่เครื่องกำเนิดที่มีคุณภาพและความเร็วสูงเช่นนี้ที่ใช้งานอยู่ ISAAC ถูกใช้ในเครื่องมือshred ของ Unix เพื่อเขียนทับข้อมูลอย่างปลอดภัย[ 8 ]
นอกจากนี้ อัลกอริทึม ISAAC ยังถูกนำไปใช้ในไลบรารี Java Apache Commons Math [ 9 ]และในNetHackสำหรับ RNG [ 10 ]
ลิงก์ภายนอก
- เว็บไซต์อย่างเป็นทางการของ ISAAC
- มีการใช้งาน ISAAC หลายรูปแบบที่ Rosetta Code
- พอร์ต Pascal/Delphi
- Math::Random::ISAACเป็นโมดูล Perl ที่นำอัลกอริทึมนี้มาใช้
- isaac.jsซึ่งเป็นการใช้งาน JavaScript
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ ไอแซค (รหัสลับ)
ISAAC ( การอ้อม การเลื่อน การสะสม การบวก และการนับ ) เป็น ตัวสร้างเลขสุ่มเทียมที่มีความปลอดภัยทางด้านการเข้ารหัส และเป็น รหัสสตรีม ที่ออกแบบโดย Robert J. Jenkins Jr.
การดำเนินการ
อัลกอริทึม ISAAC มีความคล้ายคลึงกับ RC4 โดยใช้ อาร์เรย์ ของ จำนวนเต็ม สี่ไบต์จำนวน 256 ตัวเป็นสถานะภายใน และเขียนผลลัพธ์ลงในอาร์เรย์จำนวนเต็มสี่ไบต์อีก 256 ตัว จากนั้นจึงอ่านค่าทีละค่าจนกว่าจะว่างเปล่า แล้วจึงคำนวณใหม่ การคำนวณประกอบด้วยการเปลี่ยนแปลง ค่า i...
การวิเคราะห์รหัส
Marina Pudovkina (2001) ได้ทำการวิเคราะห์ การเข้ารหัส [ 4 ] การโจมตีของเธอสามารถกู้คืนสถานะเริ่มต้นได้ด้วยความซับซ้อนที่ประมาณว่าน้อยกว่าเวลาที่จำเป็นสำหรับการค้นหาผ่านรากที่สองของสถานะเริ่มต้นที่เป็นไปได้ทั้งหมด...
การใช้งานนอกเหนือจากการเข้ารหัส
การใช้งาน ISAAC จำนวนมากนั้นเร็วมากจนสามารถแข่งขันกับ PRNG ความเร็วสูงอื่นๆ ได้ แม้กระทั่งกับ PRNG ที่ออกแบบมาเพื่อความเร็วเป็นหลัก ไม่ใช่เพื่อความปลอดภัย มีเพียงไม่กี่เครื่องกำเนิดที่มีคุณภาพและความเร็วสูงเช่นนี้ที่ใช้งานอยู่ ISAAC ถูกใช้ในเครื่องมือ shred...