Score:2

การเข้ารหัสด้วย AES128 (ECB) และการตรวจสอบคีย์

ธง cn

ในโครงการท้าทายใหม่ของฉัน เซิร์ฟเวอร์ของฉันกาลครั้งหนึ่งกำลังออกอากาศ "หัวหอม" ที่ทำจากสามชั้นที่เข้ารหัสด้วย AES128 (ECB) - ยาว 16 ไบต์ผ่าน WiFi

ฉันใช้ WiFi Beacon Frame เพื่อถ่ายโอนหัวหอมไปในอากาศ

"หัวหอม" มีลักษณะไม่มากก็น้อยตามภาพด้านล่าง

ป้อนคำอธิบายรูปภาพที่นี่

แต่ละเลเยอร์จะถูกเข้ารหัสด้วยคีย์ที่แตกต่างกัน คีย์ของแต่ละเลเยอร์จะทราบเฉพาะเซิร์ฟเวอร์และอุปกรณ์ที่จะถอดรหัสเท่านั้น คีย์ทำจากที่อยู่ MAC เพื่อความเรียบง่าย

  • ชั้นแรกจะเป็นสตริงยาวสุ่ม 16b เช่น "Hello World" เข้ารหัสด้วยรหัสอุปกรณ์ 1
  • ชั้นที่สองคือชั้นแรกที่เข้ารหัสด้วยรหัสอุปกรณ์ 2
  • ชั้นที่สามคือชั้นที่สองที่เข้ารหัสด้วยรหัสอุปกรณ์ 3

ในการถอดรหัสหัวหอมอย่างถูกต้อง เลเยอร์แรกที่ออกอากาศคือ 3 เนื่องจากเรากำลังถอดรหัสย้อนกลับ

เมื่อสร้าง "Onion" แล้ว เซิร์ฟเวอร์จะออกอากาศเลเยอร์ 3 ผ่าน WiFi Beacon Frame และใครก็ตามที่สามารถฟังได้สามารถลองถอดรหัสข้อมูลได้ แต่เฉพาะอุปกรณ์ที่เลือกเท่านั้นที่สามารถถอดรหัสได้อย่างถูกต้อง เนื่องจากเลเยอร์เหล่านี้ได้รับการเข้ารหัสด้วยกุญแจ .

เมื่อแต่ละคนถอดรหัสเลเยอร์นั้น:

  • แจ้งให้เซิร์ฟเวอร์ทราบผ่าน TCP/IP ถึงแฮชของค่าที่ถอดรหัส (การยืนยัน)
  • ถอด 'เลเยอร์'
  • กระจายหัวหอมที่เหลือกลับไปทาง WiFi (สร้างกรอบสัญญาณ)

เมื่อถอดรหัสเลเยอร์ทั้งหมดแล้ว งานก็เสร็จสิ้น

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

คำถาม

ควรทำอย่างไรเพื่อให้อุปกรณ์ตรวจสอบว่าข้อมูลที่ถอดรหัสถูกต้องหรือไม่ (คีย์ถูกต้อง)

หมายเหตุด้านข้าง:

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

kelalaka avatar
in flag
Mac-then-encrypt อย่างไรก็ตาม ดูเหมือนว่าคุณจำกัดตัวเองไว้ที่ 16 ไบต์ ดังนั้นจึงไม่สามารถทำได้จนกว่าจะถึงชั้นสุดท้าย
cn flag
@kelalaka ขอบคุณ! ขั้นต่ำที่ฉันต้องการ (เป็นไบต์) เพื่อรวม MAC ในแต่ละเลเยอร์คือเท่าใด
kelalaka avatar
in flag
ขึ้นอยู่กับความน่าจะเป็นที่คุณต้องการ 8 บิต 1/64 ....
cn flag
เข้าใจแล้ว ฉันสามารถเพิ่มได้ถึง 64b ต่อเลเยอร์ มีประเภท MAC ใดที่ฉันควรเลือกเป็นพิเศษหรือไม่
Paul Uszak avatar
cn flag
คุณใช้คำว่า WiFi และวิทยุแทนกันได้ สิ่งนี้เป็นอันตราย การส่งสัญญาณวิทยุแบบเข้ารหัสเป็นสิ่งผิดกฎหมายในสหราชอาณาจักรและสหรัฐอเมริกา และประเทศอื่นๆ ส่วนใหญ่ พลเมืองไม่มีสิทธิส่วนบุคคลบนคลื่นอากาศ :-(
cn flag
@PaulUszak - ตกลง เพื่อให้ชัดเจนว่าเป็น WiFi - ฉันไม่ได้ใช้สิ่งอื่นนอกจากมาตรฐาน WiFi และ 'Onion' ออกอากาศด้วยเฟรมบีคอน 802.11
kelalaka avatar
in flag
เร็วที่สุด ใช้แฮช BLAKE2? คุณไม่จำเป็นต้องตรวจสอบสิทธิ์ใช่ไหม แค่ซื่อสัตย์ก็พอ
cn flag
@kelalaka ถูกต้อง สิ่งที่ฉันต้องการคือความซื่อสัตย์! ขอบคุณมากสำหรับการป้อนข้อมูล
Score:2
ธง in

เนื่องจากคุณต้องการเพียงการตรวจสอบความถูกต้อง คุณจึงสามารถใช้ฟังก์ชันแฮชเร็วอย่าง BLAKE2 เพื่อเป้าหมายของคุณได้

$$ c_0 = E_{k_1}(m_0) $$ จากนั้นผนวกแฮชของข้อความเข้ารหัส BLAKE2 แบบ 64 บิต (หรือมากกว่า)

$$m_1 = c_0\mathbin\|BLAKE2(c_0)\mid_{64}$$

$$ c_1 = E_{k_2}(m_1) $$ จากนั้นผนวกแฮชของข้อความไซเฟอร์ 64 บิต (หรือมากกว่า) BLAKE2

$$m_2 = c_1\mathbin\|BLAKE2(c_1)\mid_{64}$$

$$ c_3 = E_{k_3}(m_2) $$

ตอนนี้ปล่อย $c_3$. เมื่อถอดรหัสแล้วไคลเอ็นต์จะสามารถตรวจสอบแฮชได้ สำหรับการสุ่มคีย์ก็จะมี $1/2^{64}$ ความน่าจะเป็นที่จะพอดีกับแฮชต่อท้าย โปรดทราบว่าเมื่อ $m_2$ ไม่ถูกต้อง แฮชต่อท้ายจะไม่ใช่ค่าที่ถูกต้อง เป็นเพียงค่าสุ่ม

หากคุณใช้โหมด CBC สำหรับการเข้ารหัส (แม้ว่าดูเหมือนว่า ECB จะใช้ได้สำหรับวัตถุประสงค์ของคุณ) คุณอาจได้รับประโยชน์จากช่องว่างภายในด้วยเช่นกัน (จำเป็นต้องใช้ ECB ด้วย) โหมด CBC ต้องการการเติม PKCS#7 เสมอหากข้อความไม่ได้ถอดรหัสอย่างถูกต้อง การเติมจะล้มเหลว (สิ่งนี้ใช้ในการเติมการโจมตีของออราเคิล) มีผลบวกปลอมเช่นกัน เช่นเดียวกับความน่าจะเป็น 1/256 ช่องว่างภายในจะถูกต้องสำหรับคีย์ที่ไม่ถูกต้อง ดังนั้นความซื่อตรงจึงดีกว่าที่จะเข้าหาเพื่อไป


นอกจากแฮชแล้ว เรายังใช้การต่อท้ายแต่ละสตริงต่อเลเยอร์ได้อีกด้วย

$$ c_0 = E_{k_1}(m_0) $$ จากนั้นผนวก $\texttt{Layer1}$ สตริง นั่นคือเร็วที่สุด

$$m_1 = c_0\mathbin\|\texttt{Layer1}$$

โพสต์คำตอบ

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