作業內容:
- 參考附件中圖書p120 中7.1的實驗指導,完成DER編碼
- Name例項中,countryName改為“CN”,organization Name-"你的學號" commoaName="你的姓名拼音"
- 用echo -n -e "編碼" > 你的學號.der中,用OpenSSL asn1parse 分析編碼的正確性
- 提交編碼過程文件(推薦markdown格式)
具體過程
1.檢視自己的相關資訊
echo -n "CN" | od -tc -tx1
echo -n "Li Yishi " | od -tc -tx1
echo -n "20211105" | od -tc -tx1
結果為
43 4e
4c 69 20 59 69 73 68 69
32 30 32 31 31 31 30 35
2.編碼過程
7.1 DER 編碼示例:X.501 Name 型別
7.1.1
ASN.1 描述與例項
- ASN.1 描述
X.501 Name 型別用 ASN.I 描述如下:
Name ::= CHOICE ( RDNSequence }
RDNSequence ::= SEQUENCE OF RelativeDistinguishedName RelativeDistinguishedName := SET OF Attribute Value Assertion
AttributeValueAssertion := SEQUENCE{
Attribute lype,
Attribute Value }
Attribute Type ::= OBJECT IDENTIFIER
Attribute Value ::= ANY
Name 型別定義為CHOICE型別,目前只有1個選項 RDNSequence。RDNSequence 定義為 SEQUENCE OF 型別,由0個或多個 RelativeDistinguishedName 組成。RelativeDistinguished-Name 定義為 SET OF 型別,由0個或多個 AttributeValueAssertion 組成。AttributeValueAssertion
定義為 SEQUENCE 型別,由2個成分組成:1個為 AttributeType 型別和 1 個 AttributeValue型別。AttributeType 定義 OBJECT IDENTIFIER 型別。AttributeValue 定義次ANY型別,具體內容由 AttributeType 決定。
事實上,Name 型別可理解為分層或樹形結構,即X.500目錄樹結構。 - Name 例項
對於使用者 Test User 1,其對應的Name型別採用分層結構描述為:
(root)
country Name = "US"
organization Name = "Example Organization"
commonName = "Test User 1"
其中,每層對應一個 RelativeDistinguishedName; 每個 RelativeDistinguishedName 由
1 1 Attribute Value Assertion 4 6k. 19 5 AÚ P % Attribute Type, 14 € 5 / 77% Attribute Value.
使用者 Test User 1 包含3個 AttributeType: countryName、organizationName、commonName,其 OID 定義如下:
3.具體的編碼過程
(1)echo -n -e "\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x4E" > 20211105.der
openssl asn1parse -inform der -in ./20211105.der
(2)echo -n-e "\x31\x11\x30\xOF\x06\X03\x55\X04\XOA|x13\x08\x32\x30\x32\x31\x31\x31\x30\x35" >> 20211105. der
openssl asn1parse -inform der -in ./20211105.der
(3)echo -n-e "(x31\x15\x30\x13\x06\X03\x551X041X03\X13\X07\X0C|X4C\X69\x201x591x69\x73\x68\x69" >> 20211105. der
openssl asn1parse -inform der -in ./20211105.der
最後結果如下