Kinetis K82 芯片介绍
Kinetis K82 MCU 子系列基于 Kinetis MCU 产品组合创建,具有先进的安全功能,包括引导 ROM,可支持加密的固件更新。Kinetis K82 MCU 包括外部串行 NOR 闪存的自动解密、带边带攻击保护的硬件 AES 加速以及公钥加密的硬件支持。在实现这些进展的同时,也保持了与旧有 Kinetis MCU 产品组合的高兼容性。
加密算法介绍
K82 芯片内部自带硬件随机数发生器,支持 DES、AES、SHA 等硬件加速器,支持算法包含 AES128、AES256、3DES 等。目前常用的加密方式主要分为两种:
对称加密及
非对称加密。
对称加密(Symmetric Cryptography)是最快速、最简单的一种加密方式,加密(encryption)与解密(decryption)用的是同样的密钥(secret key),这种方法在密码学中叫做对称加密算法。对称加密有很多种算法,由于它效率很高,所以被广泛使用在很多加密协议的核心当中。对称加密通常使用的是相对较小的密钥,一般小于256 bit。因为密钥越大,加密越强,但加密与解密的过程越慢。
非对称加密(Asymmetric Cryptography)为数据的加密与解密提供了一个非常安全的方法,它使用了一对密钥,公钥(public key)和私钥(private key)。私钥只能由一方安全保管,不能外泄,而公钥则可以发给任何请求它的人。非对称加密使用这对密钥中的一个进行加密,而解密则需要另一个密钥。比如,你向银行请求公钥,银行将公钥发给你,你使用公钥对消息加密,那么只有私钥的持有人--银行才能对你的消息解密。与对称加密不同的是,银行不需要将私钥通过网络发送出去,因此安全性大大提高。
EVM Board 介绍
该 EVM Board 是以 NXP Kinetis K82 芯片为主控制器的
开发板方案,该方案主要包含
K82 主控、OpenSDAv2 烧录器、FlexIO 接口、Arduino 接口、用户按键、USB 供电接口等部分。板子可通过 Arduino 接口与外接 Sensor 板相连,并使用 SPI 、UART、I2C 等方式进行数据
通信,从而可以完成主板和 Sensor 板的信息交流。板子中的
电路主要通过 USB 供电接口进行供电,使用OpenSDAv2 USB 进行程序烧录。
① OpenSDAv2 USB : 可给板子提供 5V 的
电源,通过 K20 对主控芯片 K82 进行程序烧录。
② JTAG 接口 :通过该接口可对 OpenSDAv2 芯片 K20 进行程序烧录,引脚具体如下,
Pin 1
| Pin 2
| Pin 3
| Pin 4
| Pin 5
| Pin 6
| Pin 7
| Pin 8
| Pin 9
| Pin 10
|
3V3
| SDA_JTAG_TMS
| GND
| SDA_JTAG_TCLK
| GND
| SDA_JTAG_TD0
| RES
| SDA_JTAG_TD1
| RES
| SDA_RST
|
③ K82 USB : 可给板子提供 5V 的电源。
④ Arduino 接口 : J21 为 Arduino 接口中定义的电源接口,具体如下,
Pin 1
| Pin 2
| Pin 3
| Pin 4
| Pin 5
| Pin 6
| Pin 7
| Pin 8
|
RES(NC)
| 3V3
| RST
| 3V3
| 5V
| GND
| GND
| VIN (NC)
|
⑤ Arduino 接口 : J22 为 Arduino 接口中定义的模拟 IO 口,具体如下,
Pin 1
| Pin 2
| Pin 3
| Pin 4
| Pin 5
| Pin 6
|
AIO_0
| AIO_1
| AIO_2
| AIO_3
| AIO_4
| AIO_5
|
⑥ SWD 接口: 可对板子中的 K82 MCU 进行程序烧录,其具体定义如下,
Pin 1
| Pin 2
| Pin 3
| Pin 4
| Pin 5
| Pin 6
| Pin 7
| Pin 8
| Pin 9
| Pin 10
|
3V3
| SWD_DIO_TGTMCU
| GND
| SWD_CLK_TGTMCU
| GND
| PTA2
| RES
| RES
| RES
| RST_TGTMCU_B
|
⑦ FlexIO 接口 :FlexIO 接口可用于软件模拟 I2C、UART、SPI 等数据传输方式,具体定义如下,
Pin 1
| Pin 2
| Pin 3
| Pin 4
| Pin 5
| Pin 6
| Pin 7
| Pin 8
| Pin 9
|
3V3
| GND
| I2C_SCL
| I2C_SDA
| FXIO_D2
| FXIO_D2
| FXIO_D0
| CLKOUT
| FXIO_D11
|
Pin 10
| Pin 11
| Pin 12
| Pin 13
| Pin 14
| Pin 15
| Pin 16
| Pin 17
| Pin 18
|
FXIO_D10
| FXIO_D9
| FXIO_D8
| FXIO_D7
| FXIO_D6
| FXIO_D5
| FXIO_D4
| RESET
| PDWN
|
⑧ Arduino 接口 :J17 口为 Arduino 接口中定义的数字口以及 I2C 接口,具体如下
Pin 1
| Pin 2
| Pin 3
| Pin 4
| Pin 5
| Pin 6
| Pin 7
| Pin 8
|
DIO_7
| DIO_6
| DIO_5
| DIO_4
| DIO_3
| DIO_2
| TXD
| RXD
|
⑨ Arduino 接口 :J15 为 Arduino 接口定义中的电源接口,具体如下,
Pin 1
| Pin 2
| Pin 3
| Pin 4
| Pin 5
| Pin 6
| Pin 7
| Pin 8
| Pin 9
| Pin 10
|
I2C_SCL
| I2C_SDA
| AREF
| GND
| SPI_CLK
| SPI_MI
| SPI_MO
| SPI_CS
| PWM1/DIO_9
| DIO_8
|
加密功能 Demo 演示
可以通过两块 EVM Board 来演示硬件加密的过程,由其中一块接收 PC 端数据,再通过 UART 发送给另一块加密输出到 PC 串口工具显示,具体过程如下:
板子 A 通过连接
Sensor 板切换成
Encrypt Test 模式(注:连接 Sensor 板可以采集多种 Sensor 数值、控制电机及 OLED 屏显示,这里不做介绍),OLED 屏显示出当前加密的模式(总共 5 种模式),由主控板上的按键
SW2 来选择当前模式,并且能够通过
UART 将加密信息输出到
PC 端。
当前实验还需要用到另一块板子(这里叫
板子 B,原本的板子叫
板子 A),通过杜邦线将
板子 A 与
板子 B 的
UART 互相连接

打开 PC 端串口助手,
- 按下板子 A 的 SW2 按键,可以看到 PC 端打印出:一段已经写好的英文段落(加密前的信息);
- 第二次按下板子 A 的 SW2 按键,PC 端打印出: 一串乱码信息(加密后的信息);
- 第三次按下板子 A 的 SW2 按键,PC 端打印出:“请输入需要加密的信息:”;在 PC 端随意输入一串信息(此处为:chnunh8),点击发送后可以看到 PC 端打印出相同的信息:chnunh8;
- 第四次按下板子 A 的 SW2 按键,PC 端打印出:“加密后的信息:(乱码)”;
- 第五次按下板子 A 的 SW2 按键,PC 端打印出:“解密后的信息:chnunh8”;最后可以看到 PC 端打印出来的信息

[tr] 类别 标题 档案 [/tr]
| 硬件 | Assembly Drawing | |