Omemo 消息发送失败

问题描述 投票:0回答:1

我正面临这个问题,

 'org.whispersystems.libsignal.InvalidKeyException: Invalid signature on device key!'
 
 i tried it from conversations code

非工作捆绑包在下面分享 -

<items](http://jabber.org/protocol/pubsub"><items) node="eu.siacs.conversations.axolotl.bundles:2041762935" xmlns="http://jabber.org/protocol/pubsub"><item xmlns="http://jabber.org/protocol/pubsub" id="current">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

尝试处理此捆绑包时:-

final PreKeyBundle preKeyBundle = new PreKeyBundle(0, address.getDeviceId(),preKey.getPreKeyId(), preKey.getPreKey(),bundle.getSignedPreKeyId(), bundle.getSignedPreKey(),bundle.getSignedPreKeySignature(), bundle.getIdentityKey());
        try {
            SessionBuilder builder = new SessionBuilder(axolotlStore, address);
            builder.process(preKeyBundle);}

在内部,这个方法给了我一个错误,如下所示 -

public void process(PreKeyBundle preKey) throws InvalidKeyException, UntrustedIdentityException {synchronized (SessionCipher.SESSION_LOCK) {if (!identityKeyStore.isTrustedIdentity(remoteAddress, preKey.getIdentityKey(), IdentityKeyStore.Direction.SENDING)) {throw new UntrustedIdentityException(remoteAddress.getName(), preKey.getIdentityKey());}

//我遇到这个异常

if (preKey.getSignedPreKey() != null &&!Curve.verifySignature(preKey.getIdentityKey().getPublicKey(),preKey.getSignedPreKey().serialize(),preKey.getSignedPreKeySignature())){throw new InvalidKeyException("Invalid signature on device key!");}

这可能是什么原因,任何人都可以帮助指导我们如何解决这个问题吗?

java kotlin mongoose xmpp omemo
1个回答
0
投票

The exception InvalidKeyException: Invalid signature on device key!
在处理信号协议(由 libsignal 等库使用)中的
PreKeyBundle
时,表明 针对身份密钥对已签名预密钥的签名验证失败了

发生这种情况的原因有多种:

1- 数据损坏:

确保

PreKeyBundle
数据在传输或存储过程中不被损坏。密钥数据的任何更改都可能导致签名验证失败。 如果您要将
PreKeyBundle
与其他格式相互转换,请仔细检查序列化和反序列化逻辑。

2-不匹配的按键:

验证

PreKeyBundle
中的身份密钥和签名预密钥确实属于同一用户。这些密钥之间的不匹配将导致签名验证失败。 如果您从服务器获取密钥,请确保不同用户的密钥分配不会发生混淆。 不正确的实施:

如果您自己生成

PreKeyBundle
,请确保正确完成签署预密钥和构建捆绑包的过程。 确保使用正确的算法和参数进行签名。

3键过期或轮换:

检查涉及的密钥是否已过期或最近被轮换。过期或旧的密钥可能无法正确验证。 确保会话中使用的密钥是最新的。 库或依赖问题:

验证您正在使用的 libsignal 或相关库的版本是否兼容且是最新的。 检查库中是否有任何已知问题或可能解决此问题的更新。

调试步骤

  • 日志记录:在生成、存储、传输和接收密钥的区域添加全面的日志记录。记录密钥(以安全且尊重隐私的方式)以了解是否存在任何差异。
  • 静态测试数据:使用静态键创建一个测试用例,您知道预期的结果。这可以帮助确定问题是否出在密钥生成、传输或验证过程中。
  • 交叉验证:尝试使用外部工具或不同的实现来使用身份密钥验证签名的预密钥,以排除您正在使用的特定库中的问题。

代码审查 检查生成和签署预密钥的代码。确保签名过程使用正确的身份密钥并且签名正确生成。 在

PreKeyBundle
构造中,确保传递的参数顺序正确且来源正确。

外部因素 考虑可能损坏或更改关键数据的网络或存储问题。 如果您使用服务器来分发密钥,请确保服务器端逻辑正确处理密钥及其关联。 通过系统地检查每个区域,您应该能够查明

InvalidKeyException
的原因并解决它。

© www.soinside.com 2019 - 2024. All rights reserved.