誰為加密算法分配算法 OID?
我知道這是安全的邊界,但我想我寧願在這裡找到答案。問題是哪個機構通常為密碼算法分配對象標識符,以便它們可以用於更高級別的協議(相應地採用標準)。我知道理論上每個人都可以成為 OID 系統資料庫,但我想有一個負責加密算法的。
不,沒有一個可以處理算法。許多算法沒有 OID,許多專有算法具有未知的 OID。
OID 是嚴格分層的。第一個數字是 0、1 或 2,表示 ITU-T、ISO 或兩者。ITU-T 和 ISO 都是國際標準組織,然後負責下一個數字。這可能包括內部協會,但也可能是其他組織。然後,這些組織負責他們所在的那部分樹。
當然,如果有任何東西被 ISO 標準化,那麼它可能會在 ISO 樹的某處獲得一個標識符。然而,該算法可能已經在其他地方註冊,在這種情況下它可能不會得到一個新的。或者它可以,你會有兩個辨識相同的東西。由協議決定您應該使用哪些協議。
由於沒有一個全球性的註冊機構來管理數量龐大的算法,因此樹中也沒有一個位置。而且不需要:不需要訂購 ID。
商業實體
商業組織完全有可能在 OID 樹中獲得自己的空間:
{iso(1) member-body(2) nl(528) nederlandse-organisatie(1) enschede-sdu(1006)}
這個空間似乎是空的,但該組織無疑在內部建立了自己的樹。事實上,在這種情況下,我幾乎沒有懷疑。
例子
{joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101) csor(3) nistAlgorithm(4) aes(1) aes128-CBC(2)}
所以在這裡,ISO / ITU-T 聯合為國家創造了空間,這些國家可以決定如何創建他們的樹。這裡 CSOR 是 NIST 的一部分,它為 AES 和 CBC 模式創建了一個子空間。
{iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-1(1) rsassa-pss(10)}
這裡ISO標識了美國,誰標識了RSA數字簽名算法,PKCS#1/PSS版本。
{iso(1) member-body(2) us(840) ansi-x962(10045) signatures(4) ecdsa-with-SHA2(3) ecdsa-with-SHA384(3)}
同樣的事情,但現在是一個國家標準化機構:ANSI 已經創建了一個帶有相關 OID 的標準。
配置
重要提示:在 ASN.1 等資料結構中,通常有兩種處理算法和 OID 的方法,如以下 X.509(證書)規範所示:
AlgorithmIdentifier ::= SEQUENCE { algorithm OBJECT IDENTIFIER, parameters ANY DEFINED BY algorithm OPTIONAL }
- 每個算法都被完全辨識,包括任何配置選項和參數不存在或 NUL
- 該算法已指定,但需要指定其他參數。
您可以在上面的範例中看到這一點,其中 ECDSA 算法是使用散列定義的,而 RSA PSS 需要額外的配置參數。
結構?
如需一些樂趣,請在此處查看OID 數據庫中的以下引用:
2004 年 6 月 23 日,Peter Gutmann 回答了“OIW OID 是否仍在普遍使用?”的問題:“一些仍在使用的加密貨幣,這將包括 DES 模式 OID 和一些奇怪的(過時的)安全散列算法 (SHA) 和數字簽名算法 (DSA) 被(錯誤地)複製到 Java 加密擴展 (JCE) 實現中。過時的 OID 範例:{iso(1) identify-organization(3) oiw(14) secsig (3) 算法(2) sha-1WithRSAEncryption(29)};一種過時的 DSA,最終出現在通用數據安全架構 (CDSA) 中(因此推測“OS X 加密”將使用它)和德國公鑰基礎設施 (PKI) ) 工作;以及各種其他奇怪的點點滴滴。一般來說,您需要一個多對一映射,在寫入時您發出最合適的 OID,在讀取時您允許多個 OID 中的任何一個,包括不正確的 OID(Java 開發工具包(JDK)一個實際上是 dsaWithSHA0,但是它就像 dsaWithSHA1) 一樣使用。”
請不要期望 OID 樹中有那麼多結構。