![基本安全協(xié)議與ASN1編碼_第1頁](http://file4.renrendoc.com/view10/M01/1D/39/wKhkGWW9kQGAbw0YAAD9ycP3Cbs007.jpg)
![基本安全協(xié)議與ASN1編碼_第2頁](http://file4.renrendoc.com/view10/M01/1D/39/wKhkGWW9kQGAbw0YAAD9ycP3Cbs0072.jpg)
![基本安全協(xié)議與ASN1編碼_第3頁](http://file4.renrendoc.com/view10/M01/1D/39/wKhkGWW9kQGAbw0YAAD9ycP3Cbs0073.jpg)
![基本安全協(xié)議與ASN1編碼_第4頁](http://file4.renrendoc.com/view10/M01/1D/39/wKhkGWW9kQGAbw0YAAD9ycP3Cbs0074.jpg)
![基本安全協(xié)議與ASN1編碼_第5頁](http://file4.renrendoc.com/view10/M01/1D/39/wKhkGWW9kQGAbw0YAAD9ycP3Cbs0075.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
Internet安全協(xié)議與標準
第4課唐禮勇博士tly@7/8/2003安全協(xié)議基礎(chǔ)7/8/2003Agenda何謂協(xié)議Base64編碼加密算法同明文相關(guān)的幾個問題一個簡單協(xié)議的分析7/8/20033Internet安全協(xié)議及標準安全消息系統(tǒng)-發(fā)送方7/8/20034Internet安全協(xié)議及標準安全消息系統(tǒng)-接收方7/8/20035Internet安全協(xié)議及標準安全消息系統(tǒng)-存在的問題對單條消息工作得很好可方便地用于電子郵件、文件等的安全傳送對要傳輸任意信息不適用交互式應(yīng)用引入一個簡單的安全協(xié)議(TSP:ToySecurityProtocol)不需為每個數(shù)據(jù)包都動用昂貴的公開密鑰操作實現(xiàn)證書發(fā)現(xiàn)7/8/20036Internet安全協(xié)議及標準TSP(1)基本步驟假設(shè)通信雙方:Alice,Bob握手(Handshake)Alice和Bob使用他們的證書和私鑰來對對方進行身份鑒別并交換共享密鑰導(dǎo)出密鑰(Keyderivation)Alice和Bob使用他們達成一致的共享密鑰導(dǎo)出一組用于保護將要傳輸?shù)臄?shù)據(jù)的密鑰數(shù)據(jù)傳輸(Datatransfer)將要傳輸?shù)臄?shù)據(jù)分割成一系列的記錄,并對每條記錄加以保護關(guān)閉連接(Connectionclosure)使用特殊的、經(jīng)過保護的關(guān)閉消息,安全地關(guān)閉連接7/8/20037Internet安全協(xié)議及標準TSP(2)握手階段(Handshake)AliceBobHelloCertificateEncrypt(Bob,MS)=EMS單向鑒別7/8/20038Internet安全協(xié)議及標準TSP(2)握手階段(Handshake)AliceBobHelloCertificate,nonceSign(Alice,Encrypt(Bob,MS))雙向鑒別7/8/20039Internet安全協(xié)議及標準TSP(3)制作一組密鑰原則上,使用同一個密鑰來完成不同類型的加密操作被認為是糟糕的思想每個方向上需要兩個密鑰,分別用于加密和消息鑒別(MAC)可通過密鑰導(dǎo)出函數(shù)(KDF)由MS和nonce導(dǎo)出KDF一般基于Hash算法一種最簡單的KDF可能(當(dāng)然現(xiàn)實的協(xié)議應(yīng)該用更好的)如下:Ecs=Hash(MS,nonce,”ECS”)Mcs=Hash(MS,nonce,”MCS”)Esc=Hash(MS,nonce,”ESC”)Msc=Hash(MS,nonce,”MSC”)7/8/200310Internet安全協(xié)議及標準TSP(4)數(shù)據(jù)記錄如何對數(shù)據(jù)打包設(shè)想成在傳輸數(shù)據(jù)時對恒定的數(shù)據(jù)流加密MAC如何處理?放最后嗎?解決方法將數(shù)據(jù)分割成一系列記錄,每個記錄自帶MAC記錄大小定長:不經(jīng)濟理想的應(yīng)是變長記錄,加上長度字段記錄格式長度+數(shù)據(jù)+MACMAC計算M=MAC(Mx,D)7/8/200311Internet安全協(xié)議及標準TSP(5)序號重放、刪除、重排攻擊需要增加序號序號必須是MAC輸入的一部分可以放在記錄中在基于TCP的連接中,也可以使用隱含序號MAC的計算M=MAC(Mx,Sequence||D)7/8/200312Internet安全協(xié)議及標準TSP(6)控制信息如何防止攻擊者惡意切斷連接需要有一種機制使得Alice能告訴Bob(或反之),她已完成數(shù)據(jù)傳送兩種方法傳送長度為0的記錄增加類型字段增加類型字段后的記錄格式長度+序號+類型+數(shù)據(jù)+MAC類型為0:普通數(shù)據(jù)類型為1:結(jié)束記錄類型為其他:報告錯誤信息MAC的計算M=MAC(Mx,Sequence||Type||D)7/8/200313Internet安全協(xié)議及標準TSP–完整圖示AliceBobHelloCertificate,nonceSign(Alice,Encrypt(Bob,MS))Type0,Seq1,DataType0,Seq2,DataType0,Seq1,DataType0,Seq3,DataType1,Seq4,CloseType1,Seq2,Close7/8/200314Internet安全協(xié)議及標準TSP–小結(jié)實際上,TSP已經(jīng)包含了SSL絕大多數(shù)的核心功能握手密鑰交換雙向鑒別保密傳輸遺漏的部分不完整,不包括具體實現(xiàn)細節(jié)數(shù)據(jù)結(jié)構(gòu)定義每一字段大小使用何種算法涉及到數(shù)據(jù)結(jié)構(gòu)表示、翻譯等問題更重要的是缺少協(xié)商(negotiation)功能涉及到Policy/Mechanism的問題7/8/200315Internet安全協(xié)議及標準協(xié)議實現(xiàn)中的同消息傳遞有關(guān)的問題可靠傳輸/不可靠傳輸發(fā)送方能否知道傳輸中的錯誤如果不能保證可靠傳遞,應(yīng)用程序必須自己處理應(yīng)答阻塞/非阻塞(Blocking/Nonblocking)非阻塞發(fā)出消息,然后返回更加靈活,但難以調(diào)試阻塞發(fā)出消息,等待發(fā)送成功7/8/200316Internet安全協(xié)議及標準ASN.1初步7/8/2003AgendaAbstractSyntaxNotationOne(ASN.1)Overview類型和值定義簡單類型構(gòu)造類型BasicEncodingRules(BER)OverviewType-Length-Value/Identifier-Length-Content編碼示例其他編碼方式DistinguishedEncodingRules(DER)ASN.1開發(fā)流程7/8/200318Internet安全協(xié)議及標準ASN.1-Overview一種獨立于機器的描述語言,用于描述在網(wǎng)絡(luò)上傳遞的消息ITU-T(X.680)和ISO(ISO8824-1)標準定義應(yīng)用程序數(shù)據(jù)的抽象語法定義應(yīng)用程序數(shù)據(jù)結(jié)構(gòu)和表示協(xié)議數(shù)據(jù)單元(PDUs)獨立于機器、語言及應(yīng)用程序內(nèi)部表示ASN.1特別適合表示現(xiàn)代通信應(yīng)用中那些復(fù)雜的、變化的及可擴展的數(shù)據(jù)結(jié)構(gòu)類似標準有IDLXDRXMLASN.1可分為兩個部分語法規(guī)則:從數(shù)據(jù)類型、內(nèi)容順序或結(jié)構(gòu)等方面來描述消息的內(nèi)容編碼規(guī)則:如何編碼實際消息中的數(shù)據(jù)7/8/200319Internet安全協(xié)議及標準
ASN.1是國際電聯(lián)開放系統(tǒng)互連(OSI)組織規(guī)定的抽象語法描述符號。是用來定義應(yīng)用程序數(shù)據(jù)和表示協(xié)議數(shù)據(jù)單元的抽象語言。對于ASN.1的抽象表述,相應(yīng)的標準中有一系列的“規(guī)則”將這些表述“翻譯”成由0、1組成的二進制序列,其中在PKI中用得最多的是DistinguishedEncodingRules(DER),它是BasicEncodingRules(BER)的一個子集。而ASN.1的抽象表述允許使用者非常靈活地定義一系列的數(shù)據(jù)類型,這些類型從簡單的整數(shù)到位串到具備結(jié)構(gòu)的數(shù)據(jù)類型,直到基于其他類型的類型。
每一個ASN.1類型(除了CHOICE和ANY)都有一個標記(Tag)。標記(Tag)包括一個標記類型(ClassofTag)和一個非負的標記數(shù)(TagNumber)。而這個非負的標記數(shù)是起決定性作用的。換而言之,ASN.1類型的名字并不影響它的抽象表述,也就是“日后”的二進制表述,起決定性作用的是標記數(shù)。ASN.1中的標記(Tag)共有4種類型:(1)全局類型(Universal)全局類型在所有的應(yīng)用中有著相同的意義。(2)應(yīng)用類型(Application)應(yīng)用類型在特定的應(yīng)用中有著相同的含義。
(3)私有類型(Private)私有類型只在特定的實體中有意義,實際上很少用到私有類型。(4)上下文特定類型(ContextSpecific)上下文特定類型在一個給定的結(jié)構(gòu)里是有效的。在兩個不同的結(jié)構(gòu)中的組件往往具有相同的標記而含義不同。7/8/200320Internet安全協(xié)議及標準ASN.1定義示例表達簡單和復(fù)雜類型的能力可對類型根據(jù)大小及(或)數(shù)值進行約束也可以施加更強的約束字段可標記為
OPTIONAL大寫開頭表示類型名,小寫開頭的表示變量名/字段名Age::=INTEGER(0..120)User::=SEQUENCE{nameIA5String(SIZE(1..128)),ageAgeDEFAULT18,addressIA5StringOPTIONAL,... }7/8/200321Internet安全協(xié)議及標準使用ASN.1的標準及應(yīng)用X.400消息處理系統(tǒng)/X.500目錄服務(wù)基于LDAP的目錄服務(wù)/X.509數(shù)字證書RSA公開密碼標準密鑰的存儲及傳遞/證書SET安全電子商務(wù)H.323/T.120多媒體通信標準ISO7816PKCS系列標準Unicode標準簡單網(wǎng)絡(luò)管理協(xié)議(SNMP)MIBSNMPPDUs7/8/200322Internet安全協(xié)議及標準ASN.1術(shù)語抽象語法(AbstractSyntax)描述通用數(shù)據(jù)結(jié)構(gòu)允許定義數(shù)據(jù)類型和值數(shù)據(jù)類型(DataType)值的集合,可以是簡單類型或結(jié)構(gòu)類型可以對數(shù)據(jù)類型命名編碼(Encoding)用于表示數(shù)據(jù)值的字節(jié)序列編碼規(guī)則(EncodingRules)給出從一種語法到另一種的映射方法傳輸語法(TransferSyntax)位模式(Bitspattern)描述數(shù)據(jù)是在傳輸時是如何表示的7/8/200323Internet安全協(xié)議及標準Abstract&TransferSyntaxesApplicationcomponentdatatransfercomponent(e.g,TCP,OSIsession)datatransfercomponent(e.g,TCP,OSIsession)ApplicationcomponentLocalstorage(e.g,MIB)Localstorage(e.g,MIB)UserUserlocalmappinguserpresentationmappinguserpresentationmappingAbstractSyntax(e.g.,ASN.1)localmappingencodingrulesencodingrulesTransferSyntax(e.g.,BER)7/8/200324Internet安全協(xié)議及標準模塊(module):ASN.1規(guī)范中的基本構(gòu)造塊模塊定義格式如下:<modulereference>DEFINITIONS::=BEGIN EXPORTS IMPORTS
AssignmentListENDASN.1模塊定義Definitionsinthismodulethatmaybeimportedbyothermodules.Definitionsthataretobeimportedfromothermodules.Typeassignments,valueassignments,andmacrodefinitionsthataredefinedinthismodule.7/8/200325Internet安全協(xié)議及標準ASN.1簡單類型(1)基本類型BOOLEANINTEGERENUMERATEDREALBITSTRINGOCTETSTRING字符串類型(ISO10646-1的子集)NumericString(0-9,<space>)PrintableString
(0-9,A-Z,a-z,<space>,<s[ecial>VisibleStringGraphicStringUTF8StringIA5String(ASCII)7/8/200326Internet安全協(xié)議及標準ASN.1簡單類型(2)對象類型OBJECTIDENTIFIER對象標識符:一個任意長的非負整數(shù)序列,用于標記對象(如算法等)ObjectDescriptor其它類型NULL空值UTCTimeyymmdd
hhmm[ss]<localoffsetfromUTC>GeneralizedTimeyyyymmdd
hhmm[ss]<localoffsetfromUTC>強制從2050年開始7/8/200327Internet安全協(xié)議及標準ASN.1類型定義語法:<typename>::=<type>示例:Counter ::=INTEGERIpAddress::=OCTETSTRINGMonths::=ENUMERATED{
january(1),february(2),march(3),
april(4),may(5),june(6),
july(7),august(8),september(9),
october(10),november(11),december(12)}7/8/200328Internet安全協(xié)議及標準ASN.1子類型定義語法:
<subtypename>::=<type>(<constraint>)示例:Counter ::=INTEGER(0..65536)IpAddress::=OCTETSTRING(SIZE(4))Spring::=Months(march|april|may)Summer::=Months(june|july|august)SmallPrime::=INTEGER(2|3|5|7|11)ExportKey::=BITSTRING(SIZE(40))7/8/200329Internet安全協(xié)議及標準ASN.1賦值(1)語法:
<valuename><type>::=<value>示例:ipInReceivesCounter::=2450ipRouteMask
IpAddress::=‘FFFFFF00’HcurrentMonthMonths::=julycurrentTime
UTCTime::=“030708094018+0800”nameVisibleString::=“John”marriedBOOLEAN::=TRUEfaxMessageBITSTRING::=‘01100001101’B7/8/200330Internet安全協(xié)議及標準ASN.1賦值(2)
OBJECTIDENTIFIERinternetOBJECTIDENTIFIER::={iso(1)org(3)dod(6)1}privateOBJECTIDENTIFIER::={internet4}RSA公司SecurityOID:{iso(1)member-body(2)US(840)113549}7/8/200331Internet安全協(xié)議及標準ASN.1結(jié)構(gòu)類型(1)
SEQUENCE對應(yīng)于C語言中的struct類型定義UserAccount::=SEQUENCE{usernamePrintableString,passwordPrintableString,
accountNrINTEGER}賦值myAccount
UserAccount::={username“tly”,password“guesswhat”,
accountNr2345}7/8/200332Internet安全協(xié)議及標準ASN.1結(jié)構(gòu)類型(2)
SEQUENCEOF對應(yīng)于C語言中的數(shù)組類型定義MemberCountries::=SEQUENCEOFPrintableStringAccountRegistry::=SEQUENCEOFUserAccount賦值eastAsia
MemberCountries::={“China”,“Japan”,“Korean”,“DPR”}7/8/200333Internet安全協(xié)議及標準ASN.1結(jié)構(gòu)類型(3)
SET類似于SEQUENCE,但不考慮分量順序類型定義UserAccount::=SET{username[0]PrintableString,password[1]PrintableString,
accountNr[2]INTEGER}賦值myAccount
UserAccount::={
accountNr2345,username“tly”,password“guesswhat”}7/8/200334Internet安全協(xié)議及標準ASN.1結(jié)構(gòu)類型(3)
SETOF集合類型,每一分量類型相同,不考慮順序類型定義Keywords::=SETOFPrintableString賦值someASN1KeywordsKeywords::={“INTEGER”,“BOOLEAN”,“REAL”}7/8/200335Internet安全協(xié)議及標準BER-OverviewBER–基本編碼規(guī)則(BasicEncodingRules)ITU-T(X.690)和ISO(8825-1)標準一種編碼規(guī)格說明描述如何將ASN.1類型的值編碼成字節(jié)串(stringofoctets)的方法基于一種稱為type-length-value(TLV)結(jié)構(gòu)的方法,在ASN.1中,也稱identifier-length-content(ILC)7/8/200336Internet安全協(xié)議及標準BER基本編碼方法7/8/200337Internet安全協(xié)議及標準BasicEncodingRules
ASchematicRepresentation7/8/200338Internet安全協(xié)議及標準ASN.1類型標記(1)
UniversalClassTags7/8/200339Internet安全協(xié)議及標準ASN.1類型標記(2)
ApplicationClassTags7/8/200340Internet安全協(xié)議及標準BER中的Identifier字段(1)
Tagnumber<317/8/200341Internet安全協(xié)議及標準BER中的Identifier字段(2)
Tagnumber>=317/8/200342Internet安全協(xié)議及標準BER中的Length字段(1)7/8/200343Internet安全協(xié)議及標準BER中的Length字段(2)短格式既可用于基本類型,也可用于內(nèi)容長度不超過128的構(gòu)造類型長格式既可用于基本類型,也可用于構(gòu)造類型通常內(nèi)容長度大于或等于128不定長格式僅用于構(gòu)造類型EOC字節(jié)可看作是tag為0的基本類型,內(nèi)容長度為07/8/200344Internet安全協(xié)議及標準BER編碼示例(1)
INTEGER7/8/200345Internet安全協(xié)議及標準BER編碼示例(2)
INTEGERBERcodingoftwo’scomplementintegers-129:1111111101111111=02
02FF7F-128:1111111110000000=02
0180-127:1111111110000001=02
0181-1:11111111
1111
1111=02
01FF0:00000000
0000
0000=02
001:0000000001111111=02
01
01127:0000000001111111=02
017F128:0000000010000000=02
020080129:0000000010000001=02
0200817/8/200346Internet安全協(xié)議及標準BER編碼示例(3)
SEQUENCE7/8/200347Internet安全協(xié)議及標準BER編碼示例(4)
OBJECTIDENTIFIER7/8/200348Internet安全協(xié)議及標準BER編碼示例(5)
OBJECTIDENTIFIERCodingofOIDRootccitt(0):Z=Y{0..39}iso(1):Z=40+Y{40..79}joint-iso-ccitt(2):Z=80+Y{80..119}CodingofOIDnudenumbers類似于Identifier字段中的Tag編碼Range{0..127}:0XXXXXXXRange{128..16383}:1XXXXXXX0XXXXXXXRange{16384..2097151}:1XXXXXXX1XXXXXXX0XXXXXXX例:RSA數(shù)據(jù)安全公司{12840113549}06
06
2a
8648
86f70d7/8/200349Internet安全協(xié)議及標準
關(guān)于OID的DER編碼說明:OID的DER編碼。內(nèi)容字節(jié)如下,其中value1,……,valuen
表示在整個對象描述符中組件的整數(shù)值:1.第一個字節(jié)值為40×value1+value2.2.如果有后續(xù)的字節(jié),編碼為value3,……,valuen。每個值基于128編碼,最高位在先以保證使用盡可能少的數(shù)字,除了最后一個字節(jié)外,每個octet的最高位都置為1。例:rsaEncryption(1.2.840.1135)的DER編碼的第一個字節(jié)是40×1+2=42=0x2A。840的編碼為6×1281+72×1280即0x8648,113549的編碼為6×1282+119×1281+13×1280即0x86F70D同理可得其它組件的DER編碼。最后的DER編碼為:
06092A864886F70D0101
01
7/8/200350Internet安全協(xié)議及標準BER編碼存在的問題不唯一同一個值可能有超過1種合法的編碼;靈活,但容易造成混淆示例BITSTRING值011011100101110111BITSTRING編碼中,在長度字段后的第一個字節(jié)給出了最后一個字節(jié)中未用到的位數(shù)(本例中為6)03
04066e5dc0(用0填充,短格式)03
04066e5de0(用100000填充)03
8104066e5de0(長格式)23
09(構(gòu)造式編碼)
03
03006e5d(“0110111001011101”+”11”)
03
0206c0解決方案(兩種方向)DER:BER子集,只使用定長編碼CER:BER子集,基于不定長編碼7/8/200351Internet安全協(xié)議及標準DER–DistinguishedEncodingRulesDER(DistinguishedEncodingRules)BER的子集,增加某些限制DER附加規(guī)則當(dāng)長度在0到127之間時,長度字段必須使用短格式當(dāng)長度是128或者更長時,長度字段必須使用長格式,同時長度必須以最小數(shù)目的八位組來編碼對于從簡單字符串類型衍生出來的簡單字符串類型和隱式標記類型,必須使用基本的定長方法對于結(jié)構(gòu)類型、從結(jié)構(gòu)類型衍生出來的隱式標記類型,以及從任何類型衍生出來的顯式標記類型,必須使用構(gòu)造的定長方法對于特殊類型,另有限制BITSTRING:必須用0填充SEQUENCE[OF]中的OPTIONAL和DEFAULT限定符SET[OF]除同SEQUENCE相同的規(guī)定外,各分量要求以標記的升序排列7/8/200352Internet安全協(xié)議及標準SEQUENCE的BER編碼與DER編碼的區(qū)別:BERencoding.
Constructed.ContentsoctetsaretheconcatenationoftheBERencodingsofthevaluesofthecomponentsofthesequence,inorderofdefinition,withthefollowingrulesforcomponentswiththeOPTIONALandDEFAULTqualifiers:ifthevalueofacomponentwiththeOPTIONALorDEFAULTqualifierisabsentfromthesequence,thentheencodingofthatcomponentisnotincludedinthecontentsoctets;ifthevalueofacomponentwiththeDEFAULTqualifieristhedefaultvalue,thentheencodingofthatcomponentmayormaynotbeincludedinthecontentsoctets.DERencoding.
Constructed.ContentsoctetsarethesameastheBERencoding,exceptthatifthevalueofacomponentwiththeDEFAULTqualifieristhedefaultvalue,theencodingofthatcomponentisnotincludedinthecontentsoctets.TheSEQUENCEtypedenotesanorderedcollectionofoneormoretypes.ASN.1notation:SEQUENCE{
[identifier1]Type1[{OPTIONAL|DEFAULTvalue1}],
………………..,
[identifiern]Typen[{OPTIONAL|DEFAULTvaluen}]}7/8/200353Internet安全協(xié)議及標準SET的BER編碼與DER編碼的區(qū)別:BERencoding.
Constructed.ContentsoctetsaretheconcatenationoftheBERencodingsofthevaluesofthecomponentsoftheset,inanyorder,withthefollowingrulesforcomponentswiththeOPTIONALandDEFAULTqualifiers:*ifthevalueofacomponentwiththeOPTIONALorDEFAULTqualifierisabsentfromtheset,thentheencodingofthatcomponentisnotincludedinthecontentsoctets;*ifthevalueofacomponentwiththeDEFAULTqualifieristhedefaultvalue,thentheencodingofthatcomponentmayormaynotbeincludedinthecontentsoctets.DERencoding.
Constructed.ContentsoctetsarethesameasfortheBERencoding,exceptthat:1.IfthevalueofacomponentwiththeDEFAULTqualifieristhedefaultvalue,theencodingofthatcomponentisnotincluded.2.Thereisanordertothecomponents,namelyascendingorderbytag.TheSETtypedenotesanunorderedcollectionofoneormoretypes.ASN.1notation:SET{[identifier1]Type1[{OPTIONAL|DEFAULTvalue1}],………………..,[identifiern]Typen[{OPTIONAL|DEFAULTvaluen}]}7/8/200354Internet安全協(xié)議及標準SETOF的BER編碼與DER編碼的區(qū)別:BERencoding.
Constructed.ContentsoctetsaretheconcatenationoftheBERencodingsofthevaluesoftheoccurrencesinthecollection,inanyorder.DERencoding.
Constructed.ContentsoctetsarethesameasfortheBERencoding.
Theencodingsofthecomponentvaluesofaset-ofvalueshallappearinascendingorder,theencodingsbeingcomparedasoctetstringswiththeshortercomponentsbeingpaddedattheirtrailingendwith0-octets.
NOTE–Thepaddingoctetsareforcomparisonpurposesonlyanddonotappearintheencodings.TheSETOFtypedenotesanunorderedcollectionofzeroormoreoccurrencesofagiventype.ASN.1notation:SETOFType7/8/200355Internet安全協(xié)議及標準ASN.1/DER示例(1)
X.509證書及其編碼使用makecert創(chuàng)建一個測試證書使用openssl顯示該證書可讀版本使用Asn1Viewer檢查該編碼7/8/200356Internet安全協(xié)議及標準ASN.1/DER示例(2)
X.509證書及其編碼X.509證書定義Certificate::=SEQUENCE{tbsCertificate
TBSCertificate,--證書主體signatureAlgorithm
AlgorithmIdentifier,--證書簽名算法標識signatureValueBITSTRING--證書簽名算法值}7/8/200357Internet安全協(xié)議及標準ASN.1/DER示例(3)
X.509證書及其編碼X.509證書定義(續(xù))TBSCertificate::=SEQUENCE{version[0]EXPLICITVersionDEFAULTv1,--證書版本號serialNumber
CertificateSerialNumber,--證書序列號,對同一CA所頒發(fā)的證書,序列號唯一標識證書signatureAlgorithmIdentifier,--證書簽名算法標識issuerName,--證書發(fā)行者名稱validityValidity,--證書有效期subjectName,--證書主體名稱subjectPublicKeyInfo
SubjectPublicKeyInfo,--證書公鑰issuerUniqueID[1]IMPLICITUniqueIdentifierOPTIONAL,--證書發(fā)行者ID(可選),只在證書版本2、3中才有subjectUniqueID[2]IMPLICITUniqueIdentifierOPTIONAL,--證書主體ID(可選),只在證書版本2、3中才有extensions[3]EXPLICITExtensionsOPTIONAL--證書擴展段(可選),只在證書版本2、3中才有}Version::=INTEGER{v1(0),v2(1),v3(2)}7/8/200358Internet安全協(xié)議及標準SubjectPublicKeyInfo::=SEQUENCE{algorithmAlgorithmIdentifier,
subjectPublicKeyBITSTRING}
AlgorithmIdentifier::=SEQUENCE{algorithmOBJECTIDENTIFIER,parametersANYDEFINEDBYalgorithmOPTIONAL}--containsavalueofthetype--registeredforusewiththe--algorithmobjectidentifiervalue
7/8/200359Internet安全協(xié)議及標準Refto:pkcs-1v27/8/200360Internet安全協(xié)議及標準7/8/200361Internet安全協(xié)議及標準PER–PackedEncodingRulesApplication1Application2110Age::=INTEGER(0..7)firstGradeAge::=6totallengthof3bits同BER相同的是:PER也獨立于機器、語言及應(yīng)用程序內(nèi)部表示不同于BER的是:在PER中,tags從不傳送,length和value如果雙方都知道,也不需傳送可節(jié)約帶寬,適用于在Internet上傳送audio和video數(shù)據(jù)、air-ground通信等7/8/200362Internet安全協(xié)議及標準XER–XMLEncodingRules同BER/PER相同的是:XER也獨立于機器、語言及應(yīng)用程序內(nèi)部表示XER清晰,可讀性強,甚至可以不需要工具帶寬占用大Application1Application2<Age>6</Age>Age::=INTEGER(0..7)firstGradeAge::=6totallengthof12octets7/8/200363Internet安全協(xié)議及標準ASN.1的使用通過適當(dāng)?shù)霓D(zhuǎn)換,ASN.1可以在常用語言中使用C/C++,Java,IDL,etc7/8/200364Internet安全協(xié)議及標準ASN.1開發(fā)流程ASN.1SyntaxASN.1CompilerCHeaderFileApplicationSourceCodeincludeC/C++CompilerEncoder/DecoderLibrariesLinkerExecutableApplication7/8/200365Internet安全協(xié)議及標準ASN.1的使用示例
ASN.1定義通過適當(dāng)?shù)霓D(zhuǎn)換,ASN.1可以在常用語言中使用C/C++,Java,IDL,etc例:ASN.1定義:PersonalInfo::=SEQUENCE{marriedBOOLEAN,ageINTEGER(0..120),namePrintableString}TAnotherINT::=INTEGERTType1::=SEQUENCEOFPersonalInfoTType2::=SET{type1TType1,another[0]TAnotherINT,age[1]INTEGERDEFAULT123}TType3::=SETOFTType27/8/200366Internet安全協(xié)議及標準ASN.1的使用示例
生成的C語言數(shù)據(jù)結(jié)構(gòu)例
(續(xù)1):由esnacc生成的C語言數(shù)據(jù)結(jié)構(gòu):typedef
struct
PersonalInfo
/*SEQUENCE*/{
AsnBoolmarried;/*BOOLEAN*/
AsnIntage;/*INTEGER(0..120)*/
PrintableStringname;/*PrintableString*/}PersonalInfo;typedef
AsnInt
TAnotherINT;/*INTEGER*/typedef
AsnListTType1;/*SEQUENCEOFPersonalInfo*/typedef
structTType2/*SET*/{TType1*type1;/*TType1*/
TAnotherINTanother;/*[0]TAnotherINT*/
AsnInt*age;/*[1]INTEGERDEFAULT123*/}TType2;typedef
AsnListTType3;/*SETOFTType2*/7/8/200367Internet安全協(xié)議及標準ASN.1的使用示例
編碼/譯碼例(續(xù)2):編碼/譯碼:AsnLen
DEncPersonalInfoContent(GenBuf*b,PersonalInfo*v);void
DDecPersonalInfoContent(GenBuf*b,AsnTagtagId0,
AsnLenelmtLen0,PersonalInfo*v,
AsnLen*bytesDecoded,ENV_TYPEenv);#defineDEncTAnotherINTContent
DEncAsnIntContent#defineDDecTAnotherINTCon
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年B116型一氧化碳中溫變換催化劑合作協(xié)議書
- 2025年大功率電源及系統(tǒng)合作協(xié)議書
- 2025年微電子組件合作協(xié)議書
- 北京和協(xié)航電科技有限公司的射頻研發(fā)筆試題
- 2025年中班幼兒園教師年度個人工作總結(jié)(四篇)
- 2025年節(jié)能高效果汁濃縮設(shè)備合作協(xié)議書
- 2025年鄉(xiāng)村企業(yè)職工勞動合同(五篇)
- 2025年產(chǎn)品租賃協(xié)議樣本(2篇)
- 2025年九年級上冊數(shù)學(xué)教學(xué)工作總結(jié)模版(三篇)
- 2025年二人合伙開店協(xié)議標準版本(三篇)
- GB/T 16818-2008中、短程光電測距規(guī)范
- 控制系統(tǒng)狀態(tài)空間表達式的解
- (七圣)七圣娘娘簽詩
- 自我同情量表
- 內(nèi)鏡下粘膜剝離術(shù)(ESD)護理要點及健康教育
- 新媒體文案創(chuàng)作與傳播精品課件(完整版)
- 2022年全省百萬城鄉(xiāng)建設(shè)職工職業(yè)技能競賽暨“華衍杯”江蘇省第三屆供水安全知識競賽題庫
- 廣西北海LNG儲罐保冷施工方案
- 產(chǎn)業(yè)園工程施工組織設(shè)計(技術(shù)標近200頁)
- 《生態(tài)學(xué)》課件—第1章:緒論
- 中心靜脈壓(CVP)監(jiān)測及波形分析
評論
0/150
提交評論