คำถามถูกต้องที่คีย์ส่วนตัวใด ๆ ที่น้อยกว่า 250 สามารถพบได้จากรหัสสาธารณะ และวิธีการที่อธิบายนั้นจะปฏิบัติได้ อย่างไรก็ตาม
- มีวิธีการที่ดีกว่ามาก, ที่สามารถค้นหาคีย์น้อยกว่า เค2 ด้วยความพยายามตามสัดส่วน เค (เช่น. พอลลาร์ดโร) และหน่วยความจำน้อยด้วยความน่าจะเป็นมาก ดังนั้น 250 การดำเนินการก็เพียงพอที่จะค้นหาคีย์ที่น้อยกว่า 2100 ที่มีความน่าจะเป็นมาก
- 250 เป็นจำนวนเล็กน้อยสำหรับการดำเนินการหลายอย่างเพื่อทำลาย crypto ในปี 1970 NSA ตกลงว่า DES มี 256 กุญแจเพราะพวกเขารู้ว่าพวกเขาสามารถทำลายสิ่งนั้นได้หากจำเป็น ภายในปี 2543 บรรทัดฐานสำหรับความปลอดภัยคือ 280. พื้นฐานสมัยใหม่อาจเป็น 296และแนวทางปฏิบัติสำหรับระบบใหม่อยู่ในลำดับที่ 2128 หรือมากกว่า. นั่นคือก่อนที่จะยกกำลังสองเพื่ออธิบายการโจมตีข้างต้น
มีขอบเขตบนหรือไม่
ใช่. สำหรับทุกวิธีและเส้นโค้งลายเซ็นตาม Elliptic Curve จะมีชุดที่กำหนดไว้สำหรับคีย์ส่วนตัว สำหรับ ECDSAมันคือช่วงเวลา [1, น-1] ที่ไหน น เป็นคำสั่งของเครื่องกำเนิดไฟฟ้า (ไม่ใช่ น
ในคำถาม) คุณค่าของ น ขึ้นอยู่กับเส้นโค้ง สำหรับเส้นโค้ง secp256k1, น ต่ำกว่า 2 เล็กน้อย256. ดังนั้นความพยายามที่คาดหวังในการค้นหาคีย์ส่วนตัวด้วยคีย์สาธารณะโดยใช้ Pollard's rho (หรือวิธีการอื่นที่รู้จัก) จึงอยู่ในลำดับที่ 2128 การดำเนินการ (เพิ่มเติมเกี่ยวกับ Elliptic Curve) หรือมากกว่านั้น
หากเกินขอบเขตบน คีย์ส่วนตัวจะถูกปฏิเสธโดยซอฟต์แวร์ที่เข้ากันได้ หากไม่ถูกปฏิเสธ และซอฟต์แวร์ทำงานอย่างถูกต้องจากมุมมองทางคณิตศาสตร์ และสำหรับระบบลายเซ็นที่ไพรเวตคีย์เป็นสิ่งที่คูณตัวกำเนิดโดยตรงเพื่อสร้างพับลิกคีย์ (เช่นในคำถามและ ECDSA) คีย์จะทำงานเป็น ถ้ามันเป็นโมดูโลที่ลดลง น (ลำดับของตัวสร้าง) ทั้งสำหรับการสร้างรหัสสาธารณะและการลงนาม
กฎสำหรับการสร้างคีย์ส่วนตัวขึ้นอยู่กับระบบลายเซ็น เช่น. เอ็ด25519 ระบุช่องว่างสำหรับคีย์ส่วนตัวที่ใหญ่กว่ามาก นเพื่อปรับปรุงการต่อต้านการโจมตีบางอย่าง (แต่ไม่ใช่เพื่อค้นหาคีย์ส่วนตัวที่สร้างลายเซ็นที่ถูกต้อง)
การลบกุญแจที่เป็นไปได้ในลักษณะที่ฝ่ายตรงข้ามรู้จัก ลดลง ความปลอดภัย เนื่องจากฝ่ายตรงข้ามมีกุญแจให้ทดสอบน้อยกว่า มันคือ ทนได้ เพื่อลบคีย์ที่เป็นไปได้สองสามรายการ ไม่เป็นที่ต้องการแต่อย่างใด
วิธีปกติ/ที่แนะนำ/ดีที่สุดในการเลือกคีย์ส่วนตัวคือ สุ่มอย่างเท่าเทียมกัน ในชุดของค่าคีย์ส่วนตัวที่ถูกต้อง การยกเว้นค่าบางค่าสามารถยอมรับได้ (เช่นค่าเล็กน้อยในคำถาม) แต่นั่นเป็นเพียงตราบเท่าที่ค่าเพียงเล็กน้อยเท่านั้นที่ถูกปฏิเสธ เช่น. สำหรับ ECDSA บน secp256k1 เป็นเรื่องปกติที่จะปฏิเสธคีย์ส่วนตัวที่น้อยกว่า 2192เนื่องจากเป็นการลบสัดส่วนเพียงเล็กน้อยประมาณ 2-64 (0.000000000000000005%) ของคีย์สเปซ แต่นั่นก็ไม่มีจุดหมายเช่นกันเพราะมันไม่น่าจะเป็นไปได้ที่หนึ่งในคีย์ที่แยกออกมานั้นถูกสร้างขึ้น และการเพิ่มขอบล่างเพื่อให้สัดส่วนนี้กลายเป็นสัดส่วนที่ไม่ละเลยจะลดการเลือกคีย์ของเราลงอย่างไม่ละเลย ทำให้อัลกอริทึมการค้นหาคีย์ที่ออกแบบมาเป็นพิเศษสามารถค้นหาได้ง่ายกว่าการเลือกแบบสุ่มอย่างสม่ำเสมอ
รหัสส่วนตัว ECDSA บน secp256k1 สามารถสร้างได้โดยการกลิ้ง ลูกเต๋าหกเหลี่ยม 64 ครั้ง (หากการโยน 23 ครั้งแรกทั้งหมดให้ค่าเท่ากัน ให้ถามลูกเต๋าแล้วหยุด) ใช้ผลลัพธ์ 64 อย่างซื่อสัตย์ตามลำดับ big-endian ผลลัพธ์คือคีย์ส่วนตัวที่ถูกต้อง (การทดสอบที่เราทำรับประกันว่าผลลัพธ์จะอยู่ในช่วงเวลาที่เหมาะสม)