Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >基础知识补充1:密钥交换/协商机制

基础知识补充1:密钥交换/协商机制

原创
作者头像
春风大魔王
修改于 2020-07-29 10:06:36
修改于 2020-07-29 10:06:36
5.5K0
举报

密钥交换/协商机制

密钥协商这一概念也得以提出。一方面它能为参与者提供身份认证,另一方面,也能与参与者协商并共享会话密钥。

针对以下问题:

1.有哪些密钥交换协议? 2.工作原理是什么?

靠非对称加密算法

原理:拿到公钥的一方先生成随机的会话密钥,然后利用公钥加密它;再把加密结果发给对方,对方用私钥解密;于是双方都得到了会话密钥。

举例:RSA算法应用于密钥交换。

依靠专门的密钥交换算法

原理:利用正向计算共享秘密简单、逆向求解私钥困难的思路。

举例:DH 算法及其变种

依靠通讯双方事先已经共享的“秘密”

原理:既然双方已经有共享的秘密(这个“秘密”可能已经是一个密钥,也可能只是某个密码/password),只需要根据某种生成算法,就可以让双方产生相同的密钥(并且密钥长度可以任意指定)

举例:PSK 和 SRP

3.适应场景是什么?

4.有哪些优、缺点?(侧重安全性),改进方案是什么?


Diffie–Hellman密钥交换协议

简介:Diffie–Hellman(以下简称DH)密钥交换是一个特殊的交换密钥的方法。它是密码学领域内最早付诸实践的密钥交换方法之一。DH可以让双方在完全缺乏对方(私有)信息的前提条件下通过不安全的信道达成一个共享的密钥。此密钥用于对后续信息交换进行对称加密

优势:

应用场景:

安全依据:计算离散对数(Discrete Logarithm Problem,DLP)的困难程度

方案原理:Alice和Bob想共有一个密钥,用于对称加密。但是他们之间的通信渠道是不安全的。所有经过此渠道的信息均会被敌对方:Eve看到。哪他们要如何交换信息,才能不让Eve知道这个密钥呢?

方案要求:q是一个很大的素数(如1024bit),而且(q-1)/2也是个素数。

存在问题:

  • 安全方面:不能防护中间人攻击。
  • 计算开销方面:

改进方案:增加A、B的身份认证过程。DH需要与其它签名算法(比如RSA、DSA、ECDSA)配合——靠签名算法帮忙来进行身份认证。当 DH 与 RSA 配合使用,称之为“DH-RSA”,与 DSA 配合则称为“DH-DSA”

改进方案:

1. 客户端先连上服务端

2. 服务端生成一个随机数 s 作为自己的私钥,然后根据算法参数计算出公钥 S(算法参数通常是固定的)

3. 服务端使用某种签名算法把“算法参数(模数p,基数g)和服务端公钥S”作为一个整体进行签名

4. 服务端把“算法参数(模数p,基数g)、服务端公钥S、签名”发送给客户端

5. 客户端收到后验证签名是否有效

6. 客户端生成一个随机数 c 作为自己的私钥,然后根据算法参数计算出公钥 C

7. 客户端把 C 发送给服务端

8. 客户端和服务端(根据上述 DH 算法)各自计算出 k 作为会话密钥


椭圆加密算法(ECC)及基于“椭圆曲线”的 ECDH

简介:椭圆加密算法(ECC)是一种公钥加密算法,最初由Koblitz和Miller两人于1985年提出。DH 算法有一个变种,称之为 ECDH(全称是“Elliptic Curve Diffie-Hellman”)

优势:

椭圆加密算法的优势:1.使用更小的密钥,提供更高的安全;2.处理速度快,在私钥的加密解密速度上,ECC 算法比 RSA、DSA 速度更快,存储空间占用小,带宽要求低。

ECDH优势:ECDH依赖的是——求解“椭圆曲线离散对数问题”的困难。ECDH的数学原理比DH更复杂。

应用场景:比特币钱包公钥的生成使用了椭圆曲线算法。

安全依据:椭圆曲线上的有理点构成 Abel 加法群上椭圆离散对数的计算困难性。

方案原理:

椭圆加密—普通椭圆加密

(1)Alice向Bob发送点G。点G被Eve知道也没关系。

(2)Alice生成随机数a。这个数没有必要告诉Bob,也不能让Eve知道。将a称为Alice的私钥。

(3)Bob生成随机数b。这个数没有必要告诉Alice,也不能让Eve知道。将b称为Bob的私钥。

(4)Alice向Bob发送aG。点aG被Eve知道也没有关系,他是Alice的公钥。

(5)Bob向Alice发送bG。点bG被Eve知道也没有关系,他是Bob的公钥。

(6)Alice对Bob发送的点bG计算其在椭圆曲线上a倍的点。Alice在椭圆曲线上计算a(bG)=abG,它就是Alice和Bob的共享密钥。

(7)Bob对Alice发送的点aG计算其在椭圆曲线上b倍的点。Bob在椭圆曲线上计算b(aG)=abG,它就是Alice和Bob的共享密钥。

椭圆加密—椭圆曲线对称加密方案

该方法主要采用Diffie-Hellman密钥交换算法,使用非对称密钥进行对称加解密。下面是获取共享对称密钥的过程:

(1)Alice向Bob发送点G。点G被Eve知道也没关系。

(2)Alice生成随机数a。这个数没有必要告诉Bob,也不能让Eve知道。将a称为Alice的私钥。

(3)Bob生成随机数b。这个数没有必要告诉Alice,也不能让Eve知道。将b称为Bob的私钥。

(4)Alice向Bob发送aG。点aG被Eve知道也没有关系,他是Alice的公钥。

(5)Bob向Alice发送bG。点bG被Eve知道也没有关系,他是Bob的公钥。

(6)Alice对Bob发送的点bG计算其在椭圆曲线上a倍的点。Alice在椭圆曲线上计算a(bG)=abG,它就是Alice和Bob的共享密钥。

(7)Bob对Alice发送的点aG计算其在椭圆曲线上b倍的点。Bob在椭圆曲线上计算b(aG)=abG,它就是Alice和Bob的共享密钥。

方案要求:

存在问题:

  • 安全方面:1.ECDH 跟 DH 一样,也是【无认证】的。同样需要跟其它签名算法(比如 RSA、DSA、ECDSA)配合;2. DH 和 ECDH,其密钥是持久的(静态的)。也就是说,通讯双方生成各自的密钥之后,就长时间用下去。这么干当然比较省事儿(节约性能),但是存在某种安全隐患——无法做到“前向保密”。
  • 计算开销方面:

改进方案:


基于 PSK 的密钥协商

简介:PSK是“Pre-Shared Key”的缩写。顾名思义,就是【预先】让通讯双方共享一些密钥(通常是【对称加密】的密钥)。所谓的【预先】,就是说,这些密钥在TLS连接尚未建立之前,就已经部署在通讯双方的系统内了。

优势:1. 不需要依赖公钥体系,不需要部属CA证书。2.不需要涉及非对称加密,TLS协议握手(初始化)时的性能好于前述的RSA和DH。

应用场景:标准是05年的没有进行查阅资料

PSK-rfc4279.pdf

安全依据:共享密钥是预部署的。

方案原理:在通讯【之前】,通讯双方已经预先部署了若干个共享的密钥。为了标识多个密钥,给每一个密钥定义一个唯一的 ID协商的过程很简单:客户端把自己选好的密钥的 ID 告诉服务端。如果服务端在自己的密钥池子中找到这个ID,就用对应的密钥与客户端通讯;否则就报错并中断连接。

方案要求:

存在问题:

  • 安全方面:1.安全风险交付给服务端密钥池子的安全防护上了。2.假冒身份会一直阻塞通讯。
  • 计算开销方面:

改进方案:

PSK 与 RSA 具有某种相似性——既可以用来搞“密钥协商”,也可以用来搞“身份认证”。所以,PSK 可以跟 DH(及其变种)进行组合。例如:DHE-PSK、ECDHE-PSK

补充:基于SRP的密钥协商,SRP是洋文“Secure Remote Password”的缩写。这个算法有点类似于刚才提到的 PSK——只不过client/server双方共享的是比较人性化的密码(password)而不是密钥(key)。该算法采用了一些机制(salt、随机数)来防范“嗅探/sniffer”或“字典猜解攻击”或“重放攻击”。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
HTTPS 和 SSL/TLS 协议:密钥交换(密钥协商)算法及其原理
前一篇介绍了 SSL/TLS 的身份认证机制。这个机制是为了防止攻击者通过【篡改】网络传输数据,来假冒身份,以达到“中间人攻击/MITM”的目的。   而今天要聊的“密钥协商机制”是:(在身份认证的前提下)如何规避【偷窥】的风险。   通俗地说,即使有攻击者在偷窥你与服务器的网络传输,客户端(client)依然可以利用“密钥协商机制”与服务器端(server)协商出一个用来加密应用层数据的密钥(也称“会话密钥”)。
全栈程序员站长
2021/06/17
10.3K0
基础知识补充3:对称加密与非对称加密简介
对称加密是最快速、最简单的一种加密方式,加密(encryption)与解密(decryption)用的是同样的密钥(secret key)。
春风大魔王
2020/07/29
2K0
非对称密钥沉思系列(4):密钥交换
密钥交换,也有称作密钥协商,这套机制,最主要的作用是用来得到通信双方的临时会话密钥。
bowenerchen
2023/01/04
7.2K13
非对称密钥沉思系列(4):密钥交换
一文读懂https中密钥交换协议的原理及流程
http与https区别:HTTP 由于是明文传输,所以在安全性上存在以下三个风险:
绿盟科技研究通讯
2022/06/06
8.3K0
一文读懂https中密钥交换协议的原理及流程
TLS加密套件之密钥交换
TLS是固定格式,一般在ng配置的时候是不需要配置TLS_这一部分的,直接从密钥交换开始算。
西门呀在吹雪
2023/08/10
9760
TLS加密套件之密钥交换
【腾讯TMQ】从 wireshark 抓包开始学习 https
腾讯移动品质中心TMQ
2017/02/22
6.7K0
TLS协议分析 (五) handshake协议 证书与密钥交换
当服务器确定了CipherSuite后,根据CipherSuite里面的认证算法,如果需要发送证书给客户端,那么就发送 Server Certificate消息给客户端。Server Certificate总是在ServerHello之后立即发送,所以在同一个RTT里。
用户8964349
2021/09/07
1.7K0
即时通讯安全篇(十一):IM聊天系统安全手段之传输内容端到端加密技术
本文由融云技术团队分享,原题“互联网通信安全之端到端加密技术”,内容有较多修订和改动。
JackJiang
2022/08/29
2.1K0
即时通讯安全篇(十一):IM聊天系统安全手段之传输内容端到端加密技术
大型网站的HTTPS实践(一)---HTTPS协议和原理
1前言 百度已经于近日上线了全站HTTPS的安全搜索,默认会将HTTP请求跳转成HTTPS。本文重点介绍HTTPS协议,并简单介绍部署全站HTTPS的意义。 本文最早发表于百度运维部官方博客 2 HTTPS协议概述 HTTPS可以认为是HTTP + TLS。HTTP协议大家耳熟能详了,目前大部分WEB应用和网站都是使用HTTP协议传输的。 TLS是传输层加密协议,它的前身是SSL协议,最早由netscape公司于1995年发布,1999年经过IETF讨论和规范后,改名为TLS。如果没有特别说
小小科
2018/05/02
1.4K0
大型网站的HTTPS实践(一)---HTTPS协议和原理
WhatsAPP通讯协议端对端加密人工智能[通俗易懂]
本文是一个以 whatsapp 为案例的,针对端对端聊天加密通讯协议整理的一个学习笔记,仅供大家学习。Signal protocol 是真正的端到端的通讯加密协议,号称是世界上最安全的通讯协议,任何第三方包括服务器都无法查看通讯内容。全篇都是围绕着 Signal protocol 进行梳理和解释,学习的内容大致分为三个大部分:1、术语解析 2、了解5577850怎么来的3、WhatsAPP 的通讯流程。
全栈程序员站长
2022/06/26
4.6K0
WhatsAPP通讯协议端对端加密人工智能[通俗易懂]
HTTPS 握手会影响性能吗?废话,肯定会
由裸数据传输的 HTTP 协议转成加密数据传输的 HTTPS 协议,给应用数据套了个「保护伞」,提高安全性的同时也带来了性能消耗。
小林coding
2022/10/27
1.2K0
HTTPS 握手会影响性能吗?废话,肯定会
基于 TLS 1.3的微信安全通信协议 mmtls 介绍(上)
张绍文
2017/07/20
20.1K1
基于 TLS 1.3的微信安全通信协议 mmtls 介绍(上)
加密算法的前世今生
本文讨论的加密算法要解决的主要是信息传输中的加密和解密问题。要假设数据传输过程是不安全的,所有信息都在被窃听的,所以发送端要把信息加密,接收方收到信息之后,肯定得知道如何解密。
帅地
2020/02/21
7970
加密算法的前世今生
面试官你不要说我不懂TLS握手了
非对称加密主要用来保护对称加密密钥交换的安全性,一旦客户端和服务端交换密钥完成,即可使用密钥采用对称加密的方式进行通信。
shysh95
2021/11/25
7160
面试官你不要说我不懂TLS握手了
HTTPS网络安全与SSL证书相关术语合集
EV证书(Extended Validation Certificate)是一种根据一系列特定标准颁发的X.509电子证书,根据要求,在颁发证书之前,证书颁发机构(CA)必须验证申请者的身份。不同机构根据证书标准发行的扩展验证证书并无太大差异,但是有时候根据一些具体的要求,特定机构发行的证书可以被特定的软件识别
Yangsh888
2022/03/24
1.5K0
这 HTTPS,真滴牛逼!
其中,RSA 是比较传统的密钥交换算法,它不具备前向安全的性质,因此现在很少服务器使用的。而 ECDHE 算法具有前向安全,所以被广泛使用。
小林coding
2021/01/26
1.7K0
NodeJS加密算法(一)
对称密钥算法DES、AES都属于分组密码,分组密码的特点是分组的长度是固定的。但是由于明文的长度不固定且基本超过分组长度,所以就需要进行多轮的迭代加密。模式就是指的多轮迭代的方式。
皮小蛋
2021/02/08
2.3K0
TLS握手:回顾1.2、迎接1.3
HTTPS或者说SSL or TLS现在都是老生常谈的东西了,为什么还要写这篇文章?
FB客服
2019/05/16
1.5K0
基于TLS1.3的微信安全通信协议mmtls介绍
编者的话:近年来网络安全事件层出不穷,确保亿万用户的安全隐私是我们微信义不容辞的责任。当然,我们更要保证用户稳定、快速的聊天体验,所以我们有了mmtls。文章干货满满,建议大家阅读全文,仔细品味! 一、背景   随着近些年网络安全事情的频繁发生,使得用户对网络通信安全的意识越来越强。国内外的网络服务提供商都逐渐提供全站的安全通信服务,如国内的淘宝、百度先后宣布已经完成了全站部署https。微信现有的安全通信协议是基于用户登录的时候派发的SessionKey对应用数据进行加密的,该协议在工程实现上,已经过多
微信终端开发团队
2018/01/29
6.3K0
基于TLS1.3的微信安全通信协议mmtls介绍
密码学小白必知必会
本文是以介绍密码学基本概念为目的,面向密码学小白或者新人的文章。包含的内容主要是一些课本知识,个人理解,还有一些实例及代码。下面,将从密码学的基础,应用,及实例等几个方面对密码学进行简单的介绍。
zenlu
2024/02/20
6110
密码学小白必知必会
相关推荐
HTTPS 和 SSL/TLS 协议:密钥交换(密钥协商)算法及其原理
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档