公钥加密或称非对称加密体制,是一种使用公钥和私钥对的加密体制。它是加密货币协议中最重要的部分之一,它被用于几个地方:加密货币钱包的创建,以确保加密货币只能由所有者使用,交易签名(数字签名),这是加密货币协议的核心组件。简而言之,如果您将加密货币发送给其他人,则使用您的私钥(或使用私钥生成的签名密钥)对该事务进行签名,并且使用您的公钥验证事务。所以,如果黑客获得了你的私钥,他们就可以把你的加密货币发给自己。
生成公钥和私钥有两种算法。例如,比特币协议使用椭圆曲线数字签名算法(ecdsa)。在本文中,我将解释rivests - shamir - adleman (rsa),并与ecdsa进行比较。rsa是最早、应用最广泛的公钥密码系统之一。它以其创始人ron rivest、adishamir和leonard adleman的名字命名,几乎成为公钥密码的同义词。
rsa算法
rsa使用模-n (mod n)算法广泛地使用算术运算。对n取余就是x除以n后的余数。例如,17取余5 = 2。rsa通常由三个主要部分组成(有时添加公钥共享是有意义的):
· 生成公钥和私钥
· 使用生成的公钥加密数据
· 使用生成的私钥解密数据
生成公钥和私钥
为了生成rsa的公钥和私钥,alice和bob(这两个虚构的角色已经成为讨论密码学的行业标准)执行以下步骤:
1. 选择两个较大的素数p和q,数值越大,rsa越难破解,但编码解码的时间越长。
2. 计算n = pq和z = (p - 1)(q - 1)。
3. 选择一个小于n的数e,除1外没有公因数,z或它们的最大公约数(gcd)等于1,gcd(e, z)等于1。在这种情况下,e和z是相对素数。e将用于加密。
4. 求一个数d,使ed - 1能被z整除,另一种方法是对z = 1取余。d将用于解密。
5. bob或alice提供给世界的公钥是一对数字(n, e),而私有密钥必须是秘密的,是一对数字(n, d)。
使用生成的公钥加密数据
假设alice想传递一个讯息给bob,由“位”模式表示整数m(明文消息),其中m 《 n。加密的明文消息m c m ^ = e mod n密文c将发送给bob。注意,alice使用的是bob的公钥加密消息。
使用生成的私钥解密数据
要解密收到的密文,bob计算m =c^d mod这需要使用他的私钥(n,d)。
rsa的安全性依赖于这样一个事实:对于快速分解(素因子分解)数字,没有已知的算法。在本例中,公共值n放入p和q中。
rsa与ecdsa的比较
在ecda中,私钥是随机生成的整数。在比特币协议中,它是256位(32字节)整数。ecdsa还可以使用相同的算法,使用不同的椭圆曲线生成公钥。比特币协议使用secp256k1。在rsa中,密钥(公钥、私钥和签名)很大,密钥生成很慢。
另一方面,rsa易于实现,而ecdsa难以实现。2010年12月,playstation 3遭到黑客攻击,原因是索尼没有正确实施该算法。这就是为什么建议使用已经测试过的库(如openssl)来生成ecdsa密钥对的原因。
大约一年前,我实现了一个名为eccpem的开源库,并安装了github,它生成ecdsa密钥对,并使用openssl库将它们存储在.pem文件中。
结论
大多数加密货币协议使用ecdsa(我认为这是有意义的)而不是rsa。至少有两个原因:
· ecdsa使用的内存比rsa少得多。
· ecdsa比rsa快。
费城半导体指数大跌近5% 纳入企业包括博通与英伟达等
大能智造积累多年粉末配比技术 适时切入到LED行业
【新专利介绍】集中抄表系统采集器及电表资产编号搜集管理方法
台积电:2025年用几纳米?3D封装怎么整?
便携食品安全检测仪介绍
如何使用生成的公钥加密数据和私钥解密数据
菌落总数快速检测仪的试子性能及其使用的介绍
语音交互技术助力智能家居布局养老市场
关于智能摄像头的安全隐患的分析和介绍
PCB设计中的高速信号传输优化技巧
性能优势明显,Mini LED上车蓄势待发
弱电工程中常见的六种无线网络组网架构讲解
基于模型的软件开发环境SCADE的技术特点和开发流程设计浅析
TI推出三款模拟输入D类立体声放大器,可在极低功耗下实现高质量音频性能
台庆 | 科车用等级高耐流低直流阻抗芯片磁珠
电子元器件供应链系统可有效降低管理成本并提升效率
智能化PE薄膜缺陷检测系统的原理、参数及功能
SIM卡座连接器的使用寿命是衡量连接器性能可靠性的重要指标
车用液晶面板设计分析
开发单片机时需掌握的四个基本技巧