在高层次上,问题是:如何对流数据进行加密签名?
以下是背景:
一般的策略是什么(或者有一个标准?)才能做到这一点?以下是一些粗略的想法:
Alice用她的私钥对连续的数据块进行签名,我确认它来自她的公钥,并且可以编码一些规则来支付她(由她的公钥标识)。
有没有报纸或进一步的阅读,还是我走错了轨道?
发布于 2019-04-17 15:24:09
这非常类似于使用实体身份验证来建立传输安全性。换句话说,这非常类似于TLS,但在这种情况下,客户机似乎需要身份验证而不是服务器。
不过,将TLS与客户端身份验证结合使用可能会解决您的需求。当然,它也会加密流,但这不一定会造成问题。否则,您可以只使用HMAC和跳过加密来替换加密和身份验证。
否则,研究TLS握手并确定实体身份验证如何工作以及如何建立共享会话密钥将是一个非常好的主意。一旦建立了会话密钥,就可以使用它们来验证流中的记录/消息。这些只是组成流的数据块。
请注意,设计/实施运输安全是充满危险的,在没有对这一主题有很好的了解的情况下,不应该尝试。
请注意,SSH通常更适合客户端身份验证,而不是TLS,后者需要服务器身份验证。因此,在满足需求方面,SSH可能是一种更好的传输安全协议。不过,我不太了解SSH的当前安全细节。
另一种选择是在发送之前对数据进行签名(应用程序级安全性而不是传输安全性)。这将允许您验证流是否由某个实体传递,即使在传输之后也是如此。如果这是一个有价值的属性,则取决于您的使用场景;它也可能是非常危险的--其他人也可以验证它是由签署它的实体交付的。
这似乎是当前的道路;然而,在这个场景中,您最好签署整个流/文件,而不是块。否则,您只需要设计一个非常糟糕的传输模式安全性,而不需要前向保密、大量开销和专有消息层。
https://crypto.stackexchange.com/questions/68834
复制相似问题