Score:1

คีย์ส่วนตัวที่ดีและกันกระสุนสำหรับเส้นโค้ง ECC คืออะไร

ธง it

ฉันค่อนข้างใหม่สำหรับรายละเอียดทางคณิตศาสตร์ระดับต่ำในการเข้ารหัสแม้ว่าจะเคยทำงานในพื้นที่การเข้ารหัสลับมา 2.5 ปีก่อนหน้านี้ ดังนั้นหากฉันผิดเกี่ยวกับส่วนใดด้านล่าง โปรดแก้ไขฉันโดยไม่ต้องใช้ท่าทางสัมผัสใบหน้า ;)

มีการอภิปรายเกี่ยวกับเรื่องนี้พร้อมกับคำถามเกี่ยวกับคีย์ส่วนตัวที่ถูกต้องต่อการพูด แต่ไม่มีคำตอบใดที่น่าเชื่อถือ อย่างน้อยฉันไม่เห็นด้วยกับข้อโต้แย้งของพวกเขาที่ว่ารหัสส่วนตัวที่ถูกต้องเป็นรหัสที่ดี

เช่น.

EdDSA (Ed25519) มีจำนวนสุ่มเพียงพอสำหรับคีย์ส่วนตัวที่ดีหรือไม่ ใช่ .... ตอบเมื่อ 28 ต.ค. 60 เวลา 9:03 น แฟรงค์ เดนิส

คีย์ส่วนตัว EC ที่เป็นไปได้ทั้งหมดถูกต้องหรือไม่ @Fozi: 1 ไม่ได้ดีหรือแย่ไปกว่า 0x3b6ddba1f4b325cee4505084bc507d2019e86539f8d4be027004b69f9aa0bc74 ตราบเท่าที่พวกเขามีความน่าจะเป็นที่จะเกิดขึ้นเท่ากัน นั่นคือ 1/n หรือประมาณ â¼1/2256 เพื่อให้ฝ่ายตรงข้ามไม่มีโอกาสดีกว่าที่จะประสบความสำเร็จจากการคาดเดา แรก. โปรดทราบว่าความน่าจะเป็นที่จะได้ค่าใดค่าหนึ่งมาทีละค่านั้นน้อยมาก เช่นเดียวกับสเกลาร์ลับอื่นๆ ที่เป็นไปได้ â Ossifrage คลื่นไส้ 11 ก.ย. 60 เวลา 18:28 น

นี่คือข้อโต้แย้งของฉัน:

AFAIK คีย์สาธารณะคำนวณโดยการคูณ เวลาของเครื่องกำเนิดจุด G โดยที่ เป็นตัวเลขสุ่มที่สร้างเป็นคีย์ส่วนตัว

แนวคิดคือ ผับ = n * G

จากนั้นสำหรับเส้นโค้งใดๆ ที่ทราบ ฉันสามารถคำนวณคีย์สาธารณะหนึ่งล้านคีย์เป็นตารางที่เหมือนกันสีรุ้ง โดยที่ n มีค่าตั้งแต่ 1 ถึง 1,000,000 ซึ่งจะใช้พื้นที่เพียง 32 MiB ในกรณีของเส้นโค้ง 256 บิตถ้ามีคนใช้ค่าใด ๆ ในช่วงนั้นเพื่อสร้างรหัสสาธารณะ ฉันสามารถยืนยันได้อย่างง่ายดายโดยเปรียบเทียบกับตาราง ในทางปฏิบัติ เวกเตอร์ทดสอบสำหรับเส้นโค้งที่กำหนดมักจะเริ่มจาก n = 1, 2, 3, ... เช่น. https://crypto.stackexchange.com/a/21206/95843

ในระดับที่เลวร้ายกว่านั้น ใครบางคนสามารถจัดเก็บโต๊ะประเภทนี้ได้แม้กระทั่ง 1TiB หรือ 1PiB (โอ้ เงิน!) ดังนั้นในแง่นั้น คีย์ส่วนตัวใด ๆ ที่น้อยกว่า 2^20 หรือแม้แต่ 2^50 นั้นไม่ดี!

จากการตัดด้านบน ขอบเขตล่างของไพรเวตคีย์จะถูกชำระ แต่มีขอบเขตบนหรือไม่? หรือใดๆ ถูกต้อง เลขเหนือขอบล่างดีและกันกระสุนเพียงพอหรือไม่

jp flag
เป็นรหัสส่วนตัวที่ค่อนข้างดีและกันกระสุนได้ คุณควรใช้อันนั้น (นี่เป็นเรื่องตลก)
jjj avatar
cn flag
jjj
ทำไมบางคนถึงสร้างตารางดังกล่าว ไม่มีใครถอดรหัสคีย์ที่สร้างขึ้นแบบสุ่มได้ เพราะมันไม่น่าเป็นไปได้ที่พวกมันจะอยู่ในช่วงนั้น ที่กล่าวว่าสิ่งเหล่านี้ดีพอ ๆ กับคีย์สุ่มอื่น ๆ
jjj avatar
cn flag
jjj
เมื่อคุณแยกล้านแรกออก ล้านที่ 2 ก็จะกลายเป็นล้านแรกใหม่ โดยการเหนี่ยวนำนั่นหมายความว่าไม่มีกุญแจที่ดี
Match Man avatar
it flag
ขอบคุณมากสำหรับคำตอบและความคิดเห็นของทุกคนในหัวข้อนี้ ฉันปิดการสนทนาเมื่อฉันได้สิ่งที่ต้องการแล้ว
Score:7
ธง us

มีอะไรพิเศษเกี่ยวกับ 1ล้านแรก กุญแจ? ไม่มีตารางสายรุ้งขนาดเล็กที่มีคีย์ในช่วง 1M ถึง 2M และตารางสายรุ้งขนาดเล็กที่มีคีย์ในช่วง 2M ถึง 3M และตารางสายรุ้งขนาดเล็กที่มีคีย์ในช่วง 842347283958M ถึง 842347283959M ฯลฯ หรือไม่

ตรรกะเดียวกันกับที่ทำให้คุณกังวลเกี่ยวกับคีย์ขนาดเล็ก (น้อยกว่า 1M) ก็สามารถทำให้คุณกังวลเกี่ยวกับคีย์อินได้เช่นกัน ใดๆ พิสัย! ไม่ว่าฉันจะมีคีย์ไหน ก็จะมีโต๊ะสายรุ้งเล็กๆ อยู่ข้างนอกนั่น ที่ไหนสักแห่ง ที่อาจให้ใครมาสะเดาะกุญแจของฉันได้ง่ายๆ แต่ผู้โจมตีจะต้องรู้ว่าใคร $2^{236}$ ของตารางสายรุ้งที่เป็นไปได้ (ช่วงของคีย์) เพื่อลอง!

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

cn flag
ปัญหาอาจเป็นได้ว่าหากมนุษย์เป็นคนเลือก `n` ด้วยตนเอง พวกเขามีแนวโน้มที่จะเลือกค่าที่ต่ำมาก ฉันรู้จักบางคนที่จำแฮช md5 ของสตริงว่างได้ เพราะพวกเขาเห็นมันบ่อยมาก จะไม่แปลกใจเลยหากบางคนที่ทำงานกับ crypto จำนวนมากสามารถจดจำคีย์บางตัวที่ใช้ในตัวอย่างได้ตลอดเวลา
Match Man avatar
it flag
เพราะมันง่ายที่จะคิดออก และราคาถูก นอกจากนี้ "ผู้เชี่ยวชาญ" ในพื้นที่รักษาความปลอดภัยบางแห่งอ้างว่า 0 หรือ 1 ปลอดภัยกว่าเท่ากับ 0x3b6ddba1f4b325cee4505084bc507d2019e86539f8d4be027004b69f9aa0bc74 ดังนั้นบางคนจะใช้พวกเขาเป็นหมายเลข "สุ่ม" พิสูจน์สัญลักษณ์แสดงหัวข้อย่อยเพื่อสร้างรหัสสาธารณะของพวกเขา และบุคคลที่มีความสามารถสามารถสแกนรหัสสาธารณะทั้งหมดเพื่อดูว่ามีคน "โชคดี" ใช้ตัวเลขสุ่มที่น้อยเกินไปในการสร้างหรือไม่ กฎเดียวกันนี้ยังใช้กับสาเหตุที่ `123456` หรือวันเกิดของคุณไม่ใช่รหัสผ่านที่ดี เนื่องจากทั้งหมดนี้ง่ายต่อการทดลองใช้
us flag
ความปลอดภัยไม่ใช่คุณสมบัติที่แท้จริงของคีย์ *เฉพาะ* มาจาก *ขั้นตอน* ของการเลือกคีย์ หากคุณมีกระบวนการที่ถูกต้อง ข้อกังวลเหล่านี้จะหมดไป
Match Man avatar
it flag
>ห่วงโซ่ของตรรกะนี้สรุปโดยไม่มีคีย์ที่ปลอดภัยให้เลือก
Match Man avatar
it flag
ประการที่สอง ห่วงโซ่ไม่เกิดซ้ำอย่างไม่มีที่สิ้นสุด เนื่องจากข้อจำกัดของพื้นที่จัดเก็บ อ้างอิง https://theconversation.com/the-worlds-data-explained-how-much-were-producing-and-where-its-all-stored-159964#:~:text=In%202018%2C%20the% 20total%20amount,One%20zettabyte%20is%208%2C000%2C000%2C000%2C000%2C000%2C000%2C000%20bits จนถึงปี 2020 มีพื้นที่จัดเก็บ 59 ZB ในโลก ดังนั้น *แทบจะ* เป็นไปไม่ได้เลยที่จะจัดเก็บโต๊ะ 590 ZB แม้จะขับเคลื่อนโดยเทคโนโลยีการบีบอัดก็ตาม ในแง่นั้น หมายเลขสุ่มที่มากกว่า 590 ZB จะถือว่าปลอดภัยจากกระสุน ซึ่งมากกว่า 2^82
Match Man avatar
it flag
ซึ่งมากกว่า 2^82.... แต่ก็ยังค่อนข้างเล็ก เมื่อเทียบกับคีย์สเปซทั้งหมดเช่น 2^256 หรือ 2^512
us flag
ดังนั้นคีย์ใดๆ ที่อยู่เหนือ $2^{82}$ ก็คือ "bulletproof safe" จากนั้นคุณเสนอให้มีกระบวนการสร้างคีย์ที่ไม่รวมคีย์ทั้งหมด
Match Man avatar
it flag
ไม่ ประเด็นคือทุกคนสามารถเลือกระยะที่เขาคิดว่าปลอดภัยพอ และปาร์ตี้ที่มีความสามารถ หรือพูดว่าผู้ล่าจะไล่ตามเป้าหมายที่ง่ายที่สุดเท่านั้น
Score:2
ธง ng

คำถามถูกต้องที่คีย์ส่วนตัวใด ๆ ที่น้อยกว่า 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 ผลลัพธ์คือคีย์ส่วนตัวที่ถูกต้อง (การทดสอบที่เราทำรับประกันว่าผลลัพธ์จะอยู่ในช่วงเวลาที่เหมาะสม)

Match Man avatar
it flag
ขอบคุณมากสำหรับการแบ่งปันข้อมูลเชิงลึกของคุณในหัวข้อนี้ ใช่ 2^128 เป็นจำนวนที่ยุติธรรม หากพิจารณาพรรคที่ "มีความสามารถ" มากกว่าพลเรือนแต่เมื่อพูดถึงขอบเขตบนของคีย์ที่ "ดี" คำถามของฉันคือหากคีย์ใดที่ใหญ่เพียงพอที่ถูกต้องก็เป็นคีย์ที่ดีเช่นกัน หมายความว่าไม่มีขอบเขตบนระหว่างคีย์ที่ดีที่ใหญ่ที่สุดเท่าที่จะเป็นไปได้และคีย์ที่ใหญ่ที่สุดที่ใช้งานได้ เช่น. พื้นที่ทั้งหมดของคีย์สเปซมีลักษณะดังนี้: [คีย์ส่วนตัวที่ถูกต้องน้อยที่สุด,2^128] ⪠[2^128+1, (ช่วงคีย์ที่ดี) , คีย์ที่ดีที่สุดที่ใหญ่ที่สุด] ⪠[ช่องว่าง, คีย์ที่ถูกต้องที่ใหญ่ที่สุด] â ª [รหัสไม่ถูกต้อง...]
fgrieu avatar
ng flag
@MatchMan: ลบคีย์ที่เป็นไปได้ในลักษณะที่รู้จักการรักษาความปลอดภัย _decreases_ ของฝ่ายตรงข้าม เนื่องจากฝ่ายตรงข้ามมีคีย์น้อยกว่าที่จะทดสอบ มัน _tolerable_ ที่จะลบคีย์ที่เป็นไปได้สองสามรายการ ไม่เป็นที่ต้องการแต่อย่างใด
Match Man avatar
it flag
ขอบคุณ ตอนนี้ชัดเจนมากสำหรับฉันแล้ว
id flag
@fgrieu: หากมีใครสร้างคีย์จำนวนมากและเช่น 1% ของพวกเขาสามารถถูกทดสอบด้วยกำลังดุร้ายได้ 10% ถูกกว่า (ราคา *ต่อผู้สมัคร*) กว่าที่เหลือ จากนั้นผู้โจมตีจะสามารถค้นหา 1% ของพื้นที่สำคัญโดยใช้ความพยายามเพียง 0.9% เท่าที่จำเป็นในการค้นหา ทั้งหมดของมัน. หากมีผู้หนึ่งสร้างคีย์มากพอที่อย่างน้อยบางคีย์น่าจะอยู่ใน 1% นั้น สิ่งนี้จะลดความพยายามของผู้โจมตีในการค้นหาอย่างน้อยหนึ่งคีย์ลงประมาณ 10% ในทางตรงกันข้าม การยกเว้นว่า 1% ของคีย์จะลดความพยายามที่จำเป็นของผู้โจมตีลง 1% เท่านั้น
fgrieu avatar
ng flag
@supercat: การค้นหาคีย์ใน ECC (หรือ DSA หรือ RSA) ไม่ใช่การสแกนคีย์สเปซ Ed25519 มีคีย์ $>2^{252}$ และการสแกนแม้กระทั่ง 0.00â¦01% (โดยที่ ⦠แทนที่ 40 ศูนย์) ซึ่งเกินเอื้อมด้วยความพยายามทั้งหมดที่เสียไปในการขุด bitcoin การโจมตีที่ห่างไกลจากความเป็นไปได้ ซึ่งโจมตีคีย์สาธารณะโดยตรง ตรงกันข้ามกับ crypto แบบสมมาตรในบางครั้ง และ RSA ในระดับที่น้อยกว่ามาก การโจมตีคีย์ ECC จำนวนมากพร้อมกันดูเหมือนจะไม่ทำให้การทำลายง่ายขึ้น และฉันไม่พบว่ามีคีย์หลายคลาส (1%) ที่สามารถถูกโจมตีได้เร็วกว่าคีย์อื่น (-10%)
id flag
@fgrieu: คำตอบของฉันเกี่ยวข้องกับแนวคิดทั่วไปที่ไม่มีใครสามารถกำหนดจำนวนของคีย์ "ที่มีปัญหา" ได้กว้างพอที่อาจกดแป้นหนึ่งโดยไม่ได้ตั้งใจ โดยที่มันไม่ได้กว้างมากจนไม่รวมคีย์เหล่านั้นจะลดพื้นที่คีย์บังคับเดรัจฉาน นั่นจะเป็นความจริงที่คลุมเครือสำหรับ cryptosystems ซึ่งความน่าจะเป็นของการกดคีย์ "ไม่ดี" แทบจะแยกไม่ออกจากศูนย์ แต่ฉันไม่คิดว่ามันจะคงอยู่สำหรับ cryptosystems ซึ่งมันไม่จริงเลย

โพสต์คำตอบ

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