日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

密码学专题 OpenSSL标准转换指令

發(fā)布時間:2023/12/13 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 密码学专题 OpenSSL标准转换指令 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

概述

  • 繁多復(fù)雜的各種文件編碼格式、證書格式和密鑰格式等。事實上,并非OpenSSL開發(fā)者想要將數(shù)字世界弄得如此令人頭疼,只是由于各種原因,數(shù)字世界存在各種不同的標(biāo)準(zhǔn),為了盡量兼容這些不同的標(biāo)準(zhǔn),OpenSSL開發(fā)者才相應(yīng)地在其指令和代碼中支持如此多的格式。
  • 日常使用會面臨處理這些不同標(biāo)準(zhǔn)之間相互兼容和轉(zhuǎn)換的問題,比如將X.509證書轉(zhuǎn)換成PKCS#12格式證書就是常見的任務(wù)。事實上,在OpenSSL的很多指令中提供了不同格式和標(biāo)準(zhǔn)之間的轉(zhuǎn)換功能
  • 本章將集中介紹pkcs8和nseq指令的使用及其相關(guān)的標(biāo)準(zhǔn)

PKCS#8標(biāo)準(zhǔn)簡介

  • 相對于其他標(biāo)準(zhǔn),PKCS#8標(biāo)準(zhǔn)算是一個非常簡單的標(biāo)準(zhǔn)了,它主要用于封裝私鑰和其他相關(guān)的屬性信息。一般來說,PKCS#8格式的私鑰都是被加密的,支持PKCS#5和PKCS#12標(biāo)準(zhǔn)定義的算法,當(dāng)然,私鑰也可以不加密。
  • PKCS#8標(biāo)準(zhǔn)一方面可以增強(qiáng)私鑰的安全性,另一方面也為用戶提供了一種簡單的確立信任關(guān)系的方式,這主要是基于私鑰特別名稱和最高層可信者的權(quán)威公鑰等屬性信息。

pkcs8指令介紹

功能概述和指令格式

  • OpenSSL提供了pkcs8指令來執(zhí)行PKCS#8標(biāo)準(zhǔn)相關(guān)的工作。它可以把私鑰轉(zhuǎn)化為PKCS#8的格式,也可以把PKCS#8格式的私鑰轉(zhuǎn)換成其他存儲標(biāo)準(zhǔn)的格式。OpenSSL的pkcs8指令對加密和非加密格式的私鑰都能進(jìn)行處理,其支持的加密算法有PKCS#5(版本1.5和2.0)和PKCS#12兩種標(biāo)準(zhǔn)的定義。OpenSSL提供的經(jīng)過PEM編碼的PKCS#8標(biāo)準(zhǔn)的文件,分為加密和非加密兩種方式。

PKCS#8文件生成選項topk8

  • 默認(rèn)情況下,pkcs8指令會要求輸入一個PKCS#8格式的密鑰,并將其進(jìn)行處理后轉(zhuǎn)換成普通格式的密鑰輸出并存儲,這種情況一般用于處理或者顯示一個已經(jīng)存在的PKCS#8密鑰的內(nèi)容。如果使用了topk8選項,則pkcs8指令會將輸入的一個普通格式的密鑰轉(zhuǎn)換成PKCS#8標(biāo)準(zhǔn)封裝的密鑰并輸出。

輸入輸出選項in,out,inform和outform

  • in選項指定了輸入密鑰的文件名,默認(rèn)情況下使用標(biāo)準(zhǔn)輸入。如果輸入的密鑰是經(jīng)過加密的,那么在讀取密鑰信息的過程中會提示輸入加密口令。當(dāng)然,如果你已經(jīng)使用passin選項提供了加密口令,該提示信息就不會再出現(xiàn)。
  • out選項指定了存儲輸出密鑰信息的文件名,默認(rèn)情況下是標(biāo)準(zhǔn)輸出。如果選擇了加密選項而又沒有使用pasout選項指定加密口令時,在輸出密鑰時會提示輸入加密口令。輸出文件與輸入文件在同一個文件夾下時不可以重名,否則生成的文件會在沒有讀原密鑰文件之前覆蓋原文件,出現(xiàn)讀密鑰錯誤。
  • inform和outform選項分別指定了輸入和輸出文件的編碼格式,支持的格式包括PEM和DER兩種。?

加密口令輸入選項passin和passout

  • 由于私鑰的重要性,所以一般都使用了加密保護(hù),加密保護(hù)使用的密鑰和初始向量是從用戶提供的口令中提取出來的,所以在使用密鑰的時候也需要提供相同的口令進(jìn)行密鑰的解密。
  • passin和passout選項分別指定了輸入和輸出密鑰時進(jìn)行加解密的口令源。
  • 如果輸入的密鑰文件需要口令進(jìn)行解密而卻沒有使用pasin選項提供口令,那么程序會在指令行提示用戶輸入解密口令。

私鑰格式選項nocrypt,nooct,embed和nsdb

  • 使用pkcs8指令時,通常情況下輸入或是產(chǎn)生的PKCS#8格式的密鑰都是使用口令基于某種算法加密的私鑰信息結(jié)構(gòu)。
  • 如果使用nocrypt選項,則告訴指令其輸入和產(chǎn)生的私鑰都將是不經(jīng)加密的私鑰信息結(jié)構(gòu)。私鑰不進(jìn)行加密,顯然安全性會大大降低,所以除非萬不得已,一般不推薦使用此選項。
  • nooct選項用于產(chǎn)生一種非標(biāo)準(zhǔn)格式的RSA私鑰,以兼容一些軟件。RSA私鑰一般明確要求被封裝到一個OCTETSTRING字符串內(nèi)。但是有些軟件只能識別私鑰自身,對附加的OCTETSTRING字符串不能識別。在這種情況下,就可以使用nooct選項去掉OCTETSTRING字符串。
  • embed選項用于產(chǎn)生一種非標(biāo)準(zhǔn)格式的DSA密鑰。在這種格式中,DSA參數(shù)內(nèi)嵌到PrivateKey結(jié)構(gòu)中。
  • nsdb選項則用于產(chǎn)生一種兼容Netscape私鑰數(shù)據(jù)庫格式的DSA密鑰。

密鑰加密算法選項v2和v1

  • v1選項用于選擇PKCS#5v20中的所有算法。一般情況下,PKCS#8結(jié)構(gòu)的私鑰是使用pbeWithMD5AndDES-CBC這種口令加密算法加密的。雖然這種算法只使用了56bit的DES加密,但已經(jīng)是PKCS#5v1.5中加密強(qiáng)度最高的算法。
  • 使用v2選項則可以選擇PKCS#5v2.0中更高強(qiáng)度的算法,這些算法有168bit的3DES或者128bit的RC2等。目前的軟件支持PKCS#5v2.0的不多,但是如果你使用的范圍都局限于OpenSSL,那么就一點問題都沒有。
  • v2選項有效的參數(shù)包括des,des3和rc2,OpenSSL推薦讀者使用DES3這種加密算法。v1選項用于選擇PKCS#5v1.5或者PKCS#12中定義的算法,事實上,也包含了部分PKCS#5v2.0中定義的算法。
  • 表11-1列出了v1選項可以使用的參數(shù)及其含義。

engine選項

  • 如果engine選項指定了有效的Engine設(shè)備,那么指令中任何該Engine設(shè)備支持的上述操作都會使用Engine設(shè)備的操作流程而不再使用OpenSSL算法庫本身提供的函數(shù)。
  • 對于pkcs8指令來說,可以使用engine設(shè)備的操作主要包括RSA或者DSA密鑰產(chǎn)生和對私鑰進(jìn)行加解密的算法。?

例子

?Netscape證書標(biāo)準(zhǔn)

  • 為了方便下載一系列的證書,尤其對于為了驗證要下載一個證書鏈的情況,Netscape提供了一種名為Netscape證書序列(Netscape? Certificate? Sequence)的格式來封裝一系列證書(事實上,里面采用了一個PKCS#7格式來封裝證書),以便能夠一次性地下載或者傳輸多個數(shù)字證書。
  • 所以,某些時候,Netscape證書序列可以替代PKCS#7的作用,用來打包一系列證書。Netscape證書序列雖然不一定能夠得到微軟的支持,但是在其他一些開源軟件和Linux軟件中卻得到了廣泛的支持,我們也因此隨時會面臨要把普通的一些證書封裝成Netscape證書序列的要求和任務(wù)。
  • OpenSSL顯然也考慮到了這些可能出現(xiàn)的問題,于是提供了本節(jié)要介紹的nseq指令。

功能概述和指令格式

  • nseq指令的任務(wù)簡單而明確:將普通X.509證書封裝成Netscape證書序列,或者將Netscape證書序列轉(zhuǎn)換成普通的X.509證書。
  • 這個指令的格式簡單,也容易掌握,其格式為:

輸入和輸出文件選項in和out

  • in和out選項分別指定了輸入和輸出的文件名,默認(rèn)是標(biāo)準(zhǔn)的輸入和輸出設(shè)備。

轉(zhuǎn)化格式選項toseq

  • 使用toseq選項告訴指令執(zhí)行將一個或者多個普通X.509證書轉(zhuǎn)換成一個Netscape證書序列的操作。如果不使用該選項,即默認(rèn)情況下,輸入的應(yīng)該是一個Netscape證書序列文件,而輸出的是一個或者多個普通X.509證書,當(dāng)然,它們都存儲在一個輸出文件中。?

例子?

總結(jié)

以上是生活随笔為你收集整理的密码学专题 OpenSSL标准转换指令的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。