我目前正在研究一个简单的实现流媒体平台,用于电影和图书的圈子。
故事中的秘密是谎言,每个人都应该可以访问每一个数据。用户可以将他们的数据流到允许用户观看的服务器。现在,流应该进行完整性检查,但不应该为了隐藏信息而加密其数据。为了解决这个问题,我想:
设置一个客户端(android),通过rtmp传输他们的相机并发送数字签名,作为提供身份验证、不可抵赖性和检查完整性的方法。
设置接收数据的服务器,通过读取签名并验证哈希来确认流的标识。然后服务器将此流中继到WebClient。
拥有一个web客户端,在这个客户端上,浏览者可以观看流,同时还具有发布流所使用的相同类型的安全性。
现在有几种方法可以实现这一点,但是在不影响延迟的情况下,最漂亮的方法是修改RTMP包,使其能够在每个步骤中发送额外的数据。我在RTMP的官方文档中看到,头部只剩下2个字节的空间,这不足以支持sha256签名。现在我不是一个流协议专家,所以除了给我指出文档之外,任何额外的帮助都将非常感谢。
我已经成功地调用了onmetadata,但这只在每个流中发送一次,因此在初始握手之后,它会使流受到攻击。我主要处理的是Node-Media-Server包。
tldr:需要一种方法在我的rtmp协议中添加一个数字签名,用于科学。
我是不是想错了?可以在包中插入哈希吗?或者这是一个错误的方法吗?

最佳答案

据我所知,您不需要在每个RTMP包中添加签名。
RTMP连接为客户端设置一次,并以握手开始。
C1数据包的长度为1536字节,其随机数据(1528字节)为:
此字段可以包含任意值。因为每个端点
必须区分对握手的反应
由它的对等端启动和握手,此数据
应该发送足够随机的东西。但没必要
对于加密安全的随机性,甚至动态值。
如果一切正常,您可以使用它来传递散列和在服务器端验证客户机—继续连接,或者在出现问题时关闭它。

07-24 18:37
查看更多