河南网站建设电话,手机网站做多宽的图片,广卅网络设计公司,alexa排名分析第一阶段#xff1a;信令与 ICE 候选地址交换
第二阶段#xff1a;ICE 连通性检查#xff08;建立原始通道#xff09;
第三阶段#xff1a;DTLS 握手#xff08;在 ICE 建立的通道上#xff09;
第四阶段#xff1a;SRTP 密钥导出与媒体传输
完整流程的时间线总结…第一阶段信令与 ICE 候选地址交换第二阶段ICE 连通性检查建立原始通道第三阶段DTLS 握手在 ICE 建立的通道上第四阶段SRTP 密钥导出与媒体传输完整流程的时间线总结别的不说先上图流程图对应的plantUML代码:sequenceDiagram participant A as Peer A participant Sig as 信令服务器 participant B as Peer B participant STUN as STUN/TURN 服务器 Note over A, B: 第一阶段本地准备与信令交换 A-A: 1. 创建PeerConnectionbr收集ICE候选地址 A-Sig: 2. 发送SDP Offerbr(含ICE候选地址) Sig-B: 转发Offer B-B: 3. 收集自己的ICE候选地址 B-Sig: 4. 发送SDP Answerbr(含ICE候选地址) Sig-A: 转发Answer Note over A, B: 第二阶段ICE连接性检查 A-B: STUN请求 (测试路径1) B-A: STUN响应 (路径通的确认) Note over A,B: 建立双向连接通道br但还不能传媒体 Note over A, B: 第三阶段DTLS握手在ICE选定的通道上 rect rgb(240, 255, 240) A-B: ClientHello B-A: ServerHello, Certificate, ServerKeyExchange,brServerHelloDone A-B: ClientKeyExchange, ChangeCipherSpec, Finished B-A: ChangeCipherSpec, Finished end Note over A, B: DTLS握手完成br双方获得主密钥 Note over A, B: 第四阶段SRTP密钥导出与媒体流传输 rect rgb(240, 248, 255) A-A: 5. 从DTLS主密钥导出brSRTP加密密钥 B-B: 从相同的DTLS主密钥导出brSRTP解密密钥 A-B: 6. 开始传输加密的SRTP媒体流 B-A: 传输加密的SRTP媒体流 end第一阶段信令与 ICE 候选地址交换这部分与之前描述一致Peer A创建RTCPeerConnection收集 ICE 候选地址主机、反射、中继Peer A通过信令服务器发送SDP Offer包含 ICE 候选地址和媒体信息Peer B收到 Offer 后收集自己的 ICE 候选地址Peer B通过信令服务器发送SDP Answer包含自己的 ICE 候选地址第二阶段ICE 连通性检查建立原始通道这是DTLS 的前提双方使用 STUN 协议测试所有候选地址对找到可通行的最佳路径可能是 P2P 直连或通过 TURN 中继重要此时建立的是一个原始的数据传输通道但还没有加密不能传输敏感媒体数据第三阶段DTLS 握手在 ICE 建立的通道上这是安全性的核心。一旦 ICE 完成两端立即在已建立的通道上启动 DTLS 握手什么是 DTLSDTLS Datagram Transport Layer Security数据包传输层安全它是 TLSHTTPS 使用的协议的 UDP 版本专门为无连接、不可靠的 UDP 通道设计能处理丢包、乱序等问题DTLS 握手步骤ClientHello Peer A作为 DTLS 客户端向 Peer B 发送 ClientHello 消息ServerHello CertificatePeer B作为 DTLS 服务器回复 ServerHello关键Peer B 发送自己的DTLS 证书浏览器自动生成的临时证书密钥交换双方交换密钥交换参数如 ECDHEFinished双方交换 Finished 消息验证握手完整性重要规则SDP 中的 afingerprint 属性在 Offer/Answer 交换时每个对等端都包含了自己证书的指纹哈希值证书验证DTLS 握手时对端会验证收到的证书是否与 SDP 中声明的指纹匹配防止中间人攻击角色确定通常发送 Offer 的一方作为 DTLS 客户端发送 Answer 的一方作为 DTLS 服务器握手结果双方协商出一个共享的主密钥建立了加密的 DTLS 信道但DTLS 信道不直接传输媒体而是用来派生媒体加密密钥第四阶段SRTP 密钥导出与媒体传输从 DTLS 到 SRTP密钥导出函数双方使用 DTLS 握手生成的主密钥通过标准的密钥导出函数如 TLS 的 PRF计算出一对SRTP 密钥材料生成两对密钥SRTP 加密密钥/盐用于发送媒体SRTP 解密密钥/盐用于接收媒体密钥同步因为双方有相同的主密钥所以导出的 SRTP 密钥也是匹配的开始媒体传输SRTP 封装音频/视频数据被封装成SRTP 包Secure RTP加密传输使用导出的 SRTP 密钥对媒体进行加密和认证完整保护提供机密性媒体内容加密完整性防止数据篡改重放保护防止攻击者重放旧数据包完整流程的时间线总结1. 信令交换SDP Offer/Answer ICE 候选地址交换 ↓ 2. ICE 连接检查建立原始 UDP 通道 ↓ 3. DTLS 握手在建立的 UDP 通道上进行加密握手 ↓ 4. SRTP 密钥导出从 DTLS 主密钥生成媒体加密密钥 ↓ 5. SRTP 媒体流开始传输加密的音视频数据 ↓ 6. (可选) SCTP/DataChannel在 DTLS 信道上建立加密的数据通道