AVR230DESBootloader

上传人:zh****71 文档编号:144773293 上传时间:2020-09-14 格式:PDF 页数:22 大小:615.72KB
返回 下载 相关 举报
AVR230DESBootloader_第1页
第1页 / 共22页
AVR230DESBootloader_第2页
第2页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《AVR230DESBootloader》由会员分享,可在线阅读,更多相关《AVR230DESBootloader(22页珍藏版)》请在金锄头文库上搜索。

1、AVR230: DES Bootloader 翻译:邵子扬 第 1 页 共 22 页 AVR230: DES Bootloader 翻译:邵子扬 2006 年8月12日 1 特点 适合于所有的具有 Bootloader 功能的 AVR 单片机 允许安全传送编译后的程序和敏感数据 包括了易于使用、可以配置的应用例程 加密二进制文件和数据 创建目标 Bootloaders 下载加密文件到目标 加密算法按照数据加密标准(DES) 三倍数据加密标准(3DES)增强安全性 DES Bootloader 适合所有 2KB 的 AVR 设备 3DES Bootloader 适合除了 ATmega128 外所

2、有 2KB AVR 设备 典型更新 16KB 程序的时间,包括传送数据、解密合编程 Flash DES, 波特率 115200, 16 MHz 频率 : 20 秒 3DES, 波特率 115200, 16 MHz 频率 : 50 秒 介绍 这篇应用笔记说明了怎样通过 Bootloader 安全升级 AVR 单片机。这里使用了数据加密标准 (DES )方法来加密,同时也支持三倍数据加密标准(3DES)。 单片机电子设计总是包含了固件程序的,如便携式音乐播放器、吹风机或锁线装订机。因为电 子产品的快速发展,许多产品都需要有升级能力。对硬件的改动是比较困难的,特别是当产品 已经达到最终用户后,但是基

3、于 Flash 单片机产品的固件可以容易的升级,如 AVR 系列单片 机。 许多 AVR 单片机可以配置为通过 bootloader 接收软件升级并对 Flash 重新编程。程序空间 分为两部分:Bootloader 区(BLS) 和应用程序区。两个区都有读写保护锁定位,这样 BLS 区 的 bootloader 代码在升级用户程序时是安全的。 剩下的问题是固件在编程到 Flash 并且锁定位设置之前是不安全的。这意味着如果固件需要升 级,它是可以被其它人访问的。 这个应用笔记显示了怎样安全发送数据到 Flash 或 EEPROM 存储器,数据在发送之前加密,在 下载到目标单片机后解密。这个过

4、程没有防止未经授权就复制固件,但是复制实际上毫无用处 如果没有解密钥匙。解密钥匙只存放在一个编程环境以外的位置:在目标 AVR 单片机内部。如 果锁定位被设置,密钥就不能被读取出来。同样,密钥也不能再次从加密数据产生,访问加密 数据的唯一方法就是使用合适的密钥。 AVR230: DES Bootloader 翻译:邵子扬 第 2 页 共 22 页 图1 显示了一个产品生产出来后,写入初始的固件程序,销售出去,以后升级到新程序的例子。 图1.产品和基于 AVR 单片机的升级过程 说明: 1.生产过程中,先将 bootloader、加密钥匙和应用程序固件编程到单片机中。Bootloader 接 收

5、实际的固件(初始)并将它编程到 Flash 中,这时需要密钥来解密收到的数据。锁定位 被设置保证单片机内部的固件程序的安全。 2.产品被发运或销售到用户手里,锁定位继续保证单片机固件程序的安全。 3.新版本程序完成后,需要对产品升级,固件程序加密后发到经销商。如果没有密钥,加密 后的固件将毫无用处,即使复制软件( 如从经销商的硬盘中复制) 也不会有任何影响。 4.经销商升级库存的产品和用户手中的产品。加密的固件下载到单片机中并解密,锁定位继 续起作用,保证升级后程序的安全。 AVR230: DES Bootloader 翻译:邵子扬 第 3 页 共 22 页 理论 密码系统是保持信息安全的艺术

6、或科学,它基于隐藏密码的方法或安全密码钥匙。现代算法使 用密钥控制加密和解密,没有匹配的密钥,消息或数据不能被还原。 1.1加密 加密是消息或数据编码,将内容隐藏起来。纯文字消息或数据中可能包含了作者或发行商希望 保密的信息,如单片机固件程序。例如,当一个单片机更新时很难保证程序不被非法复制和进 行反向工程。加密固件将保护它直到被解密出来。 1.2解密 解密是重新得到原始消息或数据的方法,没有合适的密钥就不能解密。密钥可以存放在单片机 的 bootloader 中,这样就可以将接收到的加密数据还原并编程到 Flash 或 EEPROM 中。解密 钥匙不能从加密的数据中找出,如果设置了锁定位后也

7、不能从 AVR 单片机读取出来。 1.3加密钥匙算法 加密钥匙算法分为两种:对称和不对称。对称算法使用相同密钥来加密和解密,而不对称算法 使用了不同的密钥。在 DES 里大多数情况下使用了对称算法。 1.4数据加密标准 DES 数据加密标准 (DES) 最初于 19 世纪 70 年代开发,由美国国家标准协会(NIST) 变为标准。 DES 是使用 56 位密钥的对称加密算法。算法被证实是很强壮的,比许多其它类似算法更长久耐用。 DES 算法使用了 56 位加密钥匙,意味着可能的钥匙组合数是: 2 56 = 72,057,594,037,927,936 = 7.206 x 1016 DES 是块

8、加密,操作 64 位的数据块。每个输入块如图2 所示进行处理。 图2. DES 算法加密流程 AVR230: DES Bootloader 翻译:邵子扬 第 4 页 共 22 页 图2 用图说明了单个数据块怎样被加密的。首先输入位顺序按照排列函数改变,低 32 位(R0) 和 高 32 位(L0) 分别处理。一共有 16 个处理步骤,每个步骤使用密钥的不同子集(Kn) ,图例中 AVR230: DES Bootloader 翻译:邵子扬 第 5 页 共 22 页 只显示了第 1、2 和 16 等几个步骤。最后,位顺序按初始排列函数反转改变。解密算法和解密 算法相同, 只是密钥子集 Kn 的顺序

9、相反。 在 DES 标准中详细说明了 DES 算法 (查看 参考小节 ) 。 1.5三倍数据加密标准 3DES 三倍数据加密标准(3DES) 基于使用 DES 3 次,就是增加密钥长度到 168 位。 3DES 比 DES 强 劲很多,但是和一些新的算法相比对于实时应用来说要慢得多。对于这个应用笔记,时间不是 非常重要,所以可以使用 3DES。 3DES 算法使用了 3 个 56 位加密钥匙。钥匙可能的组合的数字增加到: 2 168 = 3.741 x 10 50 3DES 基于使用 DES 3 次,如 ANSI x9.52 中定义的那样。加密流程如下。 图3. 3DES 算法加密流程 DES

10、 加密 DES 解密 DES 加密 输入 输出 密钥1 密钥2 密钥3 在加密过程中,先用第一个密钥加密输入,然后用第二个密钥解密,最后用第三个密钥加密。 解密时,密钥的顺序和加密/ 解密块的顺序是相反的,如图4. 图4. 3DES 算法解密流程 DES 解密 DES 加密 DES 解密 输入 输出 密钥3 密钥2 密钥1 标准中定义了下面的密钥选项。 AVR230: DES Bootloader 翻译:邵子扬 第 6 页 共 22 页 表1. 3DES 密钥选项 选项独立密钥数相关密钥 选项 1 3(KEY1 、 KEY2 和KEY3 )无 选项 2 2(KEY1 和 KEY2 )KEY1

11、= KEY3 选项 3 1(KEY1 )KEY1 = KEY2 = KEY3 注意只有选项 1 使用了完整的 3DES 加密长度,选项3 基本上和 DES 一样。 1.6加密块链 CBC DES 和 3DES 是块加密的,就是说算法操作固定大小的数据块。使用一个 56 位的密钥加密 64 位的数据块。对于一个已知的输入块和固定(虽然未知)加密钥匙,输出块总是相同的。这一 特点对于想攻击加密系统的人很有用。 有一些常用方法使得相同内容加密成为不同的加密块,其中一种方法称为加密块链(Cipher Block Chaining, CBC ) 。CBC 是连接加密块,用引导块影响所有后面块的方法。首先

12、在内容块 和前一个加密块之间执行异或,再得到加密结果。这在内容位数上增加了加密位数。 1.7它有多安全? 理解这一点很重要,在理论上,任何基于密钥的加密方法都是可以用尝试所有可能的密钥来破 解的,数据加密等级与密钥长度的指数成正比。 一个常用的非法解密方法是暴力破解法,如遍历所有可能的密钥,并尝试用它们解密,直到输 出看起来正确。没有人可以手工进行这种破解,但是可以通过特殊的软件或硬件自动处理,不 过它还需要人工区分输出结果。在暴力破解攻击时,需要的计算能力与密钥长度程指数增长。 因为平均计算能力和使用的时间程指数关系,所以破解任何密钥只是一个时间问题。 表2 说明了不同加密钥匙长度的影响。应

13、当注意这些数字只是指导性的,很多时候会有很大变 化。这些信息来自于参考小节中涉及的部分。 表2. 破解不同长度密钥需要花费的时间 密钥长度方法小公司犯罪组织,大公司,政府 标准 PC 联网 PC 特殊硬件 32位分钟 . 小时 40位天. 星期分钟 . 小时 56位DES 基本不可破解星期 . 月小时 . 天 64位很长短 80位基本不可破解长 128位基本不可破解 168位3DES 另外一个攻击方法是针对目标硬件,而不是加密过的信息。在这个应用笔记中,硬件的安全性 基于 Atmel 的 Flash AVR 架构单片机。一个包括解密钥匙的 DES/3DES bootloader 使用锁定 位进

14、行保护。这样固件可以用加密的补丁进行更新,而密钥是无法从 AVR 中读取的。 当锁定位被设置,所有写和扩展读访问都被禁止。唯一获得访问存储器的方法是擦除芯片,这 样会同时将 bootloader 和解密钥匙一起销毁。 AVR230: DES Bootloader 翻译:邵子扬 第 7 页 共 22 页 1.8推荐怎样改进系统安全 这篇应用笔记介绍了可以用于在外部安全访问的技术。尽管没有设计能够永远安全,但是能够 使得破解的难度尽可能的高一些。在没有加密的设计中一个具有基本技能的人就可以进行复制, 而使用加密后只有少数技能很高的人才能破解。没有加密的设计可以被容易的复制、进行反向 工程,甚至侵犯

15、制造商的知识产权以及危害市场。加密的设计破解难度很大,大多数破解者被 迫去开发属于自己的产品。 怎样建立一个安全系统只有一个准则:要尽可能的难以破解。任何能够用于破解的方法都会被 用于尝试破解。甚至要考虑外部情况的影响,下面的例子给出了必须要考虑的因素。 在固件升级过程中如果电源被拿走会发生什么?当电源恢复后单片机处于什么状态?锁定位和 复位向量一直都正常吗? 明码数据有什么显著特征?为了用暴力法破解 DES,必须查找一个条件。攻击者不可能简单的 尝试所有可能的密钥并观察结果,然后查找可能的程序。攻击软件将设置搜索一种已知的条件, 如程序存储器开始的中断向量、存储器区填充的 0 或 1 等等。 解密过程中有任何的反馈吗?任何反馈都会有助于攻击者建立一个暴力攻击方法。例如,如果 在 bootloader 的解密算法对每个块给出 OK/Not OK 类型的信号,那么这个信号将被轻易的发 送到攻击程序中。 加密帧以什么顺序发送?如果发送到 bootloader 的第一帧总是包含加密文件的第一个数据 块,那么攻击者可以由此做出一些假设。例如,可以假定第一帧映射的程序数据开始于地址 0 , 它包含了中断向量表。这个信息可以帮助攻击者定义搜索的密钥。为了增加系统的安全性,用 随机顺序发送(当然解密时要还原出正确的地址)。 使用方法 这

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号