ASNv1及其编码.ppt_第1页
ASNv1及其编码.ppt_第2页
ASNv1及其编码.ppt_第3页
ASNv1及其编码.ppt_第4页
ASNv1及其编码.ppt_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

7/8/2003,ASN.1及其编码,Agenda,AbstractSyntaxNotationOne(ASN.1)Overview类型和值定义简单类型构造类型BasicEncodingRules(BER)OverviewType-Length-Value/Identifier-Length-Content编码示例其他编码方式DistinguishedEncodingRules(DER)ASN.1开发流程,ASN.1-Overview,一种独立于机器的描述语言,用于描述在网络上传递的消息ITU-T(X.680)和ISO(ISO8824-1)标准定义应用程序数据的抽象语法定义应用程序数据结构和表示协议数据单元(PDUs)独立于机器、语言及应用程序内部表示ASN.1特别适合表示现代通信应用中那些复杂的、变化的及可扩展的数据结构类似标准有IDLXDRXMLASN.1可分为两个部分语法规则:从数据类型、内容顺序或结构等方面来描述消息的内容编码规则:如何编码实际消息中的数据,ASN.1定义示例,表达简单和复杂类型的能力可对类型根据大小及(或)数值进行约束也可以施加更强的约束字段可标记为OPTIONAL大写开头表示类型名,小写开头的表示变量名/字段名,Age:=INTEGER(0.120)User:=SEQUENCEnameIA5String(SIZE(1.128),ageAgeDEFAULT18,addressIA5StringOPTIONAL,.,使用ASN.1的标准及应用,X.400消息处理系统/X.500目录服务基于LDAP的目录服务/X.509数字证书RSA公开密码标准密钥的存储及传递/证书SET安全电子商务H.323/T.120多媒体通信标准Unicode标准简单网络管理协议(SNMP)MIBSNMPPDUs,ASN.1术语,抽象语法(AbstractSyntax)描述通用数据结构允许定义数据类型和值数据类型(DataType)值的集合,可以是简单类型或结构类型可以对数据类型命名编码(Encoding)用于表示数据值的字节序列编码规则(EncodingRules)给出从一种语法到另一种的映射方法传输语法(TransferSyntax)位模式(Bitspattern)描述数据是在传输时是如何表示的,Abstract灵活,但容易造成混淆示例BITSTRING值011011100101110111BITSTRING编码中,在长度字段后的第一个字节给出了最后一个字节中未用到的位数(本例中为6)0304066e5dc0(用0填充,短格式)0304066e5de0(用100000填充)038104066e5de0(长格式)2309(构造式编码)0303006e5d(“0110111001011101”+”11”)030206c0解决方案(两种方向)DER:BER子集,只使用定长编码CER:BER子集,基于不定长编码,DERDistinguishedEncodingRules,DER(DistinguishedEncodingRules)BER的子集,增加某些限制DER附加规则当长度在0到127之间时,长度字段必须使用短格式当长度是128或者更长时,长度字段必须使用长格式,同时长度必须以最小数目的八位组来编码对于从简单字符串类型衍生出来的简单字符串类型和隐式标记类型,必须使用基本的定长方法对于结构类型、从结构类型衍生出来的隐式标记类型,以及从任何类型衍生出来的显式标记类型,必须使用构造的定长方法对于特殊类型,另有限制BITSTRING:必须用0填充SEQUENCEOF中的OPTIONAL和DEFAULT限定符SETOF除同SEQUENCE相同的规定外,各分量要求以标记的升序排列,ASN.1/DER示例(1)X.509证书及其编码,使用makecert创建一个测试证书使用openssl显示该证书可读版本使用Asn1Viewer检查该编码,ASN.1/DER示例(2)X.509证书及其编码,X.509证书定义Certificate:=SEQUENCEtbsCertificateTBSCertificate,-证书主体signatureAlgorithmAlgorithmIdentifier,-证书签名算法标识signatureValueBITSTRING-证书签名算法值,ASN.1/DER示例(3)X.509证书及其编码,X.509证书定义(续)TBSCertificate:=SEQUENCEversion0EXPLICITVersionDEFAULTv1,-证书版本号serialNumberCertificateSerialNumber,-证书序列号,对同一CA所颁发的证书,序列号唯一标识证书signatureAlgorithmIdentifier,-证书签名算法标识issuerName,-证书发行者名称validityValidity,-证书有效期subjectName,-证书主体名称subjectPublicKeyInfoSubjectPublicKeyInfo,-证书公钥issuerUniqueID1IMPLICITUniqueIdentifierOPTIONAL,-证书发行者ID(可选),只在证书版本2、3中才有subjectUniqueID2IMPLICITUniqueIdentifierOPTIONAL,-证书主体ID(可选),只在证书版本2、3中才有extensions3EXPLICITExtensionsOPTIONAL-证书扩展段(可选),只在证书版本2、3中才有Version:=INTEGERv1(0),v2(1),v3(2),PERPackedEncodingRules,同BER相同的是:PER也独立于机器、语言及应用程序内部表示不同于BER的是:在PER中,tags从不传送,length和value如果双方都知道,也不需传送可节约带宽,适用于在Internet上传送audio和video数据、air-ground通信等,XERXMLEncodingRules,同BER/PER相同的是:XER也独立于机器、语言及应用程序内部表示XER清晰,可读性强,甚至可以不需要工具带宽占用大,ASN.1的使用,通过适当的转换,ASN.1可以在常用语言中使用C/C+,Java,IDL,etc,ASN.1开发流程,ASN.1的使用示例ASN.1定义,通过适当的转换,ASN.1可以在常用语言中使用C/C+,Java,IDL,etc例:ASN.1定义:PersonalInfo:=SEQUENCEmarriedBOOLEAN,ageINTEGER(0.120),namePrintableStringTAnotherINT:=INTEGERTType1:=SEQUENCEOFPersonalInfoTType2:=SETtype1TType1,another0TAnotherINT,age1INTEGERDEFAULT123TType3:=SETOFTType2,ASN.1的使用示例生成的C语言数据结构,例(续1):由esnacc生成的C语言数据结构:typedefstructPersonalInfo/*SEQUENCE*/AsnBoolmarried;/*BOOLEAN*/AsnIntage;/*INTEGER(0.120)*/PrintableStringname;/*PrintableString*/PersonalInfo;typedefAsnIntTAnotherINT;/*INTEGER*/typedefAsnListTType1;/*SEQUENCEOFPersonalInfo*/typedefstructTType2/*SET*/TType1*type1;/*TType1*/TAnotherINTanother;/*0TAnotherINT*/AsnInt*age;/*1INTEGERDEFAULT123*/TType2;typedefAsnListTType3;/*SETOFTType2*/,ASN.1的使用示例编码/译码,例(续2):编码/译码:AsnLenDEncPersonalInfoContent(GenBuf*b,PersonalInfo*v);voidDDecPersonalInfoContent(GenBuf*b,AsnTagtagId0,AsnLenelmtLen0,PersonalInfo*v,AsnLen*bytesDecoded,ENV_TYPEenv);#defineDEncTAnotherINTContentDEncAsnIntContent#defineDDecTAnotherINTContentDDecAsnIntContentAsnLenDEncTType1Content(GenBuf*b,TType1*v);voidDDecTType1Content(GenBuf*b,AsnTagtagId0,AsnLenelmtLen0,TType1*v,AsnLen*bytesDecoded,ENV_TYPEenv);AsnLenDEncTType2Content(GenBuf*b,TType2*v);voidDDecTType2Content(GenBuf*b,AsnTagtagId0,AsnLenelmtLen0,TType2*v,AsnLen*bytesDecoded,ENV_TYPEenv);AsnLenDEncTType3Content(GenBuf*b,TType3*v);voidDDecTType3Content(GenBuf*b,AsnTagtagId0,AsnLenelmtLen0,TType3*v,AsnLen*bytesDecoded,ENV_TYPEenv);,ASN.1的使用示例生成的C+类,例(续3):由esnacc生成的C+类:classPersonalInfo:publicAsnTypepublic:AsnBoolmarried;AsnIntage;PrintableStringname;AsnLenBEnc(AsnBuf,关于ASN.1的一些资源,ASN.1C/C+,IDL编译器snacc,OSSNObjectiveSystem,inc.www.obj-/本课slides参考了以下资料ASN.1TodayandTomorrow/itudoc/itu-t/com17/tutorial/78247_pp7.pptASN.1&BERfromjwkhongpostech.ac.krhttp:/dpnm.postech.ac.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论