当前位置:首页 > 资讯 > 区块链新闻 > 正文

KDF:函数推导区块链密钥

发布:中币网   时间:2018-07-15 18:15:00   加入收藏 打赏

目前,最重要的并不是数字数量的可能性。 现在是攻击者需要成功破解你的密钥时,现在就是KDF真正进入技术的地方。来源:区块链研究实验室目前,最重要的并不是数字数量的可能性。 现在是攻击者需要成功破解你的 ... ,中币网-比特币标志着区块链时代的到来

目前,最重要的并不是数字数量的可能性。 现在是攻击者需要成功破解你的密钥时,现在就是KDF真正进入技术的地方。


来源:区块链研究实验室


目前,最重要的并不是数字数量的可能性。 现在是攻击者需要成功破解你的密钥时,现在就是KDF(Key Derivation Function)真正进入技术的地方。

 

KDF或密钥推导函数是一种强大的密钥,即使你的熵很低。

 

想象一下,你想生成一颗种子,攻击者知道有10,000,000种可能性。这种类型的种子通常很容易被攻破。

 

但是如果你可以让枚举变慢呢的方法呢?

 

KDF是一种散列函数,有意浪费计算资源。

 

这里是一个例子:

 

var derived = SCrypt.BitcoinComputeDerivedKey("hello", new byte[] { 1, 2, 3 });

RandomUtils.AddEntropy(derived);

 

即使你的攻击者知道你的熵源是5个字母,他也需要运行Scrypt来检查每个可能性,这可能也需要5秒钟去破解。

 

不信任PRNG没有任何偏执,并且可以通过添加熵和使用KDF来缓解攻击。

 

请记住,攻击者可以通过收集有关您或您的系统的信息来减少熵。如果您使用时间戳作为熵源,那么攻击者可以通过知道您上周生成密钥来降低熵,并且您只在上午9点至下午6点之间使用计算机。

 

在上一部分中,简要地谈了一个叫做Scrypt的特殊KDF。 正如所说,KDF的目标是使暴力成本高昂。因此,对于您而言,已经存在一个使用KDF用密码加密私钥的标准并不令人感到意外。 这就是BIP38。

 

这里是一个例子:

 

 

var privateKey = new Key();

var bitcoinPrivateKey = privateKey.GetWif(Network.Main);

Console.WriteLine(bitcoinPrivateKey);

// L1tZPQt7HHj5V49YtYAMSbAmwN9zRjajgXQt9gGtXhNZbcwbZk2rBitcoinEncryptedSecret encrypted

BitcoinPrivateKey = bitcoinPrivateKey.Encrypt("password");

Console.WriteLine(encryptedBitcoinPrivateKey);

// 6PYKYQQgx947Be41aHGypBhK6TA5Xhi9TdPBkatV3fHbbKrdDoBoXFCyLKvar decrypted

BitcoinPrivateKey = encryptedBitcoinPrivateKey.GetSecret("password");

Console.WriteLine(decryptedBitcoinPrivateKey);

// L1tZPQt7HHj5V49YtYAMSbAmwN9zRjajgXQt9gGtXhNZbcwbZk2r

Console.ReadLine();

 

这种加密用于两种不同的情况:

 

你不相信你的存储提供商(他们可能会被黑客攻击)

 

您代表其他人存储密钥(并且您不想知道密钥)

 

如果你拥有你的存储,那么在数据库级别进行加密可能就足够了。

 

如果您的服务器负责解密密钥,请小心,攻击者可能会尝试通过强制解密许多密钥来对服务器执行DDOS操作。尽可能将解密委托给最终用户。

 

首先,为什么要生成几个密钥?

 

主要原因是隐私。 由于您可以看到所有地址的余额,所以最好为每笔交易使用一个新地址。

 

但是,实际上,您也可以为每个联系人生成密钥,这使得您可以轻松识别付款人而不会泄露太多隐私。

 

您可以生成一个密钥,就像您在开始时所做的那样:

 

var privateKey = new Key()

 

但是,你有两个问题:

 

当您生成新密钥时,您拥有的所有钱包备份将变得过时。

 

您不能将地址创建过程委派给不受信任的对等方。

 

如果您正在开发Web钱包并代表您的用户生成密钥,并且一名用户被黑客入侵,他们将立即开始怀疑您。

 

原文出自:http://www.huoxing24.com/newsdetail/2018071211193592108.html

 

微信公众号→添加朋友→搜bitett




来源:比特头条




来源:中币网  https://www.zhongbi.net/news/blocknews/95638.html
声明:登载此文仅出于分享区块链知识,并不意味着赞同其观点或证实其描述。文章内容仅供参考,不构成投资建议。投资者据此操作,风险自担。 此文如侵犯到您的合法权益,请联系我们3111859717@qq.com,我们将第一时间处理。