私钥
出自 MBA智库百科(https://wiki.mbalib.com/)
私钥(Private key)
目录 |
私钥就是,私钥加密算法使用单个私钥来加密和解密数据。由于具有密钥的任意一方都可以使用该密钥解密数据,因此必须保护密钥不被未经授权的代理得到。私钥加密又称为对称加密,因为同一密钥既用于加密又用于解密。私钥加密算法非常快(与公钥算法相比),特别适用于对较大的数据流执行加密转换。通常,私钥算法(称为块密码)用于一次加密一个数据块。块密码(如 RC2、DES、TripleDES 和 Rijndael)通过加密将 n 字节的输 入块转换为加密字节的输出块。如果要加密或解密字节序列,必须逐块进行。由于 n 很小(对于 RC2、DES 和 TripleDES,n = 8 字 节;n = 16 [默认值];n = 24;对于 Rijndael,n = 32),因此必须对大于 n 的数据值一次加密一个块。
基类库中提供的块密码类使用称作密码块链 (CBC) 的链模式,它使用一个密钥和一个初始化向量 (IV) 对数据执行加密转换。对于给定的私钥 k,一 个不使用初始化向量的简单块密码将把相同的明文输入块加密为同样的密文输出块。如果在明文流中有重复的块,那么在密文流中将存在重复的块。如果未经授权的 用户知道有关明文块的结构的任何信息,就可以使用这些信息解密已知的密文块并有可能发现您的密钥。若要克服这个问题,可将上一个块中的信息混合到加密下一 个块的过程中。这样,两个相同的明文块的输出就会不同。由于该技术使用上一个块加密下一个块,因此使用了一个 IV 来加密数据的第一个块。使用该系统, 未经授权的用户有可能知道的公共消息标头将无法用于对密钥进行反向工程。
可以危及用此类型密码加密的数据的一个方法是,对每个可能的密钥执行穷举搜索。根据用于执行加密的密钥大小,即使使用最快的计算机执行这种搜索,也极其耗 时,因此难以实施。使用较大的密钥大小将使解密更加困难。虽然从理论上说加密不会使对手无法检索加密的数据,但这确实极大增加了这样做的成本。如果执行彻 底搜索来检索只在几天内有意义的数据需要花费三个月的时间,那么穷举搜索的方法是不实用的。
私钥加密的缺点是它假定双方已就密钥和 IV 达成协议,并且互相传达了密钥和 IV 的值。并且,密钥必须对未经授权的用户保密。由于存在这些问题,私钥加密通常与公钥加密一起使用,来秘密地传达密钥和 IV 的值。
私钥的管理维度[1]
在区块链系统中,大多采用 私钥 -> 公钥 -> 地址,这样逐级生成的方案,用户使用地址来暴露对外的收款地址,私钥多用于交易签名。 不论是地址还是公钥,最后都可以由私钥进行推导得出,我们一般关心以下的几点:
(1)密钥的生成方法;
(2)密钥存储模式;
(3)多层分级的私钥派生规则;
(4)多密码学公钥对应协议;
(5)和密钥地址转换规则制定标准。
私钥的储存[1]
私钥的存储和使用一般分为软实现和硬实现。
软实现即存储和使用都以软件形式。密钥生成后作为文件或字符串保存在用户终端或者托管到服务器,使用时直接或通过简单的口令控制读取到私钥明文到内存,通过CPU完成私钥计算。这种存储和使用方式显然有很多安全风险,容易被黑客或内鬼复制、窃取、暴力破解等。
硬实现一般是依托专用密码安全芯片或者密码设备作为载体,一般有物理保护、敏感数据保护、密钥保护等机制,确保私钥必须由专用硬件产生。在任何时间、任何情况下,私钥均不能以明文形式出现在密码设备外;密码设备内部存储的密钥应具备有效的密钥保护机制,防止解剖、探测和非法读取。私钥不可导出,仅可计算输出签名值。比如金融领域常见的U盾(UKEY)、金融IC卡、加密机等均属于此类方式。
私钥的意义[1]
(1)降低密钥管理难度
区块链的用户可以使用一把私钥在不同的链控制多个不同的账户/地址,降低用户使用/管理密钥的难度。
(2)降低差异,打破孤岛
在任意遵循标准的链上创建的密钥可以直接在所有其他遵循标准的链上使用,减少区块链项目密钥管理模块的差异性。 比如遵循该标准的钱包A和钱包B,用户只需要掌控一把私钥,即可无缝切换两个钱包,无需再管理两套助记词或者Keystore。
(3)打通身份证明
区块链用户可以在不同密码学的多条链上证明身份的唯一性,为去中心化身份认证提供底层支持。当前因为密钥管理的割裂,用户在各条链上的身份无法打通,无法证明多个私钥归属于一个用户,从而为身份识别增加了障碍,通过遵循该标准,用户只需一把私钥即可管理多个链上资产,从而更好的对用户的身份进行识别。
1、公钥和私钥成对出现;
2、公开的密钥叫公钥,只有自己知道的叫私钥;
3、用公钥加密的数据只有对应的私钥可以解密;
4、用私钥加密的数据只有对应的公钥可以解密;
5、如果可以用公钥解密,则必然是对应的私钥加的密;
6、如果可以用私钥解密,则必然是对应的公钥加的密。