硬件安全技术——芯片安全设计技术2

硬件安全技术——芯片安全设计技术2

一、常见的公钥密码算法

1. 公钥密码概述
  1. 公钥密码学与1976年由Whitfield Diffe 、Martin Hellman和Ralph Merkle公开介绍
  2. 公钥密码计数是20世界最伟大的思想之一
    由于其改变了秘钥分发的方式
    可以广泛应用于数字签名和身份认证服务
  3. 1977年提出的RSA成为以后使用最广泛的一种非对称密码算法
2.RSA密码算法
  1. 1977年由Ronald Rivest、Adi Shamir和Leonard Adleman发明,1978年公布。算法名称取自作者的名字首字母
  2. 1993年发布了PKCS#1标准来说明RSA的使用规范。2000年RSA专利到期(当时ECC专利还未到期)
  3. 如今,只有短的RSA秘钥才能被强力方式破解。到2019年为止,还没有任何可靠的攻击RSA算法的方式。RSA-2048至今是安全的
3. RSA算法描述

在这里插入图片描述
解密的过程主要依赖欧拉函数来正确还原明文。

4. ECC椭圆曲线算法
  1. 1985年由Neal Koblitz和Victor Miller分别独立提出
  2. 域K上的椭圆曲线E有下述方程定义:
    在这里插入图片描述
  3. 有两种运算法则:倍点和点加
    在这里插入图片描述
  • 点乘运算可以转换为点加和倍点运算
  • 主要运算为点乘,P和Q为椭圆曲线上的点,K为标量,Q=kP,知道P与Q,很难得到k
  • 点乘运算类似模幂运算
    9(0b1001)P = 222P + P
  1. 不同公钥算法安全级别对比
    在这里插入图片描述

二、常见的使用场景

1. 非对称算法应用
  • 签名、验签(常用):
    私钥用云签名,公钥用于验签,确认签名者的身份
  • 秘钥协商
    双方协商出一个共同的秘钥
  • 加密、解密
    公钥用于加密,私钥用于解密,该方式加解密代价较大
2. 常见应用1——网络认证
  1. 客户端需要验证服务端的身份或者服务端验证客户端的身份,在双方验证完身份后,通过协商的密钥
  2. 在握手阶段需要进行验签、密钥交换操作
    在这里插入图片描述
3. 常见应用2——安全启动
  1. 目前越来越多的设备使用了安全启动来保护安全,防止固件等呗第三方篡改
  2. 验证固件、应用的签名,但验证失败,就无法进入下一个阶段
    在这里插入图片描述
4. 常见应用3——V2X新应用领域
  1. 频繁对周围设备发来的位置信息进行验签
  2. 验签速度远远大于签名速度,验签速度大于在2000次每秒
  3. 目前的规范大多使用了ECDSA
5. 常见应用4——嵌入式设备
  1. 嵌入式设备通常都有mbedtls
    在这里插入图片描述

  2. mbedTLS软件包提供了如下的能力
    在这里插入图片描述

6. RSA、ECC的选择
  1. RSA的验签素服可以做到很快(原因是私钥可以很短)
    例如在安全启动的场景下,如果对启动速度很敏感则很有优势
  2. ECC的验签速度一般比签名速度慢
    如果使用ECDSA并且未经优化,签名速度一般是验签的速度的两倍
  3. RSA的存储占用远远大于ECC
    对SRAM敏感的场景下,建议使用ECC算法
  4. RSA的密钥生成速度远远小于ECC

三、常见的抗攻击设计

1. 点乘,模幂的防侧信道保护
  1. 点乘
  • 固定时间:蒙哥马利阶乘
  • 标量掩码:标量加上阶的随机倍数
  • 随机坐标:对投影坐标进行随机化处理
  1. 模幂
  • 固定时间:蒙哥马利阶乘
  • 指数掩码:对幂指数进行拆分(欧拉函数)
  • 底数掩码:对底数乘上随机数,在得到最终结果前脱掩码
2. 验签的防FI(错误注入)保护
  1. 硬件多次校验
  2. 多次校验之间使用随机延迟
  3. 如果使用了蒙哥马利阶乘,可以利用两数之间的关系进行校验
  4. 参数进行CRC校验

四、非对称密码算法实现

1. 层次化设计
  1. 根据运算调用关系进行分层
    底层的适合用硬件来处理,顶层的适合使用软件来处理
    在这里插入图片描述
  • 底层的运算被调用频率高,使用硬件有利于增加运算效率
  • 顶层协议级运算考虑使用软件设计以增加灵活性,但需要考虑硬件的中断设计,在硬件运算时可以释放CPU资源
2.选取适合的坐标系
  1. 标准摄影坐标系
    在这里插入图片描述

  2. 雅可比(Jacobian)坐标系
    在这里插入图片描述

3.预计算加速(软件实现比较多)
  1. 对基点进行预计算
    在这里插入图片描述

  2. OpenSSL的预计算优化
    在这里插入图片描述

4.利用SIMD指令进行加速
  1. 各家都有自己的SIMD指令
    Intel:AXV2/SSE
    ARM:NEON
  2. 利用SIMD特性,能够使运算提升数倍
    在这里插入图片描述

五、总结

  1. 公钥算法用于身份识别,主要应用为签名和验签
  2. ECDSA/ECDH和RSA是主流的公钥密码体系中的算法,SM2是国内主要的公钥密码算法
  3. 公钥密码算法往往有吞吐数据量小运算时间长的特性
  4. 由于公钥算法比较复杂,可以优先考虑已有的实现,避免反复造轮子。但要有优势,软硬件结合是最好的方式。

猜你喜欢

转载自blog.csdn.net/vivid117/article/details/117364447