TLS协议分析 (八) 实现与开源项目

wireshark分析TLS协议 wireshark分析TLS协议 一.tls协议介绍 SSL:(Secure Socket Layer,安全套接字层),位于可靠的面向连接的网络层协议和应用层协议之间的一种协议层。SSL通过互相认证、使用数字签名确保完整性、使用加密确保私密性,以实现客户端和服务器之间的安全通讯。该协议由两层组成:SSL记录协议和SSL握手协议 安全传输层协议(TLS)用于在两个通信应用程序之间提供保密性和数据完整... 阅读详情

三. TLS协议的代码实现

TLS的主要实现:

  • OpenSSL
  • boringssl(Google)
  • libressl
  • s2n(Amazon)
  • nss(Mozilla)
  • polarssl
  • botan
  • gnutls(gpl)
  • cyassl
  • go.crypto

openssl 的 tls 协议实现有 6W 行,libressl 3.68W行, polarssl 1.29 W行, Botan 1.13 W行

openssl是其中代码最糟糕的(没有之一)。
openssl提供了的api都太过于底层,api设计的也很费解,而且严重匮乏文档。
请参考 [《令人作呕的OpenSSL》] 链接 http://blog.youkuaiyun.com/dog250/article/details/24552307

不幸的是,OpenSSL是用的最广泛的,是事实上的标准。

boringssl
Google’s OpenSSL fork by Adam Langley (@agl__)

https://github.com/sweis/crypto-might-not-suck

四. TLS协议的部署与优化

这个方面网上的文章还是不少的,本文就简略一点。

全站https时代正在到来!,
移动互联网对人们生活的介入越来越深人,用户越来越多的隐私数据和支付数据通过网络传输,人们的隐私意识安全意识不断提高;运营商流量劫持,强行插入广告越来越引起反感。因此,各互联网大厂都开始切换到https。

例如,2015年3月百度全站切换到https,百度运维部的介绍文章:[《全站 https 时代的号角 : 大型网站的 https 实践系列》] 链接 http://op.baidu.com/2015/04/https-index/ 。

不久后淘宝切了全站https,https://www.taobao.com/
http://velocity.oreilly.com.cn/2015/index.php?func=session&id=8

国外:由Snowden爆料,美国人发现NSA在大范围深度地监听互联网; 还有openssl连续被爆多个严重安全漏洞。之后近2年,各种加密通信协议,软件,项目开始热门,各大厂商开始关注密码协议,做数据加密,信息安全。(openssl资助,pfs被重视,)

Google的性能数据:

“In January this year (2010), Gmail switched to using HTTPS for
everything by default. … In order to do this we had to deploy no
additional machines and no special hardware. On our production
frontend machines, SSL accounts for < 1% of the CPU load, < 10 KB of
memory per connection, and < 2% of network overhead…

If you stop reading now you only need to remember one thing: SSL is
not computationally expensive any more.”

— Overclocking SSL blog post by Adam Langley (Google https://www.imperialviolet.org/2010/06/25/overclocking-ssl.html )

google的优化:
https://bit.ly/gottls
https://www.imperialviolet.org/2010/06/25/overclocking-ssl.html
https://istlsfastyet.com/
https://www.ssllabs.com/downloads/SSL_TLS_Deployment_Best_Practices.pdf
http://chimera.labs.oreilly.com/books/1230000000545/ch04.html

TLS协议分析 (八) 实现与开源项目_im

baidu的经验:
http://op.baidu.com/2015/04/https-index/

aws的配置
http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/elb-https-load-balancers.html

可以参考byron之前给出的一个介绍nginx配置的文章 [Nginx下配置高性能,高安全性的https TLS服务] https://blog.helong.info/blog/2015/05/08/https-config-optimize-in-nginx/ ,本人提供售后咨询服务,哈哈。

CipherSuite配置(Mozilla的权威配置)
https://wiki.mozilla.org/Security/Server_Side_TLS

hardenedlinux的这个文档:SSL/TLS部署最佳实践v1.4:
http://hardenedlinux.org/jekyll/update/2015/07/28/ssl-tls-deployment-1.4.html

全站切https,值得关注的一个点是cdn切https,如果cdn资源不使用cdn提供商的域名的话,之前会有私钥必须得交给cdn提供商的安全风险,但是幸运的是cloudflare提出了keyless ssl方案,解决了这个问题
https://github.com/cloudflare/keyless,cdn切https应该可以借鉴。

有时候我们会用wireshark之类的工具抓包,来调试http协议,但是切换到https后,都变成二进制密文了,直接抓包是行不通了,那怎么调试协议呢?
解决办法是有的,可以参考 https://imququ.com/post/how-to-decrypt-https.html
参考 https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/Key_Log_Format

五. 更多的加密通信协议case:QUIC,iMessage,TextSecure, otr, ios HomeKit,libsodium

时间有限,下面有些协议就没有做详细的分析了,读者自己去看吧。

1. QUIC

QUIC = TCP+TLS+SPDY
https://www.chromium.org/quic

其中的 crypto design文档是本文关注的。

http://network.chinabyte.com/162/13361162.shtml
http://blog.chromium.org/2015/04/a-quic-update-on-googles-experimental.html
截止2015.04,从Chrome到Google server的流量的大概50% 是走的QUIC协议,而且还在不断增加。
据说减少了YouTube的30%的卡顿。

https://github.com/devsisters/libquic

2. apple ios iMessage

iOS Security Guide : https://www.apple.com/business/docs/iOS_Security_Guide.pdf

Apple 的 iMessage系统的密码学安全机制设计,端到端加密,前向安全(PFS),签名使用ECDSA P-256,非对称加密使用RSA 1280 bit,苹果自己维护一个 用户名—》公钥 的目录服务。

iMessage在注册时,给每个用户生成一对 RSA-1280 密钥用作非对称加密,一对 NIST P-256 ECDSA 密钥用作签名,2个私钥本地保存,公钥上传给Apple的目录服务器(IDS)。

当要发送消息的时候,根据接收方的用户名,从IDS里面找到RSA公钥 和 APNS 地址。然后随机生成 128 比特密钥,用 AES-CTR-128 加密要发送的消息,用接收方的 RSA 1280 公钥,使用 OAEP 填充加密 128比特aes密钥。然后拼接 aes密文和rsa密文,对结果使用发送方的 ECDSA 私钥,用sha1算一次数字签名。
然后把aes密文,rsa密文,数字签名拼接起来,发给 APNS 投递给接收方。

如果要发送大文件,就生成一个key,用 aes-ctr-256 加密文件,并计算一个sha1,然后把key和sha1 放入消息里面发送。

3. apple ios HomeKit

iOS Security Guide : https://www.apple.com/business/docs/iOS_Security_Guide.pdf

Apple的HomeKit,是 WWDC2014 上提出的 iot 智能家居开发平台 (iot啊,目前最火的概念啊,各种高大上啊)。
可以看到 HomeKit 作为一个全新的协议, 抛弃了历史遗留算法,直接采用了目前最先进的算法

HomeKit 密码学安全机制的设计:
使用Ed25519做 公钥签名/验证,使用 SRP(3072 bit) 做来在iOS设备和HomeKit配件之间交换密码并做认证,使用 ChaCha20-Poly1305做对称加密,
使用HKDF-SHA512做密钥拓展。每个session的开始用Station-to-Station 协议做密钥协商和认证,
随后使用Curve25519做密钥协商,生成共享key。

4. TextSecure

TextSecure是一个端到端im加密通信协议,由WhisperSystem公司设计,目前whatsapp和WhisperSystem公司有合作,看网上资料,2014年11月开始,whatsapp已经开始使用TextSecure协议来做端到端加密(消息来源: https://whispersystems.org/blog/whatsapp/
http://www.wired.com/2014/11/whatsapp-encrypted-messaging/)。

TextSecure V2 协议:
https://github.com/WhisperSystems/TextSecure/wiki/ProtocolV2
https://github.com/trevp/axolotl/wiki
https://whispersystems.org/blog/advanced-ratcheting/

The TextSecure encrypted messaging protocol 是otr的一个衍生协议,主要有2个不同点:
1.ECDSA代替DSA
2.某些数据结构压缩

5. otr 协议

标准文档见:https://otr.cypherpunks.ca/Protocol-v3-4.0.0.html

open kullo协议
https://www.kullo.net/protocol/

Choice of algorithms
Whenever we write about symmetric or asymmetric encryption or signatures, we mean the following algorithms, modes and parameters:

symmetric encryption: AES-256 in GCM mode
asymmetric encryption: RSA-4096 with OAEP(SHA-512) padding
asymmetric signatures: RSA-4096 with PSS(SHA-512) padding

6. libsodium/NaCL

libsodium/NaCL 值得重点介绍,大力推广 。
新的没有兼容包袱的系统,都值得考虑用 NaCL来代替 openssl。
libsodium是对NaCL的封装,NaCL大有来头,作者 DJB 是密码学领域的权威人物,chacha20,Curve25519 的作者 。
没有历史包袱的项目,强烈建议使用 libsodium/NaCL。

这篇文章介绍了NaCL和openssl相比的各方面改进
http://cr.yp.to/highspeed/coolnacl-20120725.pdf
https://cryptojedi.org/peter/data/tenerife-20130121.pdf
http://nacl.cr.yp.to/

7. Tox.im

一款实用NaCL的端到端加密im
https://github.com/irungentoo/toxcore/blob/master/docs/updates/Crypto.md

8. CurveCP

http://curvecp.org/security.html

9. tcpcrypt

http://tcpcrypt.org/

10.noise

https://github.com/trevp/noise/wiki

11.tcpcrypt

http://tcpcrypt.org/

12. netflix MSL

http://techblog.netflix.com/2014/10/message-security-layer-modern-take-on.html

http://www.infoq.com/cn/news/2014/11/netflix-safe-communication

13.Amazon KMS 密钥管理服务 白皮书

https://d0.awsstatic.com/whitepapers/KMS-Cryptographic-Details.pdf

值得注意和借鉴的点:

  • 对称加密算法选择了 AES-GCM-256

  • 数字签名有2种:ECDSA,RSA,

    • ECDSA 的曲线选择了 secp384r1 (P384),hash 算法选择了 SHA384
    • RSA 选择2048位,签名体制选择 RSASSA-PSS,hash 算法选择了 SHA256
  • 密钥协商,使用ECDH,选择曲线 secp384r1 (P384),有2种用法

    • one-pass ECDH.
    • ECDHE
  • 电子信封加密,KMS内置了电子信封。

    电子信封就是,你预先知道对方的长期公钥,你有一个消息要发送给对方,所以你生成一个随机的msgKey,然后 ciphertext = Encrypt(msgKey, message), 并且用对方的公钥加密 msgKey: encKey = Encrypt(k, msgKey), 最后把(encKey, ciphertext) 发给对方,这样,只有公钥对应私钥的拥有者才能打开信封。典型应用比如 OpenPGP。

其中的 one-pass ECDH,大概意思是:
发起方有一对长期使用的签名密钥对,发起方生成一对临时的 ECDH 密钥,用自己的长期签名密钥签署 临时ECDH公钥。对端有一对长期 ECDH 密钥,收到发起方发来的 ECDH 公钥后,验证签名,并且用自己的长期ECDH私钥和收到的公钥协商出共享密钥。
整个过程中,只是用了一对临时ECDH密钥,2对长期密钥。

ECDHE就是比较典型的ECDHE了,和TLS用法一样:双方都持有一对长期使用的签名密钥对,并拥有对方的签名公钥,然后分别生成一对临时ECDH密钥,用自己的签名私钥签署ECDH公钥,把得出的签名和ECDH公钥发给对方,
双方收到对方的ECDH公钥后,验证签名,通过后用对方的ECDH公钥和自己的ECDH私钥协商出共享密钥。DONE。

白皮书中还举了几个例子.

​ 本文转自微信后台团队,如有侵犯,请联系我们立即删除

OpenIMgithub开源地址:

https://github.com/OpenIMSDK/Open-IM-Server

OpenIM官网 : https://www.rentsoft.cn

**OpenIM官方论坛: ** https://forum.rentsoft.cn/

更多技术文章:

开源OpenIM:高性能、可伸缩、易扩展的即时通讯架构
https://forum.rentsoft.cn/thread/3

【OpenIM原创】简单轻松入门 一文讲解WebRTC实现1对1音视频通信原理
https://forum.rentsoft.cn/thread/4

【OpenIM原创】开源OpenIM:轻量、高效、实时、可靠、低成本的消息模型
https://forum.rentsoft.cn/thread/1

使用Wireshark抓包分析TLS协议 TLS(Transport Layer Security,传输层安全)是一种用于保护网络通信安全的协议。它建立在SSL(Secure Sockets Layer,安全套接层)协议之上,用于在客户端和服务器之间创建加密连接,确保通信的保密性、完整性和认证性。 阅读详情

相关推荐

TLS协议详解

万字详解TLS协议,以及如何优化Https

GeniusLS的博客 2562

HTTPS & OpenSSL & BoringSSL

SSL介绍 SSL是Secure Sockets Layer(安全套接层协议)的缩写,可以在Internet上提供秘密性传输。Netscape公司在推出第一个Web浏览器的同时,提出了SSL协议标准。其目标是保证两个应用间通信的保密性和可靠性,可在服务器端和用户端同时实现支持。已经成为Internet上保密通讯的工业标准。 SSL能使用户/服务器应用之间的通信不被攻击者窃听,并且始终对服务器进...

来啊 快活啊 1万+

TLS抓包分析

TLS(Transport Layer Security, 传输层安全):用于保证Web通信以及其他流行协议的安全。 TLS的前身是安全套接字层(SSL)。 TLSv1.2版本运行在面向流的协议(如TCP)之上。 记录协议提供分片、压缩、完整性保护以及对客户端与服务器之间所交换数据的加密服务。 信息交换协议负责建立身份,进行认证,提示警报,以及为用于每一条连接的记录协议提供唯一的密钥材料。 TL...

神童i的博客 7332

开源库BearSSL介绍及使用

BearSSL是用C语言实现的SSL/TLS协议,它的源码可直接通过git clone https://www.bearssl.org/git/BearSSL 下载,它的license是MIT,最新版本为0.6。 BearSSL的主要特性是: (1). 正确且安全:对不安全的协议版本和算法选择是不支持的,密码算法的实现默认采用固定时间(constant-time)。 (2). 较少的代码(B...

网络资源是无限的 3121

TLS握手流程分析

客户端发送:用于初始化会话消息,该消息主要包含如下信息:: 客户端发送它所支持的最高 SSL/TLS 版本;:一个 32 字节的客户端随机数,该随机数被服务端生成通信用的对称密钥(master secret);:session ID 被客户端用于恢复之前的会话: 客户端发送它所支持的加密套件列表服务端发送:服务端发送双方所支持的最高的 SSL/TLS 版本;:一个 32 字节的服务端随机数,被客户端用于生成通信用的对称密钥(master secret);:用于会话恢复;

weixin_43894455的博客 4341

Homekit:带有Arduino框架的ESP32的Homekit

家庭套件 这正在进行中! 这是什么 该应用程序将ESP32上的Apple Homekit暴露于温度和湿度等传感器。 不需要其他桥梁,例如 ! 它基于构建,并使用作为组件。 为了同时暴露不同的传感器,使用了插件系统。 一个插件可以 将多个传感器(例如温度探头)暴露为Homekit附件 在OLED显示器上显示信息 将传感器值转发到例如数据库或mqtt代理 通过Web界面或REST API配置 等等 您可以一次使用多个插件。 有几个可用的示例插件,例如 BME280 暴露具有EVE历史记录支持的温度,湿度和压力传感器。 DHT22 公开具有EVE历史记录支持的温度和湿度传感器。 固态硬盘1331 在SSD1331 OLED显示器上查看QR码以进行配对和传感器值。 固态硬盘1306 在SSD1306 OLED显示屏上查看QR码以进行配对和传感器值。 MiFlora 通过Nimble将MiFlora Flower蓝牙设备连接到Homekit。 该插件使用Nimble公开了具有EVE历史记录的温度,湿度,肥力和光密度传感器 RC开关 作为具有EVE历史记录和计划支持的奥特莱斯服务公开

【亲测免费】 探索Apple Home Key:智能家居安全的新篇章

探索Apple Home Key:智能家居安全的新篇章 在这个数字化时代,Apple Home Key项目为智能锁和家庭自动化带来了前所未有的便利与安全性。该项目利用NFC技术,让您能够通过iPhone或Apple Watch轻松解锁经过HomeKit认证的智能门锁。让我们深入了解这个创新技术,并了解其背后的精妙之处。 项目介绍 Apple Home Key是一种NFC协议,用于在用户的Apple...

gitblog_00007的博客 1321

手把手教你用Xilinx SelectIO IP核搞定ADS42LB69高速ADC的DDR数据采集(附仿真调试技巧)

本文详细介绍了如何使用Xilinx SelectIO IP核实现ADS42LB69高速ADC的DDR数据采集,包括IP核配置、仿真验证和硬件调试技巧。通过精准的时序控制和实战调试方法,解决高速数据采集中的时序对齐问题,提升系统稳定性和可靠性。特别适合FPGA工程师和高速ADC接口设计者参考。

weixin_42533622的博客 152

探秘Mbed TLS:强大的开源加密库

是一个由ARM Maintained的开源项目,它提供了一个轻量级的加密库,适用于嵌入式系统和物联网设备。这个项目包含了SSL/TLS协议、X.509证书解析、密码算法和各种实用工具,是开发安全网络应用的得力助手。 ## 项目简介 Mbed TLS起源于 PolarSSL,2015年被ARM收购后更名为Mbed TLS,并逐渐成为物联网领域的标准加密组件。它的设计目标是在资源有限的设备上实现高...

gitblog_00036的博客 838

避坑指南:CoppeliaSim逆运动学仿真常见报错解决方案(附UR5+RG2爪完整Lua脚本)

本文针对CoppeliaSim机器人仿真中常见的逆运动学报错问题,提供了详细的避坑指南和解决方案。文章以UR5机械臂与RG2夹爪组合为例,深入剖析了模型装配、Dummy节点配置、Lua脚本编写等关键步骤中的常见错误,并附带了完整的、带错误处理的脚本代码,帮助用户快速定位并解决IK仿真失败问题,提升仿真效率。

weixin_29054399的博客 267

allegro 约束管理Constraint Manager(一)

介绍Cadence allegro 约束管理器CM的使用方法。

weixin_38975819的博客 8713

用wireshark抓包分析TLS协议

一、SSL/TLS简介 1、协议介绍 SSL/TLS是保护计算机网络通讯安全的一类加密协议,它们在传输层上给原先非安全的应用层协议提供加密保护,如非安全的HTTP协议即可被SSL/TLS保护形成安全的HTTPS协议。 SSL、TLS协议其实是有所差异的,TLS协议是继承了SSL协议并写入RFC,标准化后的产物。因此,通常使用SSL来指代SSL协议和TLS协议。 SSL (Secure Socket Layer)安全套接字层协议 • SSL通过互相认证、使用数字签名确保完整性、使用加密确保私密性,以实现客

m0_50084718的博客 2万+

手机拍照也能玩高光谱?教你用TensorFlow Lite在Android上实现实时RGB转高光谱

本文介绍了如何利用TensorFlow Lite在Android设备上实现实时RGB到高光谱的图像重构技术。通过深度学习模型优化和移动端部署策略,使智能手机具备专业级光谱分析能力,适用于农业检测、化妆品分析等多个领域。

weixin_29091105的博客 244

TLS协议分析 与 现代加密通信协议设计

本文目标: 学习鉴赏TLS协议的设计,透彻理解原理和重点细节 跟进一下密码学应用领域的历史和进展 整理现代加密通信协议设计的一般思路 本文有门槛,读者需要对现代密码学有清晰而系统的理解,建议花精力补足背景知识再读。本文最后的参考文献里有一些很不错的学习资料。 目录 : TLS协议分析 与 现代加密通信协议设计 一. TLS协议的设计目标: 1.1 密码学的方法论 1....

yetugeng的专栏 7438

药物对接仿真软件:HADDOCK_(16).实践项目:抗体-抗原对接案例

定义分子结构文件。

kkchenjj的博客 578

jdbc从入门到精通(全)

前言 Java语言连接数据库(Java DataBase Connectivity) 面向接口/抽象编程(降低程序的耦合度,提高程序的扩展力)类似多态机制

码农研究僧的博客 1757

解密TLS协议全记录之TLS协议剖析记录

引言 想要解密TLS的首当其冲的点,便是要深入了解TLS中的RFC协议文档。

walleva96的博客 1万+

R语言基于机器学习三分类结果、计算三分类混淆矩阵、计算每一个类别对应的特异度(specificity)、灵敏度(sensitivity)、PPV、NPV

R语言基于机器学习三分类结果、计算三分类混淆矩阵、计算每一个类别对应的特异度(specificity)、灵敏度(sensitivity)、PPV、NPV

data+scenario+science+insight 645

TLS协议基本原理与Wireshark分析_wireshark分析tls协议

传输层安全协议(TLS)是一种加密通信协议,用于确保在网络上的数据传输过程中的安全性和隐私保护。TLS的前身是安全套接层协议(SSL),后来在标准化过程中发展成为TLS。TLS协议的主要目标是通过加密和认证机制,保护网络通信的机密性、完整性和身份验证,以抵御可能的网络攻击和窃听。

logic1001的博客 1102

英飞凌 AURIX TC3XX 系列单片机的 NVM-Flash 介绍

简单介绍英飞凌 AURIX TC3XX 系列多核单片机的 Flash,便于快速上手使用

大橙子的博客 6637

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

TLS协议详解!

TLS简介 SSL 即安全套接字层,它在 OSI 七层网络模型中处于第五层,SSL 在 1999 年被 IETF(互联网工程组)更名为 TLS ,即传输安全层,直到现在,TLS 一共出现过三个版本,1.1、1.2 和 1.3 ,目前最广泛使用的是 1.2,所以接下来的探讨都是基于 TLS 1.2 的版本上的。 TLS1.2 和 TLS 1.3 的区别 在 TLS 1.2 的握手中,一般是需要 4 次握手,先要通过 Client Hello (第 1 次握手)和 Server Hello(第 2 次握手) 消

weixin_46622350的博客 3万+

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

TLS协议分析

一、实验目的 1.本次实验主要目的是分析访问网站时捕捉TLS包,并且对TLS协议进行分析。 2.分析连接建立的完整过程,如:TCP三次握手、SSL安全连接,使用TLS协议连接、协商过程,加密传送的状态、TCP挥手等。 3.查看TLS报文的完整字段,并且分析字段的意义。 二、实验准备 1.系统:win10 软件:wiresharke 2.了解基本的TLS协议,以及其工作流程 三、实验原理 ...

dixunzhong8774的博客 1036

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

SSL/TLS协议交互流程分析

本文参考SSL/TLS协议运行机制的概述tls运行机制,这里不细说,建议细看HTTPS与TLSThe Transport Layer Security (TLS) Protocol v1.2ssl/tls基础介绍SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议

rtmdk的博客 2万+
上一篇: TLS协议分析 (七) 安全性分析
下一篇: TLS协议分析 (九) 现代加密通信协议设计
OpenIM
博客等级 码龄5年 295粉丝 68原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值