本應用筆記介紹了安全哈希算法(SHA)的基礎知識,并討論了該算法的變體。然后簡要介紹了如何使用算法進行身份驗證,包括哈希消息身份驗證代碼 (HMAC) 的概念。最后,本文介紹了一些Maxim安全認證器,這些認證器可用于非常輕松地為安全應用部署SHA算法。
介紹
在本應用筆記中,我們將討論廣泛用于對稱密鑰加密的安全哈希算法(SHA)。SHA 函數背后的基本思想是獲取可變大小的數據并將其壓縮為固定大小的位字符串輸出。這個概念稱為哈希。SHA 函數是一系列哈希算法,通過美國國家標準與技術研究院 (NIST) 的監督隨著時間的推移而開發。其中最新的是SHA-3功能。Maxim擁有一系列安全認證器產品,提供SHA-2和SHA-3功能。
圖 1 顯示了安全哈希生成的基本概念。
圖1.安全哈希生成,基本概念。
SHA 特性
SHA 函數具有以下特征:
它們具有可變的輸入長度和固定的輸出長度。
它們是單向函數。圖 1 顯示,除了嘗試每個可能的輸入文本之外,使用生成的哈希值重新生成輸入文本是不可行的。對于足夠大的輸入,這在計算上變得不可能。
如果將相同的輸入消息饋送到 SHA 函數,它將始終生成相同的結果哈希。
使用兩個不同的輸入值無法生成相同的哈希值。這稱為“防撞性”。
輸入值的微小變化,即使是單個位,也會完全改變生成的哈希值。這被稱為“雪崩效應”。
如果哈希函數滿足上述所有條件,則將其視為強哈希函數。
SHA 函數的類型
目前使用的一些 SHA 函數包括:
SHA-1
SHA-2
SHA-3
由于SHA-1正在逐步淘汰,不建議用于任何新設計,因此本應用筆記僅討論SHA-2和SHA-3。
SHA-2
SHA-2 函數根據輸出位長度有四種主要類型,如下所示:
SHA-224 – 哈希長度為 224 位。
SHA-256 – 哈希長度為 256 位。
SHA-384 – 哈希長度為 384 位。
SHA-512 – 哈希長度為 512 位。
圖2.SHA-256 – 哈希生成流。
首先填充輸入消息,以確保它完全適合“n”個 512 位塊。
SHA-3
SHA-3 函數沒有預定義的輸出長度。輸入和輸出長度也沒有最大值。為了與 SHA-2 進行比較,我們可以根據輸出位長度定義四種主要類型:
SHA3-224 – 哈希長度為 224 位。
SHA3-256 – 哈希長度為 256 位。
SHA3-384 – 哈希長度為 384 位。
SHA3-512 – 哈希長度為 512 位。
所有 SHA-3 類型都使用 Keccak 海綿功能。就像海綿一樣,第一步是吸收或吸收輸入信息。在下一階段,輸出哈希被擠出。圖 3 使用 SHA3-256 函數的框圖說明了這些階段。
圖3.SHA3-256 – Keccak 海綿哈希生成流程。
圖 3 圖中的迭代函數接收 1600 位數據,使用特定算法對其進行 24 輪排列,然后將其作為 1600 位塊傳遞到下一階段。這一直持續到吸收階段完成。
吸收階段完成后,最后一個 1600 位塊將傳遞到壓縮階段。在這種情況下,由于 SHA3-256 輸出哈希長度小于 1088 位,因此壓縮階段不需要任何迭代函數。最后階段的前 256 位是輸出哈希。
例如,如果所需的哈希長度為 2500 位,我們將需要迭代函數的三個實例才能獲得所需的長度哈希。
安全哈希和 HMAC 之間的差異
在探索消息身份驗證之前,了解安全哈希和哈希消息身份驗證代碼 (HMAC) 之間的差異非常重要,如圖 4 所示。本質上,安全哈希使用哈希算法(如 SHA-3)生成消息的固定長度哈希,而不考慮消息長度。HMAC 與此類似,但使用密鑰作為哈希引擎的附加輸入。它還生成固定長度的哈希,而不考慮輸入消息長度。
圖4.安全哈希和 HMAC。
使用 SHA-3 的消息身份驗證
圖 5 演示了如何使用 SHA-3 對消息進行身份驗證的示例,其中顯示了已討論的所有概念。
圖5.使用 SHA-3 HMAC 進行消息身份驗證。
在圖 5 中,Alice 通過將消息與特定密鑰一起饋送到 SHA-3 引擎來計算消息的 HMAC。Alice 之前已與 Bob 安全地共享此密鑰。
Alice 將生成的 HMAC 與消息一起發送給 Bob。然后,Bob 使用之前與 Alice 共享的相同密鑰生成自己的消息 HMAC。鮑勃將他生成的HMAC與他從愛麗絲那里收到的HMAC進行了比較。如果它們匹配,則消息未被篡改并且是真實的。在這種情況下,有人可以截獲 HMAC 和消息,然后更改消息并生成新的 HMAC 并將其發送給 Bob。但是,這將不起作用,因為攔截器將沒有密鑰,并且收到的 HMAC 將與計算的 HMAC 不匹配。因此,鮑勃將意識到消息不真實。
這個序列最重要的方面是 Alice 和 Bob 對其他人保密他們的共享密鑰。
Maxim的安全認證器產品,如DS28E50,內置SHA引擎和ChipDNA等多種安全功能。唰唰??這有助于根據用戶的要求保護任何密鑰。更多信息參見Maxim應用筆記6767:ChipDNA物理不可克隆功能技術如何保護嵌入式系統。
內置 SHA 引擎的安全身份驗證器
表1列出了Maxim提供的各種安全認證器以及其他主要特性和目標應用。
部分 | SHA 發動機 | 其他功能 | 典型應用 |
DS28E50 | SHA-3 | 2Kb內存,芯片DNA |
醫療傳感器和工具的認證 物聯網節點認證 外設身份驗證 打印機墨盒識別和認證 |
DS28E16 | SHA-3 | 256位安全存儲器,低成本 | 打印機墨盒和電池識別和認證 |
DS28E15 DS28EL15 | SHA-256 | 512位存儲器,EL器件為低壓(1.671V至1.89V)器件 |
醫療耗材識別和認證 安全功能控制 打印機墨盒識別和認證 |
DS28E22 DS28EL22 | SHA-256 | 2048位存儲器,EL器件為低壓(1.671V至1.89V)器件 |
網絡連接設備的身份驗證 打印機墨盒 ID/身份驗證 傳感器/附件認證和校準 系統知識產權保護 |
DS28E25 DS28EL25 | SHA-256 | 4096位存儲器,雙向認證,EL器件為低壓(1.671V至1.89V)器件 |
耗材的識別和認證 傳感器/附件認證和校準 系統知識產權保護 |
DS1964S | SHA-256 | 512 位內存,iButton |
存取控制 耗材認證 |
DS28E36 DS28C36 | SHA-256 | 8Kb 內存,雙向 ECDSA 或 SHA-256 身份驗證,兩個 GPIO |
附件和外設安全認證 安全存儲主機控制器的加密密鑰 |
DS28E83 | SHA-256 | 10Kb OTP 內存,高抗輻射性 | 附件和外設安全認證 |
DS28E84 | SHA-256 | 15Kb FRAM,10Kb OTP 內存,高抗輻射性 | 醫療耗材安全認證 |
總結
使用SHA來保護/驗證實物或知識產權是一個非常簡單的過程,前提是使用正確的支持工具。Maxim的安全認證器是實現這些目的的理想選擇。它們內置了具有許多功能的 SHA 引擎,使實現任何應用程序的安全性成為一個相對簡單的過程。每個器件都有全面的支持系統,如評估套件和免費軟件,包括基于 C 的演示代碼,以幫助開發人員快速部署其解決方案。
審核編輯:郭婷
-
Maxim
+關注
關注
8文章
859瀏覽量
87178 -
SHA
+關注
關注
0文章
16瀏覽量
8446 -
安全認證器
+關注
關注
0文章
13瀏覽量
9156
發布評論請先 登錄
相關推薦
評論