Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Encryption 需要:用于复制保护目的的加密方案_Encryption_Copy Protection - Fatal编程技术网

Encryption 需要:用于复制保护目的的加密方案

Encryption 需要:用于复制保护目的的加密方案,encryption,copy-protection,Encryption,Copy Protection,我的任务是为应用程序实施基于加密狗的拷贝保护方案。我意识到,无论我做什么,都会有人破解它,但我想至少让它比检查加密狗是否存在的if语句稍微困难一点 我的方法是加密应用程序正确执行所需的关键数据。在运行期间,从加密狗中检索解密密钥(我们选择的模型有一些适合的API函数),数据被解密,应用程序很满意 当然,有决心的攻击者可以截获该解密密钥,并获得解密数据。没关系。但是,应该很难用他们自己的数据来代替。因此,我正在寻找一种加密方案,在这种方案中,知道解密密钥并不能使某人对自己的数据进行加密 这显然是非

我的任务是为应用程序实施基于加密狗的拷贝保护方案。我意识到,无论我做什么,都会有人破解它,但我想至少让它比检查加密狗是否存在的if语句稍微困难一点

我的方法是加密应用程序正确执行所需的关键数据。在运行期间,从加密狗中检索解密密钥(我们选择的模型有一些适合的API函数),数据被解密,应用程序很满意

当然,有决心的攻击者可以截获该解密密钥,并获得解密数据。没关系。但是,应该很难用他们自己的数据来代替。因此,我正在寻找一种加密方案,在这种方案中,知道解密密钥并不能使某人对自己的数据进行加密

这显然是非对称加密。但对于我目前发现的每一种算法,加密(或公开)密钥都可以从解密(或私有)密钥生成,这正是我试图避免的

注意:简单地对数据进行签名不会有多大帮助,因为(除非我完全误解了这些签名)验证签名只是另一个if语句,这很容易避免


所以。。。有什么想法吗?

一旦攻击者知道了私钥,您就不会有任何秘密信息来区分自己和他人。
让攻击者更难对付:您可能希望在特定于应用程序的时间T后使每一对(公钥、私钥)过期,并在加密狗和您自己的计算机上分别基于前一对生成新的对。这样,攻击者需要不断访问加密狗,才能使用新的私钥对其数据进行加密,或者经常运行私钥检测算法。

一旦攻击者知道私钥,就不会有任何秘密信息来区分自己和他人。
让攻击者更难对付:您可能希望在特定于应用程序的时间T后使每一对(公钥、私钥)过期,并在加密狗和您自己的计算机上分别基于前一对生成新的对。这样,攻击者需要不断访问加密狗,才能使用新的私钥加密其数据,或者经常运行私钥检测算法。

您可能希望在加密狗上运行解密。有一些硬件可以帮助实现这一点()。达拉斯半导体公司以前有一个Java按钮,可以让你在一个类似加密狗的小设备上运行代码,但我认为他们已经没有了

其中一些允许您在加密狗中执行代码。所以,也许一个很难重新创建但不需要高性能的关键功能可以工作?可能是许可证密钥验证算法

也许您可以在加密狗中包含代码,这些代码必须放入内存才能运行程序。这将有点难打破,但可能很难实现,这取决于您使用什么工具来制作程序

您可能还想研究一些反调试主题。我记得不久前看过一些出版物。这是另一层,将使其更难开裂

依赖于Internet连接也可能是一种选择。如果你的客户在没有互联网连接的情况下无法运行你的代码,你必须小心不要激怒他们

您也可以查看FlexLM(或者现在的任何名称)。它工作,但它是一个野兽。如果我没记错的话,他们还试图协商将你们公司毛利润的一个百分比作为许可费(已经好几年了……我想当他们要求的时候,我们告诉他们把它塞进去。)


祝你好运

您可能希望在加密狗上运行解密。有一些硬件可以帮助实现这一点()。达拉斯半导体公司以前有一个Java按钮,可以让你在一个类似加密狗的小设备上运行代码,但我认为他们已经没有了

其中一些允许您在加密狗中执行代码。所以,也许一个很难重新创建但不需要高性能的关键功能可以工作?可能是许可证密钥验证算法

也许您可以在加密狗中包含代码,这些代码必须放入内存才能运行程序。这将有点难打破,但可能很难实现,这取决于您使用什么工具来制作程序

您可能还想研究一些反调试主题。我记得不久前看过一些出版物。这是另一层,将使其更难开裂

依赖于Internet连接也可能是一种选择。如果你的客户在没有互联网连接的情况下无法运行你的代码,你必须小心不要激怒他们

您也可以查看FlexLM(或者现在的任何名称)。它工作,但它是一个野兽。如果我没记错的话,他们还试图协商将你们公司毛利润的一个百分比作为许可费(已经好几年了……我想当他们要求的时候,我们告诉他们把它塞进去。)

祝你好运

为了回答我自己的问题(某种程度上),可以用RSA实现这一点,但大多数API(包括OpenSSL的加密库)都需要“欺骗”来实现这一点。在给定私钥的情况下,可以生成公钥的原因是

  • RSA的实现通常在私钥数据结构中保存p和q(那些大素数)

  • 由于公钥(由模N和一些指数e组成)无论如何都是公开的,所以(通常)没有必要选择一个模糊的e。因此,有一些标准值是