คีย์ส่วนตัวและคีย์สาธารณะใน ECC
ในการสร้างรหัสสาธารณะใน ECC 256 บิต (Bitcoin ใช้ secp256k1) เราต้องการรหัสสุ่ม 256 บิตที่สม่ำเสมอเพื่อสร้างรหัสลับ $k$ (หมายเลข 256 บิต) และเผยแพร่ $[k]G$เช่น การคูณสเกลาร์กับจุดฐาน $G$ และสิ่งนี้ได้รับการปกป้องโดยปัญหาลอการิทึมที่ไม่ต่อเนื่องบน ECC และหากกลุ่มเส้นโค้งเป็นแบบทั่วไปกว่าการโจมตีที่รู้จักกันดีจะมีค่าใช้จ่าย $2^{128}$. โปรดทราบว่าครั้งหนึ่ง คอมพิวเตอร์ควอนตัมเข้ารหัส ถูกสร้างขึ้น อัลกอริทึมของ Shor เมื่อนำไปใช้กับ DLog ความปลอดภัยจะหายไป!
รหัสผ่านแบบสุ่มจำไม่ยากใช้ Dicewire xkcd936
มนุษย์ยากที่จะจำฐานสิบหกแบบสุ่ม 64 ฐาน ดังนั้นนักวิจัยจึงคิดค้น dicewire และ Bip39 ก็คล้ายกัน ใน Bip39 แทนที่จะจำ 64 ฐานสิบหก เมื่อทอยตัวเลขสุ่ม อาจโดยการโยนเหรียญที่ยุติธรรม หรือรับจาก /dev/urandom
เพื่อเลือกคำศัพท์จากรายการคำศัพท์ของ Bip39 เป็นที่ทราบกันดีว่า 24 คำสร้างประมาณเอนโทรปี 256 บิต.
คำที่เลือกจะไม่เปิดเผยต่อสาธารณะ และเก็บเป็นความลับตลอดเวลา
ตอนนี้เราอาจพิจารณาการใช้วลีรหัสผ่านเป็น
- เพื่อให้ได้การปฏิเสธที่สมเหตุสมผล
- เพื่อเพิ่มความสุ่มโดยที่แหล่งสุ่มสำหรับสร้างการช่วยจำ 24 คำนั้นไม่น่าเชื่อถืออย่างที่คิด และ
- ใช้เมล็ดช่วยจำเป็นแหล่งของเอนโทรปีและปกป้องมันด้วยวลีรหัสผ่าน
ถ้าเราอ่านคำถามเป็น,
เนื่องจากผู้โจมตี (ไม่ใช่เรา) รู้จักเมล็ดช่วยจำ 24 คำ จำนวนอักขระที่ฉันควรเลือกสำหรับรหัสผ่านของฉันซึ่งคาดเดาได้ยากมากด้วยซูเปอร์คอมพิวเตอร์ที่เร็วมาก หรือดีกว่านั้นควรเรียงสับเปลี่ยนกี่วิธีจึงจะปลอดภัย?
ดังนั้นเราจึงถือว่าคำช่วยจำ 24 คำไม่ปลอดภัย
ประการแรก repo มีอายุประมาณ 8 ปี (created_at": "2013-11-19T17:18:41Z ) เก่ากว่าการแข่งขันการแฮชรหัสผ่านครั้งล่าสุดที่จัดขึ้นในปี 2558 เป็นเรื่องปกติที่พวกเขาจะพูดถึง PBKDF2 ไม่ใช่ Argon2 ดูเหมือนว่าเอกสารนี้จะไม่ได้รับการอัพเดตสำหรับความต้องการในปัจจุบัน! แต่ไม่ใช่เรื่องปกติที่จะแนะนำการทำซ้ำในปี 2048 และยังมีผู้สมัครที่ดีกว่าในเวลานั้น
- Bcrypt 1999 - การวนซ้ำ ไม่มีความแข็งของหน่วยความจำ
- PBKDF2 2000 - การวนซ้ำ ไม่มีความแข็งของหน่วยความจำ
- Scrypt 2009 - การวนซ้ำ มีความแข็งของหน่วยความจำ
- Argon2 2015 - การวนซ้ำ มีความแข็งของหน่วยความจำและสวนทางกับการขนาน
ประการแรก อย่าใช้อักขระ ให้ใช้ Bip39 หรือ dicewire อีกครั้งเพื่อสร้างข้อความรหัสผ่าน ดังนั้น ด้วยคำ 12 คำ เราสามารถเข้าถึงค่าเอนโทรปีประมาณ 128 บิตได้ และถึงแม้จะใช้แฮชง่ายๆ เช่น SHA1 หรือ SHA256 แทน PBKDF2 หรือ Argon2 ก็ปลอดภัยเพียงพอจาก การประชุมสุดยอด และพลังรวมของนักขุด BitCoin ที่ซึ่งนักขุดเคยไปถึง $\ประมาณ 2^{92.09}$ SHA256d ต่อปีในวันที่ 7 กุมภาพันธ์ 2021 หากเราถือว่านี่คือการรักษาความปลอดภัยเป้าหมายสำหรับรหัสผ่านของคุณ ดังนั้นสำหรับ PBKDF2
ใช้การวนซ้ำเช่น 1M เพื่อให้คุณสามารถลดพลังรวมเป็น $\ประมาณ 2^{70}$ และลดยอดสูงสุดเป็นรอบๆ $~2^{50}$*. สิ่งที่ดีเกี่ยวกับการทำซ้ำนี้สามารถปรับเปลี่ยนได้ตามความต้องการของคุณ (สามารถใช้เกณฑ์มาตรฐานของ Hashcat บน NVIDIA RTX 3090 เพื่อปรับการรักษาความปลอดภัยเป้าหมายตามซูเปอร์คอมพิวเตอร์ที่เก็บ RTX จำนวนมาก แทนที่จะเป็นพลังรวมของนักขุด)
ตัวช่วยจำ 12 คำจะปลอดภัยสำหรับการประชุมสุดยอด Bip39 6 คำจะเอาชนะพลังของมันได้. อย่างไรก็ตาม เรามีทางเลือกอื่นที่ดีกว่า ทั้งตอนนั้นและตอนนี้ - Scrypt และ Argon2!
ใช้ Argon2 ทุกครั้งที่ทำได้
วันนี้นักขุด bitcoin ใช้กันอย่างแพร่หลาย ASIC และ GPU เพื่อทำให้กระบวนการขุดแบบขนานอย่างหนาแน่น ตอนนี้ เรามี Argon2 เหมือนกลไกต่อต้านพวกมัน
หน่วยความจำที่ปรับได้ เพื่อให้พลังการค้นหา ASIC และ GPU ลดลง แม้แต่บนพีซีก็ใช่ว่าจะใช้ประโยชน์จากช่วงเวลาการใช้หน่วยความจำได้
ความขนานที่ปรับได้ เพื่อให้คอร์ของ CPU ไม่สามารถรันในอินสแตนซ์แบบขนานได้อย่างสมบูรณ์
และอีกครั้งที่ จำนวนการวนซ้ำ เพื่อลดระยะเวลาการค้นหาเดียว
ต้องวัดพารามิเตอร์ Argon2 ก่อนตัดสินใจ และยังคงช่วยจำ 12 คำได้จะค่อนข้างปลอดภัยสำหรับ Argon2 เราสามารถพูดได้ว่า Bip39 6 คำจะปลอดภัยต่อการประชุมสุดยอด
หรือดีกว่านั้นควรเรียงสับเปลี่ยนกี่วิธีจึงจะปลอดภัย?
การอ่านนี้เป็นการเปลี่ยนรูปของคำ 24 คำ แล้วเรามี 24! และโดยใช้ สูตรการประมาณค่าของสตริง
$$น! \sim \sqrt{2 \pi n}\left(\frac{n}{e}\right)^n$$ จากนั้นตั้งค่า $n=24$
$$24! \sim \sqrt{2 \pi 24}\left(\frac{24}{e}\right)^{24} \sim 6.2\mathrm{e}{+23} \sim 2^{80}$$
ซึ่งค่อนข้างดี (ประมาณ Bip39 8 คำ) อย่างไรก็ตาม โปรดทราบว่าหากผู้โจมตีรู้การช่วยจำ 24 คำ ดังนั้นเอนโทรปีของคีย์ที่ได้รับ $k$ ประกอบกับข้อความรหัสผ่านไม่สามารถผ่านได้ $2^{80}$. หากคุณใช้เอนโทรปี 80 บิตได้ดี ให้ใช้ Argon2id ที่มีพารามิเตอร์ที่ดี ซึ่งก็เพียงพอแล้วที่จะปลอดภัยจากการค้นหารหัสผ่าน $2^{50}\ll 2^{80}$
ถึงกระนั้น คำแนะนำก็คือให้ใช้ตัวช่วยจำ 24 คำใหม่ หากคุณสามารถรักษามันให้ปลอดภัย เพื่อที่ใคร ๆ จะพบการใช้ประโยชน์จาก $80$เอนโทรปีบิต - ไม่ชัดเจนในขณะนี้โดยไม่ต้องใช้วลีรหัสผ่านที่ดุร้าย ถ้าไม่,
คำแนะนำสุดท้าย ใช้ตัวจัดการรหัสผ่านเช่น Keepass และรหัสผ่าน1 ซึ่งคุณต้องการรหัสผ่านที่ดีเพียงรหัสเดียว โดยเฉพาะอย่างยิ่งจาก dicewire หรือ Bip39 พวกเขาสามารถสร้างรหัสผ่านแบบสุ่มสำหรับความต้องการและห้องนิรภัยรหัสผ่านได้รับการปกป้องด้วยรหัสผ่านของคุณ และส่วนที่เหลือจะถูกจัดการโดยพวกเขา
*โปรดทราบว่าตัวเลขเป็นตัวเลขโดยประมาณ ไม่ใช่จำนวนที่แน่นอน เราไม่สามารถแน่ใจได้หากไม่ได้นั่งบนคอนโซลของ The Supercomputer - Summit