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

下载本文档

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

文档简介

1、7/8/2003,ASN.1及其编码,Agenda,Abstract Syntax Notation One (ASN.1) Overview 类型和值定义 简单类型 构造类型 Basic Encoding Rules (BER) Overview Type-Length-Value/Identifier-Length-Content 编码示例 其他编码方式 Distinguished Encoding Rules (DER) ASN.1开发流程,ASN.1 - Overview,一种独立于机器的描述语言,用于描述在网络上传递的消息 ITU-T(X.680)和ISO (ISO 8824-1)标

2、准 定义应用程序数据的抽象语法 定义应用程序数据结构和表示协议数据单元(PDUs) 独立于机器、语言及应用程序内部表示 ASN.1特别适合表示现代通信应用中那些复杂的、变化的及可扩展的数据结构 类似标准有 IDL XDR XML ASN.1 可分为两个部分 语法规则:从数据类型、内容顺序或结构等方面来描述消息的内容 编码规则:如何编码实际消息中的数据,ASN.1定义示例,表达简单和复杂类型的能力 可对类型根据大小及(或)数值进行约束 也可以施加更强的约束 字段可标记为 OPTIONAL 大写开头表示类型名,小写开头的表示变量名/字段名,Age := INTEGER (0.120) User :

3、= SEQUENCE name IA5String (SIZE(1.128), age Age DEFAULT 18, address IA5String OPTIONAL, . ,使用ASN.1的标准及应用,X.400消息处理系统/X.500目录服务 基于LDAP的目录服务/X.509数字证书 RSA公开密码标准 密钥的存储及传递/证书 SET 安全电子商务 H.323/T.120多媒体通信标准 Unicode标准 简单网络管理协议(SNMP) MIB SNMP PDUs,ASN.1术语,抽象语法(Abstract Syntax) 描述通用数据结构 允许定义数据类型和值 数据类型(Data

4、Type) 值的集合,可以是简单类型或结构类型 可以对数据类型命名 编码(Encoding) 用于表示数据值的字节序列 编码规则(Encoding Rules) 给出从一种语法到另一种的映射方法 传输语法(Transfer Syntax) 位模式(Bits pattern) 描述数据是在传输时是如何表示的,Abstract 灵活,但容易造成混淆 示例 BIT STRING值 01101110 01011101 11 BIT STRING编码中,在长度字段后的第一个字节给出了最后一个字节中未用到的位数(本例中为6) 03 04 06 6e 5d c0 (用0填充,短格式) 03 04 06 6e

5、 5d e0 (用100000填充) 03 81 04 06 6e 5d e0 (长格式) 23 09 (构造式编码) 03 03 00 6e 5d (“0110111001011101”+”11”) 03 02 06 c0 解决方案(两种方向) DER: BER子集,只使用定长编码 CER: BER子集,基于不定长编码,DER Distinguished Encoding Rules,DER (Distinguished Encoding Rules) BER的子集,增加某些限制 DER附加规则 当长度在0到127之间时,长度字段必须使用短格式 当长度是128或者更长时,长度字段必须使用长格

6、式,同时长度必须以最小数目的八位组来编码 对于从简单字符串类型衍生出来的简单字符串类型和隐式标记类型,必须使用基本的定长方法 对于结构类型、从结构类型衍生出来的隐式标记类型,以及从任何类型衍生出来的显式标记类型,必须使用构造的定长方法 对于特殊类型,另有限制 BIT STRING: 必须用0填充 SEQUENCE OF中的OPTIONAL和DEFAULT限定符 SET OF除同SEQUENCE相同的规定外,各分量要求以标记的升序排列,ASN.1/DER示例(1)X.509证书及其编码,使用makecert创建一个测试证书 使用openssl显示该证书可读版本 使用Asn1Viewer检查该编码

7、,ASN.1/DER示例(2)X.509证书及其编码,X.509证书定义 Certificate := SEQUENCE tbsCertificate TBSCertificate, -证书主体 signatureAlgorithm AlgorithmIdentifier, -证书签名算法标识 signatureValue BIT STRING -证书签名算法值 ,ASN.1/DER示例(3)X.509证书及其编码,X.509证书定义(续) TBSCertificate := SEQUENCE version 0 EXPLICIT Version DEFAULT v1, -证书版本号 seri

8、alNumber CertificateSerialNumber, -证书序列号,对同一CA所颁发的证书,序列号唯一标识证书 signature AlgorithmIdentifier, -证书签名算法标识 issuer Name, -证书发行者名称 validity Validity, -证书有效期 subject Name, -证书主体名称 subjectPublicKeyInfo SubjectPublicKeyInfo, -证书公钥 issuerUniqueID 1 IMPLICIT UniqueIdentifier OPTIONAL, - 证书发行者ID(可选),只在证书版本2、3中

9、才有 subjectUniqueID 2 IMPLICIT UniqueIdentifier OPTIONAL, -证书主体ID(可选),只在证书版本2、3中才有 extensions 3 EXPLICIT Extensions OPTIONAL -证书扩展段(可选),只在证书版本2、3中才有 Version := INTEGER v1(0), v2(1), v3(2) ,PER Packed Encoding Rules,同BER相同的是:PER也独立于机器、语言及应用程序内部表示 不同于BER的是:在PER中,tags从不传送,length和value如果双方都知道,也不需传送 可节约带宽

10、,适用于在Internet上传送audio和video数据、air-ground通信等,XER XML Encoding Rules,同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 := SEQUENCE married

11、 BOOLEAN, age INTEGER (0.120), name PrintableString TAnotherINT := INTEGER TType1 := SEQUENCE OF PersonalInfo TType2 := SET type1 TType1, another 0 TAnotherINT, age 1 INTEGER DEFAULT 123 TType3 := SET OF TType2,ASN.1的使用示例生成的C语言数据结构,例 (续1): 由esnacc生成的C语言数据结构: typedef struct PersonalInfo /* SEQUENCE *

12、/ AsnBool married; /* BOOLEAN */ AsnInt age; /* INTEGER (0.120) */ PrintableString name; /* PrintableString */ PersonalInfo; typedef AsnInt TAnotherINT; /* INTEGER */ typedef AsnList TType1; /* SEQUENCE OF PersonalInfo */ typedef struct TType2 /* SET */ TType1* type1; /* TType1 */ TAnotherINT anothe

13、r; /* 0 TAnotherINT */ AsnInt* age; /* 1 INTEGER DEFAULT 123 */ TType2; typedef AsnList TType3; /* SET OF TType2 */,ASN.1的使用示例编码/译码,例 (续2): 编码/译码: AsnLen DEncPersonalInfoContent (GenBuf * b, PersonalInfo *v); void DDecPersonalInfoContent (GenBuf * b, AsnTag tagId0, AsnLen elmtLen0, PersonalInfo *v,

14、AsnLen *bytesDecoded, ENV_TYPE env); #define DEncTAnotherINTContent DEncAsnIntContent #define DDecTAnotherINTContent DDecAsnIntContent AsnLen DEncTType1Content (GenBuf * b, TType1 *v); void DDecTType1Content (GenBuf * b, AsnTag tagId0, AsnLen elmtLen0, TType1 *v, AsnLen *bytesDecoded, ENV_TYPE env);

15、 AsnLen DEncTType2Content (GenBuf * b, TType2 *v); void DDecTType2Content (GenBuf * b, AsnTag tagId0, AsnLen elmtLen0, TType2 *v, AsnLen *bytesDecoded, ENV_TYPE env); AsnLen DEncTType3Content (GenBuf * b, TType3 *v); void DDecTType3Content (GenBuf * b, AsnTag tagId0, AsnLen elmtLen0, TType3 *v, AsnL

16、en *bytesDecoded, ENV_TYPE env);,ASN.1的使用示例生成的C+类,例 (续3): 由esnacc生成的C+类: class PersonalInfo: public AsnType public: AsnBool married; AsnInt age; PrintableString name; AsnLen BEnc (AsnBuf,关于ASN.1的一些资源,ASN.1C/C+, IDL编译器 snacc, esnacc OSS Nokalva Objective System, inc. www.obj- / 本课slides参考了以下资料 ASN.1 Today and Tomorrow /itudoc/itu-t/com17/tutorial/78247_pp7.ppt ASN.1 & BER from jwkhongpostech.ac.kr http:/dpnm.postech.ac.kr/cs637/lecture/asn1-ber.ppt Abstract Syntax Note One from Dr. Andreas

温馨提示

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

评论

0/150

提交评论