锁匣数字签名组件问题

4
我正在评估数字签名的TurboPower LockBox库。我已经创建了一个1024位的RSA密钥,并尝试使用它对260字节的文本进行签名。在更改文本中的一个或两个字符后,该签名仍然有效。这样可以吗?或者这个库有问题。即使更改一个字符也会产生重要影响。我需要创建一个更大的密钥吗? 更新 为了测试该库,我使用了随附的演示应用程序。我生成了一个1024 RSA密钥对,然后尝试了数字签名功能。首先,我尝试了一个真实的260位文本文件,并发现我可以更改其中一些字符,签名仍然有效。然后我将其缩小到以下字符串:
AAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAA 8

我更改了“8”字符,但它仍然有效。我可能可以进一步缩小范围。

执行验证的代码如下:

Signatory1: TSignatory;
....

var
  DocumentStream, SignatureStream: TStream;
....

DocumentStream  := TFileStream.Create( edtRSADocumentFile.Text, fmOpenread);
try
SignatureStream := TFileStream.Create( edtRSASignatureFile.Text, fmOpenread);
try
 Res := Signatory1.Verify( DocumentStream, SignatureStream)
finally
  SignatureStream.Free
end;
finally
  DocumentStream.Free;
end;

2
你使用的是哪个版本的LockBox?“3.0”是一个人重写的版本,看起来它并没有使用太多原始代码,其质量有待评估。或者你使用的是2.07(TurboPower发布的最后一个版本)? - user160694
我正在使用最新的版本3.1.0.0(2010年10月22日)。 - Max
@ldsandon。我现在尝试了旧的2003版本,它可以正常工作。因此看起来新版本中有一个错误。你能否发表你的答案,以便我可以接受它? - Max
感谢您提醒我这个 bug。该问题已在 LB 3.1.1 中得到修复。现在,在 Lockbox 3.1.1 中,签名和验证应该可以正常工作了。 - Sean B. Durkin
LockBox3中用于签名和验证的是什么?RSA-1024与SHA-1一起使用吗? - Tracer
2个回答

1
首先,我不会假设库中有任何问题,因为它已经被使用了多年。您不应该能够更改输入并使用相同的签名来验证它并使其正常工作。 Keysize 不会起到作用。
为了获得真正的答案,我建议您扩展您的问题- Delphi 的哪个版本? 您能展示一些代码吗?

我正在使用Delphi 2010。该代码是一个演示应用程序,随库一起提供。 - Max
“首先,我不会假设这个库有任何问题,因为它已经被使用了多年”-- OpenSSL 也是如此。 - JensG

0

LockBox 3数字签名组件的实现存在一个bug。LockBox 2.07可以正确地签名和验证签名,但在Delphi 2010中无法加载/保存密钥。


现在已经修复了错误。顺便说一下,Lockbox有一个支持论坛,您可以在其中发布任何发现的错误。支持团队很活跃,您的任何问题都应该能够得到快速解决。 - Sean B. Durkin
谢谢。我已经修改了Lockbox 2.07,使其适用于我,但我会尝试新的Lockbox 3版本。 - Max

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接