Score:1

ความปลอดภัยของการแลกเปลี่ยน McCallum-Relyea

ธง in

ฉันเพิ่งเรียนรู้เกี่ยวกับการแลกเปลี่ยน McCallum-Relyea ซึ่งอนุญาตให้ใช้วิธีการของคีย์เอสโครว์โดยไม่ต้องส่งคีย์จริง

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

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


การแลกเปลี่ยนเป็น ECDH เวอร์ชันแก้ไข/เพิ่มเติมซึ่งทำหน้าที่ดังต่อไปนี้:

ฝั่งเซิร์ฟเวอร์จะสร้างคู่คีย์ EC ที่มีอายุการใช้งานยาวนานพร้อมคีย์ส่วนตัวก่อน $s$ และรหัสสาธารณะ $S = [s]G$.

ลูกค้าที่ต้องการปกป้องข้อความ $M$, สร้างคีย์ส่วนตัว $ค$ และรหัสสาธารณะ $C = [c]G$. จากนั้นไคลเอนต์ร้องขอรหัสจากเซิร์ฟเวอร์ผ่านช่องข้อความธรรมดา เซิร์ฟเวอร์ตอบกลับด้วย $S$ เซ็นสัญญากับ $s$. ผู้ใช้ฝั่งไคลเอ็นต์ตรวจสอบคีย์เซิร์ฟเวอร์ด้วยวิธีการนอกแบนด์และบันทึกแฮชของคีย์เซิร์ฟเวอร์ จากนั้นลูกค้าทำการแลกเปลี่ยน ECDH ครึ่งหนึ่งเพื่อให้ได้ผลตอบแทน $K = [c]S = [cs]G$. $K$ จากนั้นจะใช้ (ไม่ว่าจะโดยตรงหรือโดยอ้อม) เพื่อเข้ารหัส $M$ ผ่านการเข้ารหัสแบบสมมาตร หลังจากนั้นไคลเอนต์จะทิ้งไป $K$ และ $ค$ และคงไว้เพียง $C$. ณ จุดนี้ ไคลเอ็นต์ไม่สามารถถอดรหัสได้ $M$ โดยไม่มีเซิร์ฟเวอร์

เมื่อไคลเอนต์ต้องการถอดรหัส $M$จะสร้างคู่กุญแจชั่วคราว $e$ และ $E = [e]G$แล้วคำนวณ $X = C + E$ และส่ง $X$ ไปยังเซิร์ฟเวอร์ จากนั้นเซิร์ฟเวอร์จะทำการแลกเปลี่ยน ECDH ครึ่งหนึ่งกับ $X$ และ $s$ เพื่อสร้าง $Y = [s]X$ และส่งสัญญาณ $Y$ กลับไปหาลูกค้าโดยใช้ $S$ เพื่อเซ็นข้อความ

ได้รับแล้ว $Y$ จากเซิร์ฟเวอร์และตรวจสอบลายเซ็นของเซิร์ฟเวอร์ จากนั้นไคลเอ็นต์ดำเนินการอีกครึ่งหนึ่งของ ECDH ด้วย $S$ และ $e$ ในการคำนวณ $Z = [e]S$. จากนั้นลูกค้าจะคำนวณ:

Y - Z = sX - eS 
      = ส(C + E) - อีส 
      = sC + se - es 
      = scG + seG - esG
      = สกสค
      = เค

การกู้คืน $K$ และถอดรหัส $M$.

kelalaka avatar
in flag
และคำถามคือวิเคราะห์ว่ามีการรักษาความปลอดภัยหรือไม่ แล้วถามว่าใครคือศัตรูและพวกเขามีความสามารถอะไร? สิ่งนี้มีความสำคัญเนื่องจากสำหรับฝ่ายตรงข้ามควอนตัม ไม่มีการรักษาความปลอดภัย
in flag
@kelalaka แก้ไขเพื่อเพิ่มรายละเอียดเพิ่มเติม: โดยเฉพาะเมื่อเปรียบเทียบกับ TLS หรือหากมีข้อบกพร่องใด ๆ ที่ใช้ประโยชน์ได้ในการแลกเปลี่ยน
kelalaka avatar
in flag
ที่แปลกคือ $C$ เป็นสาธารณะ ดังนั้นใครก็ตามที่มีสิ่งนี้สามารถร้องขอการถอดรหัสของการเข้ารหัสใดๆ ที่ดำเนินการโดยเจ้าของคีย์สาธารณะดั้งเดิมของ $C$ ฉันเดาว่าคุณจะพูดว่ามีการป้องกันโดยกลไกบางอย่าง? ลองพิจารณาตัวเองแล้วส่ง $X = C + E$ ไปยังเซิร์ฟเวอร์ด้วย $E = [e]G$ เพื่อสุ่ม $e$
in flag
@kelalaka $C$ จำเป็นต้องดึง $K$ และเป็นส่วนสาธารณะของคู่กุญแจ แม้ว่าจะไม่ใช่ "สาธารณะ" ในแง่ที่ว่าส่งได้ทุกที่ก็ตาม ต้องเก็บ $C$ ไว้ภายในไคลเอนต์และป้องกันเหมือนคีย์ส่วนตัว ฉันเชื่อว่าเป้าหมายคือการอนุญาตให้ลูกค้าเรียก $K$ หากเซิร์ฟเวอร์สามารถเข้าถึงได้เท่านั้น ดังนั้นหากเครื่องไคลเอ็นต์ถูกลบออกจริงและวางบนเครือข่ายที่ไม่สามารถเข้าถึงเซิร์ฟเวอร์ได้ ไคลเอนต์ก็จะไม่สามารถถอดรหัส $M$ ได้
kelalaka avatar
in flag
นอกจากนี้ ลูกค้ายังสามารถส่งจุดสั่งซื้อขนาดเล็ก $X$ เพื่อรับข้อมูลบางอย่างเกี่ยวกับความลับ $s$ ของเซิร์ฟเวอร์
kelalaka avatar
in flag
ถ้าอย่างนั้นคำถามคืออะไรถ้าเซิร์ฟเวอร์เก็บการเข้ารหัสไฟล์ด้วยคีย์จากเอาต์พุตของ ECDH ชั่วคราว - ชั่วคราว เหมือนเมื่อหลายปีก่อน ผมตั้งค่า Linux box ด้วยชื่อผู้ใช้ แล้วเข้าถึงไฟล์ของผู้ใช้ในระบบ...
kelalaka avatar
in flag
หากเซิร์ฟเวอร์มีคีย์ แสดงว่าไฟล์ของคุณไม่มีความลับ การแลกเปลี่ยนจะปลอดภัยตราบเท่าที่ $C$ ปลอดภัย
kelalaka avatar
in flag
นอกจากนี้ แนวคิดยังมีข้อบกพร่องในที่เก็บข้อมูล ขนาดของคีย์สาธารณะนั้นใหญ่กว่าคีย์ส่วนตัว แม้ว่าจุดสาธารณะจะถูกบีบอัดก็ตาม
Score:2
ธง ru

น่าสนใจ ความลับของโครงการนั้นแข็งแกร่งพอๆ กับความลับของ $C$ เป็นอิสระจากสมมติฐานความแข็ง (นอกเหนือจากความแข็งแกร่งของรหัสสมมาตรและการลบที่ปลอดภัยของ $K$, $ค$ และข้อความธรรมดา) ในทางตรงกันข้าม โมเดลการจัดเก็บและส่งฝั่งเซิร์ฟเวอร์ผ่าน TLS อาศัยความแข็งของกลไกการสร้างคีย์ TLS และการพิสูจน์ตัวตน

ถ้า $e$ จะถูกเลือกอย่างเท่าเทียมกันโดยการสุ่ม $X$ มีข้อมูลเป็นศูนย์เกี่ยวกับ $C$. โปรดทราบว่าการส่งของ $X$ เป็นการสื่อสารเดียวโดยไคลเอ็นต์ในโปรโตคอลทั้งหมด และดังนั้นจึงเป็นโอกาสเดียวสำหรับผู้โจมตี Dolaev-Yao ในการเข้าถึงข้อมูลเกี่ยวกับค่าที่เป็นความลับไคลเอ็นต์ ความสม่ำเสมอของ $X$ ยังหมายความว่าเป็นไปไม่ได้ที่ผู้ให้บริการจะตรวจสอบได้ว่าลูกค้ากำลังขอ escrow สำหรับคีย์ที่พวกเขามีสิทธิ์เข้าถึงโดยชอบด้วยกฎหมายหรือไม่ ดังนั้นใครก็ตามที่สามารถจัดการเพื่อรับความรู้ $C$ สามารถใช้โปรโตคอลในการกู้คืน $K$.

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

กลไกการเอสโครว์สามารถเรียกใช้ได้หลายครั้งโดยไม่ต้องเข้ารหัสใหม่เป็นหลายครั้ง $X$ การส่งจะยังไม่มีข้อมูลใด ๆ เกี่ยวกับ $C$.

ไม่มีการปฏิเสธในระบบสำหรับผู้ใช้ที่ถูกต้อง ถ้าฉันทำแบบสอบถาม $X$ และอ้างในภายหลังว่าเกี่ยวข้องกับเฉพาะ $C$ มูลค่าการอ้างสิทธิ์นี้ไม่สามารถตรวจสอบได้ แม้จะต้องเปิดเผย $e$, สร้างรอง $C$ ค่า $C'=C+dG$ซึ่งในกรณีนี้ทั้งคู่ $(ค,อี)$ สร้าง $X$ ที่สามารถสร้างขึ้นได้ด้วย $(ค',d+e)$.

โพสต์คำตอบ

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