热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

加密:试验后量子密码学(PQC)

我们需要用量子鲁棒的方法替换所有现有的公钥方法。Cloudflare 是推动加密方法最前沿的一家公司。事实上,他们的 CIRCL 库已经包含 Kyber、SIDH 和 Frodo:Kyber 密钥交换


我们需要用量子鲁棒的方法替换所有现有的公钥方法。Cloudflare 是推动加密方法最前沿的一家公司。事实上,他们的 CIRCL 库已经包含 Kyber、SIDH 和 Frodo:


  • Kyber 密钥交换。Kyber,在本例中,我们将实施 Kyber512、Kyber738 和 Kyber1024,以创建量子鲁棒的密钥交换。

  • Kyber,SIKE 和混合密钥交换。Hybrid。

  • 使用 Cloudflare 的 SIDH。SIDH。后量子密钥交换。

  • SIKE 与 Go 的秘密共享。SIKE。具有密钥封装的后量子密钥交换。

  • CSIDH Go。CSIDH。后量子密钥交换。

  • SIKE 密钥交换。SIKE。

  • Frodo。Frodo KEM 是基于误差学习问题 (LWE) 的。


互联网安全的一个核心部分是每次我们连接到一个网站时发生的密钥交换机制。这是客户端和服务器之间协商加密密钥的地方。遗憾的是,互联网上现有的密钥交换大多使用 ECDH( 椭圆曲线 Diffie Hellman),并且可能被量子计算机破解。


总的来说,Cloudflare 的两个核心关注点是安全性和性能。他们的核心服务旨在以快速有效的方式交付内容,以及他们将在哪里缓存内容并以比从目标网站交付的速度更快的速度交付内容。因此,转向 PQC 进行密钥交换对于评估其对客户网络连接的影响是很重要的。


SIKE 正在努力解决一个重大漏洞,Kyber 在可能用于 PQC 密钥交换的方法上处于领先地位。该标准将于 2024 年完成。目前支持的方法包括 X25519Kyber512 和 X25519Kyber768。



Cloudflare 现在会要求公司注册他们的网站进行测试,并同时使用 Kyber 和经典的 X25519 密钥交换方法 ( 以保持与现有系统的兼容性 )。


测试


Cloudflare 现在已经使用 BoringSSL 库和 Go 运行了混合密钥交换方法的体验。该脚本添加 Xyber521D00 的曲线名称,并运行:


$ git clone https://github.com/cloudflare/boringssl-pq[snip]$ cd boringssl-pq && mkdir build && cd build && cmake .. -Gninja && ninja [snip]$ ./tool/bssl client -connect pq.cloudflareresearch.com -server-name pq.cloudflareresearch.com -curves **Xyber512D00** Connecting to [2606:4700:7::a29f:8a55]:443Connected. Version: TLSv1.3 Resumed session: no Cipher: TLS_AES_128_GCM_SHA256 ECDHE curve: **X25519Kyber512Draft00** Signature algorithm: ecdsa_secp256r1_sha256 Secure renegotiation: yes Extended master secret: yes Next protocol negotiated: ALPN protocol: OCSP staple: no SCT list: no Early data: no Encrypted ClientHello: no Cert subject: CN = *.pq.cloudflareresearch.com Cert issuer: C = US, O = Let's Encrypt, CN = E1


Go 代码:


package mainimport ( "crypto/tls" "fmt" "net/http")func main() { http.DefaultTransport.(*http.Transport).TLSClientCOnfig= &tls.Config{ CurvePreferences: []tls.CurveID{tls.X25519Kyber512Draft00, tls.X25519}, CFEventHandler: func(ev tls.CFEvent) { switch e := ev.(type) { case tls.CFEventTLS13HRR: fmt.Printf("HelloRetryRequest\n") case tls.CFEventTLS13NegotiatedKEX: switch e.KEX { case tls.X25519Kyber512Draft00: fmt.Printf("Used X25519Kyber512Draft00\n") default: fmt.Printf("Used %d\n", e.KEX) } } }, } if _, err := http.Get("https://pq.cloudflareresearch.com"); err != nil { fmt.Println(err) }}


为此,Cloudflare 分叉了 Go 存储库并更新了加密部分:



结果


使用 Wireshark, Cloudflare 检测 X25519 的 TLS 握手 ( 例如从客户端 Hello 然后到服务器 Hello):



我们可以看到,密钥长度为 32 字节 (256 位 )。使用 Kyber,Client Hello 发送单个数据包 ( 但比 X25519 大 ),但 Server Hello 需要三个数据包 ( 相对于 X25519 的两个 )。这是因为服务器有更大的密钥共享:



我们可以看到,Kyber512 的公钥为 800 字节,密码为 768 字节。派生的共享密钥是 32 字节,然后映射到 X25219:



总的来说,Cloudflare 发现 X25519 和混合方法之间有微小的性能差异。应该指出的是,混合方法不是后量子鲁棒,但将允许我们慢慢迁移我们的现有系统。最终,X25519 部分将被放弃,它将是纯 Kyber。


结论


离开 RSA 和 ECC 将是我们在互联网上看到的最根本的变化之一。


Source:https://medium.com/asecuritysite-when-bob-met-alice/experimenting-with-post-quantum-cryptography-the-greatest-change-in-the-internet-has-started-67a03f8f39d9


关于


ChinaDeFi - ChinaDeFi.com 是一个研究驱动的 DeFi 创新组织,同时我们也是区块链开发团队。每天从全球超过 500 个优质信息源的近 900 篇内容中,寻找思考更具深度、梳理更为系统的内容,以最快的速度同步到中国市场提供决策辅助材料。


Layer 2 道友 - 欢迎对 Layer 2 感兴趣的区块链技术爱好者、研究分析人与 Gavin(微信: chinadefi)联系,共同探讨 Layer 2 带来的落地机遇。敬请关注我们的微信公众号 “去中心化金融社区”





推荐阅读
  • k8s+springboot+Eureka如何平滑上下线服务
    k8s+springboot+Eureka如何平滑上下线服务目录服务平滑上下线-k8s版本目录“上篇介绍了springboot+Euraka服务平滑上下线的方式,有部分小伙伴反馈k ... [详细]
  • 【技术分享】一个 ELF 蠕虫分析
    【技术分享】一个 ELF 蠕虫分析 ... [详细]
  • zuul 路由不生效_Zuul网关到底有何牛逼之处?竟然这么多人在用~
    作者:kosamino来源:cnblogs.comjing99p11696192.html哈喽,各位新来的小伙伴们,大家好& ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 生成对抗式网络GAN及其衍生CGAN、DCGAN、WGAN、LSGAN、BEGAN介绍
    一、GAN原理介绍学习GAN的第一篇论文当然由是IanGoodfellow于2014年发表的GenerativeAdversarialNetworks(论文下载链接arxiv:[h ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 移动端常用单位——rem的使用方法和注意事项
    本文介绍了移动端常用的单位rem的使用方法和注意事项,包括px、%、em、vw、vh等其他常用单位的比较。同时还介绍了如何通过JS获取视口宽度并动态调整rem的值,以适应不同设备的屏幕大小。此外,还提到了rem目前在移动端的主流地位。 ... [详细]
  • 网卡工作原理及网络知识分享
    本文介绍了网卡的工作原理,包括CSMA/CD、ARP欺骗等网络知识。网卡是负责整台计算机的网络通信,没有它,计算机将成为信息孤岛。文章通过一个对话的形式,生动形象地讲述了网卡的工作原理,并介绍了集线器Hub时代的网络构成。对于想学习网络知识的读者来说,本文是一篇不错的参考资料。 ... [详细]
  • 本文讨论了微软的STL容器类是否线程安全。根据MSDN的回答,STL容器类包括vector、deque、list、queue、stack、priority_queue、valarray、map、hash_map、multimap、hash_multimap、set、hash_set、multiset、hash_multiset、basic_string和bitset。对于单个对象来说,多个线程同时读取是安全的。但如果一个线程正在写入一个对象,那么所有的读写操作都需要进行同步。 ... [详细]
  • Introduction(简介)Forbeingapowerfulobject-orientedprogramminglanguage,Cisuseda ... [详细]
  • 解决浏览器打开网页后提示“dns_probe_possible 怎么解决”的方法
    在使用浏览器进行网上冲浪的时候遇到故障是一件很常见的事情,很多用户都遇到过系统提示:dns_probe_possible。从提示中可以看出和DNS是有一定的关系的,经过小编测试之后 ... [详细]
  • 如何搭建服务器环境php(2023年最新解答)
    导读:本篇文章编程笔记来给大家介绍有关如何搭建服务器环境php的相关内容,希望对大家有所帮助,一起来看看吧。本文目录一览:1、怎么搭建p ... [详细]
  • CISCO ASA防火墙Failover+multiple context详细部署By 年糕泰迪[操作系统入门]
    一.文章概述本文主要就CISCOASA防火墙的高可用和扩张性进行阐述和部署。再cisco防火墙系列中主要有3种技术来实现高可用和扩张性。分别是Failover,multiplese ... [详细]
author-avatar
十只北羊鱼
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有