Score:1

อัลกอริทึมการเข้ารหัสแบบสองทางคล้ายกับ bcrypt

ธง za

ฉันต้องการอัลกอริทึมที่สามารถทำงานได้เฉพาะเจาะจง: ใช้สตริงสั้นๆ เข้ารหัสโดยใช้อัลกอริทึมที่สามารถปรับขนาดได้เพื่อให้ทันกับกฎของมัวร์/มีปัจจัยพิสูจน์การทำงาน/ช้าผิดปกติ จากนั้นค่อยถอดรหัสโดยเสียค่าใช้จ่ายในเวลาเดียวกัน

กรณีการใช้งานคือรายการที่อยู่อีเมลที่ไคลเอ็นต์ที่คำนึงถึงความปลอดภัยจัดเก็บไว้สำหรับรายชื่ออีเมล โดยจะถูกถอดรหัสทีละรายการสำหรับอีเมลแต่ละฉบับ เป้าหมายคือการบังคับให้เดรัจฉานใช้เวลามากที่สุดเท่าที่จะเป็นไปได้ ฉันได้ตรวจสอบผู้สมัครที่น่าจะเป็นไปได้บางคน (AES-256, mcrypt, twofish, scrypt) แต่ยังไม่ชัดเจนว่าจะเหมาะสมที่สุด

kelalaka avatar
in flag
ไปที่ AES-256-GCM หรือ xChaCha20-Poly1305
poncho avatar
my flag
"ถอดรหัสในเวลาเดียวกัน"; คุณหมายถึง "ต้นทุนเวลาเดียวกับการเข้ารหัส" หรือไม่ หรือคุณหมายถึง "ต้นทุนต่อครั้งซึ่งเท่ากันโดยไม่ขึ้นกับปัจจัยต้นทุนการเข้ารหัส"
poncho avatar
my flag
@kelalaka: AES-GCM หรือ ChaCha มีปัจจัย "หลักฐานการทำงาน" อย่างไร
kelalaka avatar
in flag
@poncho ฉันไม่คิดว่า OP ต้องการการเข้ารหัสที่ช้าจริงๆ แต่ `เป้าหมายคือการทำให้การบังคับเดรัจฉานใช้เวลานานมากที่สุดเท่าที่จะเป็นไปได้' การเข้ารหัส 256 บิตก็เพียงพอแล้วหากมีรหัสผ่านที่ดีและ PBKDF AES-GCM หรือ ChaCha ไม่มีปัจจัยพิสูจน์การทำงานและไม่จำเป็นเช่นกัน
kelalaka avatar
in flag
โปรดทราบว่า [scrypt คือฟังก์ชันการหาค่าคีย์ที่ใช้รหัสผ่านซึ่งสร้างโดย Colin Percival](https://en.wikipedia.org/wiki/Scrypt) คุณต้องการ PBKDF ที่ช้าและการเข้ารหัสที่รวดเร็วและปลอดภัยเพียงพอหรือไม่?
kr flag
*bcrypt* เป็นอัลกอริทึมการแฮช ไม่ใช่อัลกอริทึมการเข้ารหัส
kelalaka avatar
in flag
คุณสามารถ[แก้ไข](https://crypto.stackexchange.com/posts/95643/edit)คำถามของคุณเพื่อชี้แจง และคุณสามารถแสดงความคิดเห็นใต้คำถามและคำตอบของคุณได้โดยไม่จำกัดชื่อเสียง
Maarten Bodewes avatar
in flag
ได้โปรดทุกคนให้ความสำคัญกับปัจจัยการทำงานที่เพิ่มขึ้น (อัตโนมัติ?-) โดยส่วนตัวแล้ว ฉันอาจจะเลือกใช้ PBKDF เช่น หนึ่งในการกำหนดค่า Argon2, PBKDF2 หรือ bcrypt จากนั้นจึงเพิ่มจำนวนการวนซ้ำในแต่ละปี และใช้คีย์ผลลัพธ์เพื่อรวมคีย์การเข้ารหัสแบบสุ่มทั้งหมด ฉันรู้ว่านั่นเป็นแบบแมนนวล แต่อัลกอริทึม / อัลกอริทึมเอาต์พุตเองไม่มีส่วนประกอบของเวลา ดังที่ kelalaka กล่าวไว้ ถ้ารหัสผ่าน/ขนาดคีย์ของคุณมีการสุ่มเพียงพอ คุณก็ไม่จำเป็นต้องกังวลเกี่ยวกับ KDF เลย นั่นแหละ
ph flag
ฉันไม่ได้ขายเพราะความจำเป็นในการเพิ่มปัจจัยการทำงานเพื่อบังคับพื้นที่คีย์ 256 บิตอย่างดุร้าย ฉันคิดว่ารูปแบบภัยคุกคามยังไม่ได้รับการพิจารณาอย่างสมบูรณ์
Score:0
ธง ru

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

คำแนะนำของฉันคือใช้โหมดป้อนกลับเอาต์พุต (OFB) สร้างค่าเริ่มต้นที่ไม่ซ้ำใคร ป้อนสิ่งนี้ลงในรหัสบล็อก AES (เช่น) จากนั้นป้อนเอาต์พุตกลับเข้าไปในรหัสและทำซ้ำ พูด $2^{35}$ ครั้งขึ้นอยู่กับว่า เวลาเท่าไหร่ ที่คุณต้องการของลูกค้า จากนั้น XOR จะแสดงผลในอนาคตไปยังที่อยู่อีเมล เวลาเข้ารหัส/ถอดรหัสจะลดลงตามกฎของมัวร์ แต่ไม่มีประโยชน์ที่จะซื้อฮาร์ดแวร์เพิ่ม

ตอนนี้ หลังจากถอดรหัสแล้ว ไคลเอนต์สามารถบันทึกค่าเอาต์พุตล่าสุดก่อน XORing ได้ แต่ก็สามารถบันทึกที่อยู่ได้เมื่อถอดรหัสแล้ว

อีกทางเลือกหนึ่งคือการใช้โหมด Propagating Cipher-Block Chaining (PCBC) แต่สิ่งนี้จะเกี่ยวข้องกับการสร้างอินพุตที่คาดเดาไม่ได้มากเท่ากับจำนวนการทำซ้ำที่รู้สึกว่าไม่จำเป็น

โพสต์คำตอบ

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