ConnectCore 8 x SOM集成了一个爱特梅尔公司ATECC508Acryptochip提供以下功能:
与安全的基于硬件的关键存储加密的加速器
执行高速公钥(PKI)算法
ECDSA: FIPS186-3椭圆曲线数字签名算法
ECDH: FIPS SP800-56A椭圆曲线diffie - hellman算法
NIST标准P256椭圆曲线的支持
sha - 256和HMAC选项,散列算法
内部质量的FIPS随机数生成器(RNG)
10 kb EEPROM作为密钥、证书和数据
存储16键
Guaranteed-unique 72位序列号
两个高耐用性单调计数器
多个选择消费日志和一次性写信息
入侵门闩外部防拆开关或接通电源的芯片实现
cryptochip连接到我。MX8QXP CPU通过I2C0端口。
没有内核驱动程序和没有这个硬件设备树条目元素,因为它是直接从用户空间管理。 |
用户空间的使用
您可以使用cryptochip通过CryptoAuthLib图书馆,这是一个软件用C编写的,支持ATSHA和ATECC Atmel CryptoAuthentication设备的家庭。
您可以使用芯片的功能之前,你必须的程序和锁配置区。128字节的配置区域是一组,配置cryptochip为一个特定的用例。
在NDA芯片提供的信息配置区。 |
CryptoAuthLib库提供了一个测试应用程序cryptoauth_test
。您可以使用这个应用程序并锁定配置区与默认的测试值。
锁定配置区是一个不可逆的操作。如果你要使用cryptoauth_test 程序和锁默认配置,您应该只使用cryptochip出于测试目的,而不是用于生产。 |
程序和锁的配置区与默认的测试值,运行cryptoauth_test
应用程序,然后运行lockcfg
命令:
#与测试配置cryptoauth_test lockcfg锁定美元,只适合单元测试……确认通过键入Y
联系芯片信息适当的数据写入您的配置区根据您的用例。 |
示例应用程序
数码网络嵌入的必要包含一个例子,利用CryptoAuthLib库:https://github.com/digi - embedded/dey examples/tree/dey - 3.2 / - maint/cryptochip得到随机的。这个应用程序得到的随机数ATECC508A和输出到标准输出流:
#。/ cryptochip-gen-random | hexdump 0000000 6239 ddd4 b378 693 f 14 ed bfa1 447 b cff1 0000010 275 e fd14 e392 2 b4a c2ff ac93 0 f5e cbab 0000020 16 c1 e6b7 a458 c5ea c96f 59 c9 41 776 c5 0000030 a656 ffa8 2076 6917 f18a e9ad 9 ea1 7915 0000040 b677 aec3 a0a2 c7b6 c8ce 2 a1f aa6c d9fc 0000050 f75c 3 b57 eea4 051 b 3 a5f 7 bd9 523 f 4544 388 cb1a 0000060 c b655 e8ca d6eb e459 8 a43 cd2f (…)
应用程序的输出匹配你所阅读从一个标准的随机数字生成器,/dev/random
。例如,你也可以存储随机data-checking的速度产出然后运行一个熵测试:
#。/ cryptochip-gen-random | pv - >数据速率。本(912 B / s)#ent数据。本熵= 7.998261位/字节。最优压缩将这个291808字节的文件的大小减少0%。706.41 x平方分布291808个样本,随机将超过这个值小于0.01%。算术平均值的数据字节数是127.0582(127.5 =随机)。π蒙特卡罗值为3.149895135(误差0.26%)。序列相关系数为0.000944(完全不相关的= 0.0)。
的ent实用程序不包括在数码网络嵌入默认的必要。你可以将随机数据文件到你的主机和分析。 |
构建应用程序
遵循以下步骤来编译应用程序使用cryptochip:
包括
cryptoauthlib
标题:# include< cryptoauthlib.h >
使用I2C默认配置初始化库:
atcab_init (&cfg_ateccx08a_i2c_default);
的 cfg_ateccx08a_i2c_default
变量提供的图书馆,它已经配置为ConnectCore 8 x。添加以下行Makefile,这样应用程序链接到库:
CFLAGS+ =$ (壳牌pkg-config——cflags cryptoauthlib)LDLIBS+ =$ (壳牌pkg-config——libs cryptoauthlib)
PKCS11接口
图书馆可以用通过PKCS11 OpenSSL API接口交换加密令牌。例如,使用cryptochip默认的测试配置,您可以创建私钥生成的CSR说配置。
#openssl点播引擎pkcs11关键“pkcs11:令牌= 0123 ee;对象=设备;type =私人" -keyform引擎-两级new_device。csr主题“/ CN =新的csr的例子”
一旦创建了企业社会责任,确认其签名是正确的OpenSSL命令如下:
#openssl要求——new_device。csr验证语境-noout验证好的证书要求:数据:版本:1 (0 x0)主题:CN = NEW csr示例主题公钥信息:公钥算法:id-ecPublicKey公钥:(256位)酒吧:04:f7:0c: d4:阿瑟:51:14:02:83:6b: 1 b: 4 d: 6 b: 5 d: 88: cd: 77:7e: 66: c4:阿瑟:80:3a: 3 c: 3 f: 92:52:2b: 34:40: 5 c: 89:22: cb: 39:32: e3: b3: f8:2f: 15:2e: cd: f0:01: 57:0c:广告:7 c:是:9 c: 71: bb: ac: a4: cc: 5 d: 8 b: 45:德:d1:63: cc: 84:17 ASN1 OID: prime256v1 NIST曲线:p - 256属性:a0:00签名算法:ecdsa-with-SHA256 30:46:02:21:00: d4:3d: e2: df: 3 d: c3: b0: b5:9c: 58:24:36:17: 3 d: d9:76:52:1a: 51:79:59:费尔南多-阿隆索:90:广告:a5:28:20:97: e9:公元前:8 c: f1:02:21:00:87: ea: 7 e: 78:20: b5: c0: a2:5b: 6 d: 71:2c: 0 c:大卫·爱登堡:6 e:男朋友:00:e2:61: f2:7c: 82:10: d6:87: d8:06:0f: 10:3b: d8: d9
看到Github Cryptoauthlib维基为更多的信息。数码网络嵌入式Yocto rootfs有PKCS11开箱即用的功能可以使用cryptochip默认的测试配置。
关于使用这个库的更多信息,见Atmel 8984 - Cryptoauthlib应用注释。图书馆已经集成ConnectCore 8 x,那么您可以跳过Atmel的移植部分应用程序。 |