Score:1

อัลกอริทึมการเข้ารหัสที่ใช้แฮชนี้จะใช้งานได้ในทางทฤษฎีหรือไม่

ธง bf

ฉันเพิ่งคิดเกี่ยวกับเรื่องนี้และดูเหมือนจะไม่พบสิ่งใดในออนไลน์

ดังนั้นความคิดของฉันคือ:

การสร้างคีย์สุ่มที่มีความยาว จากนั้นแฮชคีย์นี้ด้วย SHA256 (หรือการรักษาความปลอดภัยที่คล้ายกัน) จากนั้นวนซ้ำแต่ละไบต์ของแฮชและแต่ละไบต์ของข้อความ และดำเนินการ XOR กับทั้งสองไบต์เหล่านี้ สร้างไบต์ใหม่ จากนั้นร้อยไบต์ใหม่เหล่านี้เข้าด้วยกันเพื่อสร้างข้อความเข้ารหัส สิ่งนี้สามารถย้อนกลับได้ง่ายหากคุณรู้รหัส

คำถามของฉัน:

สิ่งนี้จะปลอดภัยแค่ไหน? ข้อพิจารณาอื่น ๆ ? คำแนะนำในการปรับปรุงระบบ?

ขอบคุณ!

kelalaka avatar
in flag
คุณกำลังค้นหาโหมด CTR มาตรฐาน [1979](https://ee.stanford.edu/~hellman/publications/32.pdf) โหมด CTR ได้รับการออกแบบมาสำหรับ PRF ให้ $H$ เป็นฟังก์ชันแฮชที่ปลอดภัย $$H(k||เคาน์เตอร์_0) || F(k||เคาน์เตอร์_1) || \ldots || F(k||counter_m)$$ สร้างสตรีมที่ปลอดภัยเพื่อให้สามารถเข้ารหัส x- หรือข้อความได้ สิ่งเหล่านี้ให้ [ข้อดีมากมายและข้อเสียบางประการ](https://crypto.stackexchange.com/q/85571/18298) ด้วย
Score:0
ธง cn

นี่เทียบเท่ากับ Vigenere อย่างสมบูรณ์ด้วยขนาดของกุญแจ $256$ (และ Vigenere Key จะแฮชคีย์ของคุณ) แล้วมันไม่ปลอดภัยเลย

ตัวอย่างเช่น สมมติว่าฉันรู้ข้อความ 256 บิตแรกของคุณ จึงจะอนุมานได้เต็มที่ $h(k)$.

และแม้แต่ฉันก็ไม่รู้ $k$ฉันสามารถเรียกคืนข้อความทั้งหมดได้

แน่นอนถ้าคุณข้อความตรง $256$ บิต คุณมีความปลอดภัยที่สมบูรณ์แบบ (เป็นแพดแบบใช้ครั้งเดียว)

theflamingtiger avatar
bf flag
สิ่งนี้จะมีผลเช่นกันหากข้อความน้อยกว่า 256 บิตใช่ไหม
Ievgeni avatar
cn flag
ใช่ แต่คำถามก็เกี่ยวกับขนาดของคีย์ หากมากกว่า 256 แสดงว่ามีประสิทธิภาพน้อยกว่า one-time-pad คุณต้องแน่ใจว่าคีย์ของคุณมีเอนโทรปีเพียงพอ มิฉะนั้นก็สามารถบังคับเดรัจฉาน
theflamingtiger avatar
bf flag
นี่เป็นสถานการณ์ทางทฤษฎีอย่างสมบูรณ์: จะเกิดอะไรขึ้นถ้าคุณใส่ข้อความธรรมดาในโค้ด QR แล้วคุณดำเนินการตามกระบวนการดั้งเดิมกับไบต์เหล่านั้นแทน สิ่งนี้จะถือว่าปลอดภัยมากขึ้นหรือไม่เนื่องจากตอนนี้แต่ละไบต์ไม่จำเป็นต้องเป็นตัวแทนของข้อความธรรมดาดั้งเดิม
Ievgeni avatar
cn flag
ฉันไม่คุ้นเคยกับรหัส QR มากนัก แต่ถ้าฝ่ายตรงข้ามมีการรั่วไหลเกี่ยวกับการเผยแพร่รหัส QR ของคุณ พวกเขาสามารถอนุมานได้หลายอย่าง ตัวอย่างเช่น โดยการ xoring สองส่วนของ 256 บิต $c_1$, $c_2$ มันจะลบคีย์ทั้งหมด จากนั้นคุณอนุมาน $m_1 \oplus m_2$ ฉันไม่รู้ว่าในกรณีของคุณเป็นข้อมูลที่ละเอียดอ่อนหรือไม่ แต่โดยทั่วไปแล้ว แผนดังกล่าวถือว่าไม่ปลอดภัย
theflamingtiger avatar
bf flag
นั่นสมเหตุสมผลมาก ตกลงสิ่งสุดท้าย จะเกิดอะไรขึ้นหากมีวิธีช่วงชิงโค้ด QR นี้ด้วยวิธีที่กำหนดโดยคีย์/แฮช ดังนั้นหากไม่มีคีย์/แฮชที่ใครบางคนพยายามถอดรหัส ก็จะไม่รู้ว่าไบต์ใดตรงกับอะไร
Ievgeni avatar
cn flag
ฉันไม่รู้. ฉันคิดว่ามันขึ้นอยู่กับเอนโทรปีของการเรียงสับเปลี่ยน
Score:0
ธง ng

ใช่ มันใช้งานได้จริง (ขึ้นอยู่กับการแก้ไขปัญหาเล็กน้อย) ปัญหาที่น่าสังเกตประการหนึ่งคือแฮชของคุณจะเหมือนกันทุกครั้ง ดังนั้นคุณสามารถกู้คืนได้โดยใช้การโจมตีข้อความธรรมดาที่รู้จัก จากนั้นปลอมแปลงข้อความได้อย่างอิสระ

ปัญหาเล็ก ๆ อีกประการหนึ่งคือคุณสามารถเข้ารหัสข้อความได้ตราบเท่าที่ความยาวเอาต์พุตของแฮชของคุณเท่านั้น

ทั้งสองอย่างนี้แก้ไขได้โดยการสุ่มตัวอย่าง IV แล้วแฮช IV||คีย์แทนคีย์ หากคุณต้องการเข้ารหัสหลายบล็อก ให้แฮชโดยใช้ฟังก์ชันเอาต์พุตที่ขยายได้ หรือแฮช IV||คีย์, (IV+1)||คีย์ เป็นต้น

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

theflamingtiger avatar
bf flag
คุณหมายถึงอะไรโดยสุ่มตัวอย่าง IV? ถ้ามันสุ่มไม่ได้หมายความว่าคนอื่นจะถอดรหัสไม่ได้?
Morrolan avatar
ng flag
โดยทั่วไปแล้ว IV ไม่จำเป็นต้องเป็นความลับ ดังนั้นใคร ๆ ก็สามารถส่งมันไปพร้อมกับไซเฟอร์เท็กซ์

โพสต์คำตอบ

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