ASCON簡介

隨著物聯網設備(Internet of Things,IoT)的廣泛應用,大量的數據在其上被生成和傳輸,如何保護這些數據不被竊取和篡改受到了越來越多的關注。最常用來保護物聯網設備上數據傳輸的輕量級密碼算法包括關聯數據認證加密算法(authenticated encryption with associated data,AEAD)和哈希算法。先行AEAD算法中使用的主要技術為帶有Galois或Counter模式的AES算法,哈希算法為SHA-256。大多數情況下這兩種算法可以高效運行,但也存在一些資源受限的場景,在這些場景下上述兩種算法的使用受到了限制,為了解決這一問題,2018年8月,美國國家標準與技術研究院(NIST)開始征集輕量級密碼算法標準。NIST共收到了57份提交方案,在這57份方案中,ASCON以其較高的安全性以及較低的實現成本脫穎而出,最終在2023年2月7日被NIST選為輕量級密碼標準。

ASCON是一套密碼族,由奧地利Graz大學、德國Infineon公司,以及Intel實驗室等單位共同設計并維護。ASCON中共包含7種密碼算法,其中對于輕量級密碼算法最重要的兩種算法,AEAD和哈希算法被NIST選為了輕量級密碼算法標準。AEAD是一種同時具備保密性,完整性和可認證性的加密形式。其出現的原因在于,單純的加解密算法不具備認證的功能,解密者不知道解密的信息是否經過了中間人的篡改,因此需要一個同時具備加密和認證功能的算法。如果只是簡單的將加密算法和認證算法進行組合,并不能具備足夠的安全性,這一點已經在業內得到了廣泛的共識,因此真正的AEAD算法是一種同時在算法內部實現了加密和認證的算法。

接下來將依次介紹ASCON-AEAD的流程,ASCON的優勢以及NIST后續的計劃。

ASCON-AEAD算法流程簡述

接下來簡述ASCON-AEAD算法的流程,該算法包括加密和解密兩部分,兩部分的流程和結構相同,區別僅在于明文和密文的輸入和輸出相反。下圖為ASCON-AEAD的加密流程。

圖1 ASCON加密流程

如同一般的對稱加密算法,ASCON-AEAD包含密鑰K,明文P,關聯信息A,密文C和輪操作pa和pb。A為關聯信息,可以是設備的身份信息,比如ip地址等。如同一般的認證算法,ASCON-AEAD會生成認證信息T。用于密文及關聯信息完整性的認證。

ASCON-AEAD加密時輸入K和P得到C和T,解密時輸入K和C得到P和T',通過對比T和T'即可對密文進行認證。

輪操作pa和pb的輸入和輸出均為320比特,其循環執行基于SPN結構的輪轉換操作p,其區別僅在于循環的輪數不同,一個為a輪,一個為b輪。p操作包含3個子操作,分別為pL,pS,pC操作。三種操作如下圖所示。

圖2 三種輪操作示意圖

進行p操作前首先將輸入的320比特拆分成5個64比特字,為x0到x4,這樣設計的目的是為了適配64位處理器,使得ASCON-AEAD在64位處理器上可以高效的運行。接下來依次執行pC,pS和pL操作。

pC操作會在x2上異或一個常量值,該常量值根據p操作循環的輪數查表獲得。如上圖(a)所示。

pS操作使用5比特的S盒以64并行度的方式進行替換操作,如上圖(b)所示。其中5比特S盒的設計如下圖所示。

圖3 ASCON的5比特S盒

pL操作在每個64比特字內部使用線性函數進行線性混淆,其混淆函數如下圖所示。

圖4 ASCON線性混淆示意圖

輪操作pa和pb的輸出會分成r比特和c比特兩部分,分別進行異或或者拼接操作后,在合并在一起輸入下一次輪操作中,其中r和c的取值由算法參數決定,可以為64和256比特或128和192比特。

有關ASCON-AEAD更詳細的信息可以查看附錄。

ASCON優勢

  • 實現成本低:ASCON提供認證加密和散列功能都是基于相同的底層置換,不僅減少了對硬件實現的面積要求,而且對需要維護的代碼庫進行約束,減少了高效和安全的實現所需的工作量
  • 密碼分析安全性高:經過五年的評估,ASCON-128和ASCON-128a被選為CAESAR競賽最終組合中輕量級認證加密的 "首選"。在這次競賽中,ASCON及其變體經歷了一次徹底的公開分析,所有現有的分析均表明ASCON具有很高的安全系數
  • 實踐方面的安全魯棒性高:ASCON基于海綿的操作模式,使用基于nonce的驗證式加密,其特點是加強了密鑰的初始化和最終化。這提高了密碼在誤用攻擊情況下的魯棒性,例如針對nonce重用的攻擊者。因此,在數據處理過程中,由于誤用攻擊而導致中間狀態恢復不會直接導致密鑰恢復
  • 無需逆運算:ASCON輪操作無論在加密或是解密模式中均采用正向運算形式
  • 密鑰靈活性高:ASCON不使用密鑰表,也不通過任何其他方式擴展密鑰,所以更換密鑰更加靈活,無需額外計算開銷
  • 防護側信道緩存攻擊:S-box不采用查找表模式而是采用bitslice方式以抵御緩存攻擊
  • 低成本高吞吐量:基于CAESAR競賽API實現ASCON-128和ASCON-128a使用不到10kGE就能達到4.9-7.3Gbps的吞吐量


NIST后續安排

  • NIST將發布NIST IR 8454,其中描述了選擇和評估過程的細節
  • NIST將與ASCON設計師合作起草新的輕量級密碼標準,供公眾評論
  • NIST將舉辦一次虛擬公開研討會,進一步解釋選擇過程,并討論標準化的各個方面(例如:其他變體、功能和參數選擇)以及輕量級加密項目范圍的可能擴展。研討會暫定日期為2023年6月21日至22日


附錄

1、ASCON-AEAD算法流程

(1)基本流程

如下圖所示為ASCON認證加密的加密和解密流程,其分為4個部分:初始化、加入關聯數據、加/解密、標簽輸出。整體采用sponge密碼結構,加/解密流程大致相同,僅在明/密文輸入有所區別。

圖5 ASCON-AEAD加密解密流程示意圖

上圖中K為密鑰,A為關聯數據,P為明文,C為密文,T為認證信息。加密和解密采用相同的結構和流程,區別僅為P和C的輸入輸出順序相反。接下來將分別介紹四個操作的具體流程,以及輪操作的過程。

(2)推薦參數

ASCON包含兩套推薦參數,分別用于認證加密以及哈希算法。如下圖所示為認證加密使用的推薦參數,其中包含密鑰、nonce、標簽、數據塊分組的長度以及輪操作a、b的輪數。下文將以ASCON-128為例。

圖6 ASCON-AEAD推薦參數

(3)初始化

首先進行向量的初始化,初始化向量IV由算法參數的不同從而有所區別, IV依據密鑰長度(k)、數據分組長度(r)、輪操作輪數(a,b),并后補0直至160bits, 16個8bit整數表示形式如下圖所示。生成后的64bits與128bits長度的密鑰以及Nonce進行拼接成為320bits中間狀態State,進行共12輪輪操作后分為上下兩條“主線”Sr以及Sc,在“主線”下半部分Sc(內部部分inner part)進行密鑰(前補0至足位)的異或運算以完成初始化步驟。上下兩條“主線”劃分的依據是數據分組長度(r),例如ASCON-128中r=128,故128bits的中間狀態處于流程的上半部分Sr(外部部分,outer part),而320-128=192bits的中間狀態處于流程的下半部分Sc

圖7 ASCON-AEAD初始化示意圖

初始化部分的偽代碼如下圖所示:

圖8 ASCON-AEAD初始化偽碼示意圖

(4)引入關聯數據

將關聯數據(A)按分組數據塊大小(r)分成s組(A1......As),在出現無法被整分時在末位拼接一

比特“1”以及數比特“0”,確保關聯數據可被整分。分組將關聯數據(Ai)異或進流程上半部分的中間狀態Sr,然后進行6輪輪操作后再引入下一組關聯數據(Ai+1),在所有關聯數據被引入后,流程的下半部分的中間狀態Sc異或(0……1),完成關聯數據部分的引入。

引入關聯數據部分的偽代碼如下圖所示:

圖9 ASCON-AEAD處理關聯信息偽碼示意圖

(5)加密

將消息明文(P)按分組數據塊大小(r)分成t組(P1......Pt),在出現無法被整分時在末位拼接一個比特“1”以及數個比特“0”,確保消息明文可被整分。分組消息明文(Pi)異或進流程上半部分的中間狀態Sr后直接輸出對應分組消息密文(Ci),然后進行6輪輪操作后再引入下一組分組消息明文(Pi+1),在所有消息明文被引入后,完成加密部分。如果出現明文無法被整分后增補的情況下,在密文的輸出端也會在最后對于增補的部分進行去除。

加密部分的偽代碼如下圖所示:

圖10 ASCON-AEAD處理明文示意圖

(6)標簽輸出

流程的下半部分的中間狀態Sc異或密鑰(后補0至足位)后進行12輪輪操作,取出中間狀態S的前128bits與密鑰的前128bits進行異或后作為標簽并將之前分組的密文進行拼接后一起輸出。

標簽輸出部分的偽代碼如下圖所示:

圖11 ASCON-AEAD生成認證信息示意圖

(7)輪操作

在算法流程圖中,出現了兩種輪操作pa和pb,這兩種輪操作的本質并無區別,只是在執行輪數上有所區別,其下標即代表執行輪數,下面對于具體輪操作分別進行介紹。

輪操作基于代換置換網絡,一次輪操作可以細分成pL、pS、pC三部分(p=pL。pS。pC )。所有輪操作都是基于320bits的中間狀態S進行處理的,我們需要將中間狀態S按64btis一組分為5組x0,...,x4

首先是pC操作,pC操作為輪常數異或操作,將設置好的輪常數異或在x2的低8bits,如下圖所示:

圖12 ASCON-AEAD輪常量加示意圖

輪常數依據操作輪數不同,設置也有所區別,如下圖所示:

圖13 ASCON-AEAD輪常量取值示意圖

然后是pS操作,pS操作為代換操作,通過x0,...,x4按位(豎取)進行5-bits代換:

圖14 ASCON-AEAD S盒示意圖

代換表如下圖所示:

圖15 ASCON-AEAD S盒代換表

同時,算法也給出了bitslice版本的邏輯運算實現步驟,如下圖所示:

圖16 ASCON-AEAD S盒邏輯運算示意圖

接下來進行pL操作,pL操作為置換操作,如下圖所示,在xi內部進行循環移位后更新xi狀態。

圖17 ASCON-AEAD線性混淆示意圖

更新規則如下圖所示:

圖18 ASCON-AEAD線性混淆計算過程

參考資料

[1] Dobraunig C, Eichlseder M, Mendel F, et al. Ascon v1. 2[J]. Submission to the CAESAR Competition, 2016, 5(6): 7.