Bitcointalk · Stealing Coins

中本聪,2010 年 7 月 25 日

SN-1644 已核对来源,附原文与上下文。

阅读语言
中文译文

如果我算出公钥 123456 生成哈希 ABCD 而 公钥 654321 也生成哈希 ABCD 我手里仍然没有私钥。

但照你的说法,我只需要公钥 654321,就能冒充公钥 123456 去花币。

你仍然得用公钥 654321 签名。你需要用一个自己知道私钥的公钥去找碰撞。

当你认领一笔比特币地址交易时,你给出与哈希匹配的公钥,然后用那把钥签名。

Red 的意思是:快速生成不安全的公钥很容易,你可以先找到碰撞,再去破解公钥拿到私钥。

他指出,倘若要求公钥必须是安全的那种——即生成它的质数必然花了大量工夫——那安全性就会高于仅靠哈希函数的水平。想暴力破解的人每次尝试都得花时间生成一把钥。

ORIGINAL · 英文原文
If I figure out that Public Key 123456 generates Hash ABCD
and
Public Key 654321 also generates Hash ABCD
I'm still left without the Private Key.

But from what you are saying, all I need is Public Key 654321 and I can spend coin pretending to be Public Key 123456.
You would still have to sign it with public key 654321.  You need to find a collision using a public key for which you know the private key.

When you claim a Bitcoin Address transaction, you give your public key that matches the hash, then you must sign it with that key.

Red's point is that it's easy to quickly generate insecure public keys which you could break and find the private key after you find a collision.

He points out that if the public key was required to be a secure one, one which must have required significant work to find the prime numbers, that would increase the strength above that of the hash function alone.  Someone trying to brute force would have to take time generating a key for each attempt.
来源
Bitcointalk 原始链接 ↗ 记录编号 SN-1644