识别加密算法

3

首先,我想问一下是否有人知道一种加密算法,它使用密钥加密数据,但不需要密钥解密数据。对我来说,这似乎非常不可能,甚至是不可能的,所以如果这是一个愚蠢的问题,请原谅。

我的最后一个问题是,假设您可以在对数据进行加密之前访问明文数据,用于加密明文数据的密钥以及生成的加密数据,那么确定使用哪种算法加密数据是否可行?


1
为什么要使用密钥加密,如果任何人都可以解密它呢?难道你不能只发送明文吗?如果你只想混淆你的数据,可以使用 ROT13... - Arjan Einbu
你是在寻找密码签名吗? - Arjan Einbu
好的观点,这里可能会混淆加密和签名。或者,楼主可能在考虑哈希算法。 - frankodwyer
5个回答

9

首先,我想问一下,你们是否知道一种加密算法,它使用密钥来加密数据,但不需要密钥来解密数据。

没有。虽然有一些算法在解密和加密时使用不同的密钥,但无需密钥的方法将依赖于算法的保密性,这通常被认为是一个不好的想法。

我的最后一个问题是,假设您可以访问加密前的明文数据、用于加密明文数据的密钥以及生成的加密数据,那么确定用于加密数据的算法是否可行?

很可能是的,特别是考虑到密钥。一个好的加密算法仅依赖于密钥的保密性。请参见克尔克霍夫原则

此外,如果使用了常见的算法,那么试错就会变得简单,而且加密文本通常伴随有元数据,告诉您算法的细节。

< p > < em >编辑:根据评论,您可能在考虑数字签名(仅在发送方需要秘密),哈希算法(不需要密钥但不是加密)或零知识证明(可以证明知道一个秘密而不泄漏它)。< /em > < /p >

5

抽象地说,我们可以这样考虑加密系统:

               -------------------
plaintext ---> | algorithm & key | ---> ciphertext
               -------------------

系统必须保证以下内容: 解密(加密(明文,算法,密钥),算法,密钥) = 明文
首先,我想问一下,你们是否知道一种使用密钥加密数据但不需要密钥解密数据的加密算法。
是的,在这种系统中,密钥是多余的;所有“保密性”都在算法中。
最后一个问题是,假设您可以访问加密之前的明文数据,用于加密明文数据的密钥以及生成的加密数据,那么确定用于加密数据的算法是否可行?
实际上,您可能会有一个小的算法空间,因此简单的暴力搜索是可行的。然而,可能有不止一种适合给定信息的算法。考虑以下例子:
我们定义以下加密和解密操作,其中明文、密文、算法和密钥是实数(假设算法为非零): 加密(明文,算法,密钥) = 算法 × (明文 + 密钥)= 密文 解密(密文,算法,密钥) = 密文/算法 - 密钥 = 明文
现在,假设明文 + 密钥 = 0。无论选择什么算法,我们都有密文 = 0。因此,我们无法推断出使用的算法。

1

如果在解码器中没有已知的密钥,你能做的最好的事情就是增加一点点的混淆。例如,如果解码算法的第一步是除了每十个字符之外的所有内容都被剥离掉,那么你的编码密钥可以用于为每十个字符中的九个提供一些随机垃圾数据。因此,使用不同的密钥,您可以实现不同的编码结果,这些结果将被解码为相同的消息,而解码器无需密钥。

然而,这并没有增加太多真正的安全性,不应该仅仅依赖它来保护关键数据。我只是想到了一个可能能够这样做的例子,如果你只是想证明一点或者增加一层安全性,那么也许可以这么做。


1
首先,我想问一下你们是否知道一种加密算法,它使用密钥加密数据,但不需要密钥解密数据。
你的意图是什么?虽然可以轻松地设计出符合规范的一对函数,但如果不知道意图,很难给出更有帮助的答案。
假设你在加密明文数据之前就能够访问明文数据、用于加密明文数据的密钥以及生成的加密数据,那么确定加密数据所使用的算法是否可行?
如果算法足够好,输出将与随机噪声无法区分,因此没有解析解。实际上,只有少数受信任的算法被广泛使用。逐个尝试每个算法会很快,但由于实现在字节顺序(小端 vs 大端)、密钥派生(如果你有一个口令而不是实际的加密密钥本身)、加密模式和填充方面具有某些自由度,这会变得复杂。
正如 frankodwyer 指出的那样,这种情况不属于通常的威胁模型。这将对你有利,因为这使得算法更可能是众所周知的算法。

0

我不相信有这样一种算法,它可以使用密钥进行加密,但不能用同样的密钥进行解密。(除了像26个字符的凯撒密码这样的愚蠢答案...)

对于你的第二个问题,是的;这只取决于你愿意花多少时间。在理论密码学中,假定可以始终确定算法。无论是通过窃取算法或物理机器,还是像你的情况一样拥有明文和密文对。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接