在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

好消息!國密算法終被Linux內(nèi)核社區(qū)接受了

如意 ? 來源:Linux中國 ? 作者:乾越,熙羽 ? 2020-10-27 09:28 ? 次閱讀

背景

國密,是國家商用密碼的簡稱,由國家密碼管理局制定算法標準,同時也制定了大量的產(chǎn)品及接口規(guī)范以及應用場景。

隨著近年來外部的國際貿(mào)易沖突和技術(shù)封鎖,內(nèi)部互聯(lián)網(wǎng)的快速發(fā)展,IoT 領(lǐng)域的崛起,以及金融領(lǐng)域的變革愈演愈烈。擺脫對國外技術(shù)和產(chǎn)品的過度依賴,建設(shè)行業(yè)網(wǎng)絡(luò)安全環(huán)境,增強我國行業(yè)信息系統(tǒng)的安全可信顯得尤為必要和迫切。

密碼算法是保障信息安全的核心技術(shù),尤其是最關(guān)鍵的銀行業(yè)核心領(lǐng)域長期以來都是沿用 3DES、SHA-1、RSA 等國際通用的密碼算法體系及相關(guān)標準。

2010 年底,國家密碼管理局公布了我國自主研制的“橢圓曲線公鑰密碼算法”(SM2 算法)。為保障重要經(jīng)濟系統(tǒng)密碼應用安全,國家密碼管理局于 2011 年發(fā)布了《關(guān)于做好公鑰密碼算法升級工作的通知》,明確要求“自 2011 年 3 月 1 日起,在建和擬建公鑰密碼基礎(chǔ)設(shè)施電子認證系統(tǒng)和密鑰管理系統(tǒng)應使用國密算法。自 2011 年 7 月 1 日起,投入運行并使用公鑰密碼的信息系統(tǒng),應使用 SM2 算法。”

自 2012 年以來,國家密碼管理局以《中華人民共和國密碼行業(yè)標準》的方式,陸續(xù)公布了 SM2/SM3/SM4 等密碼算法標準及其應用規(guī)范。其中“SM”代表“商密”,即用于商用的、不涉及國家秘密的密碼技術(shù)。

這其中值得我們關(guān)注的主要是以下公開的算法:

SM2:基于橢圓曲線密碼(ECC)的公鑰密碼算法標準,提供數(shù)字簽名,密鑰交換,公鑰加密,用于替換 RSA/ECDSA/ECDH 等國際算法

SM3:消息摘要算法,哈希結(jié)果為 256 位,用于替換 MD5/SHA1/SHA256 等國際算法

SM4:對稱加密算法,密鑰長度和分組長度均為 128 位,主要用于無線局域網(wǎng)標準,用于替換 DES/AES 等算法

國密證書:這里的國密證書指的是使用國密算法(SM2-with-SM3)的標準 X509 格式證書,證書使用 SM3 作為哈希算法,使用 SM2 作為數(shù)字簽名算法

國密 SSL:采用國密算法,符合國密標準的安全傳輸協(xié)議,也就是 SSL/TLS 協(xié)議的國密版本。

SM2進階Linux內(nèi)核之路

目前 Linux 內(nèi)核已經(jīng)較好的支持了 SM3 和 SM4 算法,這得益于無線局域網(wǎng)標準的廣泛使用。但 SM2 算法和國密證書遲遲沒有得到支持,也就無法基于國密來建立全棧可信和內(nèi)核中的完整性驗證,因此在內(nèi)核中支持這一套體系也變得迫切起來。整個規(guī)劃是:在內(nèi)核中支持 SM2 算法和國密證書,在內(nèi)部業(yè)務(wù)率先應用起來后,最終推進到社區(qū)。

整個流程下來,諸多不順,權(quán)且記錄下來。

第一回

有了規(guī)劃,接下來就是考慮如何實施。但凡密碼學算法,都會先考慮是否可以從 openssl 做移植。幸運的是,openssl 對 SM2/3/4 支持得非常好,橢圓曲線算法的實現(xiàn)久經(jīng)考驗,非常成熟,而且最新版本也完整支持了國密證書。

不幸的是,openssl 的各個模塊之間耦合度很高,要實現(xiàn) SM2 和國密證書,需要移植 openssl 架構(gòu)和基礎(chǔ)設(shè)施代碼,包括 BIGNUM、ECC、X509 等。這個工作量無疑是巨大的,即便實現(xiàn)了,這種方式也很難被社區(qū)接受,再三考慮權(quán)衡后,果斷放棄了這條“捷徑”。

第二回

發(fā)現(xiàn)了一個令人驚喜的事實:內(nèi)核中已經(jīng)有了一個橢圓算法的基礎(chǔ)實現(xiàn)(crypto/ecc.c),何不嘗試基于這個算法來做呢?于是參照 SM2 規(guī)范開始編碼,但結(jié)果有點遺憾,這個橢圓算法在 SM2 上居然失效了,連最基本的點乘結(jié)果都是錯的!納尼?劇本不應該是這樣的。于是發(fā)郵件咨詢該算法的一個資深開發(fā)者,很快就得到了下面的回復(感嘆天下還是好心人多):

Shamir‘s trick algo is probably generic, but it’s ecc_point_double_jacobian()that is curve specific.

Algorithms are chosen that are fit curves I (and previous coders) used.You need to check their properties carefully if you going to use them.

Some variants of used algos, that may fit other curves, are in referencedpapers (in comments)。

總結(jié)原因:這個算法是經(jīng)過高度優(yōu)化的算法,是精確適配過 NIST 和 ECRDSA 橢圓曲線參數(shù)的,并不一定適合國內(nèi)的 SM2 曲線參數(shù),看來這條路是走不通了。..。..

。..。..哭泣中,別理我。

。..。..擦干眼淚,看成敗,人生豪邁,不過是從頭再來。..。..

第三回

經(jīng)過反復探索,發(fā)現(xiàn)內(nèi)核中 RSA 算法是基于一個 mpi(高精度整數(shù))庫實現(xiàn)的,這個庫來源于 libgcrypt(這是知名隱私保護軟件 GnuPG 的底層算法實現(xiàn))。內(nèi)核中已經(jīng)實現(xiàn)了一個早期版本的 mpi,當時就是為了實現(xiàn) RSA 引入的。

現(xiàn)在的 libgcrypt 已經(jīng)有了完整的橢圓曲線基礎(chǔ)算法,于是抱著試試看的心態(tài)基于 libgcrypt 測試 SM2 算法曲線,蒼天保佑,這次的驚喜沒有變成驚嚇,實驗結(jié)果與 SM2 規(guī)范一致。

第四回

libgcrypt 中的 ECC 算法是個通用的算法,實現(xiàn)耦合度低。于是有了一個想法,可以嘗試先在 libgcrypt 中實現(xiàn) SM2,小試牛刀之后再把這一套東西全部移植到內(nèi)核,進一步推進到社區(qū),看起來這也是能被社區(qū)接受的方式。

有了計劃后,索性擺個安逸的造型,莊嚴肅穆地將雙手放在鍵盤上,讓思維隨著手指自然流淌,接下來的開發(fā)調(diào)試就比較順利了,很快便有了公鑰算法的四件套:加密,解密,簽名,驗簽。

一鼓作氣把這些實現(xiàn)提交到了 libgcrypt 社區(qū),經(jīng)過兩輪的審核再修改之后,最終 SM2 算法作為 ECC 的一個子算法被社區(qū)接受,這里要感謝 libgcrypt 的維護者之一的 NIIBE Yutaka,耐心友好,對中國傳統(tǒng)文化也很了解。整體過程比較順利,表過不提。附上相關(guān)提交:

第五回

趁熱打鐵,由于內(nèi)核中的 lib/mpi 庫是一個較老的版本并且是為 RSA 服務(wù)的,相對于 libgcrypt 中的 mpi,是一個閹割的版本,需要移植缺失的函數(shù)以及 ECC 算法,這沒什么技術(shù)難度,卻也是一個精細活,工作量也不小。

在實踐中,把實現(xiàn) SM2 的過程中所缺失的東西都移植過來,很快便有了相應的 SM2 算法和國密證書的實現(xiàn)。再經(jīng)過幾輪打磨,并做了充分的測試后,就有了最初的這組補丁: https://lkml.org/lkml/2020/2/16/43

第六回

中國古語曰過,一鼓作氣,再而衰,三而竭,事情的進展再次遇到阻礙。Linux 內(nèi)核比不得專用的密碼學庫,對于這么一個不怎么知名的算法,社區(qū)并沒有表現(xiàn)出什么興趣,甚至鮮有人問津,最終以沒有實際應用場景而被拒絕。事情當然不能就這么結(jié)束,考慮到代碼量大,維護者審核意愿低,果斷裁剪掉了 SM2 的加解密和簽名,只保留了支持國密證書必要的驗簽功能,后來陸陸續(xù)續(xù)又做了一些小修小補,同時給 IMA 的上游做了國密算法的增強以便將國密功能在 IMA 場景的應用作為實際案例。

同時,隨著跟相關(guān)開發(fā)者和維護者不斷的軟si磨chan硬lan泡da,不斷地發(fā)送新的補丁,最后甚至都摸透了維護者習慣性的回復時間和補丁的合入規(guī)律,持續(xù)地緩慢推進 SM2 進入社區(qū)的步伐。這期間沒有波瀾壯闊的故事,也沒有狗血的劇情,balabalabala.。..。.,省略while (1) {。..} 循環(huán)。

第七回

年過中秋月過半, 歷時半年多時間,SM2 早已不是那個最熟悉的娃,不知不覺補丁也更新到了 v7 版本。中秋月圓之夜向來都是有大事要發(fā)生的。是夜,一個蓋世英雄,頭頂鍋蓋,腰纏海帶,腳踩七彩祥云飛過來了,SM2 終于等到了它的至尊寶。言歸正傳,這個版本的補丁最終被社區(qū)接受,目前已經(jīng)合并到了 Linux 主線的 5.10-rc1:

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/log/?qt=author&q=Tianjia+Zhang

如不出意外會在 5.10 內(nèi)核版本中正式發(fā)布。

libgcrypt 全面支持國密算法

后來有幸在某個機緣巧合之下,在 libgcrypt 中實現(xiàn)了 SM4。作為國密開發(fā)過程的一個附屬產(chǎn)物,目前 libgcrypt 已經(jīng)全面支持了國密算法 SM2/3/4,這些實現(xiàn)都會在下一個版本 1.9.0 正式發(fā)布。其中 SM3 由相關(guān)同事在 2017 年開發(fā)。

ima-evm-utils 支持 SM2-with-SM3 國密簽名

內(nèi)核已經(jīng)支持了 SM2 和國密證書,作為 IMA 完整性簽名的用戶態(tài)工具,ima-evm-utils 對國密的支持當然不能落下,附上相關(guān)的提交:

https://sourceforge.net/p/linux-ima/ima-evm-utils/ci/ceecb28d3b5267c7d32c6e9401923c94f5786cfb/log/?path=

已知問題

當下 SM2 還有一些問題需要注意:

SM2 X509 證書中沒有為 SM2 公鑰算法定義獨立的 OID 標識,目前是識別 OID_id_ecPublicKey 標識默認當作 SM2

SM2 規(guī)范沒有為推薦的橢圓曲線參數(shù)定義 OID 標識,這也導致 SM2 算法僅有一個默認的橢圓曲線參數(shù)

SM2 規(guī)范中對消息簽名時,除了要計算消息自身的 SM3。同時 SM2 橢圓曲線參數(shù)和公鑰都要參與到 SM3 的計算中來,SM2 私鑰簽名是對最終的哈希結(jié)果做簽名,這一規(guī)范定義是有點另類,這是與國際通用算法的一個主要差異:

正常情況下,X509 證書解析與算法都被實現(xiàn)為獨立的模塊。正是由于 SM2 的這個規(guī)范會導致實現(xiàn)上的強耦合:X509 證書驗證時需要計算證書中 tbs 的 SM3 哈希,這個哈希同樣需要橢圓曲線參數(shù)以及公鑰數(shù)據(jù),而這些數(shù)據(jù)是一次完整 SM2 驗簽過程中的臨時數(shù)據(jù),目前的內(nèi)核中并沒有提供這樣的回調(diào)機制(當然這是 SM2 的特殊情況),這就把 X509 證書解析與 SM2 算法強綁到了一起,沒法解耦。

這也導致了應用該功能的一點限制,SM2 只能支持內(nèi)建編譯(Y),而不支持編譯成模塊(M),讓 X509 在編譯時就知道已經(jīng)支持 SM2,才能正常驗簽國密證書。從實現(xiàn)上看,也有一些動態(tài)加載 SM2 模塊獲取獲取函數(shù)指針的方法,相比于框架層的支持,都不是很友好。

IMA 簽名在計算文件哈希的時候,內(nèi)核是直接計算文件哈希的,這塊并沒有針對是否使用 SM2 簽名而做特殊處理(指上圖中的增加 Za 值)。當下內(nèi)核做的 IMA 國密簽名驗證的支持,同時也支持了 ima-evm-utils 的國密 sm2+sm3 簽名(依賴最新的 openssl),目前這塊都是直接計算文件哈希,沒有加 Za 值,這也是當下最優(yōu)的方案。

需要說明的一點是,Za 是國密簽名以及驗簽里要求的,只是簽名驗簽的流程里需要,但是國密這個流程跟目前主流的算法是相悖的,如果要支持,內(nèi)核和 ima-evm-utils 工具都需要較大修改,內(nèi)核要涉及到架構(gòu)修改,社區(qū)也不愿意接受,所以目前就按主流方式支持了 sm2+sm3 的 IMA 簽名。

總而言之,言而總之兩條:

要支持國密證書驗證,SM2 要么不編譯,要么必須內(nèi)建編譯,不支持編譯成模塊。當然了,SM2 作為一個非對稱算法,只簽名一個哈希或者基于國密的 IMA 驗證,并沒有這個限制。IMA 簽名工具 ima-evm-utils 以及內(nèi)核計算文件 SM3 哈希所用的國密算法沒有加 Za,這個是與規(guī)范的一點差異。
責編AJX

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 算法
    +關(guān)注

    關(guān)注

    23

    文章

    4702

    瀏覽量

    94960
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11479

    瀏覽量

    213046
收藏 人收藏

    評論

    相關(guān)推薦
    熱點推薦

    芯科技與信大壹聯(lián)合推出抗量子密碼芯片

    近日,從芯科技再次傳來喜訊,芯科技與鄭州信大壹科技有限公司(以下簡稱“信大壹”) 合作研發(fā)的抗量子密碼芯片AHC001新產(chǎn)品于近日在公司成功通過內(nèi)部性能和功能測試,實現(xiàn)了公司信
    的頭像 發(fā)表于 05-07 17:55 ?1528次閱讀
    <b class='flag-5'>國</b>芯科技與信大壹<b class='flag-5'>密</b>聯(lián)合推出抗量子密碼芯片

    Linux內(nèi)核編譯失敗?移動硬盤和虛擬機的那些事兒

    Linux內(nèi)核卻失敗了,這是咋回事?FAT和NTFS文件系統(tǒng)不能支持軟鏈接,在這寫格式的磁盤里編譯內(nèi)核會失敗,同樣也不能在這樣的磁盤里解壓內(nèi)核源碼,會造成軟鏈接
    的頭像 發(fā)表于 04-11 11:36 ?286次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>內(nèi)核</b>編譯失敗?移動硬盤和虛擬機的那些事兒

    部署WoSign SSLRSA雙證書,實現(xiàn)HTTPS加密

    我國網(wǎng)絡(luò)安全法規(guī)體系不斷完善,形成了以《網(wǎng)絡(luò)安全法》為核心的立體化法律框架。阿里云數(shù)字證書管理服務(wù)提供國產(chǎn)品牌SSL證書,支持簽發(fā)基于算法的SSL/TLS證書,助力金融、政務(wù)等行業(yè)滿足
    的頭像 發(fā)表于 03-26 10:58 ?311次閱讀
    部署WoSign SSL<b class='flag-5'>國</b><b class='flag-5'>密</b>RSA雙證書,實現(xiàn)<b class='flag-5'>國</b><b class='flag-5'>密</b>HTTPS加密

    樹莓派4 性能大比拼:標準Linux與實時Linux 4.19內(nèi)核的延遲測試

    引言本文是對我之前關(guān)于RaspberryPi3同一主題的帖子的更新。與之前的帖子一樣,我使用的是隨Raspbian鏡像提供的標準內(nèi)核,以及應用了RT補丁的相似內(nèi)核版本。對于實時版,我
    的頭像 發(fā)表于 03-25 09:39 ?283次閱讀
    樹莓派4 性能大比拼:標準<b class='flag-5'>Linux</b>與實時<b class='flag-5'>Linux</b> 4.19<b class='flag-5'>內(nèi)核</b>的延遲測試

    云平臺如何部署WoSign SSL“RSA雙證書”

    阿里云WoSign品牌SSL證書是阿里云平臺熱銷的國產(chǎn)品牌證書之一,支持簽發(fā)密合規(guī)的SM2算法SSL證書以及全球信任的RSA算法SSL證書,能夠滿足平臺用戶不同的SSL證書應用需求,同時為用戶提供
    的頭像 發(fā)表于 03-18 17:03 ?296次閱讀
    云平臺如何部署WoSign SSL“<b class='flag-5'>國</b><b class='flag-5'>密</b>RSA雙證書”

    電力通信物聯(lián)網(wǎng)應用,網(wǎng)關(guān)守護電力數(shù)據(jù)安全

    電力網(wǎng)關(guān)是用于保護電力調(diào)度數(shù)據(jù)網(wǎng)路由器和電力系統(tǒng)的局域網(wǎng)之間通信安全的電力專用網(wǎng)關(guān)機,主要為上下級控制系統(tǒng)之間的廣域網(wǎng)通信提供認證與加密服務(wù),實現(xiàn)數(shù)據(jù)傳輸?shù)臋C密性、完整性。電力
    的頭像 發(fā)表于 02-21 16:59 ?1175次閱讀
    電力通信物聯(lián)網(wǎng)應用,<b class='flag-5'>國</b><b class='flag-5'>密</b>網(wǎng)關(guān)守護電力數(shù)據(jù)安全

    芯科技亮相2025天津豪高峰論壇

    近日,由芯科技(688262.SH)聯(lián)合主辦的天津豪高峰論壇在天津成功舉辦。此次論壇以“豪聚智 共贏未來”為主題,由天津市國家密碼管理局指導,天津市商用密碼行業(yè)協(xié)會、南開大學主辦,
    的頭像 發(fā)表于 01-16 11:16 ?674次閱讀

    騰訊云內(nèi)核團隊修復Linux關(guān)鍵Bug

    Maintainer深感棘手的關(guān)鍵內(nèi)核bug。 這一改進方案經(jīng)過嚴格評審和測試,最終合并進入后續(xù)的Linux LTS(長期支持)版本中,標志著騰訊云在操作系統(tǒng)內(nèi)核領(lǐng)域的技術(shù)實力得到了
    的頭像 發(fā)表于 12-31 10:58 ?627次閱讀

    嵌入式學習-飛凌嵌入式ElfBoard ELF 1板卡-Linux內(nèi)核移植之內(nèi)核簡介

    學到本章節(jié),大家應該對Linux操作系統(tǒng)都有了一定的了解,但可能還不知道我們拿到手的內(nèi)核源碼都經(jīng)歷了什么。linux有一個龐大的開源社區(qū),每個人都可以向開源
    發(fā)表于 12-16 13:08

    飛凌嵌入式ElfBoard ELF 1板卡-Linux內(nèi)核移植之內(nèi)核簡介

    學到本章節(jié),大家應該對Linux操作系統(tǒng)都有了一定的了解,但可能還不知道我們拿到手的內(nèi)核源碼都經(jīng)歷了什么。linux有一個龐大的開源社區(qū),每個人都可以向開源
    發(fā)表于 12-13 09:03

    deepin社區(qū)亮相第19屆中國Linux內(nèi)核開發(fā)者大會

    中國 Linux 內(nèi)核開發(fā)者大會,作為中國 Linux 內(nèi)核領(lǐng)域最具影響力的峰會之一,一直以來都備受矚目。
    的頭像 發(fā)表于 10-29 16:35 ?879次閱讀

    linux驅(qū)動程序如何加載進內(nèi)核

    Linux系統(tǒng)中,驅(qū)動程序是內(nèi)核與硬件設(shè)備之間的橋梁。它們允許內(nèi)核與硬件設(shè)備進行通信,從而實現(xiàn)對硬件設(shè)備的控制和管理。 驅(qū)動程序的編寫 驅(qū)動程序的編寫是Linux驅(qū)動開發(fā)的基礎(chǔ)。在編
    的頭像 發(fā)表于 08-30 15:02 ?1022次閱讀

    Linux內(nèi)核測試技術(shù)

    Linux 內(nèi)核Linux操作系統(tǒng)的核心部分,負責管理硬件資源和提供系統(tǒng)調(diào)用接口。隨著 Linux 內(nèi)核的不斷發(fā)展和更新,其復雜性和代碼規(guī)
    的頭像 發(fā)表于 08-13 13:42 ?971次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>內(nèi)核</b>測試技術(shù)

    Linux內(nèi)核中的頁面分配機制

    Linux內(nèi)核中是如何分配出頁面的,如果我們站在CPU的角度去看這個問題,CPU能分配出來的頁面是以物理頁面為單位的。也就是我們計算機中常講的分頁機制。本文就看下Linux內(nèi)核是如何管
    的頭像 發(fā)表于 08-07 15:51 ?591次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>內(nèi)核</b>中的頁面分配機制

    歡創(chuàng)播報 華為宣布鴻蒙內(nèi)核已超越Linux內(nèi)核

    1 華為宣布鴻蒙內(nèi)核已超越Linux內(nèi)核 ? 6月21日,在華為開發(fā)者大會上, HarmonyOS NEXT(鴻蒙NEXT)——真正獨立于安卓和iOS的鴻蒙操作系統(tǒng),正式登場。這是HarmonyOS
    的頭像 發(fā)表于 06-27 11:30 ?1199次閱讀
    主站蜘蛛池模板: 欧美人与动性行为网站免费 | 亚洲爽视频 | 国产精品三级在线观看 | 国内一国产农村妇女一级毛片 | 国产亚洲第一 | 麻豆色哟哟网站 | 狠狠婷婷| 四虎永久免费地ww4hu57 | 欧美亚洲在线 | 精品免费视在线观看 | 久青草视频免费视频播放线路1 | 理论片免费午夜 | 成人综合在线观看 | 亚洲高清色图 | 欧美在线成人午夜影视 | 精品少妇一区二区三区视频 | 轻点灬大ji巴太粗太长了爽文 | 日鲁夜鲁鲁狠狠综合视频 | 99久久国产免费中文无字幕 | 免费人成动漫在线播放r18 | 91正在播放| 一区二区亚洲视频 | 韩国三级久久精品 | 色综合久久网女同蕾丝边 | 特级毛片免费视频观看 | 久久国产香蕉视频 | 免费人成动漫在线播放r18 | 黄色成人免费网站 | 国产拍拍1000部ww | 婷婷六月丁香午夜爱爱 | 日韩一级免费视频 | 一卡二卡卡四卡无人区中文 | 欧美性爽xxxⅹbbbb | 萝l在线精品社区资源 | 一级aaaaa毛片免费视频 | 91大神精品长腿在线观看网站 | 天天躁日日2018躁狠狠躁 | 国产牛仔裤系列在线观看 | 毛片色毛片18毛片美女 | 高hnp汁水bl总受软萌受 | 色视频免费观看 |