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:

  1. 包括cryptoauthlib标题:

    # include< cryptoauthlib.h >
  2. 使用I2C默认配置初始化库:

    atcab_init (&cfg_ateccx08a_i2c_default);
    cfg_ateccx08a_i2c_default变量提供的图书馆,它已经配置为ConnectCore 8 x。
  3. 添加以下行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的移植部分应用程序。