Score:1

ทำความเข้าใจความแตกต่างในทางปฏิบัติระหว่าง ElGamal และ Diffie-Hellman

ธง id

ฉันได้รับมอบหมายให้สร้างไซต์ Web Assembly ที่ใช้ E2EE ฉันคิดว่าจะใช้ ElGamal Encryption เพื่อเข้ารหัสข้อความและ Diffie-Hellman เพื่อสร้างคีย์ หลังจากทำการวิจัยเพิ่มเติม ฉันมีปัญหาในการทำความเข้าใจกรณีการใช้งานจริงของการใช้ ElGamal กับ Diffie-Hellman

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

ดังนั้นฉันจึงกำลังถกเถียงกันว่าจะใช้สิ่งใดในเว็บแอปของฉัน ตอนแรกฉันคิดว่าจะใช้ทั้ง Diffie-Hellman และ ElGamal ตอนนี้ ฉันกำลังคิดที่จะใช้ Diffie-Hellman เพื่อสร้างคีย์ระหว่างสองฝ่าย จากนั้นใช้รูปแบบการเข้ารหัสแบบสมมาตร เช่น AES

บทความหนึ่งที่ฉันพบว่ามีประโยชน์อย่างยิ่งคือ https://www.commonlounge.com/discussion/2be4d294aa9e44d4b67f6644cd9b5ced

โดยเฉพาะหัวข้อ "การใช้งานจริงและการใช้งาน"

หากฉันใช้ Diffie-Hellman & AES คีย์จะต้องสร้างใหม่บ่อยเพียงใด

ฉันหวังว่าจะมีคนยืนยันได้ว่าฉันเข้าใจการใช้งานจริงอย่างถูกต้องหรือไม่ และช่วยเติมช่องว่างในความเข้าใจของฉัน

ขอขอบคุณ!

kelalaka avatar
in flag
ความถี่ขึ้นอยู่กับโหมดการทำงานและขนาดคีย์ของคุณ ถ้าคุณมีอิสระที่จะเลือก ให้เลือก ECDH (Elliptic Curve DHKE) และ XChaCha20-Poly1305
Davis avatar
id flag
ขอบคุณสำหรับคำแนะนำนั้น ฉันจะตรวจสอบ ECDH โหมดการทำงานของฉันค่อนข้างเล็ก ณ จุดนี้ นี่เป็นโครงการสำหรับปีสุดท้ายของฉันที่มหาวิทยาลัย
Maarten Bodewes avatar
in flag
คุณคุ้นเคยกับ [IES](https://en.wikipedia.org/wiki/Integrated_Encryption_Scheme) ไหม
kelalaka avatar
in flag
ใช่ IES หรือ Nacl ซึ่งมีอยู่ในหลายภาษา
Davis avatar
id flag
ฉันค่อนข้างคุ้นเคยกับ IES ฉันจะตรวจสอบสิ่งนั้นเช่นกัน ขอบคุณสำหรับข้อเสนอแนะ ฉันวางแผนที่จะใช้ไลบรารี crypto จนถึงตอนนี้ BouncyCastle ดูจะได้รับการยกย่องอย่างสูง
Maarten Bodewes avatar
in flag
ใช้มาก; มันยังค่อนข้างยุ่งเหยิงในเอกสารที่ค่อนข้างแย่เนื่องจากมีปัญหากับช่องด้านข้างและในอดีต คุณได้รับการสนับสนุนที่ดีผ่านรายชื่อผู้รับจดหมายของ dev และผู้เขียน / ผู้พัฒนาก็เป็นคนดีมาก
Score:1
ธง br

คุณอาจต้องการการเข้ารหัสแบบรับรองความถูกต้อง/แบบไฮบริด และอาจมีฟังก์ชันระดับสูงในไลบรารีการเข้ารหัสลับใดก็ตามที่คุณใช้อยู่

นี่เป็นคำถามอื่นที่พวกเขาใช้ IES ใน BouncyCastle:

https://stackoverflow.com/questions/33297274/using-bouncycastle-to-encrypt-with-ecies-in-java

Maarten Bodewes avatar
in flag
ฉันสงสัยว่าฉันจะเป็นคนเขียนโค้ดนั้นหรือเปล่า และใช่ แน่นอนว่ามันเป็นอย่างนั้น :) ระวังว่าการเข้ารหัสแบบไฮบริดนั้นไม่ใช่ทั้งหมดที่กำหนดไว้อย่างดี คุณอาจต้องการใช้ ECIES ด้วยตัวคุณเองเพื่อใช้โหมดการทำงานล่าสุดและยิ่งใหญ่ที่สุด (เช่น โหมด GCM สำหรับรหัสสมมาตรแทน CBC ซึ่งเสี่ยงต่อการโจมตีของออราเคิล ซึ่งอาจขัดขวางการรักษาความลับ) คุณอาจต้องการ *ลงชื่อ* ข้อความธรรมดาหรือข้อความเข้ารหัสของคุณเพื่ออนุญาตการตรวจสอบความถูกต้อง/ความสมบูรณ์ ในแง่นั้นการใช้ NaCL น่าจะง่ายกว่า
Davis avatar
id flag
ขอบคุณทุกคนสำหรับคำแนะนำและแหล่งข้อมูล! ฉันรู้สึกทราบซึ้ง!

โพสต์คำตอบ

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