<nav id="46scu"></nav>
<menu id="46scu"><strong id="46scu"></strong></menu>
  • <menu id="46scu"></menu>
  • <xmp id="46scu"><xmp id="46scu">
    上海動信微電子科技有限公司

    聯系我們

    13482583038

    認證技術

    您的當前位置:首頁 > 新聞中心 > 認證技術

    基于PUF的密鑰生成器:FPGA實現

    發布時間:2016-06-03瀏覽次數:載入中...

    本文基于物理不可克隆函數PUF提出了一個實用模塊化的“密鑰生成器”設計,并且在FPGA設備上進行了完整的實現和評估。本文設計和實現的PUFKY,號稱基于PUF的密鑰生成器的第一次完整實現,包含一個PUF,一個糾錯碼BCH decoder和一個密碼熵累加器cryptographic entropy accumulator。

    大多數密碼應用的實現離不開一個安全密鑰。安全地生成和存儲密鑰依賴兩點最基本的需求:(1)一個真的隨機源,保證生成不可預測和唯一的新鮮密鑰;(2)一個受保護的存儲空間,用于可靠的儲存生成的密鑰信息,防止其被非授權方獲取。從實現的角度來看,這兩點需求都不容易滿足。首先,不可預測的隨機性通常使用偽隨機生成器PRNG(Pseudo-Random Number Generator)來實現,不過終究不是真隨機,可以被分析攻破和利用;其次,實現保護存儲也是一個很大的挑戰,通常導致增加的實現開銷以及受限的應用,而且即便使用高級的物理保護機制,也無法防止專業的攻擊者。

    基于PUF的密鑰生成器可以很好的滿足以上兩點需求,其將設備獨有的隨機指紋經過處理后轉換為密鑰。首先,這種方法不需要PRNG,隨機性已經可以由設備本身提供;其次,也不需要一個保護的非易失性存儲空間NVM,基于設備隨機指紋可以按需重新生成相同的密鑰。不過,PUF響應通常存在噪聲(noisy)而且低熵(low-entropy),因此基于PUF的密鑰生成器需要面臨兩個挑戰:消除噪聲,增加可靠性到實用可接受的要求;壓縮足夠的熵來達到固定長度的密鑰。模糊提取器Fuzzy Extractor可以很好滿足這兩點。

    本文構建的PUFKY體系如下圖所示:

    PUFKY體系示意圖

    該體系采用“Syndrome Construction”方法來構造Secure Sketching(SS)。這種構造方法主要使用二進制線性分組碼C(n,k,t)來進行構造,該分組碼的校驗矩陣為H。如何選取合適的線性分組碼很重要。通常的方式是使用一種分組碼(常用的是BCH碼),如最初的基于SRAM PUF的SS和FE構造;不過作者通過對“Efficient Helper

    Data Key Extractor on FPGAs (CHES 2008)”的分析發現使用分組碼的組合級聯形式有更大的優勢(在參數限制方面),于是采用了雙碼級聯的方式,使用Repetition Code(CREP)作為一個內部編碼(an inner code),然后使用一個BCH code(CBCH)作為一個外部編碼(an outer code)。

             另外,基于PUF生成密鑰通常采用模糊提取器FE,即組合一個SS和一個強隨機提取器Ext。這需要對隨機源的最小熵作一個很強的假設,而且使用Ext會導致熵流失很多,使得密鑰生成不是很實用。本篇基于另一種方法,即基于偽隨機數發生器實現熵累加(entropy accumulator)。NIST SP 800-90A規范(Sect. 10.4)和NIST sp800-108規范實際上都介紹了使用密碼哈希函數來進行熵的累積,進而生成需要長度的密鑰,要累積的熵至少要達到生成密鑰的長度。

             具體實現在一個低端FPGA(Xilinx Spartan-6)板子上,主要目標是為嵌入式系統提供解決方案,因此要求實現的性能消耗盡可能小。PUF采用的是ROPUF(Ring Oscillator PUF,環形振蕩器),需要振蕩器的規模為(a*b)。哈希算法采用比較新的研究成果,即輕量級的SPONGENT。ROPUF相關的參數主要有三個(l,pe,ρ),其中l是PUF輸出響應的長度,pe是PUF的最大比特錯誤率,ρ是PUF輸出響應的熵密度。最終生成密鑰的需求由兩個參數(m,pfail)來表示,m是目標密鑰的長度,pfail表示失敗率。ROPUF的體系如下圖:

    ROPUF體系圖

    一個參考實現:

    目標是生成密鑰m = 128位,失敗率pfail不大于10-9,實現參數過程大致如下:

    (1)選擇(l = 42, pe = 13%, ρ = 97.95%)的ROPUF,實現53*16個振蕩器,即a = 53,b=16。

    (2)SS使用CREP(7,1,3)和CBCH(318,174,17)的級聯形式,對于每42位的PUF響應,REP碼產生36位的輔助數據,并輸出6位給BCH,BCH會生成144位的輔助數據,并提供318位數據給熵累積器(即哈希函數)。

    (3)ROPUF生成a*l=2226個比特位數據,其中包含a*l*ρ=2180.4位的熵??偣草o助數據長度為53*36+144=2052位,這也是SS過程損失的熵,因此,SS后剩余的熵為2180.4-2052=128.4位,通過使用SPONGENT-128哈希函數,可以將這些熵積累在一個m=128位的密鑰中。

    (4)FPGA平臺上實現PUFKY共用了1162個切片(slices),其中82%用于實現ROPUF,其余18%用于密鑰生成邏輯單元(REP解碼37個,BCH syndrome計算72個,BCH解碼112個,SPONGENT128哈希22個,輔助數據RAM 38個)。

    (5)獲取128位密鑰共花費約5.62毫秒(@54MHz),其中PUF輸出花費4.59毫秒,其它用時稍微大一點的是BCH解碼。

     

    這里參考實現給出的是生成128位的強密鑰,可以采用類似PUFKY的模塊化體系設計生成其它密鑰參數的密鑰生成器。使用基于PUF的密鑰相比傳統密鑰生成方法有很多優勢,最明顯的兩個是:(1)不需要保護NVM來長期存儲密鑰,使用PUF可以在需要時重新生成;(2)密鑰在本質上與特點的平臺實體綁定,在防偽或者軟硬件綁定應用等方面會有很大的用處。

    隨著物聯網的發展,可以想象未來所有嵌入式設備上都自帶PUF,或者通過連接器連接一個PUF,并實現身份識別、認證、加解密等安全功能。在這種意義上,PUF的安全性還需要進一步的認證和實踐證明。
    【返回列表】

    相關新聞

    hK0uR+C0sPB2TJCV0iaXnGqB9B021S0kZ8v+3BksXP9eNwWAqj7CyPXvjx4gir+fn2RUFVv3ntFBFkEKscPnyW26UV8vfSC020l/FRswnB6JLyOcBP9x2toJ5+w0Gk1o
    pc加拿大开奖