X3DH密钥协商协议官方手册(中文版)

合集下载

DH密钥交换和ECDH原理

DH密钥交换和ECDH原理

DH密钥交换和ECDH原理主题安全技术下面我们以Alice和Bob为例叙述Diffie-Hellman密钥交换的原理。

1,Diffie-Hellman交换过程中涉及到的所有参与者定义一个组,在这个组中定义一个大质数p,底数g。

2,Diffie-Hellman密钥交换是一个两部分的过程,Alice和Bob都需要一个私有的数字a,b。

下面是DH交换的过程图:本图片来自wiki下面我们进行一个实例1.爱丽丝与鲍伯协定使用p=23以及g=5.2.爱丽丝选择一个秘密整数a=6, 计算A = g^a mod p并发送给鲍伯。

A = 5^6 mod 23 = 8.3.鲍伯选择一个秘密整数b=15, 计算B = g^b mod p并发送给爱丽丝。

B = 5^15 mod 23 = 19.4.爱丽丝计算s = B a mod p19^6 mod 23 = 2.5.鲍伯计算s = A b mod p8^15 mod 23 = 2.ECDH密钥交换:ECDH:ECC算法和DH结合使用,用于密钥磋商,这个密钥交换算法称为ECDH。

交换双方可以在不共享任何秘密的情况下协商出一个密钥。

ECC是建立在基于椭圆曲线的离散对数问题上的密码体制,给定椭圆曲线上的一个点P,一个整数k,求解Q=kP 很容易;给定一个点P、Q,知道Q=kP,求整数k确是一个难题。

ECDH即建立在此数学难题之上。

密钥磋商过程:假设密钥交换双方为Alice、Bob,其有共享曲线参数(椭圆曲线E、阶N、基点G)。

1) Alice生成随机整数a,计算A=a*G。

2) Bob生成随机整数b,计算B=b*G。

3) Alice将A传递给Bob。

A的传递可以公开,即攻击者可以获取A。

由于椭圆曲线的离散对数问题是难题,所以攻击者不可以通过A、G计算出a。

4) Bob将B传递给Alice。

同理,B的传递可以公开。

5) Bob收到Alice传递的A,计算Q =b*A6) Alice收到Bob传递的B,计算Q`=a*BAlice、Bob双方即得Q=b*A=b*(a*G)=(b*a)*G=(a*b)*G=a*(b*G)=a*B=Q' (交换律和结合律),即双方得到一致的密钥Q。

智多晶XSSL12-F256-V1用户手册说明书

智多晶XSSL12-F256-V1用户手册说明书

西安智多晶微电子有限公司XI’AN Intelligence Silicon Tech Co.LtdXi’An Intelligent Silicon Technology Co.(XiST)XSSL12-F256-V1用户手册Version 1.0 2019西安智多晶微电子有限公司XIAN Intelligent Silicon Technology西安市高新区科技二路72 号,邮编710075西安软件园西岳阁102 室+86 029 88860-013网址:版权声明本手册版权归属西安智多晶微电子有限公司所有, 并保留一切权力。

非经本公司同意,任何单位及个人不得擅自摘录或修改本手册内容,违者我们将追究其法律责任。

在使用产品之前,请仔细地阅读该手册并且确保知道如何正确使用该产品,不合理的操作可能会损坏开发板,使用过程中随时参考该手册以确保正确使用。

Xian Intelligent Silicon Technology Co. 第2页版本信息版本号版权发布日期备注Version 1.0 西安智多晶微电子有限公司2019.3.18Xian Intelligent Silicon Technology Co. 第3页目录目录 (4)1. 关于本手册 (7)1.1适用范围 (7)1.2手册内容 (7)1.3相关文档 (7)2. 开发板简介 (8)2.1概述 (8)2.2开发板套件 (9)2.3硬件框图 (10)2.4功能及特点 (11)3. 开发板电路 (13)3.1FPGA (13)3.1.1 FPGA资源 (13)3.1.2 FPGA核心架构 (14)3.1.3 I/O特性 (14)3.1.4 时钟管理 (14)3.1.5 外部存储器接口 (15)3.2电源 (15)3.2.1 概述 (15)3.2.2 电源电路 (15)3.3时钟资源 (17)3.3.1 概述 (17)3.3.2 时钟电路 (17)3.3.3 引脚分配 (17)3.4按键 (17)3.4.1 概述 (17)3.4.2 按键电路 (17)3.4.3 引脚分配 (19)Xian Intelligent Silicon Technology Co. 第4页3.5LED (19)3.5.1 概述 (19)3.5.2 LED电路 (19)3.5.3 引脚分配 (20)3.6扩展口 (20)3.6.1 概述 (20)3.6.2 扩展口电路 (20)3.6.3 引脚分配 (21)3.7单片机 (26)3.7.1 概述 (26)3.7.2 单片机电路 (26)3.7.3 引脚分配 (27)3.8千兆以太网接口 (27)3.8.1 概述 (27)3.8.2 千兆以太网接口电路 (28)3.8.3 引脚分配 (29)3.9SDRAM (30)3.9.1 概述 (30)3.9.2 SDRAM电路 (30)3.9.3 引脚分配 (31)3.10USB-UART (33)3.10.1 概述 (33)3.10.2 USB-UART电路 (33)3.10.3 引脚分配 (35)3.11FLASH (35)3.11.1 概述 (35)3.11.2 FLASH电路 (35)3.11.3 引脚分配 (37)3.12EEPROM (37)3.12.1 概述 (37)3.12.2 EEPROM电路 (37)Xian Intelligent Silicon Technology Co. 第5页3.12.3 引脚分配 (38)3.13配置模式 (38)3.13.1 概述 (38)3.13.2 JTAG模式 (38)3.13.3 AS模式 (39)3.13.4 PS模式 ............................................................................ 错误!未定义书签。

Diffie-Hellman密钥协商算法

Diffie-Hellman密钥协商算法

Diffie-Hellman密钥协商算法⼀、概述Diffie-Hellman密钥协商算法主要解决秘钥配送问题,本⾝并⾮⽤来加密⽤的;该算法其背后有对应数学理论做⽀撑,简单来讲就是构造⼀个复杂的计算难题,使得对该问题的求解在现实的时间内⽆法快速有效的求解(computationally infeasible )。

理解Diffie-Hellman密钥协商的原理并不困难,只需要⼀点数论⽅⾯的知识既可以理解,主要会⽤到简单的模算术运算、本原根、费马⼩定理、离散对数等基础数论的知识。

在中已经对这些知识做了必要的总结。

⼆、从何⽽来DH密钥协商算法在1976年在Whitfield Diffie和Martin Hellman两⼈合著的论⽂New Directions in Cryptography(Section Ⅲ PUBLIC KEY CRYPTOGRAPHY)中被作为⼀种公开秘钥分发系统(public key distribution system)被提出来。

原⽂的叙述过程⽐较简单,但基本阐述了算法的原理以及其可⾏性。

在该论⽂中实际上提出了⼀些在当时很有创新性的思想。

原论⽂重点讨论两个话题:(1)在公⽹通道上如何进⾏安全的秘钥分派。

(2)认证(可以细分为消息认证和⽤户认证)。

为了解决第⼀个问题,原⽂提出两种⽅法:公钥加密系统(public key cryptosystem)和秘钥分发系统(public key distribution system)。

对于公钥加密系统,原⽂只是勾画了⼀种⽐较抽象的公钥加密系统的概念模型,重点是加解密采⽤不同的秘钥,并总结了该系统应该满⾜的⼀些特性,相当于是⼀种思想实验,并没有给出具体的算法实现途径,但这在当时应该来说已经⾜够吸引⼈。

后来RSA三⼈组(Ron Rivest、Adi Shamir 和 Leonard Adleman)受此启发,经过许多轮失败的尝试后,于第⼆年在论⽂A Method for Obtaining Digital Signatures and Public-Key Cryptosystems中提出了切实可⾏且很具体的公钥加密算法--RSA公钥加密算法。

基于dh密钥协商的组密钥管理方案

基于dh密钥协商的组密钥管理方案

基于dh密钥协商的组密钥管理方案下载提示:该文档是本店铺精心编制而成的,希望大家下载后,能够帮助大家解决实际问题。

文档下载后可定制修改,请根据实际需要进行调整和使用,谢谢!本店铺为大家提供各种类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by this editor. I hope that after you download it, it can help you solve practical problems. The document can be customized and modified after downloading, please adjust and use it according to actual needs, thank you! In addition, this shop provides you with various types of practical materials, such as educational essays, diary appreciation, sentence excerpts, ancient poems, classic articles, topic composition, work summary, word parsing, copy excerpts, other materials and so on, want to know different data formats and writing methods, please pay attention!基于DH密钥协商的组密钥管理方案概述在现代网络通信中,确保数据安全性至关重要。

dh 密钥协商协议

dh 密钥协商协议

dh 密钥协商协议DH(Diffie-Hellman)密钥协商协议是一种用于安全通信的协议,其目的是让通信双方在没有事先约定密钥的情况下协商一个共享的密钥。

DH协议的核心思想是利用离散对数的困难性质,从而实现安全的密钥交换。

DH协议的具体步骤如下:1. 首先,通信双方需要通过公开信道传输一些公共参数:a. 一个质数p,作为有限域的模数;b. 一个整数g,作为原根;2. Alice和Bob各自选择一个私密值,其中,Alice选择一个随机数a,Bob选择一个随机数b。

3. Alice和Bob利用公共参数计算出私密值的公开值:a. Alice计算A = g^a mod p;4. Alice和Bob之间通过公开信道交换各自的公开值A和B。

6. Bob同样计算共享密钥K' = A^b mod p。

7. 通过比较K和K’,确认两者是否相同。

如果相同,那么Alice和Bob就可以使用共享密钥进行加密通信。

DH协议的安全性基于离散对数问题的难度,即在有限域上寻找一个指数,使得给定的基数取这个指数的余数等于给定的数值。

这个问题目前是一个NP问题,并且很难找到可行的算法进行攻击。

虽然DH协议本身是安全的,但是由于存在中间人攻击可能,因此实际应用中常常会采用其他安全协议来保证通信的安全。

例如,在TLS协议中,可以使用DH协议来协商密钥,同时还通过数字证书来验证通信方的身份,以及使用对称加密算法来保证通信过程中的保密性和完整性。

总之,DH密钥协商协议是一种简单有效的密钥协商技术,它利用离散对数问题的难度保证了密钥交换过程的安全性。

然而在实际应用中需要注意中间人攻击等可能的安全威胁。

戴尔 Axim X3 使用手册说明书

戴尔 Axim X3 使用手册说明书
3. Install and configure Microsoft Outlook only if it is not already installed and configured on your computer and you do not have a more recent version.
• ActiveSync Help — Click Help→ Microsoft ActiveSync Help on your computer.
Printed in China Printed on recycled paper
• To adjust the brightness, press and hold the scroll dial and press the top or bottom of the navigator button.
• To dim the display, press and hold the power button. Repeat to light the display.
|
|
Use Microsoft ActiveSync to synchronize the data on your device with the data on your computer.
1. Insert the Dell Companion CD.
2. Click the yellow triangle and click Start Here.
Finding Information
• Dell User's Guide — Setting up and using your device.
• Microsoft Pocket PC Help — Tap Start→ Help.

DH密钥协商算法报告文档

DH密钥协商算法报告文档

DH密钥协商算法报告文档一、DH密钥协商算法的原理1.选择一个大质数p和一个原根g。

2. 甲方选择一个私密数a,并计算A = g^a mod p,将A发送给乙方。

3. 乙方选择一个私密数b,并计算B = g^b mod p,将B发送给甲方。

4. 甲方利用收到的B和自己的私密数a计算出密钥S = B^a mod p。

5. 乙方利用收到的A和自己的私密数b计算出密钥S = A^b mod p。

6.甲方和乙方生成的密钥S相同,可以用于后续的对称加密通信。

二、DH密钥协商算法的优点1.安全性高:DH密钥协商算法基于离散对数的计算困难性,即使在不安全的通信渠道上,也能确保双方只能生成相同的密钥,而无法通过截获和分析数据推算出密钥。

2.密钥长度可变:DH密钥协商算法可以选择不同的质数p和原根g,通过调整参数的大小,可以生成不同长度的密钥,以适应不同安全需求。

3.公开参数交换:DH密钥协商算法只需要交换公开参数A和B,而不需要交换私密数,减少了通信量和计算量。

三、DH密钥协商算法的应用场景1. VPN(Virtual Private Network):DH密钥协商算法可用于在远程访问VPN时,协商双方之间的对称加密密钥,保证通信的机密性。

2.SSL/TLS通信:DH密钥协商算法可用于HTTPS的握手过程,通过生成相同的密钥,实现客户端和服务器之间的通信机密性。

3.移动通信:DH密钥协商算法可用于移动通信网络中的鉴权和密钥协商过程,保护用户的隐私和通信数据的安全。

四、DH密钥协商算法的安全性分析DH密钥协商算法的安全性基于离散对数问题的困难性,即找到满足条件g^x ≡ y (mod p)的x的困难性。

该问题尚未被证实为NP难问题,但通过选择足够大的质数p和合适的原根g,可以使算法在实际应用中具有足够的安全性。

然而,DH密钥协商算法也存在一些安全性弱点,例如:1.中间人攻击:DH密钥协商算法并不能防止中间人攻击,即有可能在通信过程中插入伪造的公开参数,从而导致生成的密钥被中间人截获。

H3C S5100-SSH操作

H3C S5100-SSH操作
客户端向服务器端发送会话请求
1.1.3 4.
交互会话阶段
会话请求通过后,服务器端和客户端进行信息的交互 1.1.3 5.
1-2
H3C S5100-SI/EI 系列以太网交换机 操作手册 SSH
第 1 章 SSH 配置
i
H3C S5100-SI/EI 系列以太网交换机 操作手册 SSH
第 1 章 SSH 配置
第1章 SSH 配置
1.1 原理介绍
1.1.1 SSH 简介
SSH(Secure Shell,安全外壳)是一个用于在非安全网络中提供安全的远程登录 以及其他安全网络服务的协议,它能够使用户安全地登录到交换机,通过设备的命 令行接口进行配置和管理交换机。当用户通过非安全的网络环境远程登录到交换机 时,每次发送数据前,SSH 都会自动对数据进行加密,当数据到达目的地时,SSH 自动对加密数据进行解密,以此提供安全的信息保障。同时,SSH 提供强大的认证 功能,保护交换机不受诸如 DNS 和 IP 欺骗等攻击。此外,SSH 还支持其他功能, 比如可以对传输的数据进行压缩,从而加快传输的速度。又可以代替 Telnet,或为 FTP 提供安全的“通道”。 SSH 采用客户—服务器模式。支持 SSH 功能的交换机既可以作为 SSH 服务器又可 以作为 SSH 客户端,也可以同时充当服务器和客户端两种角色。作为 SSH 服务器 时,为远程登录用户提供安全的 SSH 连接,以便用户能够安全的访问 SSH 服务器。 作为 SSH 客户端时,允许与支持 SSH 服务器功能的设备建立 SSH 连接,从而实现 从本地设备通过 SSH 登录到远程设备上。
非对称密钥算法还可以用于签名,比如用户 1 使用自己的私钥对数据进行签名,然 后发给用户 2,用户 2 可以用用户 1 的公钥验证签名,如果签名是正确的,那么就 能够确认该数据来源于用户 1。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

The X3DH Key Agreement Protocol X3DH密钥协商协议原作者:Moxie Marlinspike原编辑:Trevor Perrin中文版翻译:pior原文版本:Revision 1, 2016-11-04中文译本:V0.1, 2020-04-27目录1 简介 (3)2 预备知识 (3)2.1 X3DH参数 (3)2.2 密码符号 (3)2.3 角色 (4)2.4 密钥 (4)3 X3DH协议 (5)3.1 概述 (5)3.2 发布密钥 (5)3.3 发送初始消息 (6)3.4 接收初始消息 (8)4 安全要素 (8)4.1 身份认证 (8)4.2 协议重放 (9)4.3 重放与密钥重用 (9)4.4 可否认性 (9)4.5 签名 (10)4.6 密钥泄露 (10)4.7 服务器信任 (11)4.8 身份绑定 (11)5 知识产权 (11)6 致谢 (11)7 参考 (12)1简介本文描述了“X3DH”(也称为“扩展的三重Diffie-Hellman”)密钥协商协议。

X3DH协议基于公私钥认证,在通信两方之间建立共享密钥。

X3DH协议提供了转发保密性和加密可否认性。

X3DH协议是为异步通信而设计的,若“Bob”离线,用户“Alice”也可使用“Bob”已向服务器发布的一些信息向其发送加密数据,并为将来的通信建立共享密钥。

2预备知识2.1X3DH参数使用X3DH协议的应用程序必须确定几个参数,见表1:表 1 X3DH参数表名称定义椭圆曲线类型 25519 or X448散列函数 一个256位或512位的散列函数(例如:SHA-256、SHA-512)信息 标识应用程序的ASCII字符串例如,应用程序可以选择椭圆曲线X25519、散列函数SHA-512和信息“MyProtocol”,应用程序还必须定义一个编码函数encode(PK),以便将X25519或X448的公钥PK编码为字符串。

建议的编码函数由一些表示椭圆曲线类型的单字节常量组成,然后是u坐标的小尾数编码[1]。

2.2密码符号本文在描述X3DH协议时,将使用以下符号:●X||Y,表示字符串X和Y的连接。

●DH(PK1,PK2),表示由椭圆曲线Diffie-Hellman函数输出的密钥,参数PK1和PK2表示两个不同密钥对的公钥。

椭圆曲线Diffie-Hellman函数可选X25519或X448函数,具体取决于椭圆曲线参数。

●Sig(PK,M),表示用公钥PK对应的私钥对消息M进行签名,如XEdDSA数字签名机制,可用公钥PK进行签名验证。

XEdDSA的签名和验证功能参见[2]。

●KDF(KM),表示由HKDF算法生成的32字节输出,HKDF算法要求的输入有:-HKDF 输入密钥材料 = F||KM,其中:KM:是包含密钥材料的输入字符串如果椭圆曲线参数是X25519,F是包含32个0xFF字节的字符串;如果椭圆曲线参数是X448,F是包含57个0xFF字节的字符串。

F用于使用XEdDSA进行加密域分离[2]。

-HKDF salt=长度等于散列函数输出长度的零填充字符串。

-HKDF info=来自X3DH参数中的信息。

2.3角色X3DH协议涉及三方:Alice、Bob和Server。

●Alice(发送方):希望加密的向Bob(接收方)发送一些初始数据,并建立可用于双向通信的共享密钥。

●Bob(接收方):希望允许像Alice这样的各个发送方与他建立共享密钥并发送加密数据。

然而,当Alice试图这样做时,Bob可能会离线。

为了实现这一点,可能过某个服务器建立联系。

●Server(服务器):可以存储从Alice到Bob的消息,Bob稍后可以检索这些消息。

服务器还允许Bob发布一些数据,服务器将向Alice这样的各个发送方提供这些数据。

第4.7节讨论了服务器的信任问题。

在某些系统中,服务器角色可能被划分为多个实体,但为了简单起见,我们假设一个服务器为Alice和Bob提供上述功能。

2.4密钥X3DH协议需要使用以下的密钥:表 2 密钥表名称定义IK-A Alice的身份认证密钥(identity key)EK-A Alice的临时密钥(ephemeral key)IK-B Bob的身份认证密钥(identity key)SPK-B Bob的已签名预共享密钥(signed prekey)OPK-B Bob的一次性预共享密钥(one-time prekey)所有公钥都有相应的私钥,但为了简化描述,我们将重点关注公钥。

X3DH协议中使用的公钥必须全部采用同样的格式,根据曲线参数[1]指定。

每一方都有一个长期身份认证公钥(Alice为IK-A,Bob为IK-B)。

Bob有一个已签名预共享密钥SPK-B,Bob将定期更新它。

Bob还有一组(多个)一次性预共享密钥OPK-B,每个都在一个X3DH协议中使用。

译注:预共享密钥,是指它们本质上是Bob与Alice开始协议运行之前发布到服务器的公钥。

在每次协议交互,Alice都会生成一个新的临时密钥对,公钥为EK-A。

完成的协议交互后,Alice和Bob将共享一个32字节的密钥SK。

这个密钥可以在后面的进行业务通信的X3DH后协议中使用,但要遵循第4章中的安全考虑。

3X3DH协议3.1概述X3DH协议过程主要有三个阶段组成:1.Bob将他的预共享密钥发布到服务器。

2.Alice从服务器获取Bob对应的“预共享密钥包”,并使用它向Bob发送一条初始消息。

3.Bob接收并处理Alice的初始消息。

以下各节将解释这些阶段。

3.2发布密钥Bob向服务器发布一组椭圆曲线公钥,其中包含:●Bob的身份认证公钥IK-B●Bob的已签名预共享密钥SPK-B●Bob的预共享密钥签名Sig(IK-B,Encode(SPK-B))●一组Bob的一次性预共享密钥(OPK-B1、OPK-B2、OPK-B3,…)Bob只需要将他的身份认证公钥上载到服务器一次。

但是,Bob可以在其他时间上载新的一次性预共享密钥(例如,当服务器通知Bob服务器的一次性预密钥存储越来越少时)。

Bob还将每隔一段时间(例如,一周一次或一个月一次)上载一个新的已签名预共享密钥SPK和预共享密钥签名。

新的已签名预共享密钥SPK和预共享密钥签名将替换以前的值。

上传一个新的已签名预共享密钥后,Bob可能会将与前一个已签名预共享密钥相对应的私钥保留一段时间,以便使用它处理在传输过程中延迟的消息。

最后,Bob应该删除这个私钥来进行前向保密(当Bob使用这些密钥接收消息时,一次性预共享密钥私钥将被删除;请参阅第3.4节)。

3.3发送初始消息为了与Bob进行X3DH协议,Alice联系服务器并获取包含以下信息的“预共享密钥包”:●Bob的身份认证公钥IK-B●Bob的已签名预共享密钥SPK-B●Bob的预共享密钥签名Sig(IK-B,Encode(SPK-B))●(可选)Bob的一次性预共享密钥(OPK-B)服务器应该提供Bob的一个一次性预密钥(如果存在),然后将其删除。

如果服务器上Bob的所有一次性预共享密钥都已删除,则该“预共享密钥包”将不包含一次性预共享密钥。

Alice对“预共享密钥包”验证预共享密钥签名,如果验证失败,则中止协议。

Alice生成一个临时密钥对,公钥为EK-A。

如果“预共享密钥包”不包含一次性预共享密钥,Alice进行以下计算: DH1 = DH(IK-A,SPK-B)DH2 = DH(EK-A,IK-B)DH3 = DH(EK-A,SPK-B)SK = KDF(DH1 || DH2 || DH3)如果“预共享密钥包”包含一次性预共享密钥,计算过程添加以下DH算法,并修改SK的计算:DH4 = DH(EK-A,OPK-B)SK = KDF(DH1 || DH2 || DH3 || DH4)下图显示了密钥之间的DH计算。

注意:DH1和DH2提供相互认证,而DH3和DH4提供前向保密。

图 1 DH1…DH4在计算SK之后,Alice删除临时密钥对的私钥和DH计算的中间输出值。

然后,Alice计算包含双方身份信息的“关联数据”对应的AD字符串:AD = Encode(IK-A) || Encode(IK-B)译注:Encode为章节2.1中所说明的参数。

计算AD时,Alice可以选择性地添加其他附加信息,例如Alice和Bob的用户名、证书或其他标识信息。

然后,Alice向Bob发送一条初始消息,其中包含:●Alice的身份认证公钥IK-A●Alice的临时密钥EK-A●说明使用哪个OPK-B的标识符●初始密文,用AEAD加密方案[4]进行加密,使用“关联数据”AD作为相关数据,并使用一个加密密钥,该密钥可以是SK,也可以是由SK加密的PRF的输出初始密文通常是X3DH协商后的X3DH后协议中的第一条消息。

换句话说,这个密文通常有两个角色,在一些X3DH后协议中作为第一个消息服务,并且作为Alice的X3DH初始消息的一部分。

在发送之后,Alice主可以继续在X3DH后协议中使用SK或从SK派生的密钥来与Bob通信,但要符合第4节中的安全考虑。

3.4接收初始消息Bob在收到Alice的初始消息后,从消息中检索Alice的身份认证公钥IK-A和临时密钥EK-A。

并加载他自己的身份认证公钥IK-B对应私钥,以及Alice 所用的SPK-B和OPK-B(如果有的话)相对应的私钥。

使用这些键,Bob重复上一节中的DH和KDF计算以派生SK,然后删除DH 计算的值。

用前一节所述的方法,Bob使用IK-A和IK-B构造AD字符串。

最后,Bob 尝试使用SK和AD解密初始密文。

如果初始密文未能解密,则Bob中止协议并删除SK。

如果初始密文解密成功,则Bob的协议已完成。

Bob将删除用于前向保密的一次性预共享密钥OPK-B的私钥。

然后,Bob可以继续使用SK或派生自SK 的密钥来与Alice进行X3DH后协议,但需遵循第4节中的安全考虑。

4安全要素4.1身份认证在X3DH密钥协议之前或之后,双方可以通过某种经过身份验证的通道验证其身份认证公钥IK-A和IK-B。

例如,他们可以手动或通过面对面扫描二维码来验证公钥。

具体方法不在本文档的范围内。

如果不执行公钥的身份验证,则双方通信将无法得到安全保证。

译注:通过第三方可信CA的数字证书,也可以实现身份验证。

4.2协议重放如果Alice的“初始消息”没有使用一次性预共享密钥OPK,那么它可能会被人截获并重放到Bob,并且Bob会接受它。

这可能会使Bob认为Alice反复给他发了同样的信息。

为了减轻这种情况,X3DH后协议可以据Bob新生成的随机输入与Alice快速协商新的加密密钥。

相关文档
最新文档