资源预览内容
第1页 / 共63页
第2页 / 共63页
第3页 / 共63页
第4页 / 共63页
第5页 / 共63页
第6页 / 共63页
第7页 / 共63页
第8页 / 共63页
第9页 / 共63页
第10页 / 共63页
亲,该文档总共63页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
Internet安全协议与标准安全协议与标准第第4课课唐礼勇唐礼勇 博士博士tlyinfosec.pku.edu.cn7/8/2003安全协议基础安全协议基础7/8/2003Agenda何谓协议Base64编码加密算法同明文相关的几个问题一个简单协议的分析一个简单协议的分析7/8/20033Internet安全协议及标准安全协议及标准安全消息系统安全消息系统-发送方发送方7/8/20034Internet安全协议及标准安全协议及标准安全消息系统安全消息系统-接收方接收方7/8/20035Internet安全协议及标准安全协议及标准安全消息系统安全消息系统-存在的问题存在的问题对单条消息工作得很好可方便地用于电子邮件、文件等的安全传送对要传输任意信息不适用交互式应用引入一个简单的安全协议(TSP: Toy Security Protocol)不需为每个数据包都动用昂贵的公开密钥操作实现证书发现7/8/20036Internet安全协议及标准安全协议及标准TSP (1)基本步骤假设通信双方:Alice, Bob握手(Handshake)Alice和Bob使用他们的证书和私钥来对对方进行身份鉴别并交换共享密钥导出密钥(Key derivation)Alice和Bob使用他们达成一致的共享密钥导出一组用于保护将要传输的数据的密钥数据传输(Data transfer)将要传输的数据分割成一系列的记录,并对每条记录加以保护关闭连接(Connection closure)使用特殊的、经过保护的关闭消息,安全地关闭连接7/8/20037Internet安全协议及标准安全协议及标准TSP (2)握手阶段(Handshake)AliceBobHelloCertificateEncrypt(Bob,MS)=EMS单向鉴别单向鉴别7/8/20038Internet安全协议及标准安全协议及标准TSP (2)握手阶段(Handshake)AliceBobHelloCertificate,nonceSign(Alice,Encrypt(Bob,MS)双向鉴别双向鉴别7/8/20039Internet安全协议及标准安全协议及标准TSP (3)制作一组密钥原则上,使用同一个密钥来完成不同类型的加密操作被认为是糟糕的思想每个方向上需要两个密钥,分别用于加密和消息鉴别(MAC)可通过密钥导出函数(KDF)由MS和nonce导出KDF一般基于Hash算法一种最简单的KDF可能(当然现实的协议应该用更好的)如下:Ecs=Hash(MS,nonce,”ECS”)Mcs=Hash(MS,nonce,”MCS”)Esc=Hash(MS,nonce,”ESC”)Msc=Hash(MS,nonce,”MSC”)7/8/200310Internet安全协议及标准安全协议及标准TSP (4)数据记录如何对数据打包设想成在传输数据时对恒定的数据流加密MAC如何处理?放最后吗?解决方法将数据分割成一系列记录,每个记录自带MAC记录大小定长:不经济理想的应是变长记录,加上长度字段记录格式长度 + 数据 + MACMAC计算M=MAC(Mx,D)7/8/200311Internet安全协议及标准安全协议及标准TSP (5)序号重放、删除、重排攻击需要增加序号序号必须是MAC输入的一部分可以放在记录中在基于TCP的连接中,也可以使用隐含序号MAC的计算M=MAC(Mx, Sequence | D)7/8/200312Internet安全协议及标准安全协议及标准TSP (6)控制信息如何防止攻击者恶意切断连接需要有一种机制使得Alice能告诉Bob(或反之),她已完成数据传送两种方法传送长度为0的记录增加类型字段增加类型字段后的记录格式长度 + 序号 + 类型 + 数据 + MAC类型为0:普通数据类型为1:结束记录类型为其他:报告错误信息MAC的计算M=MAC(Mx, Sequence | Type | D)7/8/200313Internet安全协议及标准安全协议及标准TSP 完整图示完整图示AliceBobHelloCertificate,nonceSign(Alice,Encrypt(Bob,MS)Type 0, Seq 1, DataType 0, Seq 2, DataType 0, Seq 1, DataType 0, Seq 3, DataType 1, Seq 4, CloseType 1, Seq 2, Close7/8/200314Internet安全协议及标准安全协议及标准TSP 小结小结实际上,TSP已经包含了SSL绝大多数的核心功能握手密钥交换双向鉴别保密传输遗漏的部分不完整,不包括具体实现细节数据结构定义每一字段大小使用何种算法涉及到数据结构表示、翻译等问题更重要的是缺少协商(negotiation)功能涉及到Policy/Mechanism的问题7/8/200315Internet安全协议及标准安全协议及标准协议实现中的同消息传递有关的问题协议实现中的同消息传递有关的问题可靠传输/不可靠传输发送方能否知道传输中的错误如果不能保证可靠传递,应用程序必须自己处理应答阻塞/非阻塞 (Blocking/Nonblocking)非阻塞发出消息,然后返回更加灵活,但难以调试阻塞发出消息,等待发送成功7/8/200316Internet安全协议及标准安全协议及标准ASN.1初步初步7/8/2003AgendaAbstract Syntax Notation One (ASN.1)Overview类型和值定义简单类型构造类型Basic Encoding Rules (BER)OverviewType-Length-Value/Identifier-Length-Content编码示例其他编码方式Distinguished Encoding Rules (DER)ASN.1开发流程7/8/200318Internet安全协议及标准安全协议及标准ASN.1 - Overview一种独立于机器的描述语言独立于机器的描述语言,用于描述在网络上传递的消息ITU-T(X.680)和ISO (ISO 8824-1)标准标准定义应用程序数据的抽象语法抽象语法定义应用程序数据结构和表示协议数据单元协议数据单元(PDUs)独立于机器、语言及应用程序内部表示ASN.1特别适合表示现代通信应用中那些复杂的、变化的及可扩展的数据结构类似标准有IDLXDRXMLASN.1 可分为两个部分语法规则:从数据类型、内容顺序或结构等方面来描述消息的内容编码规则:如何编码实际消息中的数据7/8/200319Internet安全协议及标准安全协议及标准ASN.1定义示例定义示例表达简单和复杂类型的能力可对类型根据大小及(或)数值进行约束也可以施加更强的约束字段可标记为 OPTIONAL大写开头表示类型名,小写开头的表示变量名/字段名Age := INTEGER (0.120)User := SEQUENCE name IA5String (SIZE(1.128), age Age DEFAULT 18, address IA5String OPTIONAL, .7/8/200320Internet安全协议及标准安全协议及标准使用使用ASN.1的标准及应用的标准及应用X.400消息处理系统/X.500目录服务基于LDAP的目录服务/X.509数字证书RSA公开密码标准密钥的存储及传递/证书SET安全电子商务H.323/T.120多媒体通信标准Unicode标准简单网络管理协议(SNMP)MIBSNMP PDUs7/8/200321Internet安全协议及标准安全协议及标准ASN.1术语术语抽象语法抽象语法(Abstract Syntax)描述通用数据结构允许定义数据类型和值数据类型数据类型(Data Type)值的集合,可以是简单类型或结构类型可以对数据类型命名编码编码(Encoding)用于表示数据值的字节序列编码规则编码规则(Encoding Rules)给出从一种语法到另一种的映射方法传输语法传输语法(Transfer Syntax)位模式(Bits pattern)描述数据是在传输时是如何表示的7/8/200322Internet安全协议及标准安全协议及标准Abstract & Transfer SyntaxesApplicationcomponentdata transfercomponent(e.g, TCP, OSIsession)data transfercomponent(e.g, TCP, OSIsession)ApplicationcomponentLocal storage(e.g, MIB)Local storage(e.g, MIB)UserUserlocalmappinguser presentationmappinguser presentationmappingAbstractSyntax(e.g., ASN.1)localmappingencodingrulesencodingrulesTransferSyntax(e.g., BER)7/8/200323Internet安全协议及标准安全协议及标准模块模块(module):ASN.1规范中的基本构造块规范中的基本构造块模块定义格式如下:模块定义格式如下: DEFINITIONS := BEGINEXPORTSIMPORTSAssignmentList ENDASN.1模块定义模块定义Definitions in this module that may be imported by other modules.Definitions that are to be imported from other modules.Type assignments, value assignments, and macro definitions that are defined in this module.7/8/200324Internet安全协议及标准安全协议及标准ASN.1简单类型简单类型(1)基本类型基本类型BOOLEANINTEGERENUMERATEDREALBIT STRINGOCTET STRING字符串类型字符串类型(ISO10646-1的子集的子集)NumericString (0-9,)PrintableString (0-9,A-Z,a-z,VisibleStringGraphicStringUTF8StringIA5String (ASCII)7/8/200325Internet安全协议及标准安全协议及标准ASN.1简单类型简单类型(2)对象类型OBJECT IDENTIFIER对象标识符:一个任意长的非负整数序列,用于标记对象(如算法等)ObjectDescriptor其它类型NULL空值UTCTimeyymmdd hhmmss GeneralizedTimeyyyymmdd hhmmss 强制从2050年开始7/8/200326Internet安全协议及标准安全协议及标准ASN.1类型定义类型定义语法: := 示例:Counter:= INTEGERIpAddress := OCTET STRINGMonths := 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/200327Internet安全协议及标准安全协议及标准ASN.1子类型定义子类型定义语法: := ()示例:Counter := INTEGER (0.65536)IpAddress := OCTET STRING ( SIZE(4) )Spring := Months (march | april | may)Summer := Months (june | july | august )SmallPrime := INTEGER ( 2 | 3 | 5 | 7 | 11 )ExportKey := BIT STRING ( SIZE(40) )7/8/200328Internet安全协议及标准安全协议及标准ASN.1赋值赋值(1)语法: := 示例:ipInReceives Counter := 2450ipRouteMask IpAddress := FFFFFF00HcurrentMonth Months := julycurrentTime UTCTime := “030708094018+0800”name VisibleString := “John”married BOOLEAN := TRUEfaxMessage BIT STRING := 01100001101B7/8/200329Internet安全协议及标准安全协议及标准ASN.1赋值赋值(2)OBJECT IDENTIFIERinternet OBJECT IDENTIFIER := iso(1) org(3) dod(6) 1 private OBJECT IDENTIFIER := internet 4 RSA公司Security OID: iso(1) member-body(2) US(840) 113549 7/8/200330Internet安全协议及标准安全协议及标准ASN.1结构类型结构类型(1)SEQUENCE对应于C语言中的struct类型定义UserAccount := SEQUENCE username PrintableString, password PrintableString, accountNr INTEGER赋值myAccount UserAccount := username “tly”, password “guesswhat”, accountNr 23457/8/200331Internet安全协议及标准安全协议及标准ASN.1结构类型结构类型(2)SEQUENCE OF对应于C语言中的数组类型定义MemberCountries := SEQUENCE OF PrintableStringAccountRegistry := SEQUENCE OF UserAccount赋值eastAsia MemberCountries := “China”, “Japan”, “Korean”, “DPR”7/8/200332Internet安全协议及标准安全协议及标准ASN.1结构类型结构类型(3)SET类似于SEQUENCE,但不考虑分量顺序类型定义UserAccount := SET username 0 PrintableString, password 1 PrintableString, accountNr 2 INTEGER赋值myAccount UserAccount := accountNr 2345, username “tly”, password “guesswhat”7/8/200333Internet安全协议及标准安全协议及标准ASN.1结构类型结构类型(3)SET OF集合类型,每一分量类型相同,不考虑顺序类型定义Keywords := SET OF PrintableString赋值someASN1Keywords Keywords := “INTEGER”, “BOOLEAN”, “REAL”7/8/200334Internet安全协议及标准安全协议及标准BER-OverviewBER 基本编码规则(Basic Encoding Rules)ITU-T(X.690)和ISO(8825-1)标准一种编码规格说明描述如何将ASN.1类型的值编码成字节串(string of octets)的方法基于一种称为type-length-value (TLV)结构的方法,在ASN.1中,也称identifier-length-content(ILC)7/8/200335Internet安全协议及标准安全协议及标准BER基本编码方法基本编码方法7/8/200336Internet安全协议及标准安全协议及标准Basic Encoding RulesA Schematic Representation7/8/200337Internet安全协议及标准安全协议及标准ASN.1类型标记类型标记(1)Universal Class Tags7/8/200338Internet安全协议及标准安全协议及标准ASN.1类型标记类型标记(2)Application Class Tags7/8/200339Internet安全协议及标准安全协议及标准BER中的中的Identifier字段字段 (1)Tag number = 317/8/200341Internet安全协议及标准安全协议及标准BER中的中的Length字段字段(1)7/8/200342Internet安全协议及标准安全协议及标准BER中的中的Length字段字段(2)短格式既可用于基本类型,也可用于内容长度不超过128的构造类型长格式既可用于基本类型,也可用于构造类型通常内容长度大于或等于128不定长格式仅用于构造类型EOC字节可看作是tag为0的基本类型,内容长度为07/8/200343Internet安全协议及标准安全协议及标准BER编码示例编码示例 (1)INTEGER7/8/200344Internet安全协议及标准安全协议及标准BER编码示例编码示例 (2)INTEGERBER coding of twos complement integers-129: 1111 1111 0111 1111 = 02 02 FF 7F-128: 1111 1111 1000 0000 = 02 01 80-127: 1111 1111 1000 0001 = 02 01 81 -1: 1111 1111 1111 1111 = 02 01 FF 0: 0000 0000 0000 0000 = 02 00 1: 0000 0000 0111 1111 = 02 01 01 127: 0000 0000 0111 1111 = 02 01 7F 128: 0000 0000 1000 0000 = 02 02 00 80 129: 0000 0000 1000 0001 = 02 02 00 817/8/200345Internet安全协议及标准安全协议及标准BER编码示例编码示例 (3)SEQUENCE7/8/200346Internet安全协议及标准安全协议及标准BER编码示例编码示例 (4)OBJECT IDENTIFIER7/8/200347Internet安全协议及标准安全协议及标准BER编码示例编码示例 (5)OBJECT IDENTIFIERCoding of OID Rootccitt(0): Z = Y 0.39iso(1): Z = 40 + Y 40.79joint-iso-ccitt(2): Z= 80 + Y 80.119Coding of OID nude numbers类似于Identifier字段中的Tag编码Range 0.127:0XXX XXXXRange 128.16383:1XXX XXXX 0XXX XXXXRange 16384.2097151:1XXX XXXX 1XXX XXXX 0XXX XXXX例:RSA数据安全公司 1 2 840 11354906 06 2a 86 48 86 f7 0d7/8/200348Internet安全协议及标准安全协议及标准BER编码存在的问题编码存在的问题不唯一同一个值可能有超过1种合法的编码; 灵活,但容易造成混淆示例BIT STRING值 01101110 01011101 11BIT STRING编码中,在长度字段后的第一个字节给出了最后一个字节中未用到的位数(本例中为6)03 04 06 6e 5d c0 (用0填充,短格式)03 04 06 6e 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子集,基于不定长编码7/8/200349Internet安全协议及标准安全协议及标准DER Distinguished Encoding RulesDER (Distinguished Encoding Rules)BER的子集,增加某些限制DER附加规则当长度在0到127之间时,长度字段长度字段必须使用短短格式当长度是128或者更长时,长度字段长度字段必须使用长长格式,同时长度必须以最小数目最小数目的八位组来编码对于从简单字符串类型衍生出来的简单字符串类型和隐式标记类型,必须使用基本的定长方法对于结构类型、从结构类型衍生出来的隐式标记类型,以及从任何类型衍生出来的显式标记类型,必须使用构造的定长方法对于特殊类型,另有限制BIT STRING: 必须用0填充SEQUENCE OF中的OPTIONAL和DEFAULT限定符SET OF除同SEQUENCE相同的规定外,各分量要求以标记的升序排列7/8/200350Internet安全协议及标准安全协议及标准ASN.1/DER示例示例(1)X.509证书及其编码证书及其编码使用makecert创建一个测试证书使用openssl显示该证书可读版本使用Asn1Viewer检查该编码7/8/200351Internet安全协议及标准安全协议及标准ASN.1/DER示例示例(2)X.509证书及其编码证书及其编码X.509证书定义Certificate := SEQUENCE tbsCertificate TBSCertificate, -证书主体signatureAlgorithm AlgorithmIdentifier, -证书签名算法标识signatureValue BIT STRING -证书签名算法值7/8/200352Internet安全协议及标准安全协议及标准ASN.1/DER示例示例(3)X.509证书及其编码证书及其编码X.509证书定义(续)TBSCertificate := SEQUENCE version 0 EXPLICIT Version DEFAULT v1, -证书版本号serialNumber CertificateSerialNumber, -证书序列号,对同一CA所颁发的证书,序列号唯一标识证书signature AlgorithmIdentifier, -证书签名算法标识issuer Name, -证书发行者名称validity Validity, -证书有效期subject Name, -证书主体名称subjectPublicKeyInfo SubjectPublicKeyInfo, -证书公钥issuerUniqueID 1 IMPLICIT UniqueIdentifier OPTIONAL, - 证书发行者ID(可选),只在证书版本2、3中才有subjectUniqueID 2 IMPLICIT UniqueIdentifier OPTIONAL, -证书主体ID(可选),只在证书版本2、3中才有extensions 3 EXPLICIT Extensions OPTIONAL -证书扩展段(可选),只在证书版本2、3中才有Version := INTEGER v1(0), v2(1), v3(2) 7/8/200353Internet安全协议及标准安全协议及标准PER Packed Encoding RulesApplication 1Application 2110Age := INTEGER (0.7)firstGrade Age := 6total length of 3 bits同BER相同的是:PER也独立于机器、语言及应用程序内部表示不同于BER的是:在PER中,tags从不传送,length和value如果双方都知道,也不需传送可节约带宽,适用于在Internet上传送audio和video数据、air-ground通信等7/8/200354Internet安全协议及标准安全协议及标准XER XML Encoding Rules同BER/PER相同的是:XER也独立于机器、语言及应用程序内部表示XER清晰,可读性强,甚至可以不需要工具带宽占用大Application 1Application 26Age := INTEGER (0.7)firstGrade Age := 6total length of 12 octets7/8/200355Internet安全协议及标准安全协议及标准ASN.1的使用的使用通过适当的转换,ASN.1可以在常用语言中使用C/C+, Java, IDL, etc7/8/200356Internet安全协议及标准安全协议及标准ASN.1开发流程开发流程ASN.1SyntaxASN.1CompilerC HeaderFileApplication Source CodeincludeC/C+CompilerEncoder/Decoder LibrariesLinkerExecutable Application7/8/200357Internet安全协议及标准安全协议及标准ASN.1的使用示例的使用示例ASN.1定义定义通过适当的转换,ASN.1可以在常用语言中使用C/C+, Java, IDL, etc例:ASN.1定义定义:PersonalInfo := SEQUENCE married BOOLEAN,age INTEGER (0.120),name PrintableStringTAnotherINT := INTEGERTType1 := SEQUENCE OF PersonalInfoTType2 := SET type1 TType1,another 0 TAnotherINT,age 1 INTEGER DEFAULT 123TType3 := SET OF TType27/8/200358Internet安全协议及标准安全协议及标准ASN.1的使用示例的使用示例生成的生成的C语言数据结构语言数据结构例 (续1):由由esnacc生成的生成的C语言数据结构:语言数据结构:typedef struct PersonalInfo /* SEQUENCE */ 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 another; /* 0 TAnotherINT */ AsnInt* age; /* 1 INTEGER DEFAULT 123 */ TType2;typedef AsnList TType3; /* SET OF TType2 */7/8/200359Internet安全协议及标准安全协议及标准ASN.1的使用示例的使用示例编码编码/译码译码例 (续2):编码编码/译码译码:AsnLen DEncPersonalInfoContent (GenBuf * b, PersonalInfo *v);void DDecPersonalInfoContent (GenBuf * b, AsnTag tagId0, AsnLen elmtLen0, PersonalInfo *v, AsnLen *bytesDecoded, ENV_TYPE env);#define DEncTAnotherINTContent DEncAsnIntContent#define DDecTAnotherINTContent DDecAsnIntContentAsnLen DEncTType1Content (GenBuf * b, TType1 *v);void DDecTType1Content (GenBuf * b, AsnTag tagId0, AsnLen elmtLen0, TType1 *v, AsnLen *bytesDecoded, ENV_TYPE env);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, AsnLen *bytesDecoded, ENV_TYPE env);7/8/200360Internet安全协议及标准安全协议及标准ASN.1的使用示例的使用示例生成的生成的C+类类例 (续3):由由esnacc生成的生成的C+类:类:class PersonalInfo: public AsnType public: AsnBool married; AsnInt age; PrintableString name; AsnLen BEnc (AsnBuf& b) const; void BDec (const AsnBuf& b, AsnLen& bytesDecoded); ;typedef AsnInt TAnotherINT;class TType1 : public AsnSeqOf;class TType2: public AsnType public: TType1 type1; TAnotherINT another; AsnInt* age; AsnLen BEnc (AsnBuf& b) const; void BDec (const AsnBuf& b, AsnLen& bytesDecoded); ;class TType3 : public AsnSetOf ;7/8/200361Internet安全协议及标准安全协议及标准关于关于ASN.1的一些资源的一些资源ASN.1C/C+, IDL编译器snacc, esnaccwww.digitalnet.comOSS Nokalvawww.oss.comObjective System, inc.www.obj-sys.comhttp:/www.asn1.org/本课slides参考了以下资料ASN.1 Today and Tomorrowhttp:/www.itu.int/itudoc/itu-t/com17/tutorial/78247_pp7.pptASN.1 & BER from jwkhongpostech.ac.krhttp:/dpnm.postech.ac.kr/cs637/lecture/asn1-ber.pptAbstract Syntax Note One from Dr. Andreas Steffenhttp:/www.strongsec.com/zhw/KSy_ASN1.pdfA Laymans Guide to a Subset of ASN.1, BER, and DERFrom RSA Laboratories7/8/200362Internet安全协议及标准安全协议及标准ChangeLog2003.7.9 v1.1 by T.L.Yong增加ASN.1/DER示例:X.509证书及其编码进一步充实ASN.1-C/C+示例2003.7.7 v1.0 By T.L.Yong增加ASN.1相关内容2003.7.7 v0.5 By T.L.YongInitialize from the original Lesson 37/8/200363Internet安全协议及标准安全协议及标准
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号