计算机安全学:证明DES解密过程是加密的逆过程
DES加密过程
DES的加密过程是首先将64比特的明文通过初始置换(IP)重排,然后通过16轮含有SPN的函数迭代,最后再通过初始的逆置换(IP-1)获得密文。在这个过程中,IP和IP-1是一个互逆的过程,所以不需要过多的考虑,重要的是16轮的函数迭代,该函数迭代算法和Feistel算法是相同的,所以接下来只需要考虑Feistel算法即可。
根据书中的图示和解释可以理解为:该算法首先是将64比特的明文分成左边的32比特(LEi)和右边的32比特(REi),然后对于第i轮的迭代算法,有:
LEi=REi
REi=LEi⊕F(REi-1,Ki)
在通过16轮该算法的迭代后可得LE16RE16,最后通过初始置换的逆置换即可获得DES的最终密文
DES解密过程
DES的解密过程是加密过程的逆过程,首先IP和IP-1是互逆的过程,这里不需要探讨,所以该题只需要证明Feistel的解密过程是加密过程的逆过程即可。
首先,对于第一轮解密,有:
LD1=RD0=LE16=RE15
RD1=LD0⊕F(RD0,K16)
=RE16⊕F(RE15,K16)
=[LE15⊕F(RE15,K16)]⊕F(RE15,K16)
然后因为异或具有以下规律:
[A⊕B]⊕C=A⊕[B⊕C]
D⊕D=0
E⊕0=E
可得,LD1=RE15,RD1=LE15,由此可推导出:
LDi=RE16-i,RDi=LE16-i
即通过16轮解密算法迭代以后,可得出LD16=RE0,RD16=LE0,即RE0||LE0,最后再左右交换1次即可获取初始输入的64比特。Feistel的解密过程是加密过程的逆过程得证,而题目要求的DES解密过程是加密的逆过程也因此得证。