openssl 3.0與FIPS

openssl配置的幾個概念

openssl.conf

.include /path/to/fipsmodule.cnf

[openssl_init]
providers = provider_sect
alg_section = alg_sect

[provider_sect]
default = default_sect
fips = fips_sect

[default_sect]
activate = 0

[alg_sect]
default_properties = fips=yes

/path/to/fipemodule.cnf

[fips_sect]
activate = 1
conditional-errors = 1
security-checks = 1
module-mac = 12:F1:...:67:03

一個概念provider,和algrithm:

  1. 一個provider是一組algrithm的合集权埠,也包括一些provider內(nèi)屬性暂吉。
  2. 例子里有兩個provider:default和fips
  3. fips這個provider自動具有"fips=yes"的屬性帽借,但是default這個provider自動具有的屬性是”fips=no"于游。
    3.1 也可以通過程序OSSL_PROVIDER_load/OSSL_PROVIDER_unload來加載和卸載一個provider麸折。
  4. provider的屬性activate=1表示是否可以用available。即OSSL_PROVIDER_available()返回true或者false挟秤。
    4.1:但是default這個provider的activate屬性無效壹哺,它總是available的。
  5. alg_sect里的default_properties表示algritmh的缺省查找provider屬性艘刚,其中前綴default_表示缺省的意思管宵,不是表示default這個provider。
    5.1 簡單的說攀甚,就是用戶要查找一個algrithm時箩朴,如果沒有指定從哪個provider里面查找(通過提供provider屬性的方法),那么就使用這里定義的屬性來表示從哪一個provider里面查找秋度。

給一個程序例子

    char * providernames[] = {"default", "fips"};
    for (int i = 0; i < 2; i++) {
        printf("Provider %s: %s\n", providernames[i], OSSL_PROVIDER_available(NULL, providernames[i]) == 1 ? "available" : "unavailable");
    }

判斷一個provider是否可用炸庞,如果在配置文件里activate=1表示可用,activate=0表示不可用静陈。
當(dāng)然default這個provider除外燕雁,它總是可以,不管activate的值鲸拥。

    OSSL_PROVIDER* provider = OSSL_PROVIDER_load(NULL, "fips");
    if (provider == NULL) {
        printf("Load provider '%s' failed\n", providername);
    } else {
        printf("Load provider '%s' succes\n", providername);
    }

    ...
    OSSL_PROVIDER_unload(provider);

加載和卸載一個provider拐格。

    int fips_default_enable = EVP_default_properties_is_fips_enabled(NULL);
    printf("FIPS default enabled=%d/%s\n", fips_default_enable, fips_default_enable == 1 ? "true": "false");

檢查FIPS defaut enable屬性,這個值就是配置文件里的[alg_sect]節(jié)下的default_properties = fips=yes屬性值刑赶。這個值也可以通過程序修改:

    if (!EVP_default_properties_enable_fips(NULL, 1)) {
        printf("Failed to sett default fips enable\n");
    }

下面獲取algrithim

        md = EVP_MD_fetch(NULL, "SHA256", NULL);
        if (md == NULL) {
            printf("Provider is %s\n", "NULL");
        } else {
            printf("Provider is %s\n", OSSL_PROVIDER_get0_name(EVP_MD_get0_provider(md)));
        }

這個地方能獲取是從那個provider里面取得algrithm捏浊,比如'default', 還是'fips'。

舉例來說:

ID [alg_sect]default_properties = fips=no [alg_sect]default_properties = fips=yes
EVP_MD_fetch(NULL, "MD5", NULL) default NULL
EVP_MD_fetch(NULL, "SHA256", NULL) default fips
EVP_MD_fetch(NULL, "MD5", "fips=no") default default
EVP_MD_fetch(NULL, "SHA256", "fips=no") default default
EVP_MD_fetch(NULL, "MD5", "fips=yes") NULL NULL
EVP_MD_fetch(NULL, "SHA256", "fips=yes") fips FIPS

結(jié)論:
EVP_MD_fetch如果參數(shù)指定了provider屬性(fips=yes)那么具有高優(yōu)先權(quán)撞叨。

  • fips=no那么就從default這個provider里面取金踪,因為default這個provider的fips=no。
  • fips=yes那么就從fips這個provider里面取牵敷,因為fips這個provider的fips=yes胡岔。
  • fips沒指定,那么從algrithm指定的屬性里面查詢:
    • default_properties = fips=no枷餐,表示缺省找default這個provider
    • default_properties = fips=yes, 表示缺省找fips這個provider靶瘸。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市毛肋,隨后出現(xiàn)的幾起案子怨咪,更是在濱河造成了極大的恐慌,老刑警劉巖润匙,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件诗眨,死亡現(xiàn)場離奇詭異,居然都是意外死亡孕讳,警方通過查閱死者的電腦和手機(jī)匠楚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來厂财,“玉大人油啤,你說我怎么就攤上這事◇翱粒” “怎么了益咬?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長帜平。 經(jīng)常有香客問我幽告,道長,這世上最難降的妖魔是什么裆甩? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任冗锁,我火速辦了婚禮,結(jié)果婚禮上嗤栓,老公的妹妹穿的比我還像新娘冻河。我一直安慰自己箍邮,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布叨叙。 她就那樣靜靜地躺著锭弊,像睡著了一般。 火紅的嫁衣襯著肌膚如雪擂错。 梳的紋絲不亂的頭發(fā)上味滞,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天,我揣著相機(jī)與錄音钮呀,去河邊找鬼剑鞍。 笑死,一個胖子當(dāng)著我的面吹牛爽醋,可吹牛的內(nèi)容都是我干的蚁署。 我是一名探鬼主播,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼蚂四,長吁一口氣:“原來是場噩夢啊……” “哼形用!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起证杭,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤田度,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后解愤,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體镇饺,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年送讲,在試婚紗的時候發(fā)現(xiàn)自己被綠了奸笤。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡哼鬓,死狀恐怖监右,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情异希,我是刑警寧澤健盒,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站称簿,受9級特大地震影響扣癣,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜憨降,卻給世界環(huán)境...
    茶點故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一父虑、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧授药,春花似錦士嚎、人聲如沸呜魄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽爵嗅。三九已至,卻和暖如春膳殷,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背九火。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工赚窃, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人岔激。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓勒极,卻偏偏與公主長得像,于是被迫代替她去往敵國和親虑鼎。 傳聞我的和親對象是個殘疾皇子辱匿,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,044評論 2 355

推薦閱讀更多精彩內(nèi)容