โปรโตคอลการเข้ารหัสต้องมี:
- อัลกอริทึมบางอย่าง (สาธารณะ) ซึ่งอธิบายสิ่งที่ต้องทำ (ขึ้นอยู่กับอัลกอริทึมลับจะเรียกว่า "ความปลอดภัยโดยความสับสน" และมักจะถูกละทิ้งว่าไม่ปลอดภัยโดยเนื้อแท้)
- ข้อมูลลับบางอย่าง (เช่น หนึ่งหรือหลายคีย์)
เพื่อให้ใช้งานได้จริง พื้นที่คีย์จะต้องมีขนาดใหญ่พอที่จะทำให้การโจมตีด้วยกำลังเดรัจฉาน (โดยเฉพาะอย่างยิ่งเมื่อทราบอัลกอริทึมที่สมบูรณ์) เป็นไปไม่ได้
สิ่งสำคัญคือต้องระลึกไว้เสมอว่าเมื่อนึกถึงระบบเข้ารหัสลับเช่นนี้ ปัญหาของ "การสูญเสียความลับ" นั้นอยู่นอกขอบเขต นั่นคือความลับควรจะเป็น จริงๆ ความลับ คุณสามารถและต้องถือว่าผู้โจมตีทำ ไม่ รู้ความลับก่อนที่จะเริ่มการโจมตีของเขา
เนื้อหาที่ปลอดภัยที่สุดและในขณะเดียวกันอัลกอริทึมเล็กน้อยคือการใช้แผ่นครั้งเดียว เช่น ความลับคือจำนวนเต็ม (อาจมาก) และอัลกอริทึมง่ายๆ ก็คือการ XOR ความลับและข้อความธรรมดาสำหรับการเข้ารหัส และ XOR ความลับและข้อความเข้ารหัสสำหรับการถอดรหัส
สิ่งนี้สามารถใช้กับวัตถุท้องฟ้าได้:
- กุญแจสำคัญคือ ID ของดาว
- อัลกอริทึม:
- มีกระแสข้อมูลรหัสลับแบบแบนด์วิธที่ส่งตลอดเวลาในบล็อกขนาดคงที่ สมมติว่าการถ่ายโอนนี้ทำงานได้ดีพอสมควร เช่น ไม่มีการหยุดชั่วคราวที่สำคัญ และเวลาแฝงที่ทราบคร่าวๆ
- ทั้งผู้ส่งและผู้รับตรวจสอบดาวอย่างต่อเนื่องและดึงบิตสุ่มจากมันในรูปแบบหรือรูปแบบบางอย่าง ฉันไม่รู้ว่ามีการวัดเชิงปฏิบัติที่ใช้ได้จริงในปัจจุบันหรือไม่ แต่ใครจะจินตนาการได้ว่าความสว่างของดาวบางดวง "กะพริบ" มากพอที่จะดึงดูดบางสิ่งจากมัน
- ผู้ส่งจะเก็บ XORing บล็อกข้อความธรรมดาถัดไปไว้ ตรวจสอบผลรวมและเสริมตามความยาวที่ต้องการ ด้วยบิตสุ่มแบบเรียลไทม์ชุดปัจจุบัน (เช่น แพดแบบครั้งเดียว) และส่ง
- เครื่องรับถอดรหัสสิ่งนี้โดยใช้การดำเนินการ XOR เดียวกัน เพื่อความปลอดภัยมากขึ้นเล็กน้อยจากปัญหาเรื่องเวลา มันสามารถเก็บ N-time-pads ตัวสุดท้ายไว้รอบๆ และลองถอดรหัสด้วยทั้งหมด ด้วยการตรวจสอบผลรวมและพิจารณาว่า XOR เร็วแค่ไหน มีความเป็นไปได้ที่จะมีหน้าต่างเลื่อนของแผ่นรองเพื่อค้นหาอันที่ถูกต้อง
ความแข็งแกร่งของอัลกอริทึมขึ้นอยู่กับว่ามีดาวที่เป็นไปได้มากพอที่จะเลือกหรือไม่ และการวัดนั้นยากพอที่ผู้โจมตีจะสแกนดาวจำนวนมากในคราวเดียวเป็นไปไม่ได้
คุณมีความคิดพื้นฐานเกี่ยวกับวิธีการใช้วัตถุท้องฟ้าในการเข้ารหัส ในตอนท้ายของวัน การสร้างบิตสุ่มอย่างแท้จริงจะเกิดขึ้น และคุณไม่ต้องการเวลาด้วยซ้ำหากคุณมีการเชื่อมต่ออย่างต่อเนื่อง คุณสามารถปรับแต่งสิ่งนี้ได้ตามต้องการ นั่นคือ คุณสามารถหลีกเลี่ยงการส่ง ciphertext อย่างต่อเนื่องหากคุณมีแหล่งเวลาที่ใช้ร่วมกันบางประเภท (และจำเป็นต้องซิงค์โดยประมาณเท่านั้น ทั้งนี้ขึ้นอยู่กับพื้นที่บัฟเฟอร์ที่คุณต้องการใช้สำหรับบิตของคุณ) มีปัญหาในทางปฏิบัติมากมายที่ต้องแก้ไข (เช่น วิธีสร้างบิตที่ทำซ้ำได้ตั้งแต่แรก การหลีกเลี่ยงการเปลี่ยนเฟสเนื่องจากความแตกต่างเล็กน้อย เป็นต้น) แต่โดยหลักการแล้วไม่สามารถแก้ไขได้