我正在构建一个SoC来同时捕获和加密视频。我想了解哪些加密协议可以用来加密视频流。
视频流将来自相机传感器,如CCD。如果有必要,可以在SoC上对其进行预处理,使其成为特定的格式(例如压缩格式),然后再加密。如果可能的话,也可以从原始格式加密。加密协议应该有一个高效的硬件实现,可以在SoC上实现。
此嵌入式系统的目标是通过减少可能向攻击者公开清晰视频流的对Soc的潜在硬件或软件攻击来实现尽可能高的安全性。
请注意,这是一个自包含的芯片,视频数据将不会通过WiFi或网络发送。它会留在芯片里。
发布于 2018-03-03 14:24:42
我正在构建一个SoC来同时捕获和加密视频。我想了解哪些加密协议可以用来加密视频流。
建造微型SoC?你确定你没有在像圆周率这样的大板上使用SoC吗?你有视频压缩加速吗?
视频流将来自相机传感器,如CCD。如果有必要,可以在SoC上对其进行预处理,使其成为特定的格式(例如压缩格式),然后再加密。如果可能的话,也可以从原始格式加密。加密协议应该有一个高效的硬件实现,可以在SoC上实现。
为了提高性能,您需要硬件AES。尽管您可以使用AES-GCM,但这将需要硬件中的GHASH来提高性能;相反,您可以忽略GHASH,而使用基于并行分组密码的MAC,例如PMAC。
此嵌入式系统的目标是通过减少可能向攻击者公开清晰视频流的对Soc的潜在硬件或软件攻击来实现尽可能高的安全性。
到目前为止,我们有AES-PMAC,虽然你要求更高的安全性,但这是一个很好的选择,所以让我们增加现在的抗误用能力。偶然的不正当使用可能以多种方式发生,包括但不限于:电源故障、包装计数器或错误地处理备份和恢复。我建议您使用AES-PMAC-SIV。
如果原始大小是恒定的,对原始未压缩视频进行加密不会泄漏任何内容。例如,加密压缩数据可能会泄漏视频流中的运动。
在这两种情况下,您都应该将视频流分割到段边框上,这样就不会有任何段跨越多个密文消息。我们现在有一个无界的可变长度消息流要加密。您可以使用OAE2结构家族来最大限度地提高当前的误用抗性。使用链强制顺序解密,或流启用无序解密.后者是理想的视频,因为它支持查找,而不依赖于以前的块(如果您想要使用磁盘作为环缓冲区的关键)。
请注意,这是一个自包含的芯片,视频数据将不会通过WiFi或网络发送。它会留在芯片里。
如果数据从未离开磁盘,为什么要加密视频流而不是使用完整的磁盘加密(LUKS,LUKS2)?
如果您想限制视频流的生存期,您可以旋转键,并将您的存储设备作为一个大的环缓冲区。这样你就不需要浪费时间对磁盘进行归零,因为HDD或SSD在管理硬件错误和磨损均衡时使扇区无法访问。
键应该只存在于内存和/或HSM上。
到目前为止,恶棍是我见过的唯一提供AES-PMAC和OAE2的库。
锈菌中的伪码:
let mut file = File::open("video-dump", append);
let mut segments = record_camera();
let key = random();
let mut stream = Stream::new(key, nonce);
for seg in segments {
file.write_all(stream.encrypt(seg, authenticated associated data))?
}注意安全和简单的界面。你不需要弄乱任何原始密码。但是,您将希望每个消息都有一个包含段长度的标头,并需要一个标志作为新流的开始,一个标志用于流的末尾(如果它以和平方式结束)。
https://crypto.stackexchange.com/questions/56058
复制相似问题