电子产品世界 » 论坛首页 » 嵌入式开发 » ARM » [转帖]学习笔记: AES加密标准在AVR单片机Bootloader中的应用


共7条 1/1 1 跳转至

[转帖]学习笔记: AES加密标准在AVR单片机Bootloader中的应用

菜鸟
2006-12-24 03:46:00    评分
学习目的: 使用AES BOOTLOADER技术升级AVR的固件;

学习参考: ATMEL的AVR231: AES Bootloader;

介绍:
AES加密标准已经解决了DES加密算法遭受攻击出现的漏洞,而且具有更高的效率,在AVR单片机Bootloader的应用中得到较广泛的应用。
AES Bootloader的特点是:
1. 应用简单,加密性高,可以有128,192,256位的加密匙;
2. 代码小,用IAR编译,小于2K;
3. 传送速度快;
例如: 64K的代码,在波特率采用115200bps,系统时钟3.69MHz下,
-AES128: 27
-AES192: 30
-AES256: 33
(相比之下,DES的加密方式慢了许多:
Typical Update Times of a 16-KB Application, Including Transfer of Data, Decryption
and Programming of Flash Memory
– DES, 115200 Bauds, 16 MHz Target Frequency: 20 Seconds
– 3DES, 115200 Bauds, 16 MHz Target Frequency: 50 Seconds)
4. 广泛应用于大于1KB的RAM的ATMEL单片机系列中;
本文只重点介绍如何使用AES BOOTLOADER。
下载以下的”AVR_AES.rar” 文件,解压缩以后,生成两个文件夹,IAR文件夹包含升级所需的固件,PC文件夹包含升级的PC端程序。



关键词: 转帖     学习     笔记     加密     标准     单片机     Bootlo    

菜鸟
2006-12-24 03:47:00    评分
2楼
学习步骤:
1. 运行”..\ PC\PC Sample\Gen_Key.bat”, 生成一个临时的Config.txt文件;

说明:
Gen_Key.bat的代码:
gentemp Config.txt
生成一个临时的Config.txt:

以下是生成的Config.txt的例子:
PAGE_SIZE = [FILL IN: Target AVR page size in bytes]
MEM_SIZE = [FILL IN: Application Section size in bytes]
CRC_ENABLE = [FILL IN: YES/NO]
KEY1 = 5F8669C385D366FAF49FEA4F23D983D34616
KEY2 = F3F6340CEC9B0B4B0C
KEY3 = 972CEE3391BC6C5F93
INITIAL_VECTOR = 39D392DFD0259A0EAE85C9D4A11DF1CC
SIGNATURE = A87DB128

注意,每次运行KEY,INITIAL_VECTOR,SIGNATURE结果会不同。但是,同一个项目,必须使用相同的KEY,INITIAL_VECTOR,SIGNATURE。

2. 根据所选用的MCU,修改Config.txt:
以ATMEGA32为例: 正确设置PAGE_SIZE,MEM_SIZE,CRC_ENABLE等参数。
PAGE_SIZE = 128
MEM_SIZE = 28672
CRC_ENABLE = YES
KEY1 = 5F8669C385D366FAF49FEA4F23D983D34616
KEY2 = F3F6340CEC9B0B4B0C
KEY3 = 972CEE3391BC6C5F93
INITIAL_VECTOR = 39D392DFD0259A0EAE85C9D4A11DF1CC
SIGNATURE = A87DB128
具体参考以下表格设置:
 

菜鸟
2006-12-24 03:48:00    评分
3楼
3. 运行”..\ PC\PC Sample \Create_Header.bat”, 生成BootLdr.h和AESKeys.inc两个文件;
说明:
Create_Header.bat的代码:
create -c Config.txt -h BootLdr.h -k AESKeys.inc
根据Config.txt的代码生成BootLdr.h和AESKeys.inc两个文件。

4. 将刚刚生成的BootLdr.h和AESKeys.inc两个文件复制到…\AVR_AES\IAR目录下,并重新编译程序。
注意要根据实际情况正确设置UBRRL的值
void busInit(void)
{
// 115200 baud @ 3.6864MHz
UBRRL = 1;
// 9600 baud @ 3.6864MHz
// UBRRL = 23;

// Enable Rx and Tx.
UCSRB = (1 << RXEN) | (1 << TXEN);
}


菜鸟
2006-12-24 03:50:00    评分
4楼
5. 将生成bootloader的hex文件烧录到Atmega32中,并且正确设置融丝位及LockBits,例如:


菜鸟
2006-12-24 03:50:00    评分
5楼
6. 运行”..\ PC\PC Sample\ Encoding Firmware.bat”, 将要升级的源文件加密,生成所需的加密文件NewFlash.ext。
说明:
Encoding Firmware.bat的代码:
create -c Config.txt -f main.hex -o NewFlash.ext -l
BLB11 BLB12
参数说明如下: 根据"Config.txt"生成"main.hex"的加密文件"NewFlash.ext"。并且设置BLB11 BLB12。

(本例中的”..\ PC\PC Sample \main.hex”是使用”串口实验范例” 生成的main.hex文件。)
注: 如果还有EEPROM的HEX文件,例如"EEPROM.HEX",
可以修改Encoding Firmware.bat:
create -c Config.txt –e EEPROM.HEX -f main.hex -o NewFlash.ext -l
BLB11 BLB12
只生成一个加密文件NewFlash.ext。

菜鸟
2006-12-24 03:51:00    评分
6楼
7. 连接PD2到按键上(见下图) 。先按下按键K2,然后打开电源,最后运行”..\ PC\PC Sample\ Updated.bat” 。将程序下载到MCU中。下载结束后,可重新启动运行。


说明:
1。Updated.bat的代码:
update NewFlash.ext -COM1 -115200
将加密文件NewFlash.ext串口传送到MCU,设置传送的BaudRate: 115200
2。必须先按下按键K2,然后打开电源,这样启动后才可以直接进入bootloader区

菜鸟
2006-12-24 03:52:00    评分
7楼

文件下载的地址是:

http://www.zmmcu.com/shownews.asp?id=214


共7条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]