我想出了一个制作安全数据的方案。假设我有一个公共加密文件,任何人都可以下载。但是,只要有人想要解密该数据,就需要从服务器获取密钥
使密钥不能共享。来自服务器的密钥将无法直接解密数据。但是,数据必须在使用客户端的私钥后解密,而服务器不知道这些客户端的私钥
我希望下图可以清楚地解释
有可能吗?可以执行此操作的算法是什么?
答案 0 :(得分:1)
我想出了一个制作安全数据的方案。假设我有一个公开加密的 任何人都可以下载的文件。但是,只要有人想要解密该数据,就需要从服务器获取密钥
使密钥不能共享。来自服务器的密钥将无法解密 数据直接。但是必须使用客户端的 之后的私钥,而服务器不知道这些客户端的私钥
设置为每次下载文件时,都会附加一个随机字符串。然后,使用用户的公共密钥对文件进行加密,并使用相同的字符串生成的适当哈希对称地对文件进行加密。例如,受密码保护的ZIP文件中的GPG文件。
因此,爱丽丝下载了Financial_Report_201809_d8a1b2e6.pdf.zip
,而鲍勃下载了Financial_Report_201809_ff2a91c3.pdf.zip
。
如果他们想解密文件,则需要将服务器返回给随机字符串,服务器将为他们提供外部ZIP的密码。然后,他们留下一个只有私钥才能解码的加密文件。
请注意,一旦他们解密了文件,没有什么阻止他们将文件无格式转发给其他人。另一方面,共享加密的PDF没有任何用处,因为它们还需要共享其私钥。
还请注意,由于他们需要在线才能获得外部密码,并且最后留下明文文件,因此(几乎)在功能上等同于一次下载明文文件用户身份已建立。
主要区别在于:
您只想对整个文件加密一次(对于所有用户)(然后对所有用户),然后将同一文件发送给Alice和Bob,让他们需要两个不同的密钥在解密时。这里的问题是,由于它是同一文件,所以Alice的密钥也可以在Bob的文件上使用。除非您可以隐藏解密过程的某些细节(例如,使用您控制且无法调试且始终会连接到服务器的程序),否则这里没有万用的法宝:该命题具有始终显示为失败)。
如果要限制,可以发送带有对称加密数据有效负载(始终相同)和非常短,非对称加密密钥有效负载(始终不同)的海量文件,但仍然,您将很容易被捕获已解密的密钥:
[ RSA(ALICE.PUB, "SQUEAMISH OSSIFRAGE" ][ RIJNDAEL("SQUEAMISH OSSIFRAGE", LARGE FILE) ]
在上述情况下,某些程序必须读取加密标头并解密“ Squeamish Ossifrage”密码,然后继续解密(例如播放)多余的有效负载而不会截获密码。这意味着您需要自己提供程序。
从功能上讲,该程序等同于连接到服务器并下载问题的“是”或“否”(经过适当加密,签名和保护)的程序。”我是爱丽丝的播放器。我可以解密并播放“永远都不要放弃。avi'?,除了Alice的播放器和服务器共享的秘密外,没有其他密码或公钥被知道或交换。
如果目标是节省加密资源,则可以按照注释中的提示将加密设置为客户端:
为了使明文文件从不公开(即,算法是否泄漏无关紧要),可以设计以下方案。请记住,我不是密码学家,可能会发现各种副渠道。
因此,例如,说明文文件的第一个单词是A18B。在加密矩阵中,经过加扰后,第A18B位将包含701C,因此,在第701C位的解密矩阵将保持a18b。
用户有一个以701c开头的文件...没有用。
用户向您发送他的公钥,并且您对从0000到ffff的所有单词运行65536加密。然后,您确定a18b的加密为791c。您准备一个在701cth位置具有791c的重新编码矩阵。
然后向用户发送此矩阵,该矩阵有128K字节,第701c位为791c。
用户运行迁移速度非常快,并且剩下一个以791c开头的文件(随着701c变成791c,我在示例中错误地选择了两个相似的值,这没有意义)。 使用他的私钥解密后的值将产生a18b,即“可读”值。
用户现在拥有一个用其公共密钥加密的文件。 a18b值从未出现在任何地方。
剩下的一切就是让用户使用其私钥和16位代码块大小来解密文件。 此操作将由客户端运行,并且运行速度很慢,这就是通常对大型随机快速对称密钥进行RSA编码并用于对称快速加密大型文件的原因,私钥将对称密钥解锁后,很快就可以解密。
用户无法将128K发送给任何人,因为没有私钥,他们就毫无用处。
(这里的问题仍然是,用户现在可以使用自己的私钥解密文件,并将其发送出去,即使它非常笨拙,因为它非常大)。
答案 1 :(得分:0)
此后,必须在没有服务器知道客户端的私有密钥的情况下使用客户端的私有密钥对数据进行解密
原始文件只能由特定客户端使用其自己的私钥解密,
有一个常用的密码系统,称为hybrid cryptosystem。
步骤是:
答案 2 :(得分:-1)
您可以使用任何非对称密码算法。
使用了公开和私有 密钥对。公钥用于加密只能用私钥解密的数据。有很多资源,例如文章InfoSec Institute的形式。
有几种经过验证的良好非对称算法,例如RSA,DSA,椭圆曲线密码术(以太坊区块链使用)。还有很多Python库。