1、哈希函数性质(再次探讨)。设H是一个既具有隐藏性又具有谜题友好性的哈希函数。考虑G(z) = H(z) ǁ zlast,其中zlast表示z的最后一位。证明G具有谜题友好性但不具有隐藏性。
证明G具有谜题友好性
谜题友好性的定义为:对于每个可能的n位输出值y,如果k是从具有高最小熵的分布中选取的,那么在显著小于2ⁿ的时间内找到x使得H(k ‖ x) = y是不可行的。
设y是一个可能的输出值,y可以表示为y = y₁ ǁ b,其中y₁是H(z)的可能输出,b是一个比特(即z的最后一位)。
假设我们要找到z使得G(z) = y。因为G(z) = H(z) ǁ zₗₐₛₜ,这意味着我们需要找到z使得H(z) = y₁且zₗₐₛₜ = b。
由于H是谜题友好的,对于给定的y₁,当k从具有高最小熵的分布中选取时,在显著小于2ⁿ的时间内找到z使得H(z) = y₁是不可行的。即使我们知道最后一位b,找到满足H(z) = y₁的z仍然是困难的,因为找到H(z) = y₁的过程不受最后一位的影响。
所以G是谜题友好的。
证明G不具有隐藏性
隐藏性的定义为:给定哈希函数的输出,很难恢复出原始消息。
对于G(z) = H(z) ǁ zₗₐₛₜ,从G(z)的输出中,我们可以直接得到z的最后一位zₗₐₛₜ。这意味着输入z的一部分信息(最后一位)被直接暴露在输出中,不满足隐藏性的要求,即给定G(z)的输出,我们能够恢复出输入z的部分信息,所以G不具有隐藏性。
综上,G是谜题友好的,但不具有隐藏性。
2、随机性。在ScroogeCoin中,假设恶意方Mallory尝试生成(sk,pk)密钥对,直到她的私钥与其他人的私钥匹配。她能够做什么?平均而言,她需要多长时间才能成功?如果Alice的随机数生成器有一个漏洞,她的密钥生成过程只能产生1000个不同的密钥对,会发生什么情况?
1. Mallory私钥匹配他人后的能力
如果Mallory的私钥与其他人的私钥匹配,由于私钥是用于生成数字签名的关键,她将能够以该人的身份进行签名操作。这意味着她可以伪造该人的数字签名,在系统中假冒该人进行各种操作,例如在ScroogeCoin系统中伪造该人的交易签名,从而转移该人的加密货币等资产。
2. Mallory成功匹配私钥的平均时间
私钥通常是从一个非常大的密钥空间中随机选取的。假设私钥是从大小为N的密钥空间中随机生成的。每次Mallory生成一个(sk,pk)对时,她匹配到他人私钥的概率为1/N。根据概率理论,平均需要尝试N次才能成功匹配到他人的私钥。例如,如果私钥是n位的二进制数,那么密钥空间的大小N = 2^n。所以平均需要尝试2^n次才能找到匹配的私钥。尝试的时间取决于Mallory生成密钥对的速度。如果她每秒能生成r个密钥对,那么平均需要的时间T = 2^n / r秒。
3. Alice的随机数生成器有漏洞的情况
如果Alice的随机数生成器有一个漏洞,她的密钥生成过程只能产生1000个不同的密钥对。这意味着Alice的私钥只能从这1000个可能的私钥中选取。
-
Mallory的攻击难度降低 :Mallory现在只需要尝试这1000个可能的私钥,而不是整个大的密钥空间。平均而言,她只需要尝试500次(因为平均在尝试一半的可能性时会成功)就能找到与Alice匹配的私钥。
-
安全性大幅下降 :原本安全的密钥生成机制由于随机数生成器的漏洞变得非常脆弱。Mallory可以相对容易地伪造Alice的签名,从而控制Alice在ScroogeCoin系统中的资产等。这凸显了使用高质量随机数生成器来生成密钥的重要性,因为即使是一个小的漏洞也可能导致整个系统的安全性受到严重威胁。
3、解释为什么使用密码保护比特币不是一种安全的方式。
使用密码保护比特币并非安全方式的原因
使用密码保护比特币并非一种绝对安全的方式,原因如下:
1. 依赖网站的安全性
- 理想情况下,网站会使用只有用户知道的密码对密钥进行加密。
- 然而,用户必须信任网站完成这一操作,需相信其代码不会泄露用户的密钥或密码。
- 实际上,无法确保网站代码的安全性。
2. 在线钱包的安全隐患
- 如果网站或运营者是恶意的,或者网站遭到黑客攻击,用户的比特币将面临风险。
- 网站提供的代码直接接触用户的比特币,一旦服务提供商出现问题或存在恶意行为,可能导致比特币丢失。

128

被折叠的 条评论
为什么被折叠?



