1 / 63

Internet 安全协议与标准 第 4 课

Internet 安全协议与标准 第 4 课. 唐礼勇 博士 tly@infosec.pku.edu.cn. 安全协议基础. Agenda. 何谓协议 Base64 编码 加密算法同明文相关的几个问题 一个简单协议的分析. 安全消息系统 - 发送方. 安全消息系统 - 接收方. 安全消息系统 - 存在的问题. 对单条消息工作得很好 可方便地用于电子邮件、文件等的安全传送 对要传输任意信息不适用 交互式应用 引入一个简单的安全协议 (TSP: Toy Security Protocol) 不需为每个数据包都动用昂贵的公开密钥操作 实现证书发现.

jewell
Download Presentation

Internet 安全协议与标准 第 4 课

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Internet安全协议与标准第4课 唐礼勇 博士 tly@infosec.pku.edu.cn

  2. 安全协议基础

  3. Agenda • 何谓协议 • Base64编码 • 加密算法同明文相关的几个问题 • 一个简单协议的分析 Internet安全协议及标准

  4. 安全消息系统-发送方 Internet安全协议及标准

  5. 安全消息系统-接收方 Internet安全协议及标准

  6. 安全消息系统-存在的问题 • 对单条消息工作得很好 • 可方便地用于电子邮件、文件等的安全传送 • 对要传输任意信息不适用 • 交互式应用 • 引入一个简单的安全协议(TSP: Toy Security Protocol) • 不需为每个数据包都动用昂贵的公开密钥操作 • 实现证书发现 Internet安全协议及标准

  7. TSP (1) • 基本步骤 • 假设通信双方:Alice, Bob • 握手(Handshake) • Alice和Bob使用他们的证书和私钥来对对方进行身份鉴别并交换共享密钥 • 导出密钥(Key derivation) • Alice和Bob使用他们达成一致的共享密钥导出一组用于保护将要传输的数据的密钥 • 数据传输(Data transfer) • 将要传输的数据分割成一系列的记录,并对每条记录加以保护 • 关闭连接(Connection closure) • 使用特殊的、经过保护的关闭消息,安全地关闭连接 Internet安全协议及标准

  8. Hello Certificate Encrypt(Bob,MS)=EMS TSP (2) • 握手阶段(Handshake) Bob Alice 单向鉴别 Internet安全协议及标准

  9. Hello Certificate,nonce Sign(Alice,Encrypt(Bob,MS)) TSP (2) • 握手阶段(Handshake) Bob Alice 双向鉴别 Internet安全协议及标准

  10. 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”) Internet安全协议及标准

  11. TSP (4) • 数据记录 • 如何对数据打包 • 设想成在传输数据时对恒定的数据流加密 • MAC如何处理?放最后吗? • 解决方法 • 将数据分割成一系列记录,每个记录自带MAC • 记录大小 • 定长:不经济 • 理想的应是变长记录,加上长度字段 • 记录格式 • 长度 + 数据 + MAC • MAC计算 • M=MAC(Mx,D) Internet安全协议及标准

  12. TSP (5) • 序号 • 重放、删除、重排攻击 • 需要增加序号 • 序号必须是MAC输入的一部分 • 可以放在记录中 • 在基于TCP的连接中,也可以使用隐含序号 • MAC的计算 • M=MAC(Mx, Sequence || D) Internet安全协议及标准

  13. TSP (6) • 控制信息 • 如何防止攻击者恶意切断连接 • 需要有一种机制使得Alice能告诉Bob(或反之),她已完成数据传送 • 两种方法 • 传送长度为0的记录 • 增加类型字段 • 增加类型字段后的记录格式 • 长度 + 序号 + 类型 + 数据 + MAC • 类型为0:普通数据 • 类型为1:结束记录 • 类型为其他:报告错误信息 • MAC的计算 • M=MAC(Mx, Sequence || Type || D) Internet安全协议及标准

  14. Hello Type 0, Seq 1, Data Type 0, Seq 2, Data Type 0, Seq 3, Data Type 1, Seq 4, Close Type 0, Seq 1, Data Type 1, Seq 2, Close Certificate,nonce Sign(Alice,Encrypt(Bob,MS)) TSP – 完整图示 Bob Alice Internet安全协议及标准

  15. TSP – 小结 • 实际上,TSP已经包含了SSL绝大多数的核心功能 • 握手 • 密钥交换 • 双向鉴别 • 保密传输 • 遗漏的部分 • 不完整,不包括具体实现细节 • 数据结构定义 • 每一字段大小 • 使用何种算法 • 涉及到数据结构表示、翻译等问题 • 更重要的是 • 缺少协商(negotiation)功能 • 涉及到Policy/Mechanism的问题 Internet安全协议及标准

  16. 协议实现中的同消息传递有关的问题 • 可靠传输/不可靠传输 • 发送方能否知道传输中的错误 • 如果不能保证可靠传递,应用程序必须自己处理应答 • 阻塞/非阻塞 (Blocking/Nonblocking) • 非阻塞 • 发出消息,然后返回 • 更加灵活,但难以调试 • 阻塞 • 发出消息,等待发送成功 Internet安全协议及标准

  17. ASN.1初步

  18. 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开发流程 Internet安全协议及标准

  19. ASN.1 - Overview • 一种独立于机器的描述语言,用于描述在网络上传递的消息 • ITU-T(X.680)和ISO (ISO 8824-1)标准 • 定义应用程序数据的抽象语法 • 定义应用程序数据结构和表示协议数据单元(PDUs) • 独立于机器、语言及应用程序内部表示 • ASN.1特别适合表示现代通信应用中那些复杂的、变化的及可扩展的数据结构 • 类似标准有 • IDL • XDR • XML • ASN.1 可分为两个部分 • 语法规则:从数据类型、内容顺序或结构等方面来描述消息的内容 • 编码规则:如何编码实际消息中的数据 Internet安全协议及标准

  20. ASN.1定义示例 • 表达简单和复杂类型的能力 • 可对类型根据大小及(或)数值进行约束 • 也可以施加更强的约束 • 字段可标记为 OPTIONAL • 大写开头表示类型名,小写开头的表示变量名/字段名 Age ::= INTEGER (0..120) User ::= SEQUENCE { name IA5String (SIZE(1..128)), age Age DEFAULT 18, address IA5String OPTIONAL, ... } Internet安全协议及标准

  21. 使用ASN.1的标准及应用 • X.400消息处理系统/X.500目录服务 • 基于LDAP的目录服务/X.509数字证书 • RSA公开密码标准 • 密钥的存储及传递/证书 • SET • 安全电子商务 • H.323/T.120多媒体通信标准 • Unicode标准 • 简单网络管理协议(SNMP) • MIB • SNMP PDUs Internet安全协议及标准

  22. ASN.1术语 • 抽象语法(Abstract Syntax) • 描述通用数据结构 • 允许定义数据类型和值 • 数据类型(Data Type) • 值的集合,可以是简单类型或结构类型 • 可以对数据类型命名 • 编码(Encoding) • 用于表示数据值的字节序列 • 编码规则(Encoding Rules) • 给出从一种语法到另一种的映射方法 • 传输语法(Transfer Syntax) • 位模式(Bits pattern) • 描述数据是在传输时是如何表示的 Internet安全协议及标准

  23. User User user presentation mapping user presentation mapping Local storage (e.g, MIB) Local storage (e.g, MIB) Application component Application component local mapping local mapping Abstract Syntax (e.g., ASN.1) encoding rules encoding rules data transfer component (e.g, TCP, OSI session) data transfer component (e.g, TCP, OSI session) Transfer Syntax (e.g., BER) Abstract & Transfer Syntaxes Internet安全协议及标准

  24. ASN.1模块定义 • 模块(module):ASN.1规范中的基本构造块 • 模块定义格式如下: <modulereference> DEFINITIONS ::= BEGIN EXPORTS IMPORTS AssignmentList END 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. Internet安全协议及标准

  25. ASN.1简单类型(1) • 基本类型 • BOOLEAN • INTEGER • ENUMERATED • REAL • BIT STRING • OCTET STRING • 字符串类型(ISO10646-1的子集) • NumericString (0-9,<space>) • PrintableString (0-9,A-Z,a-z,<space>,<s[ecial> • VisibleString • GraphicString • UTF8String • IA5String (ASCII) Internet安全协议及标准

  26. ASN.1简单类型(2) • 对象类型 • OBJECT IDENTIFIER • 对象标识符:一个任意长的非负整数序列,用于标记对象(如算法等) • ObjectDescriptor • 其它类型 • NULL • 空值 • UTCTime • yymmdd hhmm[ss] <local offset from UTC> • GeneralizedTime • yyyymmdd hhmm[ss] <local offset from UTC> • 强制从2050年开始 Internet安全协议及标准

  27. ASN.1类型定义 • 语法: <type name> ::= <type> • 示例: Counter ::= INTEGER IpAddress ::= OCTET STRING Months ::= 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) } Internet安全协议及标准

  28. ASN.1子类型定义 • 语法:<subtype name> ::= <type> (<constraint>) • 示例: 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) ) Internet安全协议及标准

  29. ASN.1赋值(1) • 语法:<value name> <type> ::= <value> • 示例: ipInReceives Counter ::= 2450 ipRouteMask IpAddress ::= ‘FFFFFF00’H currentMonth Months ::= july currentTime UTCTime ::= “030708094018+0800” name VisibleString ::= “John” married BOOLEAN ::= TRUE faxMessage BIT STRING ::= ‘01100001101’B Internet安全协议及标准

  30. ASN.1赋值(2)OBJECT IDENTIFIER internet 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 } Internet安全协议及标准

  31. ASN.1结构类型(1)SEQUENCE • 对应于C语言中的struct • 类型定义 UserAccount ::= SEQUENCE { username PrintableString, password PrintableString, accountNr INTEGER } • 赋值 myAccount UserAccount ::= { username “tly”, password “guesswhat”, accountNr 2345 } Internet安全协议及标准

  32. ASN.1结构类型(2)SEQUENCE OF • 对应于C语言中的数组 • 类型定义 MemberCountries ::= SEQUENCE OF PrintableString AccountRegistry ::= SEQUENCE OF UserAccount • 赋值 eastAsia MemberCountries ::= { “China”, “Japan”, “Korean”, “DPR” } Internet安全协议及标准

  33. ASN.1结构类型(3)SET • 类似于SEQUENCE,但不考虑分量顺序 • 类型定义 UserAccount ::= SET { username [0] PrintableString, password [1] PrintableString, accountNr [2] INTEGER } • 赋值 myAccount UserAccount ::= { accountNr 2345, username “tly”, password “guesswhat” } Internet安全协议及标准

  34. ASN.1结构类型(3)SET OF • 集合类型,每一分量类型相同,不考虑顺序 • 类型定义 Keywords ::= SET OF PrintableString • 赋值 someASN1Keywords Keywords ::= { “INTEGER”, “BOOLEAN”, “REAL” } Internet安全协议及标准

  35. BER-Overview • BER – 基本编码规则(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) Internet安全协议及标准

  36. BER基本编码方法 Internet安全协议及标准

  37. Basic Encoding RulesA Schematic Representation Internet安全协议及标准

  38. ASN.1类型标记(1)Universal Class Tags Internet安全协议及标准

  39. ASN.1类型标记(2)Application Class Tags Internet安全协议及标准

  40. BER中的Identifier字段 (1)Tag number < 31 Internet安全协议及标准

  41. BER中的Identifier字段 (2)Tag number >= 31 Internet安全协议及标准

  42. BER中的Length字段(1) Internet安全协议及标准

  43. BER中的Length字段(2) • 短格式 • 既可用于基本类型,也可用于内容长度不超过128的构造类型 • 长格式 • 既可用于基本类型,也可用于构造类型 • 通常内容长度大于或等于128 • 不定长格式 • 仅用于构造类型 • EOC字节可看作是tag为0的基本类型,内容长度为0 Internet安全协议及标准

  44. BER编码示例 (1)INTEGER Internet安全协议及标准

  45. BER编码示例 (2)INTEGER • BER coding of two’s complement integers • -129: 1111 1111 0111 1111 = 0202 FF 7F • -128: 1111 1111 1000 0000 = 0201 80 • -127: 1111 1111 1000 0001 = 0201 81 • -1: 1111 1111 1111 1111 = 0201 FF • 0: 0000 0000 0000 0000 = 0200 • 1: 0000 0000 0111 1111 = 0201 01 • 127: 0000 0000 0111 1111 = 0201 7F • 128: 0000 0000 1000 0000 = 0202 00 80 • 129: 0000 0000 1000 0001 = 0202 00 81 Internet安全协议及标准

  46. BER编码示例 (3)SEQUENCE Internet安全协议及标准

  47. BER编码示例 (4)OBJECT IDENTIFIER Internet安全协议及标准

  48. BER编码示例 (5)OBJECT IDENTIFIER • Coding of OID Root • ccitt(0): Z = Y {0..39} • iso(1): Z = 40 + Y {40..79} • joint-iso-ccitt(2): Z= 80 + Y {80..119} • Coding of OID nude numbers • 类似于Identifier字段中的Tag编码 • Range {0..127}: • 0XXX XXXX • Range {128..16383}: • 1XXX XXXX 0XXX XXXX • Range {16384..2097151}: • 1XXX XXXX 1XXX XXXX 0XXX XXXX • 例:RSA数据安全公司 {1 2 840 113549} • 06062a86 4886 f7 0d Internet安全协议及标准

  49. BER编码存在的问题 • 不唯一 • 同一个值可能有超过1种合法的编码; 灵活,但容易造成混淆 • 示例 • BIT STRING值 01101110 01011101 11 • BIT STRING编码中,在长度字段后的第一个字节给出了最后一个字节中未用到的位数(本例中为6) • 0304 06 6e 5d c0 (用0填充,短格式) • 0304 06 6e 5d e0 (用100000填充) • 0381 04 06 6e 5d e0 (长格式) • 2309 (构造式编码) 0303 00 6e 5d (“0110111001011101”+”11”) 0302 06 c0 • 解决方案(两种方向) • DER: BER子集,只使用定长编码 • CER: BER子集,基于不定长编码 Internet安全协议及标准

  50. DER – Distinguished Encoding Rules • DER (Distinguished Encoding Rules) • BER的子集,增加某些限制 • DER附加规则 • 当长度在0到127之间时,长度字段必须使用短格式 • 当长度是128或者更长时,长度字段必须使用长格式,同时长度必须以最小数目的八位组来编码 • 对于从简单字符串类型衍生出来的简单字符串类型和隐式标记类型,必须使用基本的定长方法 • 对于结构类型、从结构类型衍生出来的隐式标记类型,以及从任何类型衍生出来的显式标记类型,必须使用构造的定长方法 • 对于特殊类型,另有限制 • BIT STRING: 必须用0填充 • SEQUENCE [OF]中的OPTIONAL和DEFAULT限定符 • SET [OF]除同SEQUENCE相同的规定外,各分量要求以标记的升序排列 Internet安全协议及标准

More Related