大联大
直播中

潘千

8年用户 183经验值
私信 关注
[经验]

硬件加密芯片Kinetis K82介绍

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板子 BUART 互相连接


打开 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

更多回帖

发帖
×
20
完善资料,
赚取积分