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

2023-11-06

硬件安全技术——芯片安全设计技术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. 由于公钥算法比较复杂,可以优先考虑已有的实现,避免反复造轮子。但要有优势,软硬件结合是最好的方式。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

硬件安全技术——芯片安全设计技术2 的相关文章

  • JS小数点前面的0显示

    使用Java从 oracle数据库中取出0 225的数字时 在前台js页面中显示为 225 有两种方法 1 Java中的类使用string来存储0 225时 会保存为 225 需要在前台使用 js方法parseFloat 转为float类型
  • LF AI & Data基金会执行董事Ibrahim Haddad:加速中的开源人工智能创新与合作

    以人工智能为代表的新一代信息技术正在深刻改变着世界 改变着人类生活 人工智能技术不但能够带来便利 同时也为其带来了不确定 不稳定等诸多挑战 2022年7月21日 由中国开源软件推进联盟主办 赛迪传媒 软件和集成电路 杂志社联合承办 CSDN
  • Windows装机必备——WinRAR2023最新版下载&安装教程

    软件下载 软件 WinRAR 版本 自动更新 语言 简体中文 大小 3 38M 系统要求 Win7及以上 32 64为操作系统 硬件要求 CPU 2 0GHz 内存 2G 或更高 下载通道 百度网盘丨下载链接 链接 https pan ba
  • 使用Prometheus+Grafana监控MySQL

    你还不会监控服务器资源吗 你还不会监控mysql性能吗 但是你看了这篇文章之后我想你应该会了 哈哈哈 就算不会 至少你也知道是个怎么回事 这篇文章就来介绍怎么给自己的服务器系统搭建一个监控平台 要是还不会 请私聊我 哈哈 一 介绍Prome
  • 单片机_第2章 MCS-51单片机的结构及原理

    目录 2 1 MCS 51单片机的结构 2 1 1 MCS 51单片机的内部结构 80C51单片机的内部资源主要包括 CPU Central Processing Unit 2 1 2 MCS 51引脚及功能 封装 80C51单片机的40只
  • base model初始化large model,造成的参数矩阵对不上权重不匹配问题

    先报错没有指定文件 OSError Error no file named pytorch model bin tf model h5 model ckpt index or flax model msgpack found in dire
  • Python环境搭建—Anaconda的安装与使用

    Python安装 Anaconda的安装与使用 Anaconda是一个集成的Python数据科学环境 除了有Python外 还安装了很多用于 数据分析的第三方库 相对于新手来说 相当友好 可以避免安装第三方库的麻烦 1 Anaconda下载
  • Hadoop分布式部署,部署一个namenode和三个datanode

    本文以一主三从部署hadoop为介绍 1 首先克隆原有centos系统 2 nn y 为主 dn1 dn2 dn3为从 都是通过克隆快速完成的 右键管理有克隆 选择完全克隆 3 配置网络集群 设置静态ip 192 168 64 132 19
  • 用 React+Redux+Immutable 做俄罗斯方块

    俄罗斯方块是一直各类程序语言热衷实现的经典游戏 JavsScript的实现版本也有很多 用React 做好俄罗斯方块则成了我一个目标 戳 https chvin github io react tetris 玩一玩 开源地址 https g
  • Linux中确认两份文件内容是否相同的方法:MD5值

    什么是MD5值 MD5 信息摘要算法 一种被广泛使用的密码散列函数 可以产生出一个128位 16字节 的散列值 hash value 用于确保信息传输完整一致 可以说是文件的唯一ID 可以根据MD5值去判断文件是否完整或者两个文件是否完全一
  • 测试IDEA中几款从Java bean(POJO)得到JSON字符串用于postman请求参数的插件

    测试IDEA中几款从Java bean POJO 得到JSON字符串用于postman请求参数的插件 一 背景 有时候 我们需要从写好的 Java 类得到 JSON字符串 Java类一般指 DTO XxxRequest 即 controll
  • C语言 char 和 signed char的区别

    在STM32项目的开发过程遇到一个奇葩的问题 测试代码如下 char char 1 if char 1 pr dbg char 1 r n else pr dbg char 1 r n 结果输出 1048 dbg main 83 char
  • 02-C++多线程编程-创建子线程

    By kkmd66 理论学习 1 主线程是什么 什么时候开始 结束 2 子线程如何创建 生命周期是什么 3 thread类的基本使用方法 代码演示 1 线程ID区分不同的线程 2 join detach区别 include
  • 31岁零基础转行软件测试,现已成功入职月薪14K+

    二黑 华测在线上期学员 31岁 坐标上海 专科 石油与天然气地质勘探 学习3个月 从石油行业到IT行业 薪资 8K 14K 二黑同学通过三个月的学习 顺利入职成为一名软件测试工程师 成功从石油行业转行到IT行业 这篇文章分为三个部分 1 我
  • ubuntu latex 编译报错记录

    1 cls缺失 sudo apt get install texlive publishers 2 File algorithmic sty not found sudo apt install texlive science 这里推荐一个
  • 机器学习笔记(7)— 学习率、特征工程、多项式回归

    目录 判断梯度下降是否收敛 如何设置学习率 特征工程 多项式回归 判断梯度下降是否收敛 梯度下降的任务是找到能够使代价函数J最小的参数w和b 通常做法是绘制代价函数图 通过训练集计算出的 并且标出梯度下降每次迭代时J的值 此图中的横轴是梯度

随机推荐

  • 阅读Spring in action 实现书中实例时遇到的问题(三)之解决 JSR303校验获取ValidationMessage.properties错误信息文件的中文乱码问题

    使用 ValidationMessage properties配置错误信息 前端jsp页面回显错误提示信息时总是乱码 网上查了好久 最后还是下面的代码靠谱 在springmvc config xml中添加以下配置
  • 视图和内置函数的理解(很奈斯...)

    文章目录 一 视图介绍 二 视图作用 三 mysql内置函数 四 自主练习 五 mysql图形界面软件 六 数据备份 七 自主练习 一 视图介绍 视图 就是一张虚拟表 临时表 因为视图中表的结构和内容不是通过建表语句创建的 而是根据查询确定
  • es6-箭头函数

    代码
  • webpack 自动引入常用模块

    webpack 自动引入常用模块 描述 比如 lodash 这种库 要用时每个 js 文件都需要如下引入 import from lodash console log join 1 2 怎么才能不引入 lodash 也能直接 join 等方
  • OneDrive同步角标消失 - 解决方案

    问题 在电脑端使用OneDrive时 文件管理器OneDrive文件夹内的文件会在左下角显示同步状态 如下图 若没有显示同步角标 则此功能出现异常 下文介绍如何显示同步角标 值得一提的是 同步角标只起到显示作用 没有同步角标并不影响OneD
  • NCP1342芯片替代料PN8213 65W氮化镓充电器方案

    氮化镓快充已然成为了当下一个非常高频的词汇 在氮化镓快充市场迅速增长之际 65W这个功率段恰到好处的解决了大部分用户的使用痛点 从而率先成为了各大品牌的必争之地 ncp1342替代料PN8213氮化镓充电器主控芯片 适用于65w氮化镓充电器
  • 大数据课程K2——Spark的RDD弹性分布式数据集

    文章作者邮箱 yugongshiye sina cn 地址 广东惠州 本章节目的 了解Spark的RDD结构 掌握Spark的RDD操作方法 掌握Spark的RDD常用变换方法 常用执行方法 一 Spark最核心的数据结构 RDD弹性分布式
  • asp.net实现验证码程序

    1 可以实现验证码的自动更新 2 验证码html代码 li class mjiao2 span 验 证 码 span li
  • 出现Uncaught ReferenceError: $ is not defined错误

    今天在写ajax请求的时候 出现了Uncaught ReferenceError is not defined报错 未定义是为什么呢 后来才知道 原因一 你未引用jquery库jquery min js文件 或者说路径错误 原因二 忽略了H
  • 脚本语言与编译语言的区别

    文章目录 一 语法差异 二 执行方式差异 三 应用领域差异 四 总结 一 语法差异 脚本语言 脚本语言通常使用解释器逐行执行 不需要事先编译 它的语法相对简单 易于学习和使用 常见的脚本语言有Python JavaScript和Ruby等
  • 机器学习笔记(4)— 多特征变量

    1 多特征变量 本文主要介绍多特征变量的梯度下降法和特征缩放内容 2 多特征 多变量 多特征变量的目标函数为 假设x0 1 则目标函数为 把特征量x看作是一个向量 把特征量的参数也看做一个向量 所以目标函数可以表示为 多特征量的目标函数 又
  • linux 下 npm安装依赖报:stack Error: `gyp` failed with exit code: 1

    解决办法 切换到当前项目下即可 gt rm rf node gyp gt npm install g node gyp gt rm rf 项目 node modules 再次 npm install即可
  • Matlab学习入门篇(五)—— 数据可视化

    文章目录 一 离散数据图 1 1散点图 1 2 条形图 二 线图 2 1 二维线图 2 2 三维参数化曲线绘图函数 三 曲面 体积和多边形 数据可视化是指运用 计算机图形学和 图像处理技术 将数据转化为图形或图像并在屏幕上显示出来 以进行交
  • 合成数据加速高质量数据供给,AIGC的救星来了!

    毫无疑问 人工智能发展离不开海量数据 但真实世界的数据是有限的 且数据获取 数据标注等面临诸多难题 数据成为AI行业的 掣肘 如何打破 半个月来 数据要素频繁获得政策部门发声 中国证监会科技监管局局长姚前日前发文建议重点发展基于AIGC技术
  • MYSQL常见的4种数据类型

    转自 微点阅读 https www weidianyuedu com 一 数据类型是什么 数据类型是指列 存储过程参数 表达式和局部变量的数据特征 它决定了数据的存储格式 代表了不同的信息类型 有一些数据是要存储为数字的 数字当中有些是要存
  • Rust- 迭代器

    In Rust an iterator is a pattern that allows you to perform some task on a sequence of items in turn An iterator is resp
  • springBoot整合kafka配置

    pom xml
  • Java中定义常量(Constant) 的几种方法

    Method One interface ConstantInterface String SUNDAY SUNDAY String MONDAY MONDAY String TUESDAY TUESDAY String WEDNESDAY
  • python 之 使用 for-in 循环遍历范围,元组,列表,字典

    语法格式 for 变量 in 范围 元素 集合等 for循环语法结构列如序列或迭代器作为其参数每次迭代其中一个元素 与while循环一样 支持break continue else语句 一般情况下 循环次数未知采用while循环 循环次数已
  • 硬件安全技术——芯片安全设计技术2

    硬件安全技术 芯片安全设计技术2 芯片安全设计技术2 一 常见的公钥密码算法 1 公钥密码概述 2 RSA密码算法 3 RSA算法描述 4 ECC椭圆曲线算法 二 常见的使用场景 1 非对称算法应用 2 常见应用1 网络认证 3 常见应用2