关于TI CC2541和Nordic NRF51822的AES ECB加密

AES加密,对于无线通信是一个比较重要的功能,他保证了通信内容的机密性,增加了蓝牙设备的安全级别,蓝牙的明文通信,完全可以通过相关设备进行抓包复制破解产品的控制方式,这样不仅降低了用户体验,也增加了有些设备的使用风险,没有什么加密是不可破解的,但是破解的难度还是有等级之分的,AES加密在一定程度上还是值得信赖的。很多人可能会认为蓝牙本身通过配对绑定也可以实现加密呀,既然这样,实际应用就可以不使用AES加密,因为通信已经加密。这样说也没有错,但是有个使用场景的问题,对于蓝牙绑定的个数是非常有限的,比如CC2541最多绑定十个用户,如果用户超过十个了呢,删除用户重新补充绑定,这样的用户体验非常差,不能作为一个产品,最明显的例子就是共享单车上面的蓝牙锁,用户数量多,切不确定,这个时候蓝牙取消绑定功能,采用人为的加密通信才是比较靠谱的方式。

对于TI的AES ECB加密解密,主要通过两个函数实现

LL_Encrypt(key, data, EncryptedData);  //加密函数
LL_EXT_Decrypt (key, EncryptedData, DeccryptedData);  //解密函数
以前使用是直接调用TI的函数的,并没有关心过函数的实现方式,到现在使用NRF51822后,对数据进行AES ECB加密时才发现,硬件的AES功能只能实现AES加密,而不能解密,最后在SDK的external文件中的tiny文件夹中又发现有aes.c文件可以实现软件加密解密,那么问题来了,我们无法得知TI的AES加密解密方式,因为TI把这个功能封装到协议栈里面了,虽然TI和Nordic芯片都说有硬件AES功能,但并没有说可以同时实现加密和解密功能,经过测试发现nRF51822可以通过硬件加密,通过aes.c软件解密,进而解决了硬件AES无法解密的问题。有人疑惑,既然软件可以实现加密,可以不用硬件AES加密,直接采用软件算法加解密,当然可以,但是硬件加密节省了CPU的时间资源,留出了更多的时间给单片机执行其他的功能,从而提高了单片机的程序运行效率。nRF51822的加密函数sd_ecb_blocks_encrypt,解密函数AES128_ECB_decrypt,使用的时候全工程查找一下即可。
还有一个问题,nrf51822的RTC功能,51822有2个RTC,在执行蓝牙功能时,RTC0用于协议栈,RTC1用于app_timer,所以如果想做万年历,已经没有RTC可用,在有协议栈的蓝牙功能中,基本可以放弃这个想法。nrf52832有3个RTC应该是可以的吧,有待验证,如果万年历可以实现的话,设计的产品会更节省空间结构和PCB板框面积。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值