当前位置: 首页 > news >正文

汽车信息安全--TLS,OpenSSL

目录

TLS相关知识

加密技术

对称加密

非对称加密

数字签名和CA

信任链

根身份证和自签名

双方TLS认证

加密和解密的性能


TLS相关知识

加密技术

TLS依赖两种加密技术

1. 对称加密(symmetric encryption)

2. 非对称加密(asymmetric encryption)

对称加密

对称加密的一方用秘钥 K 给文本 M 加密;另一方用同一个秘钥K对密文C进行解密:

C = E(M, K)
M = D(C, K)

痛点: 很有可能有人窃听到密钥 K,窃听者就可以假扮双方中的任何一 方与另一方通信。这叫中间人攻击

非对称加密

非对称加密利用成对的两个秘钥:K1 和 K2。

其中一个加密文本,另一个解密文本:

C = E(M, K1)
M = D(C, K2)

双方中的一方可以生成 K1和K2,然后把其中一个秘钥 (比如K1)私藏,称为私钥;另一个(比如K2)公开,称为公钥

另一 方得到公钥之后,双方就可以通信。

痛点:中间人还是可能截获公钥 K2,然后自己弄一对秘钥(K1‘, K2’)。这样中间人每次可以用截获的 K2 解密发送文本得到明文(甚至可能修改文本),再用 K1‘ 加密了发出去;接收方用 K2’ 解密接收得到的是被中间人篡改后的文档。

用OpenSSL工具生成密钥对的例子:

//OpenSSL的genrsa命令生成一个2048 bit的公钥私钥对,输出到文件server.key里:openssl genrsa -out server.key 2048//server.key是PEM格式的:

数字签名和CA

为了确定得到的公钥不是中间人伪造的 K2‘,*数字签名(digital signature)*技术应运而生。

数字签名的做法是:

  1. 发送方把自己的公钥和ID(身份证号码,或者域名)合为身份证申请(certificate signing request,CSR)
  2. 把CSR发给权威机构CA(被称为 certificate authority,CA),
  3. CA用自己的私钥加密 CSR,得到的密文被称为数字签名(digital signature)
  4. CA把 数据签名 和 CSR 的明文合在一起称为 CA签署的身份证(CA signed certificate,CRT),发给发送方,
发送方:CSR = 公钥 + 域名
signature = E(CSR, CA的私钥)
CRT = CSR + signature

用OpenSSL生成CSR的例子:

//以下OpenSSL的req命令, 以上文中的 server.key 为输 入,生成一个身份证申请(CSR)文件 server.csropenssl req -nodes -new -key server.key -subj "/CN=localhost" -out server.csr//这个 CSR 里的公钥是从 server.key 里提取出来的,域名是 localhost。

用OpenSSL签署 CSR的例子:

//以下OpenSSL的x509命令用指定的私钥 server.key 签署 server.csr,输出身份证 server.crt:openssl x509 -req -sha256 -days 365 -in server.csr -signkey server.key -out server.crt//server.crt也是PEM格式的

当接收方和发送发通信时(建立HTTPS连接),发送发出示CA签署的身份证。 接收方是在自己机器上安装了CA的身份证的,

  1. 从CA的身份证中的CSR里提取出CA的公钥;
  2. 然后用CA的公钥解密发送方身份证中的signature,得到发送方的CSR';
  3. 如果这个CSR'和发送方身份证中的CSR明文一致,则说明发送方是CA权威认证的。
接收方:CA的公钥 = CA的CRT.CSR.CA的公钥
CSR' = D(CRT.signature, CA的公钥)
if CSR' == CRT.CSR then OK

信任链

CA如果担心没有人信任自己是个好 CA,可以找一个大家都信的 CA’,用CA‘的私钥在CA的身份证上签名:

CA:CSR = CA的公钥+CA域名
signature = E(CSR, CA’的私钥)
CRT = CSR + signature

如果浏览器或者操作系统里安装了CA‘的公钥则可以验证“CA的身份证是CA’确认并且签名过的。

这样,CA在签署发送方的身份证的时候,可以在发送方身份证后面附上自己的身份 证。

当接收方和发送方通信的时候:

  1. 接收方会先要求发送方出示自己的身份证;
  2. 接收方虽然不信任CA,但是信任CA‘,所以接收方可以用CA’的身份证里的CA‘的公钥来验证CA的身份证,于是就可以信任CA了;
  3. 然后接收方用CA身份证里的公钥验证发送方的身份证。

从而形成了一条信任链(trust of chain)chain。

根身份证和自签名

信任链总会有个顶端,被称为根身份证(root CA)。那么根身份证是谁签名 的呢?答案是:自己签名。实际上,我们每个人都可以自己签名认证自己的身份 证,得到自签名的身份证(self-signed certificate)。具体过程是:

  1. 生成一对秘钥:公钥 K2 和私钥 K1,
  2. 创建自己的 CSR,
  3. 用自己的秘钥加密CSR得到signature,然后把CSR明文和signature一起发布。

任何人只要信任我们自签名的身份证 CRT,也就可以用 CRT.CSR.K2 作为公钥加 密要传递给我们的文本。我们可以用自己的私钥 K1 来解密文本。

双方TLS认证

上述解释了通信的一方如何验证另一方的身份。这种情况的一个常见应用是: 我们通过浏览器访问银行的网页。这里的关键是,我们要能验证银行的身份证, 然后才敢于在网页里输入账号和密码。浏览器验证银行的身份证的过程如下:

  1. 在浏览器和银行的HTTPS服务建立安全连接的过程中,银行的HTTPS服务会把 它的身份证发给浏览器showcerts;
  2. 浏览器使用内置的CA的身份证来验证银行的身份证。

浏览器验证了银行的HTTPS服务的身份之后,就轮到银行验证浏览器的用户的身份了:

  1. 浏览器展示银行HTTPS服务发来的登陆页面;
  2. 用户在这个页面里输入账号和密码,银行的HTTPS服务由此验证用户的身份。

在这个过程中,银行HTTPS服务器的身份是通过TLS身份证来验证的。而我们(用 户)的身份是通过我们输入的账号和密码来验证的。

有时通信的双方都是程序(而不是人)。此时,让一方输入账号和密码,不如让 双方都通过TLS身份证来互相验证方便。尤其是在很多分布式系统里,有多种类 型的程序互相通信,而不只是两方通信。

比如在 Kubernetes 机群里,不光操作机群的客户端程序 kubectl 要能验证 Kubernetes master node(具体的说是 apiserver)的身份,才能放心地把包括 敏感信息(比如数据库密码)的计算作业提交给 apiserver。类似的, apiserver也要能验证 kubectl 的身份,以确认提交作业的是公司的合法雇员, 而不是外贼sign。

为此,通信各方都需要有各自的身份证。一个公司可以自签名一个CA身份证,并 且用它来给每个雇员以及每个程序签署身份证。这样,只要每台电脑上都预先安 装好公司自己的CA身份证,就可以用这个身份证验证每个雇员和程序的身份了。 这是目前很多公司的常用做法。

加密和解密的性能

因为TLS模式下所有传输的数据都是加密的,大家会关注加密和解密的性能。客观的说,非对称加密技术的加密和解密比较慢,相对来说,对称加密技术的加密 解密过程更快。所以实际的连接和握手过程中,通信双方会协商一个对称加密秘钥,之后的数据通信过程中的加密都是利用对称加密技术来实现的。

具体的做法是:握手的时候,双方各自生成一个随机数,并且以非对称加密的方式 分享给对方。然后每一方都把自己的随机数和对方的随机数拼起来,就是接下来 通信时候使用的对称加密方法的秘钥了。

相关文章:

汽车信息安全--TLS,OpenSSL

目录 TLS相关知识 加密技术 对称加密 非对称加密 数字签名和CA 信任链 根身份证和自签名 双方TLS认证 加密和解密的性能 TLS相关知识 加密技术 TLS依赖两种加密技术 1. 对称加密(symmetric encryption) 2. 非对称加密(asymmetri…...

深入探索 SQL 中的 LIKE 右模糊匹配(LIKE RIGHT)与左模糊匹配(LIKE LEFT)

引言 在数据库操作中,LIKE 子句是执行模糊搜索的强大工具,用于匹配列中的数据与指定的模式。本文将详细介绍 LIKE 子句中的两种常用模式:右模糊匹配(LIKE RIGHT)和左模糊匹配(LIKE LEFT)&#…...

mybatis 多数据源 TDataSource required a single bean, but 2 were found

情况说明: 项目中本来就有一个数据源了,运行的好好的后来又合并了另一个项目,另一个项目也配置了数据源。 于是出现了如下错误: mybatis 多数据源 TDataSource required a single bean, but 2 were found 解决方法&#xff1a…...

Dubbo SPI 之路由器

1. 背景介绍 Dubbo 是一个高性能的 Java RPC 框架,由阿里巴巴开源并广泛应用于分布式系统中。在 Dubbo 的架构中,SPI(Service Provider Interface)是一个关键组件,允许在运行时动态加载不同的服务实现。SPI 机制提供了…...

Python深度学习环境配置(Pytorch、CUDA、cuDNN),包括Anaconda搭配Pycharm的环境搭建以及基础使用教程(保姆级教程,适合小白、深度学习零基础入门)

全流程导览 一、前言二、基本介绍2.1全过程软件基本介绍2.1.1 Pytorch2.1.2 Anaconda2.1.3 Pycharm2.1.4 显卡GPU及其相关概念2.1.5 CUDA和cuDNN 2.2 各部分相互间的联系和安装逻辑关系 三、Anaconda安装3.1安装Anaconda3.2配置环境变量3.3检验是否安装成功 四、Pycharm安装五、…...

月影护眼大路灯怎么样?书客|月影|霍尼韦尔超硬核实力性能测评pk!

月影护眼大路灯怎么样?选到专业优质的护眼大路灯是真的可以使我们在用眼时减少疲劳感,达到护眼效果,但如果不慎买到劣质的护眼灯产品,不仅达不到健康的环境光,还越用越觉得眼睛疲劳感加重,在水深的护眼灯市…...

邮件安全篇:邮件传输加密(SSL/TLS or STATRTTLS)

1. 前言 使用过邮件客户端的同学一定见过下面这张图。这是客户端账号配置界面,里面有SSL、STARTTLS选项。刚接触邮件客户端的同学肯定会有这些疑问:什么是SSL?什么是STARTTLS?两者有什么区别?具体该如何选择呢&#x…...

【系统架构设计 每日一问】三 Redis支持事务么,Redis的事务如何保证

实际上,关于Redis事务的说法“Redis 的事务只能保证隔离性和一致性(I 和 C),无法保证原子性和持久性(A 和 D)”并不完全准确。下面我将分别解释Redis事务的四个特性:原子性(Atomicit…...

【中项】系统集成项目管理工程师-第4章 信息系统架构-4.3应用架构

前言:系统集成项目管理工程师专业,现分享一些教材知识点。觉得文章还不错的喜欢点赞收藏的同时帮忙点点关注。 软考同样是国家人社部和工信部组织的国家级考试,全称为“全国计算机与软件专业技术资格(水平)考试”&…...

DasViewer打开Revit输出的fbx格式的模型,为啥一团黑?

答:这个应该是没有读取到贴图文件。贴图文件和obj文件需要在同级目录下面。 DasViewer是由大势智慧自主研发的免费的实景三维模型浏览器,采用多细节层次模型逐步自适应加载技术,让用户在极低的电脑配置下,也能流畅的加载较大规模实景三维模型,提供方便快捷的数据浏览操作。 免…...

【05】LLaMA-Factory微调大模型——初尝微调模型

上文【04】LLaMA-Factory微调大模型——数据准备介绍了如何准备指令监督微调数据,为后续的微调模型提供高质量、格式规范的数据支撑。本文将正式进入模型微调阶段,构建法律垂直应用大模型。 一、硬件依赖 LLaMA-Factory框架对硬件和软件的依赖可见以下…...

Training for Stable Diffusion

1.Training for Stable Diffusion 笔记来源: 1.Denoising Diffusion Probabilistic Models 2.最大似然估计(Maximum likelihood estimation) 3.Understanding Maximum Likelihood Estimation 4.How to Solve ‘CUDA out of memory’ in PyTorch 5.pytorch-stable-d…...

初学51单片机之指针基础与串口通信应用

开始之前推荐一个电路学习软件,这个软件笔者也刚接触。名字是Circuit有在线版本和不在线版本,这是笔者在B站看视频翻到的。 Paul Falstadhttps://www.falstad.com/这是地址。 离线版本在网站内点这个进去 根据你的系统下载你需要的版本红线的是windows…...

【启明智显分享】甲醛检测仪HMI方案:ESP32-S3方案4.3寸触摸串口屏,RS485、WIFI/蓝牙可选

今年,“串串房”一词频繁引发广大网友关注。“串串房”,也被称为“陷阱房”“贩子房”——炒房客以低价收购旧房子或者毛坯房,用极度节省成本的方式对房子进行装修,之后作为精修房高价租售,因甲醛等有害物质含量极高&a…...

Linux 驱动学习笔记

1、驱动程序分为几类? • 内核驱动程序(Kernel Drivers):这些是运行在操作系统内核空间的驱动程序,用于直接访问和控制硬件设备。它们提供了与硬件交互的底层功能,如处理中断、访问寄存器、数据传输等。 •…...

ip地址设置了重启又改变了怎么回事

在数字世界的浩瀚星海中,IP地址就如同每个设备的“身份证”,确保它们在网络中准确无误地定位与通信。然而,当我们精心为设备配置好IP地址后,却时常遭遇一个令人费解的现象:一旦设备重启,原本设定的IP地址竟…...

layui table 浮动操作内容收缩,展开

layui table 隐藏浮动操作内容 fixed: right, style:, title: 操作,align:left, minWidth: 450, toolbar:#id分析: 浮动一块新增一个class layui-table-fixed-r 可以隐藏整块内容进行,新增一个按钮点击时间,然后进行收缩和展开 $(‘.layui-…...

Ubuntu24.04 NFS 服务配置

1、NFS 介绍 NFS 是 Network FileSystem 的缩写,顾名思义就是网络文件存储系统,它允许网络中的计算机之间通过 TCP/IP 网络共享资源。通过 NFS,我们本地 NFS 的客户端应用可以透明地读写位于服务端 NFS 服务器上的文件,就像访问本…...

vue3使用html2canvas

安装 yarn add html2canvas 代码 <template><div class"container" ref"container"><div class"left"><img :src"logo" alt"" class"logo"><h2>Contractors pass/承包商通行证&l…...

OpenCV分水岭算法watershed函数的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 描述 我们将学会使用基于标记的分水岭算法来进行图像分割。我们将看到&#xff1a;watershed()函数的用法。 任何灰度图像都可以被视为一个地形表…...

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇&#xff0c;在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下&#xff1a; 【Note】&#xff1a;如果你已经完成安装等操作&#xff0c;可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作&#xff0c;重…...

测试微信模版消息推送

进入“开发接口管理”--“公众平台测试账号”&#xff0c;无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息&#xff1a; 关注测试号&#xff1a;扫二维码关注测试号。 发送模版消息&#xff1a; import requests da…...

DockerHub与私有镜像仓库在容器化中的应用与管理

哈喽&#xff0c;大家好&#xff0c;我是左手python&#xff01; Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库&#xff0c;用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...

在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module

1、为什么要修改 CONNECT 报文&#xff1f; 多租户隔离&#xff1a;自动为接入设备追加租户前缀&#xff0c;后端按 ClientID 拆分队列。零代码鉴权&#xff1a;将入站用户名替换为 OAuth Access-Token&#xff0c;后端 Broker 统一校验。灰度发布&#xff1a;根据 IP/地理位写…...

linux arm系统烧录

1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 &#xff08;忘了有没有这步了 估计有&#xff09; 刷机程序 和 镜像 就不提供了。要刷的时…...

生成 Git SSH 证书

&#x1f511; 1. ​​生成 SSH 密钥对​​ 在终端&#xff08;Windows 使用 Git Bash&#xff0c;Mac/Linux 使用 Terminal&#xff09;执行命令&#xff1a; ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" ​​参数说明​​&#xff1a; -t rsa&#x…...

HBuilderX安装(uni-app和小程序开发)

下载HBuilderX 访问官方网站&#xff1a;https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本&#xff1a; Windows版&#xff08;推荐下载标准版&#xff09; Windows系统安装步骤 运行安装程序&#xff1a; 双击下载的.exe安装文件 如果出现安全提示&…...

华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建

华为云FlexusDeepSeek征文&#xff5c;DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色&#xff0c;华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型&#xff0c;能助力我们轻松驾驭 DeepSeek-V3/R1&#xff0c;本文中将分享如何…...

虚拟电厂发展三大趋势:市场化、技术主导、车网互联

市场化&#xff1a;从政策驱动到多元盈利 政策全面赋能 2025年4月&#xff0c;国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》&#xff0c;首次明确虚拟电厂为“独立市场主体”&#xff0c;提出硬性目标&#xff1a;2027年全国调节能力≥2000万千瓦&#xff0…...

力扣热题100 k个一组反转链表题解

题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...