misty1-128bit算法中最多有多少bit密钥未知,可以知道所有的密钥?

misty1-128bit算法中最多有多少bit密钥未知,可以知道所有的密钥?
已知MISTY1 算法的密钥扩展算法首先将 128 比特种子密钥 K 划分成 8个16 比特的字 . 然后根据 生成另一组 8个16 比特的字也就是拓展密钥 .
函数FI是一个输入输出为16比特的3轮Feistel结构函数.
FI函数如下:

img

谢谢了!

以下答案由GPT-3.5大模型与博主波罗歌共同编写:
MISTY1算法的密钥长度为128位,因此最多有128位的密钥未知。然而,由于MISTY1算法采用的是Feistel结构,且其密钥扩展过程不是可逆的,因此即使已知部分密钥,也不能通过倒推的方式得到完整的密钥。

具体地,MISTY1算法的密钥扩展过程采用了基于SHA-1的伪随机函数,将128位种子密钥按照一定的顺序拼接形成一个256位的输入。然后通过一系列的置换、代换、异或等操作,对输入进行加工,最终生成8组拓展密钥,每组16个字节,共计128位。其中每组密钥都由8个轮次组成,每轮由两次FI函数和一个置换运算组成。FI函数采用了S盒、异或等运算,可以参考下面的伪代码实现:

def FI(in: bytes) -> bytes:
    x = int.from_bytes(in, 'big')
    y = ((x & 0x7FFF) << 1) | ((x >> 15) & 0x01)
    z = y ^ ((y & 0x3FFF) << 2) ^ ((y >> 14) & 0x03)
    w = z ^ ((z & 0x1FFF) << 5) ^ ((z >> 11) & 0x1F)
    u = ((w & 0x7FFF) << 8) | ((w >> 8) & 0xFF)
    return u.to_bytes(2, 'big')

需要注意的是,虽然MISTY1算法中最多有128位的密钥未知,但由于不可逆的密钥扩展过程,即使已知部分密钥,也不能推出其他未知的密钥位。因此,MISTY1算法依然被认为是一种安全可靠的加密算法。
如果我的回答解决了您的问题,请采纳!

MISTY1算法中的密钥长度为128比特,即16字节。根据密钥扩展算法,将密钥划分成8个16比特的字,然后生成另一组8个16比特的字,即拓展密钥。因此,MISTY1算法中的密钥共有8个16比特的字。
对于每个16比特的字,FI函数都会对其进行加密操作。FI函数中使用了密钥中的部分比特,因此如果我们知道所有的密钥,就可以完全确定FI函数的输出。但是,如果我们只知道部分密钥,就无法完全确定FI函数的输出。
具体来说,FI函数中使用了密钥的第1、2、9、16比特,共计64比特。因此,如果我们知道这64比特的密钥,就可以完全确定FI函数的输出。如果我们只知道其中一部分密钥,就只能确定部分输出。
综上所述,如果我们知道MISTY1算法中的所有密钥,就可以知道所有的密钥。如果我们只知道部分密钥,就只能确定部分输出。因此,最多有64比特的密钥未知,可以知道所有的密钥。

最多可以有128位密钥未知。

攻击者什么都不知道的情况下,你让他试试啊,想想也不可能,能不能破解这取决于他知道一些明文和对应的密文

既然总长度是128bit,那么最多也就是128bit,也就是最多一个Bit都不知道的情况下,运气好,被恰巧破解了,因为每一位被破解都是等可能的。