2017-04-07 29 views
0

有时我的Java程序需要从客户端计算机向远程计算机发送.dll或.so文件。有没有可能确保这个.dll(.so)文件真的是我创建的,而不是一些黑客创建的?首先,我认为数字签名(java.security package)是我的第一选择,但是我无法验证远程机器的签名,因为Java可能在那里不可用。还有其他的选择吗?如何确保文件是由我创建的?

+0

如果你没有Java,你为什么要求Java解决方案? – Andreas

+0

因为我的客户端程序是用Java编写的,所以我使用Java发送这些文件,基本上我使用的是Java。我的问题是如何确保/验证一些文件是由我创建的。 – polis

+3

Java不是唯一能够验证数字签名的语言。但是如果您的客户端可供黑客使用,黑客无论如何都可以从客户端提取您的密钥。 –

回答

2

你试图实现的是知道non repudiation。那就是:

  • ,提供完整的证明(没有人修改您的文件)服务和数据来源(你是 文件的真正创造者)。
  • 认证可以被认定为真正的高度保证。

这不是Java或C#或语言本身,它不取决于你所使用的编程语言的概念。 每种语言都有它自己的类,库,机制......来处理这个问题,其中一些语言比其他语言更好或更简单。

特别是在Java中,你可以开始看看here。您需要的步骤:

  • 生成一对密钥(只做一次)。
  • 签署您在客户端创建的每个文档(确保没有人可以更改它,没有人可以将其归为所有者,也没有人可以拒绝文件的所有权)。
  • 发送文件及其签名。
  • 在服务器端,根据提供的文档验证签名的有效性。

如果你只是想检查,如果该文件已不被修改,你可以用一个简单的digest mecanism没有签约,只是创建一个哈希(不需要创建证书,验证签名......),并验证稍后会工作,但请注意,只有散列,你不能检查谁是文件的作者,只是该文件因为散列创建而没有被修改过。

相关问题