Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม

Hill Cipher เสี่ยงต่อการโจมตีด้วยข้อความธรรมดาที่เลือกได้อย่างไร


Hill Cipher คือรหัสตัวเลขหลายตัวอักษรที่คิดค้นโดย Lester S. Hill cipher เป็นระบบการเข้ารหัสโดยการรวมแนวคิดของเมทริกซ์เข้ากับแนวทางของความสอดคล้องเชิงเส้นในระยะของการเข้ารหัสข้อความธรรมดาเป็นข้อความเข้ารหัสและถอดรหัสข้อความลับให้เป็นข้อความธรรมดา

Hill Cipher ไม่ได้กู้คืนตัวอักษรเดียวกันแต่ละตัวในข้อความธรรมดาด้วยตัวอักษรเดียวกันในข้อความเข้ารหัส เนื่องจากช่วยการคูณเมทริกซ์ด้วยการเข้ารหัสและถอดรหัส Hill Cipher ซึ่งเป็นรหัสลับแบบหลายตัวอักษรสามารถจัดประเภทเป็นรหัสบล็อกได้ เนื่องจากข้อความที่จะจัดการจะถูกแบ่งออกเป็นบล็อกที่มีขนาดเฉพาะ

อักขระแต่ละตัวในบล็อกเดียวจะส่งผลต่ออักขระอื่นๆ ในขั้นตอนการเข้ารหัสและถอดรหัส เพื่อไม่ให้อักขระที่คล้ายคลึงกันถูกแมปกับอักขระที่คล้ายคลึงกัน

Hill Cipher มีอยู่ในอัลกอริธึมการเข้ารหัสแบบคลาสสิกซึ่ง cryptanalysts นั้นซับซ้อนมากในการแก้ปัญหาหากเสร็จสิ้นโดยการทำความเข้าใจไฟล์ ciphertext เท่านั้น อย่างไรก็ตาม วิธีการนี้สามารถแก้ไขได้ค่อนข้างง่าย หากโปรแกรมเข้ารหัสลับมีไฟล์ข้อความเข้ารหัสและองค์ประกอบของไฟล์ข้อความธรรมดา เทคนิคการเข้ารหัสนี้เรียกว่าการโจมตีแบบข้อความธรรมดาที่ทราบ

พื้นฐานของ Hill Cipher ต้องการเทคนิคการคูณเมทริกซ์และเทคนิคผกผันสำหรับเมทริกซ์ สิ่งสำคัญสำหรับ Hill Cipher คือเมทริกซ์ n x n โดย n คือขนาดบล็อก

เมทริกซ์ K ที่กลายเป็นคีย์นี้ควรเป็นเมทริกซ์แบบกลับด้าน ซึ่งมี K-1 ผกผัน ดังนั้นคีย์ควรมีอินเวอร์สเนื่องจากเมทริกซ์ K-1 เป็นคีย์ที่ใช้ในการถอดรหัส

ขั้นตอนของ Hill Cipher มีดังนี้ -

  • ในรูปแบบ Hill Cipher ข้อความธรรมดาจะแบ่งออกเป็นบล็อคที่มีขนาดเท่ากัน

  • บล็อกจะถูกเข้ารหัสทีละตัวเพื่อให้อักขระแต่ละตัวในบล็อกมีการเข้ารหัสอักขระใหม่ในบล็อก

  • ในการเข้ารหัสแบบ Hill Cipher คีย์คือเมทริกซ์สี่เหลี่ยมจัตุรัสขนาด m x m โดยที่ m กำหนดขนาดของบล็อก หากสามารถเรียกคีย์เมทริกซ์ K ได้ ซึ่งอธิบายเป็น -

    $$\mathrm{K=\begin{bmatrix} K_{11} &K_{12} &K_{1m} \\ K_{21}&K_{22}&K_{2m}\\ K_{31} &K_ {32}&K_{3m}\\ \end{bmatrix}}$$

  • หากมีอักขระ m ตัวในบล็อกข้อความธรรมดา นั่นคือ P1 ,P2 … น อักขระที่เกี่ยวข้องในบล็อกข้อความเข้ารหัสคือ C1 ,C2 … Cm จะถูกกำหนดโดยสมการต่อไปนี้ -

    $$\mathrm{C_{1}=P_{1}\, K_{11}+P_{2}\, K_{12}+P_{3}\, K_{13}\:mod\:26}$ $

    $$\mathrm{C_{2}=P_{1}\, K_{21}+P_{2}\, K_{22}+P_{3}\, K_{23}\:mod\:26}$ $

    $$\mathrm{C_{3}=P_{1}\, K_{31}+P_{2}\, K_{32}+P_{3}\, K_{33}\:mod\:26}$ $

  • สมการเหล่านี้สามารถกำหนดได้ในรูปของเมทริกซ์คอลัมน์ -

    $$\mathrm{\begin{pmatrix} C_{1} \\ C_{2} \\ C_{3} \end{pmatrix}=\begin{pmatrix} K_{11} &K_{12} &K_{13} \\ K_{21} &K_{22} &K_{23} \\ K_{31} &K_{32} &K_{33} \\ \end{pmatrix} \begin{pmatrix} P_{1} \\ P_{2} \\ P_{3} \end{pmatrix} \:mod\:26}$$

  • โดยทั่วไป ตัวเลขเชิงเนิน สามารถกำหนดสมการได้ดังนี้ −

    $$\mathrm{C\:=\:K\, P\:mod\:26}$$

    $$\mathrm{P\:=\:K^{-1}\, C\:mod\:26}$$

  • Hill Cipher สามารถถูกทำลายได้ง่ายๆ ด้วยการโจมตีแบบข้อความธรรมดาที่เป็นที่รู้จัก สมมติว่ามันสามารถมีข้อความธรรมดา ciphertext คู่แต่ละความยาว m เช่นนั้น

    $$\mathrm{C_{i}\, =\, K\, P_{i}\:for\:1\leq i\leq m}$$

  • เมทริกซ์คีย์ที่ไม่รู้จัก K สามารถคำนวณได้เป็น −

    $$\mathrm{K=C_{i}\:P_{i}^{-1}}$$

    และเมื่อคำนวณคีย์แล้ว ก็หักได้ง่าย