【发布时间】:2019-10-22 08:12:57
【问题描述】:
我目前正在研究电影和书籍圈中使用的流媒体平台的简单实现。
故事中的秘密都是谎言,每个人都应该可以访问每个数据。用户可以将他们的数据流式传输到允许用户观看的服务器。现在流应该有完整性检查,但不应该为了隐藏信息而加密它的数据。为了解决这个问题,我想:
- 设置一个客户端 (android),通过 RTMP 流式传输他们的相机并发送数字签名作为提供身份验证、不可否认性和检查完整性的方式。
- 设置一个接收数据的服务器,通过读取签名和验证哈希来确认流的身份。然后服务器将此流中继到 webclient..
- 拥有一个网络客户端,观众可以在其中观看视频流,同时还具有发布视频流所使用的相同类型的安全性。
现在我想到了几种方法来实现这一点,但在不影响延迟的情况下最漂亮的方法是修改 RTMP 数据包,以便能够在每一步中发送额外的数据。我在 RTMP 的官方文档中读到,标头仅留出 2 个字节的空间,这不足以支持 sha256 签名。现在我不是流媒体协议专家,因此除了向我指出文档之外的任何其他帮助将不胜感激。
我已经通过调用 OnMetaData 获得了成功,但这只是每个流发送一次,因此在初始握手后它会使流容易受到攻击。我主要使用Node-Media-Server 包。
TLDR:为了科学,需要一种方法来为我的 RTMP 协议添加数字签名。 我在想这个错误的方式吗?是否可以在数据包中插入哈希?或者这是错误的方法?
【问题讨论】:
-
您可以将任何您想要的内容放入脚本标签中。
-
@szatmary 抱歉,您能否详细说明一下,我在规范中找不到任何关于脚本标签的内容 adobe.com/devnet/rtmp.html
-
RTMP 携带 FLV。查看 FLV 规范。
-
@szatmary 这将解决媒体传输期间的问题,但不会保护初始握手和除数据传输之外的其他类型的 RTMP 传输。我将研究 flv 流本身,感谢您的输入。
标签: node.js encryption tcp video-streaming rtmp