one-time pad ความ ลับที่สมบูรณ์แบบ หากใช้งานอย่างเหมาะสม

one-time pad (OTP) เป็นอัลกอริธึมการเข้ารหัสที่ให้ ความ ลับที่สมบูรณ์แบบ หากใช้งานอย่างเหมาะสม แป้น ซึ่งโดยพื้นฐานแล้วเป็นคีย์ที่มีความยาวเท่ากับข้อความ จะต้องใช้เพียงครั้งเดียว (ดังนั้นชื่อนี้) จึงเก็บเป็นความลับ และส่วนที่ยากจะสร้างขึ้นโดยใช้วิธีการสุ่มอย่างแท้จริง มันทำงานโดยXORการรวมแพดและข้อความเข้าด้วยกัน ซึ่งทำให้ไซเฟอร์เท็กซ์แยกไม่ออกจากข้อมูลที่สร้างขึ้นแบบสุ่ม

ฉันต้องการให้ชัดเจนกับข้อกำหนดที่นี่ แผ่นแบบครั้งเดียวไม่ใช่ “สุ่ม” ตัวเลขไม่สุ่ม ไม่ใช่แค่จำนวนทรัพย์สินเท่านั้นที่สามารถมีได้ เพื่อความอวดรู้ สิ่งที่สุ่มคือวิธีการสร้างตัวเลข คิดว่า “ตัวสร้างตัวเลขสุ่ม” ไม่ใช่ “ตัวสร้างตัวเลขสุ่ม”

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

โดยทั่วไป ทั้งสองฝ่ายที่ต้องการสื่อสารโดยใช้แพดแบบใช้ครั้งเดียวจะแลกเปลี่ยนแพดขนาดใหญ่ เช่น ซีดีที่เต็มไปด้วยข้อมูลที่สร้างขึ้นแบบสุ่มก่อนที่ฝ่ายใดฝ่ายหนึ่งจะเดินทางไปที่อื่น เช่น ประเทศอื่น ซึ่งข้อมูลต้องถูกส่งกลับอย่างปลอดภัย . เมื่อมีการใช้ไบต์จากแพด ไบต์เหล่านั้นจะถูกทำลายและไม่ถูกนำมาใช้อีก หากแพดมีความยาว 100kB จะสามารถส่งข้อมูลได้สูงสุด 100kB เท่านั้นอย่างปลอดภัย เช่นเดียวกับรูปแบบการเข้ารหัสส่วนใหญ่ การจัดการคีย์เป็นหนึ่งในส่วนที่ยากที่สุด

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

สมมติว่าคุณมีไฟล์ข้อมูลแบบสุ่มrandom.dataเป็นแพดแบบใช้ครั้งเดียวเพื่อใช้ในการเข้ารหัสซอร์สโค้ดสำหรับโปรแกรมนี้

otp สุ่มข้อมูล < otp.c > otp.c.otp

หากคุณแชร์แพดrandom.dataกับเพื่อนซึ่งคุณกำลังพยายามสื่อสารด้วย เธอสามารถถอดรหัสมันได้ด้วยคำสั่งที่คล้ายกัน

otp สุ่มข้อมูล < otp.c.otp > otp.c

random.dataมีขนาดเพียง 207kB ดังนั้นข้อความของคุณจะยาวกว่านั้นไม่ได้ นอกจากนี้ เมื่อส่ง 207kB แล้ว คุณต้องเปลี่ยนแพดใหม่ก่อนที่จะส่งไซเฟอร์เท็กซ์เพิ่มเติมได้ หากคุณนำแพดของคุณกลับมาใช้ใหม่ แสดงว่าคุณประนีประนอมต่อความปลอดภัยของไซเฟอร์เท็กซ์ใหม่และไซเฟอร์เท็กซ์เก่า one-time pad

เหตุผลที่ฉันระบุตัวเลือกที่สองคือ: คุณสามารถใช้งาน/dev/randomได้โดยตรงโดยไม่ทำแผ่นรองหาย (สมมติว่าคุณมีระบบปฏิบัติการที่มีเครื่องหมาย/dev/randomเหมือนกับระบบปฏิบัติการทั่วไปทุกประการ)

#เข้ารหัส
otp /dev/random Random.pad < otp.c > otp.c.otp

#ถอดรหัส
otp random.pad < otp.c.opt > otp.c

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

เพิ่มเติมเกี่ยวกับแผ่นแบบใช้ครั้งเดียวต่อไป โดยเฉพาะอย่างยิ่งฉันจะนำเสนอเคล็ดลับสองประการ: วิธีที่ได้ผลและวิธีที่ไม่ได้ผล

ใน โพสต์ ที่ แล้ว ฉันได้พูดถึงแผ่นแบบใช้ครั้งเดียว ข้อมูลสำหรับโพสต์นี้มาจาก Applied Cryptography ของ Bruce Schneier (ส่วนที่ 10.8)

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

เรามีแผ่นแบบใช้ครั้งเดียวKข้อความธรรมดา ข้อความธรรมดาPจำลอง (ภาพอนาจารหรือจดหมายรัก) Dคีย์จำลองK'และข้อความCเข้ารหัส ด้านล่าง ฉันแสดง XOR ด้วย^.

ในการเข้ารหัสข้อความธรรมดาของเรา ซึ่งเป็นอัลกอริทึมแพดแบบใช้ครั้งเดียวตามปกติ

P ^ K = C

Bob และ Alice ใช้ K ร่วมกัน ดังนั้นการถอดรหัสจึงทำงานเหมือน

C^K = พี

อย่างไรก็ตาม ตำรวจลับมาพร้อมกับ ตะปูควง ของพวกเขา และเรียกร้องให้อลิซและบ็อบมอบแผ่นรองแบบใช้ครั้งเดียวให้พวกKเขา พวกเขาจะจัดหาให้K'แทน K ถูกกำหนดอย่างไร? แบบนี้,

K' = C^D

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

C^K' = C^C^D = D

“เห็นไหม เราแค่เก็บเรื่องรัก ๆ ใคร่ ๆ ไว้เป็นความลับจากคู่ครองของเรา!”

Face-sso (By K&O) หากท่านสนใจ เครื่องสแกนใบหน้ารุ่นต่างๆ หลากหลายรุ่น หรือ ติดตั้งระบบสแกนใบหน้า สามารถติดต่อสอบถามได้โดยตรง เรามีแอดมินคอยคอบคำถาม 24 ชั้วโมงที่ Line OA เครื่องสแกนใบหน้า สามารถ ขอราคาพิเศษได้ ตามงบประมาณที่เหมาะสม สอบถามได้สบายใจทั้ง เรื่องค่าบริการ ราคา และ งบประมาณ มั่นใจเพราะเป็นราคาที่สุด คุ้มค่าที่สุด

หากท่านมีความสนใจ บทความ หรือ Technology สามารถติดต่อได้ตามเบอร์ที่ให้ไว้ด้านล่างนี้
Tel.086-594-5494
Tel.095-919-6699

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *