大家好,又见面了,我是你们的朋友全栈君。
更多技术干货,欢迎扫码关注博主微信公众号:HowieXue,一起学习探讨软硬件技术知识经验,关注就有海量学习资料免费领哦:
———-
目录
近年来,随着黑客网络攻击事件频繁发生,网络安全问题亟待解决,同时security方面的软件解决方案也正快速更迭,相关软件开发人员也变得更紧缺。
使用传统纯软件的方法实现网络安全加解密、身份认证等算法存在较多缺陷,如执行各类算法的时间、资源消耗较大,并且无法实现密钥等secret的安全存储,这时各类芯片厂商推出了硬件加密芯片来解决上述问题,在增加系统安全性的同时,也极大提高了软件效率。
因此针对加密芯片实现系统的Security解决方案已为各大嵌入式开发人员所推崇。
百度百科给出定义:加密芯片是对内部集成了各类对称与非对称算法,自身具有极高安全等级,可以保证内部存储的密钥和信息数据不会被非法读取与篡改的一类安全芯片的统称。
目前加密芯片有多种,无非就是通过硬件更加高效的实现一些加解密算法和secret存储,以方便实现设备认证和数据加密,目前架构上有很多解决方案,例如MCU内部集成、和单独芯片方案等等。当然使用上还是单芯片solution用途更加广泛。其中Atmel(MicroChip)推出的ATECCxx、ATSHAxx、ATAESxx等等芯片使用较为广泛,个人觉得还是有较高安全性和易用性。详见官网链接:
Smart | Connected | Secure | Microchip Technology
由于网上相关资源较少,只有些官方网站有些介绍文档,中文资料几乎没有,而对于网络安全相关开发都比较复杂,不太好理解,针对初次开发难免会遇到困难。因此本人整理总结Atecc508/108A使用经验和技巧系列,但由于我网络安全是半路出家,其中有误或者能优化的地方欢迎大家批评指正!
这么正经说话突然不适应。。。难道是因为好久没写论文了(好qian啊)。。。切入正题:
一、ATECC508A概述:
Atmel的ATECC508A是首款集成ECDH(椭圆曲线Diffie-Hellman)安全协议的器件,面向诸如家庭自动化、工业联网、配件与耗材验证、医疗、移动等物联网(IoT)市场提供可靠的安全防护。并能提供ECDSA(椭圆曲线数字签名算法)签名与验证的认证功能。(ECDH协议是提供密钥加密/解密协议的一种极为安全的方法)
ATECC508A的主要安全特性包括:
- 经过优化的密钥存储和认证功能
- 应用所存储的私钥进行ECDH操作
- ECDSA(椭圆曲线数字签名算法)签名与验证
- 支持X.509认证格式
- 256位SHA/HMAC硬件引擎。。。
- 主要功能无非设备认证、安全通讯、数据加解密、以及key/证书存储管理等。不再多说,有兴趣上面链接官网见。
- 值得一提的是,虽然叫做加密芯片,但508是不能加解密数据的(不能把明文变密文),不过Atmel新推出的608可以加解密(内部集成了AES引擎)
二、ATECC508A使用:
- 和其他加密芯片一样,508A用途广泛,以在无线通讯安全领域应用为例:
- 508A还有个特点就是功耗低,并且成本也低(约0.3美刀),非常适用于物联网、车联网等应用环境。
- 其对外通讯提供了标准I2C接口,也支持Single-wire的高速Single Pin模式,硬件等详细细节见DataSheet,下图为封装:
大家到这里可能会有疑问,如果用I2C通信,那么Hacker不就很容易监听I2C获取并篡改数据吗? 别着急,508A解决这类问题都是小case,
深入研究后就会发现508的强大,就连硬件暴力拆解的防范都做的非常到位,软件相关更似“牢不可摧”,当然也要在正确使用前提下。
三 、ATECC508A 内部Architecture:
- 由图就可以看出508A实现的主要功能,并且有抢眼的ECC、SHA引擎、“真”随机数发生器、每个片子唯一的串号等。
- 并且外部是由一种硬件工艺(忘了叫啥了,注意看周边无序的条纹)能保护所有数据存储,就算把芯片拆开,也不能获取里面数据。
据Atmel内部技术支持介绍,508A内部也是有一个Atmel自己的MCU,并且挂载一个Secret EEPROM
实现各类安全相关功能。
- 508A Use case: (部分)
- 使用508A加密芯片执行各算法可显著减少时间消耗,见下图,包括使用硬件ECC、ECDSA签名及验签,以及AES加解密、产生随机数、计算MD5、SHA等执行时间效率
- 这节主要让大家对加密芯片有个大体概念,下节开始讲如何正确使用这款网络安全“神器”。
参考:
(文档类可在官网找到)
http://www.atmel.com/zh/cn/devices/ATECC508A.aspx
http://baike.baidu.com/link?url=7Gt0AImUdu_MumQImtNeqtfkufPypqgn5rjTgPlbN0V1FQm2-cdSwlfabYrbXO-eagEGVLkq–rdshls6rcMfwCW_X7fgkJ49FalJd_HAgYgEUkqh9nnQ5pqP229i36M ATECCx08_Ecosystems-Networks_Protection.doc
http://www.atmel.com/devices/ATECC508A.aspx
Atmel-8923DX-CryptoAuth-ATECC508A-Datasheet_1152016.pdf
Security_IoT_CryptoAuthLib_Overview.pdf
附录:ATECC508A系列总结链接汇总:
ATECC508A芯片开发笔记(一):初识加密芯片_HowieXue 薛永浩的博客-CSDN博客
ATECC508A芯片开发笔记(二):开发准备之 CryptoAuthLib 库简介与移植
ATECC508A芯片开发笔记(二):开发准备之 CryptoAuthLib 库简介与移植_HowieXue 薛永浩的博客-CSDN博客
ATECC508A芯片开发笔记(三):获取508A串号、随机数源码及I2C抓包分析
ATECC508A芯片开发笔记(三):获取508A串号、随机数源码及I2C抓包分析_HowieXue 薛永浩的博客-CSDN博客
ATECC508A芯片开发笔记(四):自定义配置508功能,规划DataZone数据存储
ATECC508A芯片开发笔记(四):自定义配置508功能,规划DataZone数据存储_HowieXue 薛永浩的博客-CSDN博客
ATECC508A芯片开发笔记(五):Provision执行过程及代码分析
ATECC508A芯片开发笔记(五):Provision执行过程及代码分析_HowieXue 薛永浩的博客-CSDN博客
ATECC508A芯片开发笔记(六):产生CSR以及申请证书(X.509)流程及其内容分析
ATECC508A芯片开发笔记(六):产生CSR以及申请证书(X.509)流程及其内容分析_HowieXue 薛永浩的博客-CSDN博客
ATECC508A芯片开发笔记(七):实现对数据数字签名(Sign)并验证(Verify)证书签名
ATECC508A芯片开发笔记(七):实现数字签名(Sign)并校验(Verify)证书签名_HowieXue 薛永浩的博客-CSDN博客
ATECC508A芯片开发笔记(八):ECDH算法配置方法、执行过程及实现原理
ATECC508A芯片开发笔记(八):ECDH算法配置方法、执行过程及实现原理_HowieXue 薛永浩的博客-CSDN博客
ATECC508A芯片开发笔记(九):加密读写508芯片数据的流程及相应设置
ATECC508A芯片开发笔记(九):加密读写508芯片数据的流程及相应设置_HowieXue 薛永浩的博客-CSDN博客
ATECC508A芯片开发笔记(十):ConfigZone中 SlotConfig及KeyConfig详细配置 & Tools 使用
ATECC508A芯片开发笔记(十):ConfigZone中 SlotConfig/KeyConfig详细解释 & 配置工具Tools_HowieXue 薛永浩的博客-CSDN博客
博主热门文章推荐:
一篇读懂系列:
- 一篇读懂无线充电技术(附方案选型及原理分析)
- 一篇读懂:Android/iOS手机如何通过音频接口(耳机孔)与外设通信
- 一篇读懂:Android手机如何通过USB接口与外设通信(附原理分析及方案选型)
LoRa系列:
- LoRa学习:LoRa关键参数(扩频因子,编码率,带宽)的设定及解释
- LoRa学习:信道占用检测原理(CAD)
- 433MHz LoRa/FSK 无线频谱波形分析(频谱分析仪测试LoRa/FSK带宽、功率、频率误差等)
网络安全系列:
- ATECC508A芯片开发笔记(一):初识加密芯片
- SHA/HMAC/AES-CBC/CTR 算法执行效率及RAM消耗 测试结果
- 常见加密/签名/哈希算法性能比较 (多平台 AES/DES, DH, ECDSA, RSA等)
- AES加解密效率测试(纯软件AES128/256)–以嵌入式Cortex-M0与M3 平台为例
嵌入式开发系列:
- 嵌入式学习中较好的练手项目和课题整理(附代码资料、学习视频和嵌入式学习规划)
- IAR调试使用技巧汇总:数据断点、CallStack、设置堆栈、查看栈使用和栈深度、Memory、Set Next Statement等
- Linux内核编译配置(Menuconfig图形化方式)、制作文件系统的步骤
- Android底层调用C代码(JNI实现)
- 树莓派到手第一步:上电启动、安装中文字体、虚拟键盘、开启SSH等
- Shell脚本实现动态配置IP与路由:解决嵌入式Android/Linux有线和无线网卡双网共存问题
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/152847.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...