我们创建了一个像adobe reader这样的应用程序来读取一种特殊的加密文档文件格式,该格式只能由我们的应用程序识别。
我们想要做的是让用户使用他/她在网站上的帐户购买应用程序。之后,我们将让他/她使用该程序下载该文档并开始阅读。
这是我们关注的问题:
1)文档文件不应该在另一台用户计算机中读取,这意味着如果user1将原始下载文件提供给user2,而user2在我/她自己的计算机上有第二个用户必须无法读取该文件
2)用户下载文件后,他们只能离线阅读这些文件(不能经常在线阅读)
3)这种安全性不容易破坏,因为这些文件数据至关重要。用户信息&申请不得被黑客攻击!4)也许以后我们想拥有我们的android / IOS版本,所以解决方案必须是跨平台的
5)为每个文档提供登录机制的解决方案不起作用,因为用户能够将他们自己的文件的副本连同他们的用户名和文件一起提供。密码给其他用户。 6)文件加密机制不能被破解者分解,以便他们只是解密文件和文件。在互联网上发布免费版
您有编程方法,安全机制或建议吗?
答案 0 :(得分:4)
您可以使用公钥(或非对称)加密。您使用用户的公钥加密文档。然后只有能够访问私钥的人(理想情况下:只有用户)才能解密它。
但是,如果用户可以访问他自己的密钥(并且他应该),则没有任何东西可以阻止用户解密文档并与他人共享(或与他人共享他的私钥)。
最后:如果用户或程序需要访问未加密的产品且用户没有兴趣保证文档的安全,那么机密性可以 - 如果产品足够有趣 - 将会被破坏。
答案 1 :(得分:1)
这是.NET的问题,它很容易逆转,因为可执行文件存储了大量的元数据,并且它不能编译为本机(asm),而是编译为IL。你最好的选择是使用混淆器和.NET Seal之类的东西(但如果我是正确的,它需要用户上网)http://forum.elitevs.net/
再次,你想跨越平台,为了做到这一点,你必须使用像Mono这样的东西: http://www.mono-project.com/Main_Page
虽然这需要最终用户也有单声道。
现在回答你的“要点”。
1)使每个文件和应用程序共享某种对每个文件和应用程序唯一的加密,确保该文件仅匹配一个用户具有的应用程序。
用户X下载应用程序。 用户Y下载应用程序。
这两种下载都是独特的,具有某种加密算法或加密密钥。
用户X下载文档A. 文档A将与用户X的应用程序共享相同的算法/密钥,这使其仅对他而言是独一无二的。
用户X将文档A提供给用户Y. 由于用户Y的应用程序不与用户X共享相同的算法/密钥,因此文档不可读。
2)我将在我的回答中首先提到我所说的内容。
3)我将在我的回答中首先提到我所说的内容。
4)我将在回答中首先提到我所说的内容。但是我想指出这并不是一个坏主意,但是如果C#真的是这个选择的语言,那么应该考虑到这一点。
5)我会在这里回答#1。
6)我会在这里回答#1。
答案 2 :(得分:0)
如果您要允许用户下载文件,那么将无法100%保护它。原因是,必须有一种方法来解密它,以便用户可以读取它。此解密过程必须在用户的计算机上进行,因为要读取它的程序必须解密并在其计算机上打开它。
一旦解密它的程序在用户的机器上运行,他就可以对它进行反向工程并破解它(假设他足够聪明)。
话虽如此,有很多方法可以让你很难破解你的解密。现在,如果您取消离线阅读的能力,您可以获得更多控制权。黑客无法在远程服务器上运行反汇编程序或反编译程序。
希望此信息有帮助