【技术】超低功耗32位MCU EFM32之硬件AES加密引擎

2017-11-09 Silicon Labs(世强翻译)
32位MCU,低功耗32位MCU,低功耗MCU,EFM32 32位MCU,低功耗32位MCU,低功耗MCU,EFM32 32位MCU,低功耗32位MCU,低功耗MCU,EFM32 32位MCU,低功耗32位MCU,低功耗MCU,EFM32

EFM32SILICON LABS公司推出的32位超低功耗的MCU系列,其不仅有很多低功耗的特性,在安全性上也是非常出色。EFM32 Classic系列(包含ZG、HG、TG、LG、GG和WG)具有硬件加密引擎支持AES加密,而Gemstone系列(包含JG和PG)不仅支持硬件AES还支持硬件ECC和SHA加密。在针对一些对信息比较敏感的场合,特别是针对一些数据流信息,如果先采用数据加密,然后在进行传输,则可以增加信息的保密程度。本文档为大家详细介绍EFM32硬件AES加密引擎。


一、AES算法介绍


AES是Advanced Encryption Standard的简称,它是一种被广泛应用的对称密钥加密标准(NIST 标准 FIPS-197),由三部分组成:AES-128(128位密钥),AES-192 (192位密钥)和AES-256(256位密钥)。AES算法是硬件友好的,需要很少的资源并且速度快。它是一种分组密码,也就是说它运行在128位(16字节)固定长度的数据块中。输入块被称为明文(Plain Text),加密后的输出称为密文(Cipher Text,也是128位),使用第二个输入,即密钥来控制精确的转换。AES的安全性仅仅依赖于密钥保密,而算法本身是公开的。

解密类似于加密,解密算法与密钥一起接收128位密文块,并生成原始的128位明文块。当加密或解密的数据长度不是128位的整数倍时,那么最后一块必须用0或其他数据的方法来填充。AES算法的原理是产品密码的原理,可以概括如下:


1)它是一种多步加密算法,其中初始非加密块逐渐加密,例如在每一步加密的输入数据是前一步的输出。

2)算法步骤称为轮。AES算法有10个(128位密钥),12个(192位密钥),或者14个轮(256位密钥)。

3)每一轮使用不同的密钥(例如称为轮密钥)。10/12/14轮密钥是在执行实际编码轮之前通过原始密钥计算出来的。

4)在每一轮中执行的实际操作都是简单的字节转换,例如XOR、字节替换或字节置换。


图一描述了在10轮(128位长密钥)操作情况下AES算法的总结结构。

 

图一,10轮AES算法结构


输入的数据(明文和密文)由4个字节一组组成的,产生32位的数据,数据被放在矩阵的第一列中,在第一行完成后,下一列启动并继续处理,直到输入数组耗尽为止。输入矩阵被转移到状态矩阵(如图二)。状态数组的每个列中的四个字节构成32位字,其中行号为每个单词中的字节提供索引,因此状态数组可以被解释为一个32位单词的一维数组。加密解密算法的输入是一个128位分组。这些分组被描述成4×4的字节方阵,这个分组被复制到state数组中,并在加密和解密的每一阶段都被修改。在字节方阵中,每一格都是一个字,包含了4字节。在矩阵中字是按列排序的。

 

图二,AES状态数组


基于密钥长度(128位、192位或256位),我们可以得到轮块的密钥(10,12,14个回合)。


二、密码模式


AES加密最基本的方式是ECB。以ECB模式为基础,通过不同数据块的异或处理,

产生不同的加密模式,共有如下5种加密模式。


1)ECB模式:将明文分割成几个128位的数据块,利用密钥对每个数据块进行加密

和解密。加密或解密后的结果大小完全不变,而且独立,互相之间不关联,便于并

行运算;

 

图三,EBC模式示意图


2)CBC模式:建立在ECB模式上使用的一种加密方法。CBC算法中,每个明文块先

与前面的秘文块相异或,然后再加密。加密的数据相互关联,不能并行处理,但破

解的难读很大;

 

图四,CBC模式示意图


3)CFB模式:密钥先与前一个密文块加密,之后再与当前明文块取异或。每个密文

块都与后面的步骤紧密相连,任何一个密文块损坏,都无法完成解密;

 

图五,CFB模式示意图


4)OFB模式:与CFB的区别在于,OFB模式下密钥与前一块加密的结果加密;

 

图六,OFB模式示意图


5)CTR模式:一种用明文块与一个计数器密码和一个初始化向量的值进行异或运算

的方法。这种方法的价值在于,只要知道数据块所在的位置,就可以对任何一个明

文块进行解密。

 

图七,CTR模式示意图


三、软件示例


本例程基于EFM32TG平台实现硬件AES的ECB 128位加解密。实验例程利用ECB加解密方式对预定明文进行加密和解密实验,然后解密完成后通过对比解密结果和原始明文验证加解密操作的正确性。

const uint8_t exampleData[] = { 0x6B, 0xC1, 0xBE, 0xE2, 0x2E, 0x40, 0x9F, 0x96, 

                                0xE9, 0x3D, 0x7E, 0x11, 0x73, 0x93, 0x17, 0x2A,

                                0xAE, 0x2D, 0x8A, 0x57, 0x1E, 0x03, 0xAC, 0x9C, 

                                0x9E, 0xB7, 0x6F, 0xAC, 0x45, 0xAF, 0x8E, 0x51,

                                0x30, 0xC8, 0x1C, 0x46, 0xA3, 0x5C, 0xE4, 0x11, 

                                0xE5, 0xFB, 0xC1, 0x19, 0x1A, 0x0A, 0x52, 0xEF,

                                0xF6, 0x9F, 0x24, 0x45, 0xDF, 0x4F, 0x9B, 0x17, 

                                0xAD, 0x2B, 0x41, 0x7B, 0xE6, 0x6C, 0x37, 0x10};

//加密数据

const uint8_t expectedEncryptedData[] = 

                                 { 0x3A, 0xD7, 0x7B, 0xB4, 0x0D, 0x7A, 0x36, 0x60, 

                                   0xA8, 0x9E, 0xCA, 0xF3, 0x24, 0x66, 0xEF, 0x97,

                                   0xF5, 0xD3, 0xD5, 0x85, 0x03, 0xB9, 0x69, 0x9D, 

                                   0xE7, 0x85, 0x89, 0x5A, 0x96, 0xFD, 0xBA, 0xAF,

                                   0x43, 0xB1, 0xCD, 0x7F, 0x59, 0x8E, 0xCE, 0x23, 

                                   0x88, 0x1B, 0x00, 0xE3, 0xED, 0x03, 0x06, 0x88,

                                   0x7B, 0x0C, 0x78, 0x5E, 0x27, 0xE8, 0xAD, 0x3F, 

                                  0x82, 0x23, 0x20, 0x71, 0x04, 0x72, 0x5D, 0xD4}; //解密后的数据

const uint8_t exampleKey[] = { 0x2B, 0x7E, 0x15, 0x16, 0x28, 0xAE, 0xD2, 0xA6, 

                               0xAB, 0xF7, 0x15, 0x88, 0x09, 0xCF, 0x4F, 0x3C};

//密钥

uint8_t       dataBuffer[sizeof(exampleData) / sizeof(exampleData[0])];

uint8_t       decryptionKey[16];


int  main(void)

{

  uint32_t i;

  

  /* Initialize error indicator */

  bool error = false;


  /* Chip errata */

  CHIP_Init();


  /* Enable AES clock */

  CMU_ClockEnable(cmuClock_AES, true);


  /* Calculate decryption key from original key. Only needs to be done once for each key */

  AES_DecryptKey128(decryptionKey, exampleKey);

  

  /* Copy plaintext to dataBuffer */

  for (i=0; i<(sizeof(exampleData) / sizeof(exampleData[0])); i++)

  {

    dataBuffer[i] = exampleData[i];

  }


  /* Encrypt data in AES-128 ECB */

  AesEcb128(exampleKey,

            dataBuffer,

            dataBuffer,

            false,

            sizeof(dataBuffer)/(sizeof(dataBuffer[0])*16));


  /* Wait for AES to finish */

  while(!AesFinished());


  /* Check whether encrypted results are correct */

  for (i = 0; i < (sizeof(dataBuffer) / sizeof(dataBuffer[0])); i++)

  {

    if (dataBuffer[i] != expectedEncryptedData[i])

    {

      error = true;

    }

  }


  /* Decrypt data with AES-128 ECB */

  AesEcb128(decryptionKey,

            dataBuffer,

            dataBuffer,

            true,

            sizeof(dataBuffer) / (sizeof(dataBuffer[0])*16));


  /* Wait for AES to finish */

  while(!AesFinished());


  /* Check whether decrypted result is identical to the plaintext */

  for (i = 0; i < (sizeof(dataBuffer) / (sizeof(dataBuffer[0])*16)); i++)

  {

    if (dataBuffer[i] != exampleData[i])

    {

      error = true;

    }

  }


  /* Check for success */

  if (error)

  {

    while (1) ; /* Ends here if there has been an error */

  }

  else

  {

    while (1) ; /* Ends here if all OK */

  }

}







世强元件电商版权所有,转载请注明来源及链接。

授权代理商:世强先进(深圳)科技股份有限公司
技术资料,数据手册,3D模型库,原理图,PCB封装文件,选型指南来源平台:世强硬创平台www.sekorm.com
现货商城,价格查询,交期查询,订货,现货采购,在线购买,样品申请渠道:世强硬创平台电子商城www.sekorm.com/supply/
概念,方案,设计,选型,BOM优化,FAE技术支持,样品,加工定制,测试,量产供应服务提供:世强硬创平台www.sekorm.com
集成电路,电子元件,电子材料,电气自动化,电机,仪器全品类供应:世强硬创平台www.sekorm.com
  • +1 赞 0
  • 收藏
  • 评论 11

本网站所有内容禁止转载,否则追究法律责任!

相关研发服务和供应服务

评论

   |   

提交评论

全部评论(11

  • 用户65102458 Lv4. 资深工程师 2018-07-26
    好好学习!
  • TAO Lv7. 资深专家 2018-05-25
    学习了
  • yingqiming Lv7. 资深专家 2018-04-10
    不错
  • 用户18396822 Lv8 2018-03-19
    很好
  • 小小哥布林 Lv7. 资深专家 2018-02-27
    不错
  • 用户71664282 Lv4. 资深工程师 2018-01-09
    好东西
  • Anny Lv3. 高级工程师 2017-12-29
    学习
  • 用户32653760 Lv4. 资深工程师 2017-12-26
    不错,长知识了
  • 用户_8239 Lv7. 资深专家 2017-12-16
    不错
  • Paulwang Lv8. 研究员 2017-11-29
    好东西,学习了
展开更多评论

相关推荐

【技术】EFM32ZG 32位MCU之灵活的时钟管理单元(CMU)

EFM32ZG是由Silicon Labs公司采用ARM Cortex-M0+内核设计出来的高性能、低功耗32位MCU,最高运行频率为24MHz。

2018-01-10 -  技术探讨 代理服务 技术支持 采购服务

【技术】低功耗32位MCU EFM32的能源模式可最大限度提高能源效率

Silicon Labs采用了一种“blue sky”的方法来设计它的低功耗32位MCU EFM32 Gecko微处理器,也开发了支持这个产品的软件和硬件工具。Silicon Labs 现已生产了一种装置,仅够消耗现有8位、16位和32位MCU所耗能量的四分之一, 使现有电池的寿命大大延长了。

2016-01-21 -  技术探讨 代理服务 技术支持 采购服务

【经验】如何基于J-FLASH对32位MCU EFM32 进行批量烧写?

Silicon Labs 32位MCU EFM32,以低功耗、高性能等著称,被广泛应用在电池供电等需要低功耗的领域。因应用广泛,在批量烧写上,也得到多家软件支持。本文将详细描述名基于SEGGER的J-Flash软件对EFM32烧写FLASH的方法及步骤。

2018-09-17 -  设计经验 代理服务 技术支持 采购服务

【经验】对使用SWD接口的32位MCU的内部闪存及用户画面进行编程

本文介绍Silicon Labs独立编程器的硬件与软件,以及详细的用户界面介绍,提供用户进行测试。

2019-03-07 -  设计经验 代理服务 技术支持 采购服务

【经验】基于EFM32JG1B200F128低功耗32位MCU中RTC在暂态录波型故障指示器无线采样三相同步设计方法

在JYL-60架空暂态录波型远传故障指示器项目开发过程中,考虑到架空线路ABC三相的特殊性,三支架空暂态录波型远传故障指示器分别挂在ABC线路上,无法提供可靠的硬件同步信号,在这样的环境下,无线三相同步技术正好提供了三相同步录波的可能。本文以EFM32JG1B200F128低功耗32位MCU中的RTC,设计了一种无线的三相同步采样方法。

2019-09-21 -  设计经验 代理服务 技术支持 采购服务

【经验】EFM32系列低功耗32位MCU芯片加密详解

本文主要介绍以Silicon Labs EFM32系列低功耗32位MCU为核心的方案打造加密系统。

2017-10-27 -  设计经验 代理服务 技术支持 采购服务

【经验】用STK3700评估板采集EFM32GG低功耗32位MCU外部频率信号完整周期的经验

在调试EFM32GG低功耗32位MCU,想测试外部频率信号的周期,范例程序测试的是按键按下的时间,也就是对应的是半个周期,不是完整的周期信号。针对范例程序做了如下修改(修改部分用红色字体标识),实现了用STK3700评估板对外部频率信号周期时间的计算

2019-05-03 -  设计经验 代理服务 技术支持 采购服务

【应用】低功耗32位MCU EFM32,实现低成本医疗内窥镜

电子内窥镜少不了这一款逆天MCU-- EFM32,其集成的USB-HOST接口,结合Cortex-M4内核的高效运算能力以及DSP指令和浮点运算单元,能够很轻松执行图像处理任务,EFM32具有丰富的外设,为系统扩展功能及降低成本提供了条件。

2019-07-15 -  新应用 代理服务 技术支持 采购服务

【经验】EFM32系列32位MCU常量定位问题的解决方法

Silicon Labs的32位MCU EFM32系列具有低功耗、集成度高的优势,在电池供电类的应用中具有非常明显的优势。开发EFM32的软件一般都是在Simplicty Studio软件下完成。介绍EFM32程序中的常量定位到FLASH的固定地址的方法。

2019-01-27 -  设计经验 代理服务 技术支持 采购服务

【应用】基于低功耗32位MCU EFM32G2X的智能温控器节能解决方案

采用Silicon Labs的ARM Cortex-M3内核EFM32是全球最低功耗的32位MCU,外设丰富,5大超低模式,非常适用于智能温控器。无线WIFI模块采用WGM110,具有卓越的射频性能,并可提供远程范围的稳定无线连接和安全性。

2019-07-30 -  方案 代理服务 技术支持 采购服务
展开更多

电子商城

查看更多

品牌:SILICON LABS

品类:32位MCU

价格:¥9.8488

现货: 21,867

品牌:SILICON LABS

品类:32 BIT MCU

价格:¥10.4057

现货: 17,600

品牌:SILICON LABS

品类:32位MCU

价格:¥19.1398

现货: 10,450

品牌:SILICON LABS

品类:32位MCU

价格:¥24.8076

现货: 10,000

品牌:SILICON LABS

品类:32位MCU

价格:¥19.2326

现货: 8,740

品牌:SILICON LABS

品类:32 BIT MCU

价格:¥11.9853

现货: 7,500

品牌:SILICON LABS

品类:32位MCU

价格:¥12.9143

现货: 6,950

品牌:SILICON LABS

品类:32 BIT MCU

价格:¥13.3792

现货: 6,169

品牌:SILICON LABS

品类:32位MCU

价格:¥21.0907

现货: 5,950

品牌:SILICON LABS

品类:32位MCU

价格:¥9.0126

现货: 5,687

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

现货市场

查看更多

品牌:MindMotion

品类:32位MCU

价格:¥5.9400

现货:19,996

品牌:兆易创新

品类:MCU

价格:¥7.0000

现货:16,740

品牌:RENESAS

品类:32-BIT GENERAL MCU

价格:¥51.1158

现货:15,887

品牌:RENESAS

品类:32-BIT GENERAL MCU

价格:¥61.8336

现货:10,400

品牌:RENESAS

品类:32-BIT GENERAL MCU

价格:¥69.9064

现货:7,680

品牌:MindMotion

品类:32位MCU

价格:¥2.3800

现货:6,427

品牌:RENESAS

品类:32BIT MCU

价格:¥135.5187

现货:4,320

品牌:汇顶科技

品类:高精度多功能交互传感器

价格:¥2.3556

现货:2,987

品牌:RENESAS

品类:32-BIT GENERAL MCU

价格:¥80.8990

现货:2,880

品牌:TI

品类:MCU

价格:¥124.3000

现货:2,872

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

服务

查看更多

TFT LCD液晶显示屏/模组定制

可定制显示屏的尺寸0.96”~15.6”,分辨率80*160~3840*2160,TN/IPS视角,支持RGB、MCU、SPI、MIPI、LVDS、HDMI接口,配套定制玻璃、背光、FPCA/PCBA。

最小起订量: 1000 提交需求>

大电流低功耗电感定制

可定制电感最大电流100A,尺寸最小7 x 7 x 3.0mm到最大35 x 34 x 15.5 mm,工作频率100KHZ ~ 2MHZ,感值范围:0.15 ~ 100uh;支持大功率电感,扁平线电感,大电流电感,高频电感,汽车电感器,车规电感,一体成型电感等定制。

最小起订量: 5000 提交需求>

查看更多

授权代理品牌:接插件及结构件

查看更多

授权代理品牌:部件、组件及配件

查看更多

授权代理品牌:电源及模块

查看更多

授权代理品牌:电子材料

查看更多

授权代理品牌:仪器仪表及测试配组件

查看更多

授权代理品牌:电工工具及材料

查看更多

授权代理品牌:机械电子元件

查看更多

授权代理品牌:加工与定制

世强和原厂的技术专家将在一个工作日内解答,帮助您快速完成研发及采购。
我要提问

954668/400-830-1766(工作日 9:00-18:00)

service@sekorm.com

研发客服
商务客服
服务热线

联系我们

954668/400-830-1766(工作日 9:00-18:00)

service@sekorm.com

投诉与建议

E-mail:claim@sekorm.com

商务合作

E-mail:contact@sekorm.com

收藏
收藏当前页面