49 เกี่ยวกับความเป็นไปได้ในการขโมยเหรียญ
แปลโดย : Claude 3 Opus (Pro)
49
เกี่ยวกับความเป็นไปได้ในการขโมยเหรียญ
ตามที่กล่าวไว้ก่อนหน้านี้ Bitcoin ใช้การเข้ารหัสลับแบบอสมมาตรด้วยคู่คีย์สาธารณะและคีย์ส่วนตัวเป็นกลไกในการรับและอนุมัติการใช้จ่าย bitcoin อย่างไรก็ตาม Satoshi ตัดสินใจที่จะใช้แฮชของคีย์สาธารณะเป็นที่อยู่ Bitcoin แทนที่จะใช้คีย์สาธารณะโดยตรง Satoshi ทำเช่นนี้ด้วยเหตุผลสองประการ หนึ่งคือเพื่อลดขนาดของแต่ละธุรกรรมเนื่องจากแฮชมีความยาวเพียง 160 บิต ประโยชน์ที่สองคือมันเพิ่มชั้นของความปลอดภัยอีกชั้นหนึ่งอย่างสะดวกในกรณีที่วันหนึ่งถูกค้นพบ "ประตูหลัง" หรือช่องโหว่ด้านความปลอดภัยในอัลกอริทึมการเข้ารหัสแบบอสมมาตรที่ Bitcoin ใช้ ในการที่จะสามารถใช้จ่าย bitcoin ได้ แฮกเกอร์จะต้องได้คีย์สาธารณะจากแฮชก่อน จากนั้นจึงได้คีย์ส่วนตัวมาจากคีย์สาธารณะ Bitcoin Magazine เขียนบทความที่ยอดเยี่ยมในหัวข้อนี้[2]
ทั้งเธรดนี้อภิปรายถึงความเป็นไปได้ที่ผู้โจมตีที่มีพลังการประมวลผลจำนวนมากอาจใช้ bitcoin ที่เก็บไว้ในที่อยู่ bitcoin ได้ เนื่องจากบล็อกเชน bitcoin เป็นบัญชีแยกประเภทเปิด จึงสามารถตรวจสอบเพื่อระบุที่อยู่ bitcoin ที่มียอดคงเหลือสูง และผู้โจมตีสามารถเน้นไปที่ที่อยู่เหล่านั้นได้
Satoshi สรุปว่าสิ่งนี้จะยากมาก เนื่องจากจะต้องใช้การโจมตีแบบ brute force เพื่อหาคีย์สาธารณะที่มีแฮชตรงกัน มันยังแสดงให้เห็นถึงคุณค่าของซอร์สโค้ดแบบเปิด (โค้ดที่เปิดให้ทุกคนเห็น) สำหรับความปลอดภัย ซึ่งตรงข้ามกับซอร์สโค้ดปิด
ส่วนสำคัญของเธรด รวมทั้งโพสต์ทั้งหมดของ Satoshi จะถูกนำมาใส่ไว้ที่นี่:
การขโมยเหรียญ
โพสต์โดย Red, 25 กรกฎาคม 2010, 17:08:03 น.
ผมคิดว่ามีข้อบกพร่องด้านการเข้ารหัสลับที่ค่อนข้างสำคัญใน Bitcoin ตามที่ใช้อยู่ในปัจจุบัน ผมไม่แน่ใจว่าจะถูกใช้ประโยชน์ได้ในตอนนี้ (ผมไม่ใช่แฮกเกอร์การเข้ารหัสลับตัวจริง) แต่เป็นที่เป็นไปได้มากว่าจะเกิดขึ้นในอนาคตอันใกล้
ข้อบกพร่องนี้จะทำให้สามารถขโมยเหรียญจากที่อยู่ Bitcoin ใด ๆ ได้โดยไม่ระบุตัวตน และไม่ ไม่จำเป็นต้องแก้ปัญหายาก ๆ ที่ทำให้ระบบการเข้ารหัสลับที่มีอยู่ปลอดภัย มันเป็นเพียงข้อบกพร่องทางตรรกะ ที่อาจเกิดขึ้น และแก้ไขได้ในการนำไปใช้
ผมอยากให้ bitcoins ประสบความสำเร็จ ดังนั้นผมจึงไม่อยากกระโดดขึ้นลงต่อหน้าสาธารณะพร้อมกับตะโกนเรื่องข้อบกพร่อง มีที่ไหนที่เหมาะสมที่จะถกเถียงประเด็นประเภทนี้ไหม?
Re: การขโมยเหรียญ
โพสต์โดย Satoshi, 25 กรกฎาคม 2010, 17:45:22 น.
จะดีที่สุดถ้าคุณบอกเรื่องนี้กับผมเป็นการส่วนตัวเพื่อจะได้แก้ไขก่อน
ผมเพิ่งอีเมลที่อยู่อีเมลของผมให้คุณ (หรือคุณสามารถส่ง PM มาหาผมที่นี่)
Re: การขโมยเหรียญ
โพสต์โดย Satoshi, 25 กรกฎาคม 2010, 19:06:23 น.
Red ขอบคุณที่บอกผมเป็นการส่วนตัวก่อนนะ! กรุณาลงประกาศเลย (และคลายความกังวลให้ทุกคน!)
ประเด็นของเขาคือธุรกรรมที่จ่ายให้กับที่อยู่ Bitcoin นั้นปลอดภัยเพียงใดขึ้นอยู่กับฟังก์ชันแฮช ในการทำให้ที่อยู่ Bitcoin สั้นลง ที่อยู่เหล่านั้นจึงเป็นแฮชของคีย์สาธารณะ ไม่ใช่คีย์สาธารณะเอง ผู้โจมตีจะต้องแค่ทำลายฟังก์ชันแฮช ไม่ใช่ ECDSA
Re: การขโมยเหรียญ
โพสต์โดย Red, 25 กรกฎาคม 2010, 19:09:43 น.
ขอบคุณ Satoshi,
นี่คือสิ่งที่ผมส่งให้เขา
-----------
การเข้ารหัสลับคีย์สาธารณะขึ้นอยู่กับความจริงที่ว่าการแยกตัวประกอบของจำนวนเฉพาะขนาดใหญ่นั้นยาก ทุกคนรู้เรื่องนั้น หากการโอน bitcoins ถูกกำหนดให้ใช้คีย์สาธารณะที่มีรูปแบบดีและต้องมีลายเซ็นคีย์ส่วนตัวที่เกี่ยวข้องสำหรับการโอนในอนาคต ผมจะยอมรับว่าการโอน bitcoins แบบเข้ารหัสนั้นปลอดภัยสมบูรณ์
อย่างไรก็ตาม ธุรกรรม bitcoin ดูเหมือนจะไม่ทำงานในลักษณะนั้น (จากที่ผมอ่าน) ธุรกรรมจะกำหนดจำนวนเหรียญให้กับ "ที่อยู่ bitcoin" โดยเฉพาะ โดยที่อยู่เป็นแฮชของคีย์สาธารณะ
ในการตรวจสอบความถูกต้องของธุรกรรม โหนดจะนำคีย์สาธารณะจากลายเซ็นและใช้มันเพื่อยืนยันลายเซ็นจริง หากลายเซ็นถูกต้อง ก็จะแฮชคีย์สาธารณะเพื่อยืนยันว่าตรงกับที่อยู่ bitcoin ที่ระบุไว้ในธุรกรรมก่อนหน้า หากทั้งสองตรงกัน โดยนิยามแล้ว ธุรกรรมก็ถือว่าใช้ได้
จุดอ่อนที่อาจเกิดขึ้นคือการเชื่อมโยงคีย์สาธารณะในลายเซ็นเข้ากับที่อยู่ bitcoin
มีความสัมพันธ์แบบหลายต่อหนึ่งระหว่างคีย์สาธารณะและแฮชที่กำหนด ตอนนี้ ถ้าการหาคู่ของจำนวนเฉพาะที่สร้างคู่คีย์สาธารณะ/ส่วนตัวที่ปลอดภัยโดยที่ส่วนคีย์สาธารณะแฮชไปเป็นที่อยู่ bitcoin โดยเฉพาะดูเหมือนจะยาก... มันก็น่าจะเป็นเช่นนั้นจริง ๆ
อย่างไรก็ตาม นั่นไม่จำเป็น
สิ่งที่คุณต้องการคือสิ่งใดก็ตามที่เป็นตัวแทนของคีย์สาธารณะที่แฮชชนกับบัญชี bitcoin ขนาดใหญ่ที่รู้จัก มันไม่จำเป็นต้องเป็นคู่คีย์ที่ปลอดภัยโดยอิงจากจำนวนเฉพาะ มันแค่ต้องทำงานครั้งเดียวและอนุญาตให้โอนเงินที่ขโมยไปยังบัญชีอื่น ซึ่งอาจง่ายกว่ามาก
บางแฮชนั้นยากที่จะชนมากกว่าแฮชอื่น ๆ ผมไม่แน่ใจเกี่ยวกับความแข็งแกร่งของแฮชที่ใช้ อย่างไรก็ตาม การชนแฮชใด ๆ ก็ตามจะง่ายขึ้นมากหากคุณไม่ต้องสนใจเนื้อหาที่ถูกแฮช
เนื่องจากลักษณะของคีย์สาธารณะ พวกมันจึงดูเหมือนข้อมูลแบบสุ่ม ตามที่ผมเข้าใจ คุณไม่สามารถรู้ได้ว่าคีย์สาธารณะนั้นอิงจากคณิตศาสตร์ที่ปลอดภัยหรือไม่ เว้นแต่คุณจะแยกตัวประกอบสำเร็จ ดังนั้นไคลเอนต์จึงไม่ลอง พวกมันปกติแล้วจะแค่ทำการตรวจสอบลายเซ็นและสันนิษฐานว่าคีย์สาธารณะถูกสร้างขึ้นอย่างปลอดภัยหากมันทำงาน
หมายเหตุ: การวิเคราะห์ต่อไปนี้ต้องการการตรวจสอบซ้ำโดยแฮกเกอร์การเข้ารหัสลับตัวจริง IANACR
ดังนั้น ขึ้นอยู่กับแฮช คุณสามารถใช้อัลกอริทึมการชนแฮชที่กำลังมาแรงเพื่อสร้างบล็อกข้อมูลที่ชนกันซึ่งเป็นตัวแทนของคีย์สาธารณะ จากนั้นโดยการกลับคณิตศาสตร์ของคีย์สาธารณะ/ส่วนตัว ก็สร้างคีย์ส่วนตัวที่เกี่ยวข้อง (แต่ไม่ค่อยปลอดภัยเลย) ซึ่งจะสร้างลายเซ็นที่ถูกต้อง
คุณสามารถนำคู่คีย์ที่ไม่ปลอดภัยและแยกตัวประกอบได้ง่ายของคุณไปสร้างธุรกรรมที่ลงนามซึ่งตรงกับที่อยู่ bitcoin ที่ต้องการ
เนื่องจากบันทึกธุรกรรมไม่สามารถตรวจสอบความถูกต้องของคีย์สาธารณะเต็มรูปแบบที่ตั้งใจให้เหรียญได้ มันจึงเพียงแค่สันนิษฐานว่ามันต้องเป็นคีย์ที่นำเสนอ
โดยการบันทึกคีย์สาธารณะเต็มรูปแบบของเป้าหมายการโอนในรายการบล็อก คุณสามารถกู้คืนความแข็งแกร่งที่ต้องการได้ อย่างไรก็ตาม คุณจะสูญเสียความสามารถในการส่งผ่านที่อยู่ 34 ตัวอักษร
หากผมพูดผิด ผมขออภัยที่เสียเวลาคุณ
ไชโย! Red
Re: การขโมยเหรียญ
โพสต์โดย Red, 25 กรกฎาคม 2010, 19:22:14 น.
Satoshi ชี้ให้เห็นว่าสถานการณ์ของผมยังคงต้องทำลายฟังก์ชันแฮช นั่นเป็นความจริง แต่ผมแปลกใจที่ได้รู้ว่าบางคนประสบความสำเร็จมากแค่ไหนกับเรื่องนั้น MD4 และ MD5 เป็นตัวอย่างที่ชัดเจน แต่งานกำลังดำเนินไปได้ดีในการชน SHA-1 และพี่น้องอย่าง SHA-256
แฮชอะไรที่ใช้ในส่วนนี้ของ Bitcoin?
เขายังสงสัยด้วยว่าคุณจะสามารถใช้อย่างอื่นนอกจากคู่คีย์ที่สร้างขึ้นหรือไม่
ในประเด็นนี้ ผมค่อนข้างมั่นใจว่ามันเป็นเรื่องง่ายเพียงแค่คณิตศาสตร์ ผมไม่ได้สนใจเรื่องนี้มากพอจนกระทั่งผมได้เรียนรู้เกี่ยวกับ "การลงนามแบบไม่เปิดเผย" ของเอกสาร
ปรากฏว่าคุณสามารถนำเอกสารมาคูณกับตัวเลขสุ่มได้ จากนั้นให้ใครสักคนเซ็นชื่อในไฟล์ที่ปนกัน ในที่สุด คุณก็นำตัวเลขสุ่มของคุณออกจากลายเซ็นของพวกเขา และผลลัพธ์ก็ยังคงเป็นลายเซ็นที่ถูกต้องสำหรับเอกสารต้นฉบับ ใครจะไปคิดว่ามันจะได้ผล!
ยังไงก็ตาม หากคู่คีย์ปลอดภัยก็ต่อเมื่ออิงจากคู่ของจำนวนเฉพาะเท่านั้น ถ้าอย่างนั้นก็ไม่มีอะไรเปลี่ยนแปลงคณิตศาสตร์ใด ๆ หากตัวเลขไม่ใช่จำนวนเฉพาะ พวกมันแค่แยกตัวประกอบได้ง่ายกว่ามาก
ผมจะดีใจมาก ๆ หากนักเข้ารหัสมาพิสูจน์ว่าผมเป็นคนโง่ มันส่งผลต่อคุณสมบัติบางอย่างของโปรเจกต์ก่อนหน้านี้ที่ผมสร้างซึ่งอาศัยการเชื่อมโยงเดียวกัน ผมก็ไม่ได้คิดเรื่องนี้ตอนนั้น
Re: การขโมยเหรียญ
โพสต์โดย knightmb, 25 กรกฎาคม 2010, 19:34:42 น.
ดีมาก อีกเหตุผลหนึ่งที่ทำให้ผมรัก open source
ตามที่ผมเข้าใจ และกรุณาแก้ไขผมหากผมเข้าใจผิด
เนื่องจากแฮชของคีย์สาธารณะนั้นเล็กกว่าคีย์สาธารณะจริง ๆ สิ่งที่ต้องทำคือหาการชนที่ตรงกับแฮช และเมื่อพบการชนนั้น คุณก็จะรู้คู่คีย์สาธารณะ/ส่วนตัว จากนั้นคุณก็แค่ใช้เหรียญโดยใช้คีย์ที่รู้และไคลเอนต์อื่น ๆ จะคิดว่าเป็นการโอนที่ถูกต้องเพราะไคลเอนต์สนใจแค่ว่าแฮชของคุณตรงกับแฮชของเหยื่อและธุรกรรมถูกบันทึกไปชั่วกาลนาน
ปัจจุบันแฮชมีความยาว 35 ตัวอักษร 26 ตัวอักษรและตัวเลข (ตัวพิมพ์ใหญ่) +26 (ตัวพิมพ์เล็ก) +10 (ตัวเลข) = 62 แบบต่อตัวอักษร
ดังนั้นเรามี 541,638,008,296,341,754,635,824,011,376,225,346,986,572,413,939,634,062,667,808,768 ความเป็นไปได้
ดังนั้นผมคิดว่าเรามีงานที่ต้องทำประมาณครึ่งหนึ่งเมื่อเทียบกับการใช้วิธีบรู๊ทฟอร์ซกับคีย์ส่วนตัว/สาธารณะหลัก การวางแผนเผื่ออนาคตไม่เคยทำให้ใครเดือดร้อน :)
Re: การขโมยเหรียญ
โพสต์โดย knightmb, 25 กรกฎาคม 2010, 19:44:02 น.
อ้างอิงจาก: Red เมื่อ 25 กรกฎาคม 2010, 19:22:14 น.
Satoshi ชี้ให้เห็นว่าสถานการณ์ของผมยังคงต้องทำลายฟังก์ชันแฮช นั่นเป็นความจริง แต่ผมแปลกใจที่ได้รู้ว่าบางคนประสบความสำเร็จมากแค่ไหนกับเรื่องนั้น MD4 และ MD5 เป็นตัวอย่างที่ชัดเจน แต่งานกำลังดำเนินไปได้ดีในการชน SHA-1 และพี่น้องอย่าง SHA-256
สิ่งที่พวกเขามักจะไม่พูดถึงคือ การสร้างการชน ยังคงใช้เวลา CPU มาก
ถ้าผมพบว่า Public Key 123456 สร้างแฮช ABCD และ Public Key 654321 ก็สร้างแฮช ABCD เช่นกัน
ผมก็ยังไม่มีคีย์ส่วนตัว
แต่จากที่คุณพูด ผมแค่ต้องการ Public Key 654321 และผมก็สามารถใช้เหรียญโดยแกล้งทำเป็น Public Key 123456
Re: การขโมยเหรียญ
โพสต์โดย Red, 25 กรกฎาคม 2010, 19:52:23 น.
จากที่ผมได้รับการบอกกล่าว bitcoin ใช้แฮชขนาด 160 บิตอันหนึ่งในการสร้างที่อยู่ bitcoin
ครอบครัวอัลกอริทึมแฮช SHA-1 เป็นหนึ่งในแฮชที่ใช้กันแพร่หลายที่สุด SHA-1 เป็นแฮชขนาด 160 บิต
นี่คือเอกสารที่อ้างว่าพบการชน SHA-1 ใน 2^52 รอบการเข้ารหัส และแฮชที่ปลอดภัยอย่างเหมาะสมจะต้องใช้ 2^80 รอบ 2^52 นั้นยังคงใหญ่ แต่มันเริ่มอยู่ในระดับของคลัสเตอร์และบอทเน็ต
http://www.ictlex.net/wp-content/iacrhash.pdf
แฮช MD5 สามารถถูกทำลายได้ภายในไม่กี่วินาทีบนแล็ปท็อปแล้ว นั่นเป็นเหตุผลที่มันถูกเลิกใช้จากลายเซ็นที่อิงจากใบรับรอง
และใช่ สิ่งที่ผมกำลังพูดคือ ผมคิดว่า คุณสามารถคิดถึงคีย์สาธารณะเป็นสองตัวเลขลับที่รวมกันทางคณิตศาสตร์ และคีย์ส่วนตัวคือสองตัวเลขนั้นที่แยกเก็บไว้ สิ่งที่ทำให้ระบบปลอดภัยคือมันต้องการให้ตัวเลขลับทั้งสองเป็นจำนวนเฉพาะที่ใหญ่มาก ๆ
แต่ถ้าพวกมันเป็นจำนวนที่ไม่ใช่จำนวนเฉพาะขนาดใหญ่ คณิตศาสตร์การรวมกันก็ยังทำงานได้ มันเพียงแค่ทำลายอัลกอริทึมได้เร็วกว่ามาก
ผมจะลองหาข้อมูลเพิ่มเติมใน Google อีกสักหน่อยและดูว่าผมจะพิสูจน์ข้อกล่าวอ้างของผมได้ไหม ผมหวังว่าใครสักคนจะสามารถปฏิเสธพวกมันได้ทันทีนะ
Re: การขโมยเหรียญ
โพสต์โดย Satoshi, 25 กรกฎาคม 2010, 20:01:40 น.
อ้างอิงจาก: knightmb เมื่อ 25 กรกฎาคม 2010, 19:44:02 น.
ถ้าผมพบว่า Public Key 123456 สร้างแฮช ABCD และ Public Key 654321 ก็สร้างแฮช ABCD เช่นกัน
ผมก็ยังไม่มีคีย์ส่วนตัว
แต่จากที่คุณพูด ผมแค่ต้องการ Public Key 654321 และผมก็สามารถใช้เหรียญโดยแกล้งทำเป็น Public Key 123456
คุณยังคงต้องเซ็นชื่อด้วยคีย์สาธารณะ 654321 คุณต้องหาการชนโดยใช้คีย์สาธารณะที่คุณรู้คีย์ส่วนตัว
เมื่อคุณอ้างสิทธิ์ธุรกรรมที่อยู่ Bitcoin คุณให้คีย์สาธารณะของคุณที่ตรงกับแฮช จากนั้นคุณต้องเซ็นชื่อด้วยคีย์นั้น
ประเด็นของ Red คือมันง่ายที่จะสร้างคีย์สาธารณะที่ไม่ปลอดภัยอย่างรวดเร็ว ซึ่งคุณสามารถทำลายและหาคีย์ส่วนตัวได้หลังจากที่คุณพบการชน
เขาชี้ให้เห็นว่าหากจำเป็นต้องใช้คีย์สาธารณะที่ปลอดภัย ซึ่งต้องใช้งานอย่างมากในการหาจำนวนเฉพาะ นั่นจะเพิ่มความแข็งแกร่งให้สูงกว่าฟังก์ชันแฮชเพียงอย่างเดียว ใครก็ตามที่พยายามบรู๊ทฟอร์ซจะต้องใช้เวลาในการสร้างคีย์สำหรับแต่ละความพยายาม
Re: การขโมยเหรียญ
โพสต์โดย knightmb เมื่อ 25 กรกฎาคม 2010 เวลา 20:20:41 น.
อ้างอิงจาก: satoshi เมื่อ 25 กรกฎาคม 2010 20:01:40 น.
คุณยังคงต้องเซ็นชื่อด้วย public key 654321 คุณต้องหาการชนโดยใช้คีย์สาธารณะที่คุณรู้คีย์ส่วนตัว
เมื่อคุณอ้างสิทธิ์ธุรกรรมที่อยู่ Bitcoin คุณให้คีย์สาธารณะของคุณที่ตรงกับแฮช จากนั้นคุณต้องเซ็นชื่อด้วยคีย์นั้น
ประเด็นของ Red คือมันง่ายที่จะสร้างคีย์สาธารณะที่ไม่ปลอดภัยอย่างรวดเร็ว ซึ่งคุณสามารถทำลายและหาคีย์ส่วนตัวได้หลังจากที่คุณพบการชน
เขาชี้ให้เห็นว่าหากจำเป็นต้องใช้คีย์สาธารณะที่ปลอดภัย ซึ่งต้องใช้งานอย่างมากในการหาจำนวนเฉพาะ นั่นจะเพิ่มความแข็งแกร่งให้สูงกว่าฟังก์ชันแฮชเพียงอย่างเดียว ใครก็ตามที่พยายามบรู๊ทฟอร์ซจะต้องใช้เวลาในการสร้างคีย์สำหรับแต่ละความพยายาม
ใช่ ผมคิดว่าคีย์ส่วนตัวต้องอยู่ในส่วนผสมที่ไหนสักแห่ง มันเพิ่มความสุ่มอีกชั้นหนึ่ง คุณต้องหาแฮชที่ชนกับคีย์สาธารณะอื่น และในขณะเดียวกัน คีย์ส่วนตัวก็ต้องอ่อนแอพอที่จะทำลายได้ ผมไม่ได้บอกว่ามันเป็นไปไม่ได้ แต่มันทำให้เกิดตัวแปร 2 ตัวในการค้นหาการชนย้อนกลับ
โดยพื้นฐานแล้ว คนหนึ่งจะสร้างตาราง rainbow ของคีย์ส่วนตัวที่อ่อนแอและจะต้องเปรียบเทียบคีย์เหล่านั้นกับแฮชสาธารณะแล้วก็ต้องหวังว่าจะมีใครสักคนที่นั่นมีแฮชที่เป็นส่วนหนึ่งของการโจมตีนั้นโดยบังเอิญ แน่นอนว่ามันไม่ใช่เรื่องที่เป็นไปไม่ได้ แต่จะเป็นไปได้แค่ไหนแม้ว่าคอมพิวเตอร์จะเร็วขึ้น 100 เท่าใน 10 ปี?
[แก้ไข] โอเค อ่านสิ่งที่คุณเขียนใหม่อีกครั้ง คีย์สาธารณะถูกสร้างจากคีย์ส่วนตัว ไม่ใช่อย่างอิสระ ดังนั้นการหาคีย์สาธารณะที่อ่อนแอจึงเป็นประเด็น
Re: การขโมยเหรียญ
โพสต์โดย satoshi เมื่อ 25 กรกฎาคม 2010 เวลา 20:48:01 น.
อ้างอิง
นี่คือเอกสารที่อ้างว่าพบการชน SHA-1 ใน 2^52 รอบการเข้ารหัส และแฮชที่ปลอดภัยอย่างเหมาะสมจะต้องใช้ 2^80 รอบ 2^52 นั้นยังคงใหญ่ แต่มันเริ่มอยู่ในระดับของคลัสเตอร์และบอทเน็ต
2^80 คือถ้าคุณสามารถใช้การโจมตีวันเกิด คุณไม่สามารถใช้การโจมตีวันเกิดสำหรับกรณีนี้ได้ ดังนั้นความยากจึงอยู่ที่ 2^160 บิตเต็ม แม้ว่าหากคุณกำลังพยายามแคร็กธุรกรรมใดก็ตามจาก 1 ล้าน (2^20) รายการ คุณสามารถทำการโจมตีวันเกิดบางส่วนได้ที่ 2^160/2^20 = 2^140
ที่อยู่ Bitcoin เป็นที่เดียวที่มีการใช้แฮช 160 บิต ที่อื่นทุกอย่างเป็น SHA-256 พวกมันถูกคำนวณดังนี้:
bitcoinaddress = RIPEMD-160(SHA-256(publickey))
แก้ไขผมหากผมผิด (โปรด และผมจะกินกาด้วยความยินดี) แต่ผมคิดว่ามันคงยากที่จะใช้การโจมตีแบบวิเคราะห์กับ RIPEMD-160 ในกรณีนี้ การโจมตีแบบวิเคราะห์จะกำหนดช่วงหรือรูปแบบของอินพุตบางอย่างที่จะลองใช้ ซึ่งจะเพิ่มโอกาสในการค้นพบการชนได้อย่างมาก ที่นี่ คุณไม่มีการควบคุมในลักษณะนั้นกับอินพุตของ RIPEMD-160 เพราะอินพุตคือเอาต์พุตของ SHA-256 หากการโจมตีแบบวิเคราะห์ช่วยให้คุณพบอินพุตไปยัง RIPEMD-160 ที่ทำให้เกิดการชน คุณจะทำอย่างไรกับมัน? คุณยังคงต้องทำให้ SHA-256 ส่งค่านั้นออกมา ดังนั้นคุณจะยังต้องทำลาย SHA-256 ด้วย
สำหรับบรู๊ทฟอร์ซ RIPEMD-160(SHA-256(x)) ไม่แข็งแกร่งไปกว่า RIPEMD-160 เพียงอย่างเดียว แต่สำหรับการโจมตีแบบวิเคราะห์ ดูเหมือนว่าคุณต้องโจมตีทั้ง RIPEMD-160 และ SHA-256 แบบวิเคราะห์ หากผมผิด งั้นความแข็งแกร่งก็จะเท่ากับ RIPEMD-160 เท่านั้นและ SHA-256 จะเป็นเพียงรอบเดียวของการเพิ่มความแข็งแกร่งของคีย์
เรื่อง: การขโมยเหรียญ
โพสต์โดย Red, 25 กรกฎาคม 2010, 21:04:01 น.
อ้างอิงจาก: satoshi เมื่อ 25 กรกฎาคม 2010, 20:48:01 น.
bitcoinaddress = RIPEMD-160(SHA-256(publickey))
แก้ไขผมหากผมผิด (โปรดทำ และผมจะกินอีกาด้วยความยินดี) แต่ผมคิดว่ามันคงยากที่จะใช้การโจมตีเชิงวิเคราะห์บน RIPEMD-160 ในกรณีนี้
ผมคิดว่าคุณพูดถูกเกี่ยวกับการโจมตีเชิงวิเคราะห์ อย่างน้อยก็เท่าที่ผมเข้าใจ (น้อยมาก) ความอัจฉริยะทางคณิตศาสตร์ที่กำลังวิเคราะห์พวกมัน
ผมกังวลว่ามันเป็นแบบที่ง่ายกว่านี้:
bitcoinaddress = RIPEMD-160(publickey)
เรื่อง: การขโมยเหรียญ
โพสต์โดย Red, 25 กรกฎาคม 2010, 21:19:11 น.
วิธีที่ผมเข้าใจก็คือ
กำหนดตัวเลขสองตัว p และ q ซึ่งสำหรับ RSA ควรเป็นจำนวนเฉพาะที่มีค่ามาก
จากนั้น n = p*q
กุญแจสาธารณะประกอบด้วยสองส่วน (n, e) โดย e เรียกว่าเลขชี้กำลังสาธารณะ และดูเหมือนจะถูกเลือกจากชุดของค่าทั่วไป
กุญแจส่วนตัวก็ประกอบด้วยสองส่วน (n, d) โดย d เรียกว่าเลขชี้กำลังส่วนตัว มันถูกคำนวณโดยการรู้ค่า e, p-1 และ q-1
เคล็ดลับคือ มันยากมากที่จะแยกตัวประกอบ n ออกเป็น p & q ดังนั้นจึงเป็นเรื่องยากเท่ากันที่จะหา p-1 และ q-1
สมมติฐานของผมคือ ถ้า n เป็นค่าใดๆ และ e เป็นหนึ่งในค่าทั่วไป ก็จะมีคู่ p, q หลายแบบที่ใช้ได้ ยิ่งตัวเลขเป็นจำนวนเฉพาะน้อยเท่าไหร่ ก็ยิ่งหา p และ q ได้ง่ายขึ้นเท่านั้น และจึงหา p-1 และ q-1 ได้ด้วย และถ้าคุณมีบล็อกข้อมูลใดๆ ขนาดใหญ่ มันก็จะให้ความยืดหยุ่นมากในการพยายามชนแฮช
(นั่นคือจุดที่ผมอาจจะพลาดไปเลยนะ ผมสนใจมากเลยถ้ามีเจ้าพ่อด้านคริปโตที่รู้ดีกว่าผม)
ผมได้อ่านว่าอัลกอริทึมการสร้างคีย์นั้นสร้าง p และ q โดยให้แน่ใจว่ามันเป็น "น่าจะเป็นจำนวนเฉพาะมาก" แต่มันต้องใช้งานมากเกินไปที่จะรู้แน่ชัด นี่ทำให้ผมเชื่อว่า จำนวนไม่เฉพาะนั้นไม่ได้ก่อให้เกิดความล้มเหลวที่ชัดเจนใดๆ แต่ผมก็อาจจะผิดก็ได้นะ
เรื่อง: การขโมยเหรียญ
โพสต์โดย satoshi, 25 กรกฎาคม 2010, 22:27:36 น.
ขอโทษครับ จริง ๆ แล้วมันคือ ECDSA (Elliptic Curve Digital Signature Algorithm) ไม่ใช่ RSA ผมไม่ควรพูดถึง "จำนวนเฉพาะ" ECDSA ไม่ใช้เวลามากในการสร้างคู่คีย์
เรื่อง: การขโมยเหรียญ
โพสต์โดย Red, 26 กรกฎาคม 2010, 12:46:04 น.
อ้างอิงจาก: satoshi เมื่อ 25 กรกฎาคม 2010, 22:27:36 น.
ขอโทษครับ จริง ๆ แล้วมันคือ ECDSA (Elliptic Curve Digital Signature Algorithm) ไม่ใช่ RSA ผมไม่ควรพูดถึง "จำนวนเฉพาะ" ECDSA ไม่ใช้เวลามากในการสร้างคู่คีย์
สักวันหนึ่งผมจะเรียนรู้ว่าเส้นโค้งเชิงวงรีทำงานอย่างไร แต่ไม่ใช่วันนี้ ผมควรจะเรียนคณิตศาสตร์เชิงจำกัดมากกว่านี้ตอนที่ผมอยู่ในมหาวิทยาลัย ใครจะคิดว่ามันจะมีประโยชน์อะไรบ้างเนี่ย!
อย่างไรก็ตาม ไอเดียและการนำไปใช้งานของ Bitcoin นั้นยอดเยี่ยมมากเลย Satoshi!
มันเปิดโลกใหม่ที่เต็มไปด้วยความเป็นไปได้ ผมชอบแนวคิดของการตกลงกันแบบกระจายตัวโดยไม่ต้องพึ่งพาความไว้วางใจเป็นพิเศษ ผมคิดว่านั่นคือแนวคิดที่เป็นการปฏิวัติเลย
นอกจากนี้ ผมคิดว่าไอเดียเกี่ยวกับการขุด Bitcoin นั้นชาญฉลาดมาก! ผมสงสัยว่าคุณจะสามารถทำให้เครือข่ายเริ่มต้นได้ด้วยวิธีอื่นหรือเปล่า ผมไม่เห็นด้วยว่ามันเป็นวิธีที่ "ยุติธรรม" ในการกระจายเหรียญ แต่เฮ้ โลกนี้มันไม่ยุติธรรมนี่นา! และจริง ๆ แล้ว ผมไม่คิดว่าจะมีวิธีอื่นที่จะสร้างความตื่นเต้นให้กับผู้ใช้ได้มากขนาดนี้หรอก
โดยผมยอมรับว่าไม่มีเธรดการขโมยบิทคอยน์จากสมมติฐานก่อนหน้าของผม ดูเหมือนว่าการแฮชซ้ำจะรับรองได้จากมุมมองของผม เรียกได้ว่าเยี่ยมมาก!
โดยบังเอิญ ผมก็ยังอยากรู้ว่าจะเกิดอะไรขึ้นหากคุณสร้างคีย์ RSA โดยอิงจากจำนวนที่ไม่ใช่จำนวนเฉพาะ ผมคิดว่าน่าจะมีระบบอื่น ๆ อีกที่ไม่ได้ใช้การแฮชซ้ำ :-)
เรื่อง: การขโมยเหรียญ
โพสต์โดย Bitcoiner, 27 กรกฎาคม 2010, 02:01:16 น.
ผมดีใจที่มีคนอย่าง Red คอยจับตามองสิ่งต่าง ๆ อย่างเฉียบคม! เธรดนี้ยังทำให้ผมชื่นชมซอฟต์แวร์โอเพนซอร์สด้วย เพราะมีผู้คนมากมายที่ฉลาดและสนใจในฟอรัมนี้ที่สามารถตรวจสอบซอฟต์แวร์และสร้างระดับความเชื่อมั่นเพิ่มเติมได้ ไม่แน่ใจว่า Bitcoin จะประสบความสำเร็จมากได้หรือไม่ถ้ามันเป็นซอฟต์แวร์ closed source!
เรื่อง: การขโมยเหรียญ
โพสต์โดย bytemaster, 28 กรกฎาคม 2010, 21:42:17 น.
สำหรับผมแล้ว ดูเหมือนว่าวิธีแก้ปัญหาที่ชัดเจนเพื่อลดความเสี่ยงจากการโจมตีที่อาจเกิดขึ้นคือการทำให้ "รางวัล" ที่อาจได้รับมีขนาดเล็ก ดังนั้นจึงไม่ควรเก็บเหรียญไว้ในที่อยู่เดียวกันมากเกินไป หากมูลค่าทางเศรษฐกิจของ "รางวัล" ต่ำกว่าต้นทุนในการทำลายมัน ก็จะไม่มีใครสนใจที่จะพยายามแคร็ก หลังจากพูดแบบนั้น ผมก็ยังคิดว่าการทำให้สิ่งต่าง ๆ ยากที่สุดที่จะถูกแคร็กนั้นเป็นสิ่งที่ดีที่สุด
เรื่อง: การขโมยเหรียญ
โพสต์โดย knightmb, 28 กรกฎาคม 2010, 22:45:16 น.
มันจะเป็นเรื่องยากแน่นอนทั้งด้วยโชคและพลังของ CPU/หน่วยเก็บข้อมูลที่จะทำแบบนี้
หากคุณพบการชนกันและคีย์ส่วนตัว นั่นก็จะไม่เป็นประโยชน์อะไรเพราะคุณจะต้องระบุบัญชีจาก 541,638,008,296,341,754,635,824,011,376,225,346,986,572,413,939,634,062,667,808,768 รูปแบบที่เป็นไปได้ของผู้คนที่ใช้บัญชี
ดังนั้นลองมองในสองแง่มุม สมมติว่าผมพบการชนกันในแฮชและผมพบคีย์ส่วนตัว ตอนนี้ผมต้องหวังว่าโอกาสของผมคือมีคนอื่นใช้แฮชนั้นอยู่ เนื่องจากมีหมายเลขบัญชีแฮชที่เป็นไปได้มากกว่าจำนวนคนที่เคยเกิดบนโลกใบนี้ และหากแต่ละคนใช้ที่อยู่หนึ่งล้านที่อยู่ การโจมตีโดยธรรมชาติของมันเอง แม้จะน่าสนใจ แต่ก็ไม่น่าเป็นไปได้จริงในวงกว้าง
http://bitcoinmagazine.com/7781/satoshis-genius-unexpected-ways-in-which-bitcoin-dodged-some-cryptographic-bullet/
Last updated