ATSHA204A-MAHDA-T国产替代加密芯片

ATSHA204A-MAHDA-T是一款用于固件版权保护,防抄板仿克隆的加密芯片。包含16个密钥存储区用于安全存储密钥。同时提供OTP区用于存储用户固定信息。

MODSEMI的MOD208加密芯片,无论是硬件,还是指令API软件,做到了完美兼容ATSHA204A-MAHDA-T。包括密钥slot配置,认证指令,以及驱动方式。压力测试比ATSHA204A更加稳定,可靠性非常好.

--ATSHA204A与MOD208加密芯片兼容性指令列表对比---

安全命令

说明

ATSHA204A

MOD208加密芯片

DeriveKey

从目标密钥或父密钥获取目标密钥值。

支持

支持

DevRev

返回加密芯片版本信息。

支持

支持

GenDig

通过随机数或输入种子和密钥产生数据保护摘要。

支持

支持

HMAC

利用 HMAC/SHA-256 计算密钥和其他内部数据响应

支持

支持

CheckMac

验证其他 CryptoAuthentication 芯片计算的 MAC。

支持

支持

Lock

禁止加密芯片分区的后续更新。

支持

支持

MAC

利用 SHA-256 从密钥和其他内部数据计算应答。

支持

支持

Nonce

生成 32-byte 随机数和内部存储临时数据值即 tempkey。

支持

支持,且支持真随机

Pause

可选地将一个以外所有共享总线的定芯片送入待机状态。

支持

支持

Random

生成随机数。

支持

支持

Read

从芯片读 4 字节,可使用或不使用身份认证和加密。

支持

支持

SHA

计算任何用途的 SHA256 摘要。

支持

支持

UpdateExtra

在配置分区锁定后,更新配置分区内的字节 84 或 85。

支持

支持

Write

写 4 或 32 字节到芯片,有或无认证与加密。

支持

支持

ATSHA204A-MAHDA-T 为UDFN8(或称DNF8)封装,MOD208同样提供UDNF8封装规格,也提供SOP8封装。

密钥配置和认证代码完全兼容:

    while (1) {
        printf("--> 按下按钮开始配置MOD208加密芯片...");

        while (LL_GPIO_IsInputPinSet(KEY_S2_GPIO_Port, KEY_S2_Pin) == 1);

        printf("OK\r\n");
        delay_ms(1000);

        for (I2C_BusIdx = 0; I2C_BusIdx < MAX_I2C_BUSES; I2C_BusIdx++) {
            printf("------------------- START -------------------\r\n\r\n");

            printf("********* 当前处理第 %02u 片加密芯片 *********\r\n", I2C_BusIdx);

            // 初始化 CryptoAuthlib 加密库,申请 "堆 Heap" 内存,用于存放相关对象实例
            cryptoauthlib_init();

            if (atcab_read_serial_number(sn) != SUCCESS) {
                printf("--> 读取序列号失败,请核对芯片型号是否与程序相符合...\r\n\r\n");
            } else {
                printf("--> 当前芯片序列号: 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X\r\n", sn[0], sn[1], sn[2], sn[3], sn[4], sn[5], sn[6], sn[7], sn[8]);
            }

            // Provision the device with the configuration and shared secret data
#if IP_PROTECTION_LOAD_CONFIG

            if (device_provision(CRYPTOAUTH_DEVICE_AUTH_KEY_SLOT) != SUCCESS) {
                printf("--> 加密芯片配置失败...\r\n");
                printf("--> 检查设备然后复位重试...\r\n");
            }

#endif

            // Initialize the time for the authentication to perform
            g_auth_interval_msec = (rand() % AUTHENTICATION_RANGE_MSEC) + AUTHENTICATION_MIN_MSEC;

            // Forcing to do Authentication at the start
            g_do_auth = true;

            if (authenticate_application() == NOT_AUTHENTICATED) {
                printf("--> 加密芯片验证失败,1秒后重试...\r\n\r\n");
                delay_ms(1000);
            }

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值