0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何使用AES加密防止固件泄露?

UtFs_Zlgmcu7890 来源:未知 作者:工程师郭婷 2018-07-22 12:17 次阅读

随着电子产品更新换代速度的加快,往往都会进行系统升级或APP功能维护升级,但是由此产生了两个主要问题。首先,由于更新过程中出现错误,该设备可能变得无用;另外一个主要问题是:如何避免未经授权的用户访问目标产品的固件?

嵌入式领域,根据嵌入式系统MCU存储结构和更新原理,提出了通过加密方式升级设备功能的方法,其中最常用的方法为BootLoader加密升级。

Bootloader 是在操作系统或用户应用程序运行之前执行的一小段程序,通过这一小段程序,我们可以初始化硬件设备(如 CPUSDRAM、Flash、串口等)、建立内存空间的映射表,从而将系统的软硬件环境带到一个合适的状态,为最终调用操作系统内核或者用户应用程序准备好正确的环境。

如何使用BootLoader加密升级可以防止竞争对手/恶意用户获得对固件代码的访问权限?

首先是使用代码加密来保护固件。这里需要实现对称密码,以及私钥的引导加载程序中的生成和包含。在制造商方面,需要保护相同的私钥,用于加密新固件版本。如图1所示,一般对称加密算法流程。

如何使用AES加密防止固件泄露?

图1对称加密算法流程

对于常见的AES-128加密算法,由于AES处理的单位是字节,128位的输入明文或固件P和输入的密钥K都被分为16个字节,一般我们会将明文分组用字节为单位的正方形状态矩阵来描述,在每一轮的算法中,状态矩阵的内容不断发生变化,最终的结果作为密文输出。如图2所示,AES-128分块加密。

如何使用AES加密防止固件泄露?

图2 AES-128加密过程

AES算法是基于置换和代替的,置换是数据的重新排列,而代替是用一个单元数据替换另一个。AES算法使用了多重循环实现置换和代替,在规范中被称为Bytes Sub(字节替换)-对数据的每个字节应用非线性变换;Shift Rows(行位移变换)-对每一行字节循环重新排序;Mix Columns(列混合变换)-对矩阵的列应用线性变换;Add Round Key(轮密钥加)-对状态和每轮的子密钥进行异或操作。该算法对内存的需求非常低,使得它很适应于资源受限制的环境。

AES(AES-128)加解密的流程,如图3所示。

如何使用AES加密防止固件泄露?

图3AES-128加解密流程

对于实际AES(AES-128)加密过程中,在第一轮的迭代之前,会将明文和原始密钥进行异或加密运算,然后正常执行从第一轮到第九轮一样的加密函数,其中都会包含四个操作:字节代换、行位移、列混合和轮密钥加;在最后一轮迭代不执行列混合运算。

解密的过程仍然为10轮,每一轮的操作都是加密操作的你操作。由于AES一轮的4个操作都是可逆的,因此解密操作的一轮就是执行逆行一位、逆字节代换、轮密钥加和逆列混合;同加密操作类似,最后一轮不执行逆列混合,在第一轮解密之前,执行一次密钥加操作。

如图4所示,为Boot Loader固件升级流程图。

如何使用AES加密防止固件泄露?

图4Boot Loader固件升级流程

用户程序升级成功之后,可以通过函数指针的方式调用该程序。函数在编译时都会被分配一个入口地址,该地址就是函数的指针。只要用一个指针变量指向这个函数的入口地址,就可以通过指针变量调用这个函数。函数指针的本质是指针变量,只不过该指针变量指向函数,读出程序标志区的运行地址就可以通过指针变量调用新写入的程序。

固件升级的数据加密方案,对于具有IAP功能的芯片具有普遍意义,不仅适用于网络远程升级,同样适用于本地升级。至于加密算法可以根据MCU的能力进行灵活选择。

例如NXP推出的跨界MCU-iMX.RT1052系列MCU具有强大的安全组件,出于安全目的,数据协处理器DCP)提供硬件加速和密码算法;其内置加密算法:AES-128(ECB和CBC模式)、哈希算法:SHA-1和SHA256、CRC-32等。

SNVS、DCP内部密钥存储或通用存储器中进行密钥选择,当一个密钥被写入时,内部存储器可存储多达四个AES-128密钥,它只能由DCP AES-128引擎读取。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式系统
    +关注

    关注

    41

    文章

    3587

    浏览量

    129435
  • AES
    AES
    +关注

    关注

    0

    文章

    103

    浏览量

    33225

原文标题:安全加密(五):如何使用AES防止固件泄露

文章出处:【微信号:Zlgmcu7890,微信公众号:周立功单片机】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    ESP-IDF中能否加密应用固件

    描述:我启动了flahs加密,这样物理上可以防止数据的读取和篡改。但在进行https-OTA时,从服务器传输固件到设备的过程中,可能会泄露固件
    发表于 06-11 06:50

    防止u盘机密文件泄露,请给U盘文件加密

    放了某些机密资料、个人隐私…丢失的后果就不能用钱来衡量了。 假如该U盘实现了加密处理或是带有移动文件加密保险柜功能,就不用担心U盘丢失或者被攻击后,由于U盘内携带的某些资料泄露给我们所带来的损失。就算
    发表于 04-20 17:15

    转:熟悉AES加密

    通常对代码的加密保护有硬件加密方式和软件加密方式。AES是通常比较常用的一种有效加密方式什么是AES
    发表于 07-09 17:24

    AES 256加密认证芯片介绍 带加密认证功能的EEPROM

    出自主的加密算法,相对目前市场上的AES-128更安全可靠,也是目前市场上AES等级最高的加密算法4:安全的保护机制基于安全的加密算法,软硬
    发表于 10-14 13:59

    如何实施软件AES以及AES加密/解密

    这一样本代码展示了如何实施软件AES(高级加密标准)以及AES加密/解密如何运作。 您可以在下列时间下载样本代码http://www.nuvoton.com/resources-d
    发表于 08-22 06:41

    GPON 中的AES加密

    文章简单的介绍了GPON 的体系结构与下行帧的结构,并着重介绍了AES 加密的流程、方法与具体算法,最后对GPON 中的AES 加密,解密方法,AE
    发表于 12-14 10:23 16次下载

    基于AES和ECC的混合加密系统的设计

    基于AES加密算法具有速度快、强度高、便于实现等优点和ECC加密算法具有密钥分配与管理简单、安全强度高等优点,采用AES加密算法
    发表于 03-20 10:24 42次下载
    基于<b class='flag-5'>AES</b>和ECC的混合<b class='flag-5'>加密</b>系统的设计

    基于AES算法的加密模块设计

    文中介绍了高级加密算法(AES)的基本原理,并给出了基于AES算法硬件加密模块设计方案。通过Modelsim6.le对其进行仿真实现,仿真结果表明,该
    发表于 02-21 15:52 0次下载
    基于<b class='flag-5'>AES</b>算法的<b class='flag-5'>加密</b>模块设计

    嵌入式AES加密IP核设计

    介绍了AES加密标准的Rijndael实现方法,设计了一种适合应用于嵌入式系统32位数据界面时序紧凑的AES加密IP核。该IP核能以较低的资源消耗实现在低端FPGA上速度为256Mb/
    发表于 09-07 19:14 13次下载

    AES和ECC的混合加密系统的设计

    AES和ECC的混合加密系统的设计
    发表于 10-31 09:04 11次下载
    <b class='flag-5'>AES</b>和ECC的混合<b class='flag-5'>加密</b>系统的设计

    用matlab实现AES加密算法

    AES加密算法是密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美
    发表于 05-25 15:18 11次下载
    用matlab实现<b class='flag-5'>AES</b><b class='flag-5'>加密</b>算法

    AES算法加密工具合集免费下载

    本文档的主要内容详细介绍的是AES算法加密工具合集免费下载。
    发表于 04-21 08:00 24次下载
    <b class='flag-5'>AES</b>算法<b class='flag-5'>加密</b>工具合集免费下载

    AES加密协议是什么?AES加密协议的应用

    AES(Advanced Encryption Standard,高级加密标准)是一种广泛使用的对称密钥加密协议,它被设计用于保护电子数据的安全。以下是对AES
    的头像 发表于 04-15 15:34 852次阅读

    开源物联网技术--AES加密功能技术分享

    一、AES加密功能 在物联网行业中的应用 AES加密功能在物联网行业中有着广泛的应用。随着物联网技术的不断发展,越来越多的设备连接到互联网上,这也增加了数据
    的头像 发表于 09-11 14:50 607次阅读
    开源物联网技术--<b class='flag-5'>AES</b><b class='flag-5'>加密</b>功能技术分享

    aes加密的常见错误及解决方案

    AES(Advanced Encryption Standard,高级加密标准)是一种对称加密算法,它使用固定长度的密钥对数据进行加密。在使用AES
    的头像 发表于 11-14 15:13 1168次阅读