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 รูปแบบที่เป็นไปได้ของผู้คนที่ใช้บัญชี

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

  1. http://bitcoinmagazine.com/7781/satoshis-genius-unexpected-ways-in-which-bitcoin-dodged-some-cryptographic-bullet/

Last updated