FIPS 140 小註解

FIPS [1] 是一個安全規範, 全名為 Federal Information Processing Standards, 望文生義是個美國聯邦的規格. FIPS 基於 ISO 19790 [2] 的規範, 家族有 FIPS-1, FIPS-2, FIPS-3 等幾個版本. FIPS-1 和 FIPS-2 分別誕生於 1994 年和 2001 年, 算是老古董. FIPS-2 現已停止受理 [9]. FIPS-3 是 2019 年才出來的新標準, 將全面取代 FIPS-2.

FIPS 規範的不只是加密模組, 還包括文件, 和 source code 裡面的註解. FIPS-1 的涵蓋面包括: exact module name, hardware, software, firmware, and/or applet version numbers. 這些部分不能被竄改, 但沒有保證一定安全. FIPS-2 和以上的 level 會包含 operating platform.

FIPS-2 裡面又分成 4 個 level:

  • Level 1 可產品化的基本款.
  • Level 2 加上 physical tamper-evidence 和 role-based authentication.
  • Level 3 加上 physical tamper-resistance, identity-based authentication, 以及規定 “critical security parameters" 的 API 要和普通 API 分開 (physical or logical).
  • Level 4 需要硬體保護 (physical), 並且通過攻擊測試.

FIPS-3 除了參考 ISO 19790, 還參考 ISO 24759 [3]. 在 FIPS-2 level 2 當中, 它只提到要留下攻擊的證據, 在 level 3 才需要抵抗. 但打不過也沒關係. FIPS-3 提供一個在執行時自測的方式 (self-tests are only performed if used) [4]. 既然能在 run-time 跑, 它的演算法必須很快.

如果通過 FIPS 認證會拿到一個標章. Goole 後就會發現這 logo 居然可以有很多不同的長相. WolfSSL [4] 說: 號稱 FIPS-140 ready 或是 Design for FIPS 都是混淆視聽, 正版 logo 要通過NIST [5] 認證才算數. 所以標準長相是下圖的前兩個和右下黑白那個 (140-3 和 140-2) [6].

無論是 module 或 product 都可以過 FIPS-140 認證 (Algorithm 走 CAVP [10]). 對於 product 來說, 就是聲明 XX module inside. 目前排隊進名單的廠商非常踴躍, 以 processor 週邊硬體來說, 名單中有 CPU 兩大品牌 Intel 和 AMD 的 Cryptographic CoProcessor, 軟體有 RedHat Linux 的  Crypto API Cryptographic Module. Apple 則是同時有 Intel 版和自家 A 系列 CPU 的 corecrypto Module 都在待測之中.

這個 FIPS 認證流程叫做 CMVP (Cryptographic Module Validation Program), 想要 NIST review 要付工本費 (Cost Recovery fee). 但待測名單很長, 有 351 個 module 在等待測試的名單[7]. 已經過認證的只有 135 個 module [8]. 不知道 NIST 有沒有 super hot run 呢? 還好 Android Kernel Cryptographic Module 已經在 FIPS 140-3 Review Pending 名單之中, 所以只要用對 kernel, 就可以輕鬆上車.

[Ref]

  1. https://en.wikipedia.org/wiki/FIPS_140
  2.  ISO/IEC 19790:2012(E) Information technology — Security techniques — Security requirements for cryptographic modules
  3.  ISO/IEC 24759:2017(E) Information technology — Security techniques — Test requirements for cryptographic modules.
  4. WOLFCRYPT FIPS 140-2 and FIPS 140-3
  5. The National Institute of Standards and Technology (NIST) 
  6. https://csrc.nist.gov/Projects/cryptographic-module-validation-program/use-of-fips-140-2-logo-and-phrases
  7. https://csrc.nist.gov/Projects/cryptographic-module-validation-program/modules-in-process/Modules-In-Process-List
  8. https://csrc.nist.gov/Projects/cryptographic-module-validation-program/modules-in-process/IUT-List
  9. https://www.informationsecurity.com.tw/article/article_detail.aspx?aid=8977
  10. Algorithm 的驗證走 CAVP (Cryptographic Algorithm Validation Program)

[日誌] 什麼比較重要?

前陣子電腦一直當機, 害我拆拆裝裝, 連換水冷都可以一氣呵成了. 即使拆到片甲不留再重裝回去都毫不畏懼. However, 會當還是會當. 每個零件交叉比對過都是好的 (言下之意就是我買的零件可以組兩台了), 最後目標指向 AMD 的 fTPM. 它初次更新 BIOS 之後似乎好了一陣子, 但後來還是有問題. 中秋連假期間將它升級 Windows 11, 停用不明的 PCIE HW 後活了好幾天, 也許已經解決了.

經過這陣子的折騰, 當然我的部落格就慘了. 為了有個地方保存成長的軌跡, 於是將它放到 wordpress 託管, 把原來的網域 cash.idv.tw 用 frame 和 redirect 轉到新的網址 cashchou.com. 再搬運的過程中, 文章雖然都可以搬, 但是媒體 (media) 會掉東掉西的. 畢竟我從 2007 年開站以來, 後臺技術換了很多次, 有的圖檔放在 upload, 有的在 /upload/file, 有的在 upload/image, 有的在 upload/年/月…, 所以有些檔案已經不知何時失蹤了.

那麼那篇文章還能不能讀呢? 重不重要呢? 這就是個有趣的問題了. 15 年前, 我重視的是生活紀錄, 所以什麼都寫. 特別是重視食記和旅遊. 後來就是寫看過的書, 畢竟我看書很快, 又很會幫人挑錯, 看到錯字就有種不寫不快的衝動, 所以就寫了很多讀書心得. 即便我自己也有不少 typo, 但我不收錢, 故厚顏表示品質沒保證. 特別是理財的經典書籍, 我應該都看過. 暢銷或是有噱頭的也看過不少. 留下了很多我讀系列. 早年我也還在自己選股票的階段, 因此時不時也會分析哪些股票可以買? 這個有空時來驗證一下當年是否狗瞎了眼?

在我們搬家的時候, 如果家具爛了, 應該就會選擇不上車, 直接打包丟掉. 但是珍貴的照片就算只剩半張 (分手照 ?), 也是會帶走. 現在回頭去看歷年舊文, 就會發現選股的文章已經不重要了. 因為當時的時空都不能重現, 而且我已經改買 ETF, 不再研究個股了. ETF 是如此地枯燥乏味且單調無聊, 所以也沒啥可以分享的. 只能買了又買, 偶爾抱怨一下買貴了. 人家存股達人都還可以炫耀年領股息五百萬, 我本金加倍只領到幾十萬股息能有亮點嗎? 哈!

回歸到初心, 其實我想提供一個繁體中文的交流管道. 畢竟英文的網站大家看不習慣, 大陸的網站雖然多, 但互抄嚴重又是簡體字. 當大家想知道一門技術, 一個名詞, 只有簡字和英文可以選擇, 那也滿悲哀的. 通常我遇到不懂的東西, 都會先 Google 一下有沒有人用繁體字發表過, 如果有, 我就去看別人整理的. 若是沒有, 就自己設法搞懂, 然後寫一篇繁體簡介. 所以這次大搬家之後, 食記和遊記若救不起來就不救了. 推薦股票就留待有空時自己鞭一下.

最後里程碑的部分, 我想好好更新一下. 活了一整年, 沒有一件可以說的事情能寫出來, 那真是滿慘的. 即便加薪分紅這種事不能寫, 變胖不想寫, 公司資訊寫多了會被蟑螂收集提告專利侵權. 但如我 FB 臉友貼的文, “現在就是今後人生中最年輕力壯的一天". 先搞定今年最值得紀念的事, 有空再來回顧一下以前發生了什麼吧?