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