ATECC508A芯片开发笔记(八):ECDH算法配置方法、执行过程及实现原理
来源:互联网 发布:苏州淘宝模特招聘 编辑:程序博客网 时间:2024/06/07 19:50
ATECC508A芯片开发笔记(八):ECDH算法配置方法、执行过程及实现原理
- 1、ECDH介绍及原理
- 2、ECDH执行过程
- 3、508A某一slot执行Ecdh需要配置的参数
508A芯片硬件可以实现ECDH算法,大大提高了算法执行效率,实际使用中,需要配置好508A使其能够执行ECDH,之后才可以调用库函数的API正确执行该算法。
1、ECDH介绍及原理
ECC Diffie-Hellman (ECDH) 是实现密钥协商的一种算法,或者说一种协议。关于详细原理,具体可以参考:http://blog.csdn.net/mrpre/article/details/72850644
或 https://msdn.microsoft.com/zh-cn/library/cc488016(v=vs.90).aspx
个人理解,Ecdh算法是通过ECC(椭圆曲线)非对称加密算法的数学关系和 Diffie-Hellman协议,生成一个共同的Session key。
例如,有两个节点A和B,他们都有公私钥对:PrivateKeyA和PublicKeyA,PrivateKeyB和PublicKeyB,(简称PriB PubB)
如果利用对方的公钥和自己的私钥,进行ECDH数学运算,由于其存在的数学关系(椭圆曲线),一定会算出一个共同的数值,既密钥。(纯数学关系角度,虽然不好理解,但是合理的)。
因此PriA 与PubB,及PriB与PubA总会生成一个唯一共同的密钥。
2、ECDH执行过程
ECDH开始时,会有一个发起方,假定为A,则发起方A会产生一个Random,并混合发起方A的PublickeyA发送给接收方B,然后B向A发送B的公钥PublickeyB,最终B通过A的PublicKeyA+Random,A通过自己产生的Random和PublickeyB生成该次密钥协商的唯一SessionKey。
该过程结果都是数学运算的结果,因为ECC算法的公私钥之间存在着一定的数学关系。
3、508A某一slot执行Ecdh需要配置的参数
3.1、将该Slot配置成可以执行ecdh,其中可以灵活的配置ECDH算法结果的输出形式,方便开发。
3.2、将该Slot配置成可以二次产生密钥(可以执行Genkey命令)),这是因为ECDH过程中需要使用GenKey命令。
- ATECC508A芯片开发笔记(八):ECDH算法配置方法、执行过程及实现原理
- ATECC508A芯片开发笔记(五):Provision执行过程及代码分析
- ATECC508A芯片开发笔记(一):初识加密芯片
- ATECC508A芯片开发笔记(四):自定义配置508功能,规划DataZone数据存储
- ATECC508A芯片开发笔记(三):获取508A串号、随机数源码及I2C抓包分析
- ATECC508A芯片开发笔记(七):实现对数据数字签名(Sign)并验证(Verify)证书签名
- ATECC508A芯片开发笔记(二):开发准备之 CryptoAuthLib 库简介与移植
- ATECC508A芯片开发笔记(六):产生CSR以及申请证书(X.509)流程及其内容分析
- Jecc(java椭圆曲线加密库)学习笔记及ECDH实现
- ATECC508A加密芯片
- ECC-based 算法(ECDSA/ECDH) 新潮算法的原理
- MapReduce 原理及执行过程
- openCv学习笔记(八)-分水岭算法及实现(c语言函数)
- 编译原理(八) 算符优先分析法(分析过程的算法和C++实现)
- 编译原理(八) 算符优先分析法(分析过程的算法和C++实现)
- GEF原理及实现系列(八、选项板)
- Android OTA升级原理和流程分析(八)---升级程序update_binary的执行过程
- Android OTA升级原理和流程分析(八)---升级程序update_binary的执行过程
- 浅谈压缩感知(三):几何解释
- 安装JDK、安装TOMCAT
- C#初识 09值类型和引用类型
- linux 进程间通信 信号量
- Spring boot和MyBatis的整合
- ATECC508A芯片开发笔记(八):ECDH算法配置方法、执行过程及实现原理
- leetCode-Third Maximum Number
- GC常用算法
- java异常
- HTML总结 HTML详细介绍重要知识点
- 关于Presentation Error的一点经验
- 0-1背包问题从复杂到简单的优化历程
- LeetCode#1-TwoSum
- PBR渲染原理