端到端应用Hmac加密

1 简介

端到端加密或者点对点 (P2P)通信使用定向天线在两个特定位置之间创建专用无线链路。与其他可能通过多个网络或服务器路由数据的通信方法不同,它们建立直接的专用连接。

点对点的工作原理,P2P 系统通常包括:

markdown 复制代码
        两个高度定向的端点彼此精确对齐

        两个端点的发射器和接收器

        地点之间的清晰路径

        如果是通信则频率通常在 2.4 GHz、5 GHz 或更高频段

此配置创建了高带宽、低延迟的专用连接,非常适合从远程防护系统传输信息源。这些链接的专用性意味着它们不太容易受到困扰共享网络的拥塞问题的影响。

2 端到端应用Hmac加解密

在基于公钥的密码系统(例如 Olm)SAS(短认证字符串) 验证是基于上述通用框架构建的用户友好的密钥验证过程,HASH 哈希承诺,验证更少的位,实现高度安全性。 失败的攻击者将导致不匹配的短身份验证字符串,提醒用户注意。

其验证分两个步骤: 1,密钥协商阶段(基于ZRTP 密钥协商)。2,密钥验证阶段(基于 HMAC)

服务器无法看到在加密路径中发送的消息,只有路径的参与者才能看到。启用加密可能会阻止许多机器人和网桥正常工作。

端到端加密意味着您的消息和文件在离开您的设备之前已加密,并在到达其他参与者的设备之前保持加密状态。端到端加密消息只能由对话中的参与者阅读。

操作,如果 会话路径没有加密,消息也不会加密,加密路径可以发送加密消息,或发送 非加密消息。 如matrix协议的设备验证

bash 复制代码
1,发起验证 m.key.verification.request       # 请求与其他用户的设备进行密钥验证。通常作为到设备事件发送
2,开始密钥验证过程 m.key.verification.start # 通常作为到设备事件发送。
		该方法 字段确定验证的类型。事件中的字段将因方法而异。此定义包括所有变体中共有的字段
3,m.key.verification.cancel  # 取消密钥验证过程/请求。通常作为到设备事件发送

消息需要加密时,会话必须时刻加密的。

  • 还原 密钥

    rust 复制代码
      1,从 密钥 备份还原所有 密钥
      	如何备份 密钥: 用户设置 -> 安全和隐私,然后单击开始使用密钥备份
      	还原密钥: 用户设置 -> 安全和隐私,然后单击从备份还原。
      2,通过密钥共享请求从其他设备的特定 密钥
      	什么是设备: 每次登录 Matrix 时都会创建一个新的"设备"(并在您注销时再次销毁它)。
                      

什么是可信任设备:

markdown 复制代码
    客户端/服务器通过 信任来代表应用程序内的额外安全层。 而不仅仅是 用户名密码。

每个加入加密对话的设备。如果新的和意外的设备加入,您可以使用设备验证来检查它是否真的是拥有者。

看到无法解密的消息时,它会自动询问您的其他设备是否拥有必要密钥的副本。密钥将自动与受信任的设备共享 - 如果拥有密钥的设备不信任请求密钥的设备,则拥有密钥的设备会弹出提示,要求您手动确认密钥共享。

markdown 复制代码
            3,从手动上传 密钥 备份(高级)
  • 导出密钥

    从其他设备 请求密钥

    markdown 复制代码
              m.room_key_request
              m.forwarded_room_key 
             

如果设备希望与该设备共享密钥,它可以通过向设备发送加密的此 消息将密钥转发到第一个设备

第一个设备 发生 m.room_key_request到 分享密钥的设备,将其中的操作设置为 request_cancellation,这些设备 应该忽略任何先前收到有相同request_id,requesting_device_id的消息

  • 加密 jwk

    以下示例 JWK Set 包含两个表示的对称密钥作为 JWK:一种指定用于 AES Key Wrap算法

第二个是 HMAC 密钥。 (内换行 值仅用于显示目的)

json 复制代码
            {"keys":
           [
             {"kty":"oct",
              "alg":"A128KW",
              "k":"GawgguFyGrWKav7AX4VKUg"},

             {"kty":"oct",
              "k":"AyM1SysPpbyDfgZld3umj1qzKObwVMkoqQ-EstJQLr_T-1qS0gZH75
         aKtMN3Yj0iPS4hcgUuTwjAzZr1Z9CAow",
              "kid":"HMAC key used in JWS spec Appendix A.1 example"}
           ]
         }
  • 算法映射

    css 复制代码
           > JSON 网络密钥	
                              { kty: "RSA",      
                              alg: "RS1" }
                              ...
                              { kty: "oct",
                              alg: "HS256" }
    
               < 算法标识符
                              { name: "RSASSA-PKCS1-v1_5",
                              hash: { name: "SHA-1" }
                              }
                              ...
                              { name: "HMAC",
                               hash: { name: "SHA-256" }
                              }
                      
  • 计算S位

使用键 K(0 < K < b),通过在键 K 的左侧填充 O 来生成 K+,直到长度变为 b 位。它没有在右边填充的原因是键长度的变化(增加)。

b 位,因为它是纯文本的块大小。有两个预定义的填充位,称为 ipad 和 opad。所有这些都是在将哈希函数应用于纯文本消息之前完成的。

markdown 复制代码
     ipad - 00110110 
     opad - 01011100

现在我们必须计算 S 位:

K+ 与 ipad 进行 XOR 处理,结果是 S1 位,相当于 b 位,因为 K+ 和 ipad 都是 b 位。我们必须在 S1 上附加纯文本消息。设 P 为纯文本消息。

S1、p0、p1 到 Pm 的每个都是 b 位。m 是纯文本块的数量。P0 是纯文本块,b 是纯文本块大小。将 S1 附加到纯文本后,我们必须应用 HASH 算法(任何变体)。

同时,我们必须应用初始化向量 (IV),它是大小为 n 位的缓冲区。因此,生成的结果是 n 位哈希码,即 H( S1 ||M ).

类似地,n 位被填充到 b 位,并且 K+ 被 exor 与 opad 产生输出 S2 位。S2 被附加到 b 位,并再次将哈希函数与 IV 应用于块。这进一步导致 n 位哈希码,即 H( S2 ||H( S1 ||M )).

  • 计算摘要

选择 K。 如果 K < b,则将 0 放在左侧,直到 k=b。K 介于 0 和 b 之间(0 < K < b) EXOR K+ 与 ipad 相当于 b 位,产生 S1 位。

将 S1 附加为纯文本 M 在 ( S1 ||M ) 填充 n 位,直到长度等于 b 位 EXOR K+,其opad相当于b位,产生S2位。

将 S2 附加到步骤 5 的输出中。 在步骤 7 中应用 SHA-512 以输出 n 位哈希码。

基于哈希的消息身份验证代码的安全性 HMAC 比 MAC 更安全,因为密钥和消息在不同的步骤中进行哈希处理:

markdown 复制代码
        HMAC(密钥,消息) = H(mod1(密钥) ||H(mod2(key) || message)。

数据最初由客户端使用私钥进行哈希处理,然后作为请求的一部分发送到服务器。然后,服务器创建自己的 HMAC。这确保了该过程不易受到攻击,这可能会导致在生成后续 MAC 时泄露关键数据。

此外,一旦该过程完成,传递的消息将变得不可逆转并抵抗黑客攻击。即使恶意方试图窃取通信,他们也无法确定其长度或解密通信,因为他们没有解密密钥。

3 HMAC的优劣势

HMAC 非常适合路由器等高性能系统,因为与公钥系统不同,它使用快速计算和验证的哈希函数。 数字签名比 HMAC 大,但 HMAC 提供相对更高的安全性。

HMAC 用于禁止公钥系统的管理。

  • 不足点

HMAC 使用共享密钥,这可能会导致不可否认性。如果发送方或接收方的密钥被泄露,那么攻击者将很容易创建未经授权的消息。

安全地管理和分发密钥可能具有挑战性。

尽管不太可能,但可能会发生哈希冲突(其中两个不同的消息产生相同的哈希)。

HMAC 的安全性取决于密钥的长度。短密钥更容易受到暴力攻击。

HMAC 的安全性取决于所选哈希函数(例如 SHA-256)的强度。如果哈希函数受到损害,HMAC 也会受到影响。

  • HMAC的应用常见场景

在激活或创建帐户期间验证电子邮件地址。 对发送到客户端浏览器然后提交回的表单数据进行身份验证。

HMAC 由于成本较低,可用于物联网 (IoT)。 每当需要重置密码时,都会发送一个可以使用一次的链接,而无需添加服务器状态。

它可以获取任意长度的消息并将其转换为固定长度的消息摘要。也就是说,即使您收到一条长消息,消息摘要也会很小,因此允许最大化带宽。

4 小结

HMAC(基于哈希的消息认证码)是一种加密技术,它使用哈希函数和密钥来确保数据的完整性和真实性。

它广泛用于 HTTPS 和 SFTP 等安全通信协议。HMAC 由于其两步哈希过程而提供比传统 MAC 更高的安全性,使其能够抵抗某些类型的攻击。

尽管存在密钥管理和潜在的哈希冲突等挑战,HMAC 仍然是一种强大而高效的方法,用于保护各种应用程序中的数据,包括电子邮件验证、物联网和密码重置机制。

相关推荐
点云侠11 分钟前
【2025最新版】PCL点云处理算法汇总(C++长期更新版)
c++·算法·计算机视觉·3d·可视化
小乌龟不会飞33 分钟前
【SpringBoot】统一功能处理
java·spring boot·后端
刘小吉37 分钟前
java net 配置局域网受信任的https
后端
zaiyang遇见1 小时前
【递归完全搜索】CCC 2008 - 24点游戏Twenty-four
算法·游戏·c/c++·全排列·信息学奥赛
考虑考虑1 小时前
JPA中的EntityGraph
spring boot·后端·spring
Mr_Xuhhh1 小时前
传输层协议 TCP(1)
运维·服务器·网络·c++·网络协议·tcp/ip·https
coolflyr_reg1 小时前
禅道集成Firebase PHP-JWT
后端
Python智慧行囊1 小时前
排序算法总结
数据结构·算法
似水流年流不尽思念1 小时前
常见的排序算法有哪些?它们的平均时间复杂度是多少?
后端·算法
孟永峰_Java2 小时前
MySQL 组合IN查询:你的索引为什么罢工了?
后端