Follow Excellent, Success will Chase you

0%

显示认证系统

在图像数据通过无线网络或者有线网络,将S端采集的图像数据编码后,传送到R端进行解码显示。在编解码过程中我们使用的H264编码协议,此协议是一个开源的编解码协议。我们在进行数据传输时是在S端采集一帧数据后进行H264编码,发送到R端进行解码显示。在这个过程中如果数据的传输通道被别人截取,然后将其他图像数据的H264码流,发送至R端,那么R端同样也会对其进行解码显示,因为都是H264编码格式的码流。但是此时R端将显示不是我们期望的图像数据,如果图像数据存在恶意性,将造成不良影响。

图像显示认证系统,确保R端进行解码显示的数据,只能是S端发送的图像数据码流,保证其唯一性。其他的H264码流均不进行解码显示,避免传输通道被截取后,其他H264格式的图像数据码流被解码显示。

系统启动

video_sc_display_start

  1. S和R上电正常启动,并配对建立连接
  2. 启动加密模块,通过RSA加密算法生成公钥和私钥。
    • 私钥通过AES使用密码(MAC地址或机器码等)加密,增加破译难度,然后保存在S端的内存中(不能保存文件)
    • 公钥通过与R建立TCP连接,发送给R端

发送端

video_sc_display_S

  1. 采集一帧图像数据,并进行H264编码,生成一帧码流
  2. 对该帧码流使用SHA128获取其摘要(数字签名),是保证该帧数据的唯一性的凭证
  3. 通过RSA加密算法使用私钥对获取的摘要进行加密
  4. 将加密后的摘要合并到码流的头部,并进行发送。

接收端

video_sc_display_R

  1. R端接收到一帧码流数据后,进行解析。将头部的摘要和实际码流分离。
  2. 将获取后的码流使用SHA128计算其摘要B(数字签名)
  3. 将获取后的摘要通过RSA使用公钥进行解密,得到摘要A
  4. 对比摘要A和摘要比,如果不相同,说明S端发送的数据被人篡改,将该帧丢弃;如果相同,说明该帧是S端发送的数据,正常进行显示。

选用RSA加密算法的原因

RSA是非对称加密,在S端生成私钥和公钥后,只要对S端的私钥进行保存妥善保存即可,而发送给R端的公钥即使丢失对整个流程的安全性也不受影响。

为什么不直接使用RSA加密数据而是加密摘要

RSA加密算法的耗时时间随加密数据的增加而增加,加密摘要主要是摘要只有128bit,加解密耗时小,并且固定。

-------------本文结束感谢您的阅读-------------
  • 本文作者: Winddoing
  • 本文链接: https://winddoing.github.io/post/48058.html
  • 作者声明: 本博文为个人笔记, 由于个人能力有限,难免出现错误,欢迎大家批评指正。
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!