精华内容
下载资源
问答
  • 前端时间有研究多款加密芯片,加密算法实现,以及破解可能,也有一些个人的观点,仅供参考; 一,加密芯片的来源及工作流程: 市面上的加密芯片,基本都是基于某款单片机,使用I2C或SPI等通讯,使用复杂加密算法...

    前端时间有研究多款加密芯片,加密算法实现,以及破解可能,也有一些个人的观点,仅供参考;

     

    一,加密芯片的来源及工作流程:

    市面上的加密芯片,基本都是基于某款单片机,使用I2C或SPI等通讯,使用复杂加密算法加密来实现的,流程大致如下:

    主控芯片生成随机码 --> 主控芯片给加密芯片发送明文 --> 加密芯片通过加密算法对明文进行加密生成密文 --> 加密芯片返回密文给主控芯片 --> 主控芯片对密文进行解密生成解密值 --> 主控芯片对解密值与之前明文进行对比, 比较值一致则认证通过(认证不通过可进行关机操作);

    (用户一般需要集成加密芯片商提供的解密库文件,调用指定库文件接口,来实现解密)

     

    目前市面上的加密芯片种类繁多,从几毛钱到十几块钱价格不等;

    二,不同类型加密芯片主要区别:

    1)加密算法实现不同:各种加密芯片都是厂家根据需求选择自己偏好的加密算法,进行更改适配,或者直接使用自己自定义的算法进行加密,常见算法介绍及比较详见附录1;

    2)封装不同,常见的加密芯片封装有:SOT-23-3,SOT23-6,SOP-8、SOIC-8等;根据板段的设计可选择不同的封装对应的芯片;

    3)其他区别:传输协议(I2C、SPI、UART、或者厂家自定义协议)不同,认证速率可靠性不同,开发适配难度差异等;

     

    三,加密芯片的应用:

    加密芯片一般广泛应用于给电子产品,防止抄板防止破解,部分常用产品(相机,监控摄像头,儿童数码玩具,行车记录仪,游戏机教育机,执法记录仪,安防设备,平板电脑,对讲机,会议系统,以及其他各种系统电子产品,行业工控机等产品);

     

    四,加密芯片破解的基本操作:

    加密芯片破解,一般破解公司会通过抓取明文以及密文内容,通过读取大量不同的明文和密文值,进行算法分析和破解,当耗费大量时间经历将加密算法分析出来后,另选一个相同封装尺寸的加密芯片,集成破解算法后替换原有加密芯片;

    备注:特别需要注意的是,明文的发送,建议使用真正的不可预知的随机数进行发送(如果每次都发送固定的几组明文,破解人员只需将该明文对应密文抓取出来,收到明文返回对应密文即可完成破解),建议在代码多个地方进行加密认证;在明文真正做到随机数的情况下,破解难度就取决于加密算法的复杂程度了;当然也会有其他更安全的因素可以提高破解风险,在此就不过多论述了;

     

    五,加密芯片的如何选择(仅个人认为):

    1)价钱:在产品量大情况下,建议选择便宜的加密芯片,大批量产品价格能够在一元一下会比较合适(当然越便宜越好);

    2)安全性:不同加密芯片,主要却别在于所选单片机不一样,加密芯片开发人员不一样,加密方式实现的差异;只要加密芯片实现方式上没有很大漏洞,以及加密算法不过于简单,所选加密芯片基本会有一定安全性, 大品牌加密方式复杂但破解者也更多,相比而言亦不占优势,小品牌不知名加密芯片加密算法复杂性可能欠缺但无人破解,相对也会有一定安全性;

    3)其他:①加密芯片最好选择有私有密钥的(这样针对不同客户的加密芯片就会有区别);②如果可能可以与加密芯片提供方要求,在原有加密算法基础上,集成一部分自己的数学运算进入到加密芯片算法内,以提高加密性;③如果对认证速率有要求最好选择认证速率相对较快的芯片,这样不会影响到开机速度和系统运行; 

    之前使用过淘宝“CC020加密芯片”性价比相对较高(另一篇文章有介绍如何适配),对于加密芯片如何选择不做具体推荐,选择哪款加密芯片视个人情况进行筛选;

     

    (备注:以上为原著个人观点,转摘请标明出处)

     

    //-------------------------------------------------------------------------------------------------

    附录1)常见算法介绍及比较:

    (算法介绍部分原文链接:https://blog.csdn.net/baidu_22254181/article/details/82594072)

    A)其中市面常见的加密算法如下:

    ①MD5算法:MD5 用的是 哈希函数,它的典型应用是对一段信息产生 信息摘要,以 防止被篡改。严格来说,MD5 不是一种 加密算法 而是 摘要算法。无论是多长的输入,MD5 都会输出长度为 128bits 的一个串 (通常用 16 进制 表示为 32 个字符)。

    ②SHA1算法:SHA1 是和 MD5 一样流行的 消息摘要算法,对于长度小于 2 ^ 64 位的消息,SHA1 会产生一个160 位的 消息摘要。基于 MD5、SHA1 的信息摘要特性以及 不可逆 (一般而言),可以被应用在检查 文件完整性 以及 数字签名 等场景;

    ③HMAC算法:HMAC 是密钥相关的 哈希运算消息认证码(Hash-based Message Authentication Code),HMAC 运算利用 哈希算法 (MD5、SHA1 等),以 一个密钥 和 一个消息 为输入,生成一个 消息摘要 作为 输出。

    ④DES算法:DES 加密算法是一种 分组密码,以 64 位为 分组对数据 加密,它的 密钥长度 是 56 位,加密解密 用 同一算法。DES 加密算法是对 密钥 进行保密,而 公开算法,包括加密和解密算法。这样,只有掌握了和发送方 相同密钥 的人才能解读由 DES加密算法加密的密文数据。因此,破译 DES 加密算法实际上就是 搜索密钥的编码。对于 56 位长度的 密钥 来说,如果用 穷举法 来进行搜索的话,其运算次数为 2 ^ 56 次。

    ⑤3DES算法:是基于 DES 的 对称算法,对 一块数据 用 三个不同的密钥 进行 三次加密,强度更高。

    ⑥AES 加密算法是密码学中的 高级加密标准,该加密算法采用 对称分组密码体制,密钥长度的最少支持为 128 位、 192 位、256 位,分组长度 128 位,算法应易于各种硬件和软件实现。这种加密算法是美国联邦政府采用的 区块加密标准。AES 本身就是为了取代 DES 的,AES 具有更好的 安全性、效率 和 灵活性。

    ⑦RSA算法:RSA 加密算法是目前最有影响力的 公钥加密算法,并且被普遍认为是目前 最优秀的公钥方案 之一。RSA 是第一个能同时用于 加密 和 数字签名 的算法,它能够 抵抗 到目前为止已知的 所有密码攻击,已被 ISO 推荐为公钥数据加密标准。

    ⑧ECC算法:

    ECC 也是一种 非对称加密算法,主要优势是在某些情况下,它比其他的方法使用 更小的密钥,比如 RSA 加密算法,提供 相当的或更高等级 的安全级别。不过一个缺点是 加密和解密操作 的实现比其他机制 时间长 (相比 RSA 算法,该算法对 CPU 消耗严重)。

     

    B)加密算法对比:

    附图1_1:散列算法比较 :

    附图1_2:对称加密算法比较  :

    附图1_3:非对称加密算法比较:

     

    展开全文
  • 加密芯片之路,折腾了我不少时间,下面分享一下"CC020加密芯片"的使用及适配: 寻找加密芯片左右对比寻找了很久,因为该款加密芯片相对市面来说比较便宜(特别是后期起量后,价格更实惠),有基础加密算法密钥和...

    加密芯片之路,折腾了我不少时间,下面分享一下"CC020加密芯片"的使用及适配:

     

    寻找加密芯片左右对比寻找了很久,因为该款加密芯片相对市面来说比较便宜(特别是后期起量后,价格更实惠),有基础加密算法密钥和明文处理安全性相对可行,供应商会提供I2C实现驱动易于开发,还可以基于原有算法进行定制,所以选用;

    我的加密芯片使用在海思视频芯片"hi35xx"(基于Linux C系统开发),用于硬件加密防抄板防破解;

     

    一,加密芯片使用项目情况:

    1)供电电压:3.3V

    2)协议传输方式:I2C串口协议(使用2个GPIO模拟的I2C,供应商有提供demo程序);

    3)封装类型:SOT23-6 60mil

    4)加密芯片管脚及原理图走线(参考供应商提供方式):

           

     

     

    二,代码适配集成:

    1)索要资料: 购买CC020加密芯片后,需要提供给供应商当前使用的交叉工具编译链,供应商会根据交叉编译链编译生成一个 “.a“ 的静态库文件,以及调用接口的头文件; 另外还有提供一个 GPIO模拟I2C的demo驱动程序;

    2)链接文件:将库文件和头文件添加到自己的编译环境链接代码中去(libcj_enc_decryp.a,EnDe_crypt.h);

         下面是头文件内容,主要的解码接口为"cj_decrypt_date";

    3)代码集成适配:

    ①适配GPIO模拟I2C的通信:I2C的实现过程步骤,在供应商给到的开发程序里面已有提供,copy过来就好,只需要将两个GPIO口和 I2C的SDA/SCL对应就好了;

    ②加密步骤调用根据参考代码进行更改,大概步骤如下:

    4)验证功能:

    我是在开机和系统运行到指定位置时,调用的加解密认证接口,认证通过了就继续往下运行,认证失败就关机;

    在集成玩上述代码收就可以验证加密功能了,如果GPIO配置正确基本每次认证都可以通过,认证耗时也很少(如果认证不通过或者部分地方没有适配到位,建议添加打印信息定位具体的地方,有不明白的也可以和供应商联系)

     

    到这里硬件加密基本就完成了,代码集成适配相对简单,有基本算法和密钥双重加密相对可靠安全(供应商针对不同的客户会提供不同的密钥还是不错的方式);

    (淘宝链接:https://shop57120002.taobao.com/index.htm?spm=a1z10.3-c.w5002-919049084.2.606e504aTqqBKP

     

     

     

     

     

     

    展开全文
  • 加密芯片的目的,哪里都可搜索的到,这里就不多说,主要谈一些自己在接触中的一些心得,以及技术备注,以便以后查阅和使用。 资料参考列表: ATSHA204A加密芯片攻略——使用篇 atsha204a加密芯片...

    闲扯一下

    好久没写博客了,技术之路在于坚持,长期写博客,总结, 是对自己一个不错的锻炼,希望看到的博友能够坚持下去,一起互勉。

    前言

    最近由于产品需要,加班加点完成了这个项目的预研。加密芯片的目的,哪里都可搜索的到,这里就不多说,主要谈一些自己在接触中的一些心得,以及技术备注,以便以后查阅和使用。

    资料参考列表:

    ATSHA204A加密芯片攻略——使用篇

    atsha204a加密芯片使用攻略——配置篇

    github源码实例

    配置

    以下所讲是如何直接使用,以及探讨所实现过程中的问题解决,遗留问题。

    GitHub源码不建议直接运行,需要在理解的基础上。自己的配置代码如下:

    void read_config(int fd, struct atsha204a_command_packet *command_packet)
    {
        uint8_t status;
        //1.du入测试
        memset(readdata, -1, 32);
        cmd_args.op_code = command_packet->op_code;
        cmd_args.param_1 = command_packet->param1;
        cmd_args.param_2 = command_packet->param2;
        cmd_args.data_len_1 = command_packet->data_len;
        cmd_args.data_1 = command_packet->data;
        cmd_args.data_len_2 = 0;
        cmd_args.data_2 = NULL;
        cmd_args.data_len_3 = 0;
        cmd_args.data_3 = NULL;
        cmd_args.tx_size = 0x10;
        cmd_args.tx_buffer = global_tx_buffer;
        cmd_args.rx_size = 0x10;
        cmd_args.rx_buffer = global_rx_buffer;
        status = sha204m_execute(fd, &cmd_args);
        if (status != SHA204_SUCCESS) { printf(" Read data zone  FAILED! \n"); }
        else{ printf(" Read data zone  SUCCESS! \n"); }
        printf("read_data addr:%02x\n", command_packet->param2);
        printf_hex_array("readdata: ", 32, readdata);
        memcpy(readdata, &global_rx_buffer[1], 32);
        printf_hex_array("readdata: ", 32, readdata);
    }
    void write_config(int fd, struct atsha204a_command_packet *command_packet)
    {
        uint8_t status;
        memset(readdata, -1, 32);
        cmd_args.op_code = command_packet->op_code;
        cmd_args.param_1 = command_packet->param1;
        cmd_args.param_2 = command_packet->param2;
        cmd_args.data_len_1 = command_packet->data_len;
        cmd_args.data_1 = command_packet->data;
        cmd_args.data_len_2 = 0;
        cmd_args.data_2 = NULL;
        cmd_args.data_len_3 = 0;
        cmd_args.data_3 = NULL;
        cmd_args.tx_size = 0x10;
        cmd_args.tx_buffer = global_tx_buffer;
        cmd_args.rx_size = 0x10;
        cmd_args.rx_buffer = global_rx_buffer;
        status = sha204m_execute(fd, &cmd_args);
        if (status != SHA204_SUCCESS) { printf(" Write data zone  FAILED! \n"); }
        else{ printf(" Write data zone  SUCCESS! \n"); }
        printf("read_data addr:%02x\n", command_packet->param2);
        printf_hex_array("readdata: ", 32, readdata);
        memcpy(readdata, &global_rx_buffer[1], 32);
        printf_hex_array("readdata: ", 32, readdata);
    }
    void my_config(int fd, uint8_t* key_15)
    {
        static uint8_t status = SHA204_SUCCESS;
        uint8_t serect[32] = { 0 };	//the key of slot 0
        uint8_t tmp_conf[2];
    
        uint8_t data1[4] = { 0x80, 0xA0, 0x80, 0xA0 };
        int slot = 10;
        uint16_t slot_addr = (uint16_t)(10 * 8);
    
        //1.du入测试 0x05
        get_sn_command.op_code = 0x02;
        get_sn_command.param1 = 0x00;
        get_sn_command.param2 = 0x05;
        get_sn_command.data_len = 0;
        get_sn_command.data = NULL;
        read_config(fd, &get_sn_command);
    
        //1.du入测试 SN
        get_sn_command.op_code = 0x02;
        get_sn_command.param1 = 0x80;
        get_sn_command.param2 = 0x00;
        get_sn_command.data_len = 0;
        get_sn_command.data = NULL;
        read_config(fd, &get_sn_command);
        //1.du入测试 0x15
        get_sn_command.op_code = 0x02;
        get_sn_command.param1 = 0x00;
        get_sn_command.param2 = 0x15;
        get_sn_command.data_len = 0;
        get_sn_command.data = NULL;
        read_config(fd, &get_sn_command);
        printf("===================开始配置========================\n");
        //1.config区配置solt0/1(key_15) 加密读 加密写 关联的solt区为 solt10(key_0)   
        printf("config区配置solt0/1\n");
        // data1[4] = { 0x8A, 0xA0, 0x8A, 0xA0 };
        data1[0] = 0x8A; data1[1] = 0xA0; data1[2] = 0x8A; data1[3] = 0xA0;
        get_sn_command.op_code = 0x12;
        get_sn_command.param1 = 0x00;
        get_sn_command.param2 = 0x05;
        get_sn_command.data_len = 4;
        get_sn_command.data = data1;
        write_config(fd, &get_sn_command);
        //1.du入测试 0x05
        get_sn_command.op_code = 0x02;
        get_sn_command.param1 = 0x00;
        get_sn_command.param2 = 0x05;
        get_sn_command.data_len = 0;
        get_sn_command.data = NULL;
        read_config(fd, &get_sn_command);
        //2.solt10(key_0)  可随意读写//锁定后还能进行读写吗?因该是不能写
        printf("config区配置solt10/11\n");
        // data1[4] = { 0x00, 0x00, 0x00, 0x00 };
        data1[0] = 0x00; data1[1] = 0x00; data1[2] = 0x00; data1[3] = 0x00;
        get_sn_command.op_code = 0x12;
        get_sn_command.param1 = 0x00;
        get_sn_command.param2 = 0x0A;
        get_sn_command.data_len = 4;
        get_sn_command.data = data1;
        write_config(fd, &get_sn_command);
        //3.锁定config区
        //3.1 读取0x15地址配置信息
        printf("3.1 读取0x15地址配置信息\n");
        get_sn_command.op_code = 0x02;
        get_sn_command.param1 = 0x00;
        get_sn_command.param2 = 0x15;
        get_sn_command.data_len = 0;
        get_sn_command.data = NULL;
        read_config(fd, &get_sn_command);
        //3.2锁定config区
        data1[0] = 0x00; data1[1] = 0x00; data1[2] = 0x55; data1[3] = 0x00;
        get_sn_command.op_code = 0x17;
        get_sn_command.param1 = 0x80;
        get_sn_command.param2 = 0x00;
        get_sn_command.data_len = 0;
        get_sn_command.data = NULL;
        write_config(fd, &get_sn_command);
        //3.3 读取0x15地址配置信息
        printf("3.3 读取0x15地址配置信息\n");
        get_sn_command.op_code = 0x02;
        get_sn_command.param1 = 0x00;
        get_sn_command.param2 = 0x15;
        get_sn_command.data_len = 0;
        get_sn_command.data = NULL;
        read_config(fd, &get_sn_command);//0x00 0x00 0x55 0x00 成功
        //4. 写入秘钥 slot 
        printf("4.1 读取slot数据\n");
        slot_addr = (uint16_t)(0 * 8);
        get_sn_command.op_code = 0x02;
        get_sn_command.param1 = 0x82;
        get_sn_command.param2 = slot_addr;
        get_sn_command.data_len = 0;
        get_sn_command.data = NULL;
        read_config(fd, &get_sn_command);
        //4.2 往slot0写入秘钥
        slot_addr = (uint16_t)(0 * 8);
        get_sn_command.op_code = 0x12;
        get_sn_command.param1 = 0x82;
        get_sn_command.param2 = slot_addr;
        get_sn_command.data_len = 32;
        get_sn_command.data = key_15;
        write_config(fd, &get_sn_command);
        //4.3 往slot10写入秘钥
        slot_addr = (uint16_t)(10 * 8);
        get_sn_command.op_code = 0x12;
        get_sn_command.param1 = 0x82;
        get_sn_command.param2 = slot_addr;
        get_sn_command.data_len = 32;
        get_sn_command.data = key_0;
        write_config(fd, &get_sn_command);
        //4.4 锁定slot data区
        get_sn_command.op_code = 0x17;
        get_sn_command.param1 = 0x81;
        get_sn_command.param2 = 0x00;
        get_sn_command.data_len = 0;
        get_sn_command.data = NULL;
        write_config(fd, &get_sn_command);
        //4.5 读取0x15地址配置信息
        printf("4.5 读取0x15地址配置信息\n");
        get_sn_command.op_code = 0x02;
        get_sn_command.param1 = 0x00;
        get_sn_command.param2 = 0x15;
        get_sn_command.data_len = 0;
        get_sn_command.data = NULL;
        read_config(fd, &get_sn_command);//0x00 0x00 0x00 0x00 成功
    
    }

    具体的配置意义可以详细查看atsha204a加密芯片使用攻略——配置篇或者官方的Datasheet文档。

    遗留问题

    当前调用验证函数random_challenge_response_authentication(),出现验证码不一致的问题,几经调整无果,其他的问题暂时没有。

    主要排除方法:更换mac命令的mode参数,使用temp_key或者使用slot区秘钥来查看Mac后的digest结果,查看代码生成验证码是否有误。

    当前验证码结果依然不一致,后期若解决再做记录。

    -------------------------------------------------------------------------------

    验证结果不一致排查:

    1.检查配置区是否存在问题;

    2.检查配置命令是否错误;

    定位到:主机端生成验证码存在问题!更换主机端SHA256算法,结果验证码一致,验证通过!!!

    ------------------------------------------------------------------------------

    配置过程注意:

    1.芯片的config区和data区一旦锁定,没有办法解锁,锁的方法只能通过lock command来进行锁定。配置错误,芯片基本之间废了,我在这个过程中浪费了两片。

    2.config区在没锁定的时候,可以使用write command来进行写操作,但注意,0x00-0x03地址(word地址,详情请参考手册)不能被写,0x15word地址不能使用write command来写。

    3.在config锁定前,data区(包括slot区和OTP区)既不能写也不能读。而在config锁定后,data区锁定前,data区只能写不能读,在data区锁定后,可以根据config中的配置来进行读写。

     

    展开全文
  • 加密芯片大对比

    2018-02-28 16:04:25
    市面上加密芯片,让人看的眼花缭乱,本文对各家加密芯片作了分析及对比
  • 加密芯片那些事儿

    2018-02-28 16:00:12
    一个好的安全加密芯片不但要有安全可靠,不可被破解的物理硬件,还要有可灵活设计的软件。二者缺一不可,否则再好的硬件,会因为软件设计的限制,被破解。再好的软件设计方案,也会因为,硬件安全程度不够,被侵入者...
  • 介绍加密芯片的安全体系,浅析加密芯片的安全体系构成;讨论加密芯片的算法运算单元的市场需求方向,分享加密芯片选型实用小技巧,提供加密芯片选型的参考。
  • 嵌入式Linux平台加密芯片加密芯片驱动及移植说明文档,inux平台加密芯片加密芯片驱动及移植说明文档欢迎大家下载使用!
  • ESAM加密芯片使用手册

    2017-05-11 15:48:50
    ESAM加密芯片使用手册
  • 安全加密芯片

    2013-09-18 11:40:58
    加密芯片支持高速数据流加密,加密移动存储,流媒体加密,安全通信,高端 USB Key,国有自主产权,算法全面,国密专用算法SM1、SM2、SM3、SM4,国际通用算法DES、RSA,通过国密测试的真随机数,该IP已通过国密局...
  • sec3000加密芯片资料

    2016-08-01 16:23:07
    sec3000加密芯片资料
  • 对于加密芯片的选择,我们要从三个方面考虑:芯片平台、芯片操作系统安全性、可行性加密方案。
  • 加密芯片对比

    千次阅读 热门讨论 2018-06-07 13:12:10
    如果十年前在嵌入式行业提到“加密芯片”这个名词,你可能会感到新奇。但如果今天,身处中国市场,你仍然对嵌入式加密芯片感到陌生,那你就out了。国人是非常善于做“反向开发”的,创新不是我们的专长,但模仿破解...

    如果十年前在嵌入式行业提到“加密芯片”这个名词,你可能会感到新奇。但如果今天,身处中国市场,你仍然对嵌入式加密芯片感到陌生,那你就out了。国人是非常善于做“反向开发”的,创新不是我们的专长,但模仿破解的能力足够强大。不少商人为了短期获利,不惜出卖原则,突破底线,依靠破解市场成熟热卖的嵌入式产品进行盗版行为,短期获得高额利润,严重影响市场秩序。

    目前国内破解技术正在稳步提升,对于通用类MCUDSP或者FPGA的破解已经不在话下。破解成本相对极低,无需投入研发经费和大量研发周期就可迅速向市场铺入产品。这正符合不少公司的发展需求。

    既然市场上有专门的破解公司和破解团队,那么加密公司和加密产品的出现也就理所当然了。从早先的逻辑加密芯片到现在的智能卡平台加密芯片,再到定制设计的加密芯片,正经历着技术升级换代与功能提升的稳步发展。现有市场上的加密芯片产品,功能极多,特点不一,宣传卖点也不尽相同,但万变不离其宗,不管怎么保护,还是要回到主机CPU端继续跑程序。因为加密芯片起到的保护作用有其局限性,他并不能替代主机CPU去实现所有功能。那么问题来了,市面上的加密芯片真的如宣传的那般神通广大吗,能起到100%的防抄板保护效果吗?答案很肯定,那就是“不一定”。

    现在市场上的加密芯片厂家和产品极多,所以仅对名气较大的几款主流产品做出分析。原因非常简单,一切存在皆合理,尤其是市场经济下,不好用的产品,是经不起市场考验的。所以纵观市面上纷纷扰扰的加密产品,不一定每款都好用,但存在了5年以上的加密公司和产品,一定是有他的硬道理。所以我们先针对这些老牌劲旅做个简析。

    ATMXXX公司的AT8xxxx

    首先需要虚心的承认,ATMXXX是一家国际大型IC厂商,不能一味的认为国外的月亮比较圆,但是ATMXXX在行业内绝对是比较牛。国内集成电路与国外厂家还是有几年的差距的。

    ATMXXX设计的加密芯片功能还是比较完善的,硬件平台自身就加入不少防止破解的机制,内部有硬件加密协处理器,同时具备安全存储功能。

    但国外的产品也存在水土不服的问题。老外的思维跟国人不一样,认证鉴权这些方案其实是有适用环境限制的。主机与加密芯片互持相同密钥,基于对称算法对主机端产生的随机数进行加密,并在主机端比对结果。正确就继续运行,错误就退出。

    弱点比较明显,你用一个不安全的主机端CPU去存储一个跟安全直接相关的重要数据(密钥),还要在这个不安全的CPU里面做身份的审核,这是不明智的。

    neoXXX公司的ALxxxx系列

    这家neoXXX公司的芯片,其SOT23的封装还是比较有优势的。

    就目前市面上的破解信息来看,还没有谁说能直接通过侵入式供给手段将其芯片内的数据读出。ALPxxx的芯片其实应该是ASIC类型的,所以想要破解加密芯片本身,还是比较困难的,再加上其密钥管理有独特的方式,破解里面的密钥也不现实。

    I2C的通讯接口保证了通讯稳定性,用户开发上手很快。这家公司宣称可以为各个客户定制不同的密钥,芯片自身也具备唯一硬件ID。芯片待机功耗相对比较理想,只有几十甚至更低uA。但同AT8XXXX一样,他的应用方案大同小异。还是存在“用一个不安全的主机端CPU去存储一个跟安全直接相关的重要数据(密钥),还要在这个不安全的CPU里面做身份的审核”,这样很容易被盗版商通过破解主机CPU程序,绕过身份审核对比点实现破解。

    凌科XXX公司的 LKTXXXX系列

    这是一家国内公司,做加密芯片也有十几年了,在加密行业里有着不小的名气,应用领域领域广泛。这家公司的LKTxxxx芯片类型也比较多(应该是做的比较专一,深入),封装类型比较多,有SOP8DIP8QFNDFN8这些,从芯片安全角度来看,LKTXXX系列安全芯片在硬件结构以及加密方案上都和前两家有些区别。

    从硬件设计角度来说,内部使用了很安全的金融级智能卡内核,宣传上突出物理安全,不可暴力破解,这个在硬件安全水平上应该比上两家更高一些。

    另外在加密方案上,其产品突出的是具有方法型发明专利的算法移植方案,我在好奇心与求知欲的驱使下,跟他们公司的销售沟通了一下,以“大客户”的身份反复强调注重安全行的前提下,做了不少工作才要到了他们专利证书号ZL 2012 1 0546174. 9. 。于是去专利局官网查了查,是这么描述的“一种嵌入式软件防盗版加密方法”。听了他们销售人员的介绍,再加上自己也研究了一下datasheet,简单总结了一下,可以认为是加密芯片+主机CPU两颗芯片实现一个产品功能,代码当然就放在这两颗芯片中了,“用一个不安全的主机端CPU去存储运行一部分非关键部分业务逻辑功能,用另一个相对安全的加密芯片存储运行另一部分核心机密业务逻辑”,理论上要更安全,实际情况是有人宣称能破解该类加密芯片,但是否真的能破,多为道听途说,毕竟未能亲眼验证,不敢轻下结论,因为安全是相对的,不可能永久安全,但至少从目前来看其硬件安全和方案安全还是最理想的解决方案。我们国内自主创新的芯片和加密方案,能有这样的安全防护,多个选择,也还是不错的。前不久的中兴事件就给大家敲醒了警钟,也不能一味的依赖国外产品。

    中巨XXXX公司的SMXXX

    同样也是我们国内的公司,属于近两年出现的新公司,吸引我的是他的加密方案和硬件接口。I2C属于比较常用的通讯接口,调试起来比较方便,稳定性也比较高。不过文章开头提到的两家国外芯片也是I2C,因此相对来说,安全性和加密方案就更为重要了。同样是宣称硬件非常安全且无法破解,应用的也是智能卡平台安全芯片。我想办法从朋友那里搞到了datasheet,相比之下,我们国内的这两家公司,做的方案还是比较接近的,SMxxxx芯片的加密方案叫基于算法嵌入的安全设计,也有应用举例,通俗易懂。但核心与LKTxxxx也是一样,加密芯片+主机CPU两颗芯片实现一个产品功能,其安全依赖于加密芯片自身内部代码无法被暴力破解,因此只破解CPU无法完成抄板。理论上来说是没有问题的。

    网上随便搜了一下,有喜有忧。喜的是没有太多关于该芯片被破解的信息,忧的是没有被破解到底是因为用的人少,破解后没有获利还是说芯片真的很安全,这就不得而知了,毕竟这家公司成立不久,还得再多观察看看。但有一点温馨提示,两家公司产品方案很接近,而且LKTxxxx宣称具有专利证书,是否存在侵权问题,还有待进一步商榷。如果担心选错加密芯片而卷入知识产权纠纷,那还需大家擦亮双眼,自行评估。

    综上,这几款芯片还有一个重要的因素没有分析到,那就是成本、开发便捷度。越安全,开发难度就越大,LKTxxxx相对更复杂一些,另外两款国外产品,因为用法相对固定,开发会更便捷。另外就是成本和供货,这个就各有所长了,但既然都能在国内这么强烈竞争的环境下存活这么久,都是能适应市场和客户的,各自侧重的目标客户也不尽相同。

    不管怎么说,盗版毕竟不太光明正大,我国的知识产权相关法律完善还有不少路要走,最主要的是我们的信用体制还没完全建立起来,执法取证难度大、盗版成本低、维权成本高,这些都是非常不利于高新企业发展的。如果没有找到更好的方法,大家也就好好考虑用加密芯片这一技术手段来保护技术成果吧。

    除了以上主流的加密芯片公司以外 ,也有一些新生力量的出现,但因为缺乏市场量产检验,没有经历技术积累与产品迭代升级,理论上存在稳定性和技术上的隐患,毕竟公司内部研发与测试的时间再长,也无法模拟出各个行业的应用环境与场景,因此芯片好坏暂不便评价。有的加密芯片本身具备专利技术,正版厂家选择加密芯片厂家的时候,一定要去伪存真(这点不存在于盗版厂商,因为他们不怕打官司,本身做的产品就是盗版的)。

    展开全文
  • 加密芯片的选择

    千次阅读 2018-10-24 12:45:40
    加密芯片的选择要从2方面来考虑: - 硬件方面 - 软件方案方面 硬件方面:如果加密芯片本身硬件会被物理破解,那就毫无安全可言,失去了加密芯片保护MCU方案的意义。 智能卡内核的加密芯片,硬件方面安全性是最高...
  • ATECC508A芯片开发笔记(一):初识加密芯片

    万次阅读 热门讨论 2017-07-15 21:01:17
    使用传统纯软件的方法实现网络安全加解密、身份认证等算法存在较多缺陷,如执行各类算法的时间、资源消耗较大,并且无法实现密钥等secret的安全存储,这时各类芯片厂商推出了硬件加密芯片来解决上述问题,在增加系统...
  • 介绍了中巨伟业推出的加密芯片SMEC98SP(SE98)实现术后局加密和防破解的方法
  • 加密芯片的作用

    千次阅读 2019-06-03 17:42:10
    加密芯片为了防止未经授权访问或拷贝芯片内程序;防止未经授权使用非正常手段抄袭PCB,将产品的PCB完全复制。 工具/原料: ● 加密芯片RJMU401、RJGT102 ●软件加密,PCB设计加密 方法/步骤: 1、硬件保护: 在...
  • 如何选择加密芯片

    2018-05-22 10:46:59
    加密芯片的原理通常分为以下几种:1、芯片内部置入数据,通过对比数据是否相同 缺点:容易被模拟2、板子与加密芯片同时置入密钥(可相同,或者通过特别数据运算后相同),同时加密随机数(不会重复使用),根据结果...
  • 嵌入式常用的加密芯片

    千次阅读 2017-09-17 02:24:40
    加密芯片过程: https://zhidao.baidu.com/question/1734554986679308627.html 破解加密芯片博客: http://blog.sina.com.cn/s/blog_eaf59f260102wd9v.html ICP204: LKT4201N: ATSHA204A-SS
  • NRSEC3000加密芯片手册

    2018-10-10 14:31:30
    NRSEC3000 加密芯片 NRSEC3000NRSEC3000安全芯片提供 安全芯片提供 RSARSARSA、SM1 SM1、SM2SM2SM2算法 等功能,支持 ISO7816 ISO7816ISO7816接口 和 SPI SPI接口 通信。采用“一问答”方式,即户发送命令给 通信。...
  • 加密芯片十大品牌对比

    千次阅读 2020-03-26 10:20:57
    加密芯片的算法运算单元丰富,是满足市场需求的前提;为用户定制算法单元,设计方案的加密芯片,更受市场欢迎;加密芯片的价格取决于用户的案子开发难易程度。
  • 1.加密芯片的通讯方式? 不同的产品有不同的通讯方式,ALPU系列是I2C的通讯接口,DORCA系列是SPI的通讯接。 2.加密芯片的封装? ALPU-C是SOT23-6L封装 ALPU-FA和GEN-FA是SOT23-6L和SOP8两种封装。DORCA是TDFN2x3 ...
  • 所谓算法移植就是客户可以把自定义的程序一部分关键算法函数移植到加密芯片中运行。
  • ALPU加密芯片产品介绍

    2020-11-23 13:11:49
    ALPU算法许可单元是一款用于系统版权保护的加密芯片产品,它采用随机变量交换系统的认证加密芯片,在SOT-23的小封装内整合了1万多个逻辑门。ALPU与系统CPU以密码方式通信,CPU在诸如系统启动等关键场合检测ALPU加密...
  • 一种ECC加密芯片抗功耗攻击研究
  • 凌科芯安公司凭借在嵌入式加密领域多年的经验积累,对于加密芯片的选择,我们提出了要从三个方面考虑:1、芯片平台 2、芯片操作系统安全性3、可行性加密方案。下面,将会逐一对3个方面进行阐述。
  • 正确的理解加密芯片

    万次阅读 2017-12-14 17:08:29
    在过年的工作中,用过N多次加密芯片,那个时候对加密芯片的理解就是,用一个单片机芯片,两端分别放好一样的密钥,然后自己定义一个通信协议。两边通过协议交换一下数据,如果数据是想要的认为加密成功,否则就失败...
  • 加密芯片DM2016资料

    2013-12-04 14:20:05
    加密芯片,dm2016型号加密资料硬件电路

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,244
精华内容 897
关键字:

加密芯片