序列密碼算法ShanLooog512設計原理詳解
ShanLooog512(閃龍512)為序列密碼算法,內部狀態為512比特,密鑰長度為128或256比特,輪函數為FFFFFFFF,循環輪數為24輪,輸出密鑰流為512比特的狀態。與Salsa20類似,內部狀態為4X4的矩陣形式排列,字大小為32比特。
當密鑰長度為256比特,密鑰K=k0||k1||k2||k3||k4||k5||k6||k7;當密鑰長度為128比特,(k4,k5,k6,k7)=(k0,k1,k2,k3) ,密鑰K=k0||k1||k2||k3||k4||k5||k6||k7。其中ki(i=0,…,7)為32位字。
(1)初始化階段
ShanLooog512算法內部狀態初始化如下所示:
其中,(k0,...,k7)為256比特的密鑰,(v0,v1)為初始IV,(i0,i1)為分組標號,(c0,c1,c2,c3)為固定的常數。如果密鑰長度是128比特,則(k4,k5,k6,k7)=(k0,k1,k2,k3)。其中(c0,c1,c2,c3)=(0xccd696e5,0xa8f4e504,0xeb19cf63,0xf708b2cd)或者(c0,c1,c2,c3)=(0xbc42e727,0xe138f70f4,0xc2b3a0d9,0xbd485fdc)。
(2)密鑰流產生過程
ShanLooog512為基于ARX(模加、循環移位、異或)混合運算設計的類分組結構流密碼算法。其密鑰流生成過程如下所示:
輪函數FFFFFFFF如下圖所示:
其中GGGGGGGG1如下圖所示:
其中GGGGGGGG2如下圖所示:
其中Transformation (類似矩陣轉置操作)如下圖所示:
其中M8X1(矩陣變換操作)如下圖所示:
對應的二元矩陣為:
其中M8X2(矩陣變換操作)如下圖所示:
對應的二元矩陣為:
綜上所述,密鑰流(K[0],…,K[15])= ShanLooog512(X0)+X24。
?