美好的一天!我有几个关于使用信号协议的问题。
我有一个小的,基本的聊天,并希望加密消息(端到端)。我想按你的意思尝试Signal,但我想继续我的服务器端实现。
从我看到的 - 所有工作都从创建公钥并将其发送到服务器开始。然后,当Alice想给Bob写一条消息时,她要求服务器向她发送一个PreKeyBundle。之后,所有消息交换就像在github repo的SessionBuilderTest中一样。
主要问题是:
答案 0 :(得分:2)
每个人都使用 Bob 和 Alice ,所以我会做同样的事情
预密钥包的构建来自:
Alice 和 Bob 都是通过生成密钥开始的
两者都向服务器发送他们创建的内容(当然只有密钥的公共部分)
现在让我们假设 Bob 想要发送消息 Alice
Bob 要求服务器提供签名的预密钥包
服务器发送固定密钥(标识和签名),签名和一个未签名的预密钥
它然后处理预键 - 它永远不会再使用,所以 Bob 有一个对他来说唯一的键,永远不会过期。
Bob 现在可以使用该捆绑包创建共享密钥并将其发送给 Alice ,使用针对每条消息更改的棘轮键启动两者之间的会话。