首先,我想问一下你们是否知道使用密钥加密数据的加密算法,但没有密钥可以解密数据。这对我来说似乎不太可能,如果不是不可能,那么对不起,如果这是一个愚蠢的问题。
我的最后一个问题是,假设您在加密之前可以访问纯文本数据,用于加密纯文本数据的密钥以及生成的加密数据,可以确定用于加密数据的算法是否可行?
答案 0 :(得分:8)
首先,我想问一下 如果有人知道加密 使用密钥加密的算法 数据,但没有密钥解密 数据
没有。有些算法使用不同的密钥来解密而不是加密,但是无密钥方法会依赖于算法的保密性,通常被认为是一个糟糕的想法。
我的最后一个问题是,说你有 之前访问纯文本数据 它是加密的,习惯的关键 加密纯文本数据,以及 会产生加密数据 弄清楚以前使用的算法 加密数据是否可行?
很可能是的,尤其是考虑到钥匙。一个好的加密算法依赖于密钥的保密性和单独的密钥。请参阅kerckhoff's principle。
此外,如果使用通用算法,这将是一个简单的反复试验,除了加密文本通常伴随着元数据,告诉你算法细节。
编辑:根据评论,您可能会考虑digital signature(仅在发送方需要密码),hash algorithm(不需要密钥但不加密) ),或zero-knowledge proof(可证明秘密知识而不泄露秘密)。
答案 1 :(得分:5)
抽象地说,我们可以这样想到加密系统:
-------------------
plaintext ---> | algorithm & key | ---> ciphertext
-------------------
系统必须保证以下内容:
解密 ( 加密 (明文,算法,密钥),算法,密钥)= plaintext
首先,我想问一下 如果有人知道加密 使用密钥加密的算法 数据,但没有密钥解密 数据。
是的,在这样的系统中,关键是多余的;所有的“秘密”都在算法中。
我的最后一个问题 就是说,你可以进入平原 文本数据在加密之前, 用于加密纯文本的密钥 数据,以及由此产生的加密 数据,会弄清楚哪个 用于加密数据的算法 可行?
在实践中,您可能只有很小的算法空间,因此简单的强力搜索是可行的。但是,可能有多个算法适合给定的信息。请考虑以下示例:
我们定义以下加密和解密操作,其中明文,密文,算法和密钥是实数(假设算法非零):
加密 (明文,算法,密钥)=算法x(明文+密钥)=密文
解密 (密文,算法,密钥)=密文/算法 - 密钥=明文
现在,假设明文+键= 0.对于任何算法选择,我们都有密文= 0。因此,我们无法推断出所使用的算法。
答案 2 :(得分:1)
首先,我想问一下你们是否知道使用密钥加密数据的加密算法,但没有密钥可以解密数据。
你在做什么?提出符合规范字母的一对函数是微不足道的,但是如果不知道意图,那么很难给出更有帮助的答案。
假设您在加密之前可以访问纯文本数据,用于加密纯文本数据的密钥以及生成的加密数据,可以确定用于加密数据的算法是否可行?
如果算法是好的,输出将无法与随机噪声区分开来,因此没有解析方案。实际上,广泛使用的可信算法很多。反过来尝试每一个都很快,但是由于一个实现在字节顺序(little-endian vs big-endian),密钥派生(如果你有一个密码短语)方面有一些自由这一事实会很复杂实际的加密密钥本身),加密模式和填充。
正如frankodwyer所指出的,这种情况不属于通常的威胁模型。这对您有利,因为它使该算法更有可能是众所周知的。
答案 3 :(得分:1)
如果没有解码器中的已知密钥,你可以做的最好的事情就是增加一些默默无闻。例如,如果解码algorythm的第一步是删除除了每个第十个字符之外的所有内容,那么您的编码密钥可能会用于为每十个字符中的九个播种一些随机垃圾。因此,使用不同的密钥,您可以实现不同的编码结果,这些结果将被解码为相同的消息,而解码器不需要密钥。
但是,这并没有增加太多真正的安全性,也不应仅仅依赖于保护关键数据。我只想到一个可以这样做的情况,是的,我想它可以 - 如果你只是想证明一点或者增加一个安全级别。
答案 4 :(得分:0)
我不相信有这样的算法可以使用密钥加密,但不能解密。 (愚蠢的回答就像26个字符Caesar cipher一样......)
对于你的第二个问题,是的;这取决于你愿意花多少时间。在理论密码学中,假设总是可以确定算法。无论是通过盗窃算法还是物理机器,或者是你的情况下都有纯文本和密文对。