CN115567226A - 一种二进制端对端基于会话通信加密方法 - Google Patents
一种二进制端对端基于会话通信加密方法 Download PDFInfo
- Publication number
- CN115567226A CN115567226A CN202211255184.7A CN202211255184A CN115567226A CN 115567226 A CN115567226 A CN 115567226A CN 202211255184 A CN202211255184 A CN 202211255184A CN 115567226 A CN115567226 A CN 115567226A
- Authority
- CN
- China
- Prior art keywords
- key
- message
- chain
- sender
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3263—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements
- H04L9/3265—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements using certificate chains, trees or paths; Hierarchical trust model
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0631—Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0891—Revocation or update of secret information, e.g. encryption key update or rekeying
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种二进制端对端基于会话通信加密方法,包括以下步骤:S1用户发起会话聊天;S2使用CA证书校验当前服务合法地位;S3接收会话设置;S4交换消息;S5通过链密钥计算消息密钥;S6通过根密钥计算链密钥;S7传输媒体和附件;S8群组消息发送;S9通话设置;S10使用生成AES密钥进行TCP二进制数据封包和解包,解决了解决传统服务器与客户端需要双向做安全握手,统一一套密钥存在被攻破,同时在端到端加密系统中,只有参与通信的双方用户可以读取通信数据,不仅网络犯罪分子无法窃听到这种通信信息,甚至连服务提供商都无法获取到通信数据,可以有效防止攻击者轻易地获取到用于解密通信会话的加密密钥,还能防止攻击者对用户的通信数据进行拦截或窃听。
Description
技术领域
本发明涉及电子信息技术领域,具体为一种二进制端对端基于会话通信加密方法。
背景技术
互联网通信技术的发展应用,让信息无远弗届,连接随时发生,但与此同时,互联网通信也暴露出了一系列安全问题,我们需要有针对性地应用相关安全技术,增强通信系统的安全性和可靠性,为保护用户个人信息安全筑起防护墙。在许多消息传递服务中,第三方会存储仅在传输过程中加密的数据,这种服务器端加密方法只能保护未经授权的查看者的数据,但这种方法会使得发件人也可以查看该信息,这不适用于整个过程都需要保护数据隐私的传输过程。在端到端的加密中,加密数据只能由具有解密密钥的人查看,换句话说,端到端的加密可以防止非预期用户(包括第三方)读取或修改数据,而只有预期的读者具有这种访问权限和能力,端到端加密提供的不仅仅是发送加密消息,它还可以允许控制授权用户访问存储的数据,集中的特权用户策略管理系统粒度控件可以控制谁能够访问什么信息。但是传统端对端加密中如果由双方连接时候进行握手生成密钥需要保证密钥要能解出以前的历史消息和离线消息;如果端对端的密钥交给前端单纯使用CA证书握手成功,使用固定的算法生成密钥,一旦客户端证书泄漏和客户端算法被逆向就会造成安全问题;如果单纯服务端协助存储两端的密钥,会造成存储量过大至少需要n*(n-1),造成服务端性能下降。
发明内容
为了解决上述问题,本发明的目的在于提供一种二进制端对端基于会话通信加密方法。
为实现上述目的,本发明提供如下技术方案:一种二进制端对端基于会话通信加密方法,包括以下步骤:
S1用户发起会话聊天;
S2使用CA证书校验当前服务合法地位:CA证书一般包含以下信息,文件包(公钥B,hash算法,用途,颁发者,有效时间等);把文件包进行hash加密,得到短字符,然后CA机构用私钥A进行加密得到的——数字签名/指纹;
S3接收会话设置:在建立长期加密会话后,发起人可以立即向接收人发送消息,即使接收人处理离线状态,在接收方响应之前,发起方所有的消息都会包含创建会话所需的信息(在消息的 header 里),其中包括发起人的 Einitiator 和 Iinitiator;
S4交换消息;建立了会话,通过 AES256 消息密钥加密(CbC 模式)和 HMAC-SHA256 验证来保护客户端交换消息,消息密钥是短暂的且在每次发送消息后都会变化,使得用于加密消息的消息密钥不能从已发送或已接收后的会话状态中重建,消息密钥在发送消息时对发送人的链密钥(Chain Key)进行向前的 “棘轮(ratchets)” 派生而来,此外,每次消息巡回都执行一个新的 ECDH 协议以创建一个新的链密钥(Chain Key),通过组合即时 “哈希棘轮(hash ratchet)” 和巡回 “DH 棘轮(DH ratchet)” 提供前向安全;
S5通过链密钥(Chain Key)计算消息密钥(Message Key);
S6通过根密钥(Root Key)计算链密钥(Chain Key);
S7传输媒体和附件:任何类型的大附件(视频,音频,图像或文件)也都是端对端加密的;
S8群组消息发送:通过 Signal 传输协议(Signal Messaging Protocol)的“发送者密钥(Sender Keys)”来完成的;
S9通话设置:语音和视频通话也是端对端加密;
S10使用生成AES密钥进行TCP二进制数据封包和解包;
进一步地,所述步骤(2)中使用CA证书校验当前服务合法地位的方法包括以下步骤;
(1)CA机构使用它的私钥A对CA证书的文件包hash短字符进行加密的签名;
(2)client使用写入到系统的公钥A对签名解密,得到短字符;
(3)client用从server端请求得来的公钥D对自己生成的字符串进行加密,发送给server;
(4)server用其私钥B对加密字符串解密,获取字符串;
(5)利用公钥A对证书里的签名解密,得短字符,利用hash算法对证书里的文件包进行加密,获取短字符;
(6)两者比较,不同就是文件包被篡改了,或者签名不是CA机构私钥A加密过的;
进一步地,所述步骤(3)中接收会话设置的方法包括以下步骤:
(1)接收人使用自己的私钥和消息 header 里的公钥来计算相应的主密钥;
(2)接收人删除发起人使用的一次性预共享密钥(One-Time Pre Key);
(3)发起人使用 HKDF 算法从主密钥派生出相应的根密钥(Root Key)和链密钥(Chain Keys);
进一步地,所述步骤(5)中通过链密钥(Chain Key)计算消息密钥(Message Key)方法包括以下步骤:
(1)消息密钥(Message Key)= HMAC-SHA256(Chain Key, 0x01);
(2)链密钥(Chain Key)随后更新为: 链密钥(Chain Key)= HMAC-SHA256(ChainKey, 0x02),这样形成向前 “棘轮(ratchets)” 链密钥(Chain Key),这也意味不能使用存储的消息密钥推导出当前或过去的链密钥(Chain Key)值;
进一步地,所述步骤(6)中通过根密钥(Root Key)计算链密钥(Chain Key)方法包括以下步骤:
(1)ephemeral_secret = ECDH(Ephemeralsender, Ephemeralrecipient);
(2)链密钥(Chain Key),根密钥(Root Key)= HKDF(Root Key, ephemeral_secret),一个链密钥只能给一个用户发消息,所以消息密钥不能被重用,由于消息密钥和链密钥(Chain Keys)的计算方式,消息可能会延迟、乱序或完全丢失而不会有问题;
进一步地,所述步骤(7)中传输媒体和附件方法包括以下步骤:
(1)发件人(发消息的 WhatsApp 用户)生成一个 32 字节的 AES256 临时密钥和一个 32 字节 HMAC-SHA256 临时密钥;
(2)发件人通过 AES256 密钥(CBC 模式)和随机 IV 给附件加密,然后附加使用HMAC-SHA256 密文的 MAC;
(3)发件人将加密的附件以上传到服务器以二进制存储;
(4)发件人给收件人发送一个包含加密密钥、HMAC 密钥、加密二进制的 SHA256哈希值和指向二进制存储的指针的加密消息;
(5)收件人解密消息,从服务器检索加密的二进制数据,验证 AES256 哈希,验证MAC 并解密为明文;
进一步地,所述步骤(8)中群组消息发送方法包括以下步骤:
(1)群组成员第一次发消息到群组:
(1.1)发送人生成一个随机 32 字节的链密钥(Chain Key);
(1.2)发送人生成一个随机 Curve25519 签名密钥对;
(1.3)发送人将 32 位链密钥(Chain Key)和签名密钥中的公钥组合成消息发送人密钥(Sender Key);
(1.4)发件人用成对传输协议为每个群组成员单独加密发送人密钥(SenderKeys);
(2)所有后续发给该群组的消息:
(2.1)发送人从链密钥(Chain Key)中获取消息密钥(Message Key)并更新链密钥(Chain Key)
(2.2)发送人在 CbC 模式下使用 AES256 加密消息
(2.3)发送人使用签名密钥(Signature Key)签名密文
(2.4)发送人将单个密文消息发给服务器,服务器将消息分发给所有群组成员
(3)消息发送人链密钥(Chain Key)的 “哈希棘轮(hash ratchet)” 提供向前安全,当群组成员离开时时,所有剩下的群组成员都清除发送人密钥(Sender Key)并重新生成;
进一步地,所述步骤(9)中通话设置方法包括以下步骤:
(1)发起人与接收人建立加密会话(如果还没有建立过);
(2)发起人生成一个随机 32 字节的安全实时传输协议(SRTP)主密钥(mastersecret);
(3)发起人向接收人发送一个包含安全实时传输协议(SRTP)主密钥的加密消息用于发通话信号;
(4)如果应答了呼叫,跟着发起安全实时传输协议(SRTP)呼叫;
进一步地,所述步骤(10)中使用生成AES密钥进行TCP二进制数据封包和解包方法包括以下步骤:
(1)封包就是给一段数据加上包头,这样一来数据包就分为包头和包体两部分内容了,包头其实上是个大小固定的结构体,其中有个结构体成员变量表示包体的长度,这是个很重要的变量,其他的结构体成员可根据需要自己定义,根据包头长度固定以及包头中含有包体长度的变量就能正确的拆分出一个完整的数据包;
(2)拆包采用动态缓冲区暂存方式,当需要缓冲的数据长度超出缓冲区的长度时会增大缓冲区长度; (3)为每一个连接动态分配一个缓冲区,同时把此缓冲区和SOCKET关联,常用的是通过结构体关联; (4)当接收到数据时首先把此段数据存放在缓冲区中,判断缓存区中的数据长度是否够一个包头的长度,如不够,则不进行拆包操作; (5)根据包头数据解析出里面代表包体长度的变量,判断缓存区中除包头外的数据长度是否够一个包体的长度,如不够,则不进行拆包操作; (6)取出整个数据包,把此数据包从缓存区中删除掉,删除的办法就是把此包后面的数据移动到缓冲区的起始地址;
与现有技术相比,本发明的有益效果如下:
本发明主要解决了解决传统服务器与客户端需要双向做安全握手,服务器转包需要做解包和封包的带来性能开销和通信双方密钥存储数据库带来的存储开销和频繁查询开销,统一一套密钥存在被攻破,安全性低的问题,通过该方案,有效解决了上述的问题,同时在端到端加密系统中,只有参与通信的双方用户可以读取通信数据,不仅网络犯罪分子无法窃听到这种通信信息,甚至连服务提供商都无法获取到通信数据,可以有效防止攻击者轻易地获取到用于解密通信会话的加密密钥,还能防止攻击者对用户的通信数据进行拦截或窃听,而且端到端加密系统实现方法简单,只需在发送方和接收方提供加解密服务即可,无需考虑中间传输环节。
参照后文的说明和附图,详细公开了本发明的特定实施方式,指明了本发明的原理可以被采用的方式。应该理解,本发明的实施方式在范围上并不因而受到限制。
针对一种实施方式描述和/或示出的特征可以以相同或类似的方式在一个或更多个其它实施方式中使用,与其它实施方式中的特征相组合,或替代其它实施方式中的特征。
应该强调,术语“包括/包含”在本文使用时指特征、整件、步骤或组件的存在,但并不排除一个或更多个其它特征、整件、步骤或组件的存在或附加。
附图说明
图1为本发明一种二进制端对端基于会话通信加密方法的流程图;
具体实施方式
为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,当元件被称为“设置于”另一个元件,它可以直接在另一个元件上或者也可以存在居中的另一个元件。当一个元件被认为是“连接”另一个元件,它可以是直接连接到另一个元件或者可能同时存在居中另一个元件。本文所使用的术语“垂直的”、“水平的”、“左”、“右”以及类似的表述只是为了说明的目的,并不表示是唯一的实施方式。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施方式的目的,不是旨在于限制本发明。本文所使用的术语“和/或”包括一个或多个相关的所列项目的任意的和所有的组合。
实施例1
请参阅图1,一种二进制端对端基于会话通信加密方法,包括以下步骤:
S1用户发起会话聊天;
S2使用CA证书校验当前服务合法地位:CA证书一般包含以下信息,文件包(公钥B,hash算法,用途,颁发者,有效时间等);把文件包进行hash加密,得到短字符,然后CA机构用私钥A进行加密得到的——数字签名/指纹;
S3接收会话设置:在建立长期加密会话后,发起人可以立即向接收人发送消息,即使接收人处理离线状态,在接收方响应之前,发起方所有的消息都会包含创建会话所需的信息(在消息的 header 里),其中包括发起人的 Einitiator 和 Iinitiator;
S4交换消息;建立了会话,通过 AES256 消息密钥加密(CbC 模式)和 HMAC-SHA256 验证来保护客户端交换消息,消息密钥是短暂的且在每次发送消息后都会变化,使得用于加密消息的消息密钥不能从已发送或已接收后的会话状态中重建,消息密钥在发送消息时对发送人的链密钥(Chain Key)进行向前的 “棘轮(ratchets)” 派生而来,此外,每次消息巡回都执行一个新的 ECDH 协议以创建一个新的链密钥(Chain Key),通过组合即时 “哈希棘轮(hash ratchet)” 和巡回 “DH 棘轮(DH ratchet)” 提供前向安全;
S5通过链密钥(Chain Key)计算消息密钥(Message Key);
S6通过根密钥(Root Key)计算链密钥(Chain Key);
S7传输媒体和附件:任何类型的大附件(视频,音频,图像或文件)也都是端对端加密的;
S8群组消息发送:通过 Signal 传输协议(Signal Messaging Protocol)的“发送者密钥(Sender Keys)”来完成的;
S9通话设置:语音和视频通话也是端对端加密;
S10使用生成AES密钥进行TCP二进制数据封包和解包;
进一步地,所述步骤(2)中使用CA证书校验当前服务合法地位的方法包括以下步骤;
(1)CA机构使用它的私钥A对CA证书的文件包hash短字符进行加密的签名;
(2)client使用写入到系统的公钥A对签名解密,得到短字符;
(3)client用从server端请求得来的公钥D对自己生成的字符串进行加密,发送给server;
(4)server用其私钥B对加密字符串解密,获取字符串;
(5)利用公钥A对证书里的签名解密,得短字符,利用hash算法对证书里的文件包进行加密,获取短字符;
(6)两者比较,不同就是文件包被篡改了,或者签名不是CA机构私钥A加密过的;
进一步地,所述步骤(3)中接收会话设置的方法包括以下步骤:
(1)接收人使用自己的私钥和消息 header 里的公钥来计算相应的主密钥;
(2)接收人删除发起人使用的一次性预共享密钥(One-Time Pre Key);
(3)发起人使用 HKDF 算法从主密钥派生出相应的根密钥(Root Key)和链密钥(Chain Keys);
进一步地,所述步骤(5)中通过链密钥(Chain Key)计算消息密钥(Message Key)方法包括以下步骤:
(1)消息密钥(Message Key)= HMAC-SHA256(Chain Key, 0x01);
(2)链密钥(Chain Key)随后更新为: 链密钥(Chain Key)= HMAC-SHA256(ChainKey, 0x02),这样形成向前 “棘轮(ratchets)” 链密钥(Chain Key),这也意味不能使用存储的消息密钥推导出当前或过去的链密钥(Chain Key)值;
进一步地,所述步骤(6)中通过根密钥(Root Key)计算链密钥(Chain Key)方法包括以下步骤:
(1)ephemeral_secret = ECDH(Ephemeralsender, Ephemeralrecipient);
(2)链密钥(Chain Key),根密钥(Root Key)= HKDF(Root Key, ephemeral_secret),一个链密钥只能给一个用户发消息,所以消息密钥不能被重用,由于消息密钥和链密钥(Chain Keys)的计算方式,消息可能会延迟、乱序或完全丢失而不会有问题;
进一步地,所述步骤(7)中传输媒体和附件方法包括以下步骤:
(1)发件人(发消息的 WhatsApp 用户)生成一个 32 字节的 AES256 临时密钥和一个 32 字节 HMAC-SHA256 临时密钥;
(2)发件人通过 AES256 密钥(CBC 模式)和随机 IV 给附件加密,然后附加使用HMAC-SHA256 密文的 MAC;
(3)发件人将加密的附件以上传到服务器以二进制存储;
(4)发件人给收件人发送一个包含加密密钥、HMAC 密钥、加密二进制的 SHA256哈希值和指向二进制存储的指针的加密消息;
(5)收件人解密消息,从服务器检索加密的二进制数据,验证 AES256 哈希,验证MAC 并解密为明文;
进一步地,所述步骤(8)中群组消息发送方法包括以下步骤:
(1)群组成员第一次发消息到群组:
(1.1)发送人生成一个随机 32 字节的链密钥(Chain Key);
(1.2)发送人生成一个随机 Curve25519 签名密钥对;
(1.3)发送人将 32 位链密钥(Chain Key)和签名密钥中的公钥组合成消息发送人密钥(Sender Key);
(1.4)发件人用成对传输协议为每个群组成员单独加密发送人密钥(SenderKeys);
(2)所有后续发给该群组的消息:
(2.1)发送人从链密钥(Chain Key)中获取消息密钥(Message Key)并更新链密钥(Chain Key)
(2.2)发送人在 CbC 模式下使用 AES256 加密消息
(2.3)发送人使用签名密钥(Signature Key)签名密文
(2.4)发送人将单个密文消息发给服务器,服务器将消息分发给所有群组成员
(3)消息发送人链密钥(Chain Key)的 “哈希棘轮(hash ratchet)” 提供向前安全,当群组成员离开时时,所有剩下的群组成员都清除发送人密钥(Sender Key)并重新生成;
进一步地,所述步骤(9)中通话设置方法包括以下步骤:
(1)发起人与接收人建立加密会话(如果还没有建立过);
(2)发起人生成一个随机 32 字节的安全实时传输协议(SRTP)主密钥(mastersecret);
(3)发起人向接收人发送一个包含安全实时传输协议(SRTP)主密钥的加密消息用于发通话信号;
(4)如果应答了呼叫,跟着发起安全实时传输协议(SRTP)呼叫;
进一步地,所述步骤(10)中使用生成AES密钥进行TCP二进制数据封包和解包方法包括以下步骤:
(1)封包就是给一段数据加上包头,这样一来数据包就分为包头和包体两部分内容了,包头其实上是个大小固定的结构体,其中有个结构体成员变量表示包体的长度,这是个很重要的变量,其他的结构体成员可根据需要自己定义,根据包头长度固定以及包头中含有包体长度的变量就能正确的拆分出一个完整的数据包;
(2)拆包采用动态缓冲区暂存方式,当需要缓冲的数据长度超出缓冲区的长度时会增大缓冲区长度; (3)为每一个连接动态分配一个缓冲区,同时把此缓冲区和SOCKET关联,常用的是通过结构体关联; (4)当接收到数据时首先把此段数据存放在缓冲区中,判断缓存区中的数据长度是否够一个包头的长度,如不够,则不进行拆包操作; (5)根据包头数据解析出里面代表包体长度的变量,判断缓存区中除包头外的数据长度是否够一个包体的长度,如不够,则不进行拆包操作; (6)取出整个数据包,把此数据包从缓存区中删除掉,删除的办法就是把此包后面的数据移动到缓冲区的起始地址;
除非另有说明,所有范围都包括端点以及端点之间的所有数字。与范围一起使用的“大约”或“近似”适合于该范围的两个端点。因而,“大约20到30”旨在覆盖“大约20到大约30”,至少包括指明的端点。
披露的所有文章和参考资料,包括专利申请和出版物,出于各种目的通过援引结合于此。描述组合的术语“基本由…构成”应该包括所确定的元件、成分、部件或步骤以及实质上没有影响该组合的基本新颖特征的其他元件、成分、部件或步骤。使用术语“包含”或“包括”来描述这里的元件、成分、部件或步骤的组合也想到了基本由这些元件、成分、部件或步骤构成的实施方式。这里通过使用术语“可以”,旨在说明“可以”包括的所描述的任何属性都是可选的。
多个元件、成分、部件或步骤能够由单个集成元件、成分、部件或步骤来提供。另选地,单个集成元件、成分、部件或步骤可以被分成分离的多个元件、成分、部件或步骤。用来描述元件、成分、部件或步骤的公开“一”或“一个”并不说为了排除其他的元件、成分、部件或步骤。
应该理解,以上描述是为了进行图示说明而不是为了进行限制。通过阅读上述描述,在所提供的示例之外的许多实施方式和许多应用对本领域技术人员来说都将是显而易见的。因此,本教导的范围不应该参照上述描述来确定,而是应该参照所附权利要求以及这些权利要求所拥有的等价物的全部范围来确定。出于全面之目的,所有文章和参考包括专利申请和公告的公开都通过参考结合在本文中。在前述权利要求中省略这里公开的主题的任何方面并不是为了放弃该主体内容,也不应该认为发明人没有将该主题考虑为所公开的发明主题的一部分。
Claims (7)
1.一种二进制端对端基于会话通信加密方法,其特征在于,包括以下步骤:
S1用户发起会话聊天;
S2使用CA证书校验当前服务合法地位:CA证书一般包含以下信息,文件包(公钥B,hash算法,用途,颁发者,有效时间等);把文件包进行hash加密,得到短字符,然后CA机构用私钥A进行加密得到的——数字签名/指纹;
S3接收会话设置:在建立长期加密会话后,发起人可以立即向接收人发送消息,即使接收人处理离线状态,在接收方响应之前,发起方所有的消息都会包含创建会话所需的信息(在消息的 header 里),其中包括发起人的 Einitiator 和 Iinitiator;
S4交换消息;建立了会话,通过 AES256 消息密钥加密(CbC 模式)和 HMAC-SHA256 验证来保护客户端交换消息,消息密钥是短暂的且在每次发送消息后都会变化,使得用于加密消息的消息密钥不能从已发送或已接收后的会话状态中重建,消息密钥在发送消息时对发送人的链密钥(Chain Key)进行向前的 “棘轮(ratchets)” 派生而来,此外,每次消息巡回都执行一个新的 ECDH 协议以创建一个新的链密钥(Chain Key),通过组合即时 “哈希棘轮(hash ratchet)” 和巡回 “DH 棘轮(DH ratchet)” 提供前向安全;
S5通过链密钥(Chain Key)计算消息密钥(Message Key);
S6通过根密钥(Root Key)计算链密钥(Chain Key);
S7传输媒体和附件:任何类型的大附件(视频,音频,图像或文件)也都是端对端加密的;
S8群组消息发送:通过 Signal 传输协议(Signal Messaging Protocol)的“发送者密钥(Sender Keys)”来完成的;
S9通话设置:WhatsApp 语音和视频通话也是端对端加密;
S10使用生成AES密钥进行TCP二进制数据封包和解包。
2.根据权利要求1所述的一种二进制端对端基于会话通信加密方法,其特征在于:所述步骤(S2)中使用CA证书校验当前服务合法地位的方法包括以下步骤;
(1)CA机构使用它的私钥A对CA证书的文件包hash短字符进行加密的签名;
(2)client使用写入到系统的公钥A对签名解密,得到短字符;
(3)client用从server端请求得来的公钥D对自己生成的字符串进行加密,发送给server;
(4)server用其私钥B对加密字符串解密,获取字符串;
(5)利用公钥A对证书里的签名解密,得短字符,利用hash算法对证书里的文件包进行加密,获取短字符。
3.根据权利要求1所述的一种二进制端对端基于会话通信加密方法,其特征在于,所述步骤(3)中接收会话设置的方法包括以下步骤:
(1)接收人使用自己的私钥和消息 header 里的公钥来计算相应的主密钥;
(2)接收人删除发起人使用的一次性预共享密钥(One-Time Pre Key);
(3)发起人使用 HKDF 算法从主密钥派生出相应的根密钥(Root Key)和链密钥(ChainKeys)。
4.根据权利要求1所述的一种二进制端对端基于会话通信加密方法,其特征在于,所述步骤(5)中通过链密钥(Chain Key)计算消息密钥(Message Key)方法包括以下步骤:
(1)消息密钥(Message Key)= HMAC-SHA256(Chain Key, 0x01);
(2)链密钥(Chain Key)随后更新为: 链密钥(Chain Key)= HMAC-SHA256(Chain Key,0x02),这样形成向前 “棘轮(ratchets)” 链密钥(Chain Key),这也意味不能使用存储的消息密钥推导出当前或过去的链密钥(Chain Key)值。
5.根据权利要求1所述的一种二进制端对端基于会话通信加密方法,其特征在于,所述步骤(7)中传输媒体和附件方法包括以下步骤:
(1)发件人(发消息的 WhatsApp 用户)生成一个 32 字节的 AES256 临时密钥和一个32 字节 HMAC-SHA256 临时密钥;
(2)发件人通过 AES256 密钥(CBC 模式)和随机 IV 给附件加密,然后附加使用HMAC-SHA256 密文的 MAC;
(3)发件人将加密的附件以上传到服务器以二进制存储;
(4)发件人给收件人发送一个包含加密密钥、HMAC 密钥、加密二进制的 SHA256 哈希值和指向二进制存储的指针的加密消息;
(5)收件人解密消息,从服务器检索加密的二进制数据,验证 AES256 哈希,验证 MAC并解密为明文。
6.根据权利要求1所述的一种二进制端对端基于会话通信加密方法,其特征在于,所述步骤(8)中群组消息发送方法包括以下步骤:
(1)群组成员第一次发消息到群组:
(1.1)发送人生成一个随机 32 字节的链密钥(Chain Key);
(1.2)发送人生成一个随机 Curve25519 签名密钥对;
(1.3)发送人将 32 位链密钥(Chain Key)和签名密钥中的公钥组合成消息发送人密钥(Sender Key);
(1.4)发件人用成对传输协议为每个群组成员单独加密发送人密钥(Sender Keys);
(2)所有后续发给该群组的消息:
(2.1)发送人从链密钥(Chain Key)中获取消息密钥(Message Key)并更新链密钥(Chain Key);
(2.2)发送人在 CbC 模式下使用 AES256 加密消息;
(2.3)发送人使用签名密钥(Signature Key)签名密文;
(2.4)发送人将单个密文消息发给服务器,服务器将消息分发给所有群组成员;
(3)消息发送人链密钥(Chain Key)的 “哈希棘轮(hash ratchet)” 提供向前安全,当群组成员离开时时,所有剩下的群组成员都清除发送人密钥(Sender Key)并重新生成。
7.根据权利要求1所述的一种二进制端对端基于会话通信加密方法,其特征在于,所述步骤(10)中使用生成AES密钥进行TCP二进制数据封包和解包方法包括以下步骤:
(1)封包就是给一段数据加上包头,这样一来数据包就分为包头和包体两部分内容了,包头其实上是个大小固定的结构体,其中有个结构体成员变量表示包体的长度,这是个很重要的变量,其他的结构体成员可根据需要自己定义,根据包头长度固定以及包头中含有包体长度的变量就能正确的拆分出一个完整的数据包;
(2)拆包采用动态缓冲区暂存方式,当需要缓冲的数据长度超出缓冲区的长度时会增大缓冲区长度; (3)为每一个连接动态分配一个缓冲区,同时把此缓冲区和SOCKET关联,常用的是通过结构体关联; (4)当接收到数据时首先把此段数据存放在缓冲区中,判断缓存区中的数据长度是否够一个包头的长度,如不够,则不进行拆包操作; (5)根据包头数据解析出里面代表包体长度的变量,判断缓存区中除包头外的数据长度是否够一个包体的长度,如不够,则不进行拆包操作; (6)取出整个数据包,把此数据包从缓存区中删除掉,删除的办法就是把此包后面的数据移动到缓冲区的起始地址。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211255184.7A CN115567226A (zh) | 2022-10-13 | 2022-10-13 | 一种二进制端对端基于会话通信加密方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211255184.7A CN115567226A (zh) | 2022-10-13 | 2022-10-13 | 一种二进制端对端基于会话通信加密方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115567226A true CN115567226A (zh) | 2023-01-03 |
Family
ID=84745370
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211255184.7A Pending CN115567226A (zh) | 2022-10-13 | 2022-10-13 | 一种二进制端对端基于会话通信加密方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115567226A (zh) |
-
2022
- 2022-10-13 CN CN202211255184.7A patent/CN115567226A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6904521B1 (en) | Non-repudiation of e-mail messages | |
Karn et al. | The esp des-cbc transform | |
US8868912B2 (en) | Method and apparatus for establishing a security association | |
US7131003B2 (en) | Secure instant messaging system | |
US7979707B2 (en) | Secure seed generation protocol | |
JP6764753B2 (ja) | 制限帯域幅を有するチャネルにおける効率的かつ強秘匿性の対称暗号化のためのシステムおよび方法 | |
US11831764B2 (en) | End-to-end double-ratchet encryption with epoch key exchange | |
EP3476078A1 (en) | Systems and methods for authenticating communications using a single message exchange and symmetric key | |
CN108090370A (zh) | 基于索引的即时通信加密方法和系统 | |
TW201537937A (zh) | 統一身份認證平臺及認證方法 | |
Blumenthal et al. | The advanced encryption standard (AES) cipher algorithm in the SNMP user-based security model | |
CN106549858B (zh) | 一种基于标识密码的即时通信加密方法 | |
CN111049738B (zh) | 基于混合加密的电子邮件数据安全保护方法 | |
CN108390755A (zh) | 基于内置安全芯片的sim贴膜卡的安全输入法 | |
CN111541603B (zh) | 独立智能安全邮件终端及加密方法 | |
Ramsdell | RFC 3851: Secure/multipurpose internet mail extensions (S/MIME) version 3.1 message specification | |
CN115567226A (zh) | 一种二进制端对端基于会话通信加密方法 | |
Al-juaifari | Secure SMS Mobile Transaction with Peer to Peer Authentication Design for Mobile Government | |
CN111639937A (zh) | 数字货币风险管控方法和系统 | |
TWI313995B (en) | Content protection method | |
CN112073370B (zh) | 一种客户端加密通信方法 | |
CN113014531B (zh) | 一种应用于电子邮件数据加密传输的方法 | |
CN112073369B (zh) | 一种基于应用层的加密通信方法 | |
Zakir et al. | A Survey on Various Encryption/Decryption Techniques Used in Mobile and Cloud Computing | |
CN117955688A (zh) | 一种防篡改的网络数据加密方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |