《网络与信息安全安全基础四.ppt》由会员分享,可在线阅读,更多相关《网络与信息安全安全基础四.ppt(67页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、网络与信息安全安全基础四 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望内容内容uSSL/TLS协议协议u授权和访问控制授权和访问控制u安全基础部分小结安全基础部分小结SSL/TLS协议协议u1994年年Netscape开发了开发了SSL(SecureSocketLayer)协议,专门用于保护协议,专门用于保护Web通讯通讯u版本和历史版本和历史1.0,不成熟,不成熟2.0,基本上解决了,基本上解决了Web通讯的安全问题通讯的安全问题Microsoft公司发布了公
2、司发布了PCT(PrivateCommunicationTechnology),并在并在IE中支持中支持3.0,1996年发布,增加了一些算法,修改了一些缺陷年发布,增加了一些算法,修改了一些缺陷TLS1.0(TransportLayerSecurity,也被称为也被称为SSL3.1),1997年年IETF发布了发布了Draft,同时,同时,Microsoft宣布放宣布放弃弃PCT,与与Netscape一起支持一起支持TLS1.01999年,发布年,发布RFC2246(TheTLSProtocolv1.0)SSL/TLS协议协议u协议的设计目标协议的设计目标为两个通讯个体之间提供保密性和完整性
3、为两个通讯个体之间提供保密性和完整性(身份认证身份认证)互操作性、可扩展性、相对效率互操作性、可扩展性、相对效率u协议的使用协议的使用SSL/TLS概况概况u协议分为两层协议分为两层底层:底层:TLS记录协议记录协议上层:上层:TLS握手协议、握手协议、TLS密码变化协议、密码变化协议、TLS警告协议警告协议uTLS记录协议记录协议建立在可靠的传输协议建立在可靠的传输协议(如如TCP)之上之上它提供连接安全性,有两个特点它提供连接安全性,有两个特点保密性,使用了对称加密算法保密性,使用了对称加密算法完整性,使用完整性,使用HMAC算法算法用来封装高层的协议用来封装高层的协议uTLS握手协议握手
4、协议客户和服务器之间相互认证客户和服务器之间相互认证协商加密算法和密钥协商加密算法和密钥它提供连接安全性,有三个特点它提供连接安全性,有三个特点身份认证,至少对一方实现认证,也可以是双向认证身份认证,至少对一方实现认证,也可以是双向认证协商得到的共享密钥是安全的,中间人不能够知道协商得到的共享密钥是安全的,中间人不能够知道协商过程是可靠的协商过程是可靠的SSL/TLS协议栈协议栈u为上层协议提供安全性为上层协议提供安全性保密性保密性身份认证和数据完整性身份认证和数据完整性TLS会话会话u(TLSSession)定义:定义:指客户和服务器之间的一个关联关系。通过指客户和服务器之间的一个关联关系。
5、通过TLS握手协议创建握手协议创建session,它确定了一组密码它确定了一组密码算法的参数。算法的参数。Session可以被多个连接共享,从可以被多个连接共享,从而可以避免为每个连接协商新的安全参数而带来而可以避免为每个连接协商新的安全参数而带来昂贵的开销。昂贵的开销。TLSSession都有一个当前状态都有一个当前状态uTLSconnection与底层协议的点对点连接相关联与底层协议的点对点连接相关联每个每个connection都与一个都与一个session相关联相关联连接是短暂的连接是短暂的TLS会话状态会话状态u实际上是一组参数,包括实际上是一组参数,包括Sessionidentifi
6、er,字节序列,由服务器产字节序列,由服务器产生,用来标识一个会话状态生,用来标识一个会话状态Peercertificate(可以为可以为NULL),对方的对方的X.509v3证书证书Compressionmethod,压缩数据的算法压缩数据的算法Cipherspec,指定数据加密算法和用于指定数据加密算法和用于HMAC的散列算法,以及算法的有关参数的散列算法,以及算法的有关参数Mastersecret,客户和服务器之间共享的客户和服务器之间共享的48字节的数据字节的数据Isresumable,标记是否这个会话可以被用标记是否这个会话可以被用来初始化一个新的连接来初始化一个新的连接TLS连接的
7、状态连接的状态u连接状态也包含一组参数连接状态也包含一组参数Serverandclientrandom,客户和服务器为每个连客户和服务器为每个连接选择的字节序列接选择的字节序列ServerwriteMACsecret,服务器在发送数据的时服务器在发送数据的时候,用于候,用于MAC运算的运算的keyClientwriteMACsecret,客户在发送数据的时候,客户在发送数据的时候,用于用于MAC运算的运算的keyServerwritekey,服务器加密数据的密钥,以及客服务器加密数据的密钥,以及客户解密数据的密钥户解密数据的密钥Clientwritekey,客户加密数据的密钥,以及服务客户加密
8、数据的密钥,以及服务器解密数据的密钥器解密数据的密钥Initializationvectors,在在CBC模式中用到的模式中用到的IV,最最初由握手协议初始化,以后,每一个记录的最后一个初由握手协议初始化,以后,每一个记录的最后一个密文块被用作下一个记录的密文块被用作下一个记录的IVSequencenumbers,每一个连接都需要维护一个序每一个连接都需要维护一个序列号,当密码参数变化时,重置为列号,当密码参数变化时,重置为0TLS记录协议记录协议TLSRecordProtocolu操作过程示意图操作过程示意图TLS记录协议中的操作记录协议中的操作u第一步,第一步,fragmentation上
9、层消息的数据被分片成上层消息的数据被分片成214字节大小的块,或者更字节大小的块,或者更小小u第二步,第二步,compression(可选可选)必须是无损压缩,如果数据增加的话,则增加部分的必须是无损压缩,如果数据增加的话,则增加部分的长度不超过长度不超过1024字节字节u第三步,计算消息认证码第三步,计算消息认证码(MAC)计算公式:计算公式:HMAC_hash(MAC_write_secret,HMAC_hash(MAC_write_secret,seq_num seq_num|TLSCompressed.type|TLSCompressed.type|TLSCompressed.vers
10、ion|TLSCompressed.version|TLSCompressed.length|TLSCompressed.length|TLSCompressed.fragment)|TLSCompressed.fragment)TLS记录协议中的操作记录协议中的操作(续续)u第四步,第四步,encryption采用采用CBC,算法由算法由cipherspec指定指定数据长度不超过数据长度不超过214+2048字节,包括字节,包括加密之后的数据内容加密之后的数据内容HMACpadding,共共padding_length,每个字节的值也是每个字节的值也是padding_lengthpaddin
11、g_lengthIV,初始协商指定,以后,前后记录连接起来初始协商指定,以后,前后记录连接起来说明:如果是流密码算法,则不需要说明:如果是流密码算法,则不需要paddingTLS记录协议的处理结果记录协议的处理结果u结果如下:结果如下:struct struct ContentType type;8 ContentType type;8位,上层协议类型位,上层协议类型 ProtocolVersion version;16 ProtocolVersion version;16位,主次版本位,主次版本 uint16 uint16 length;length;加加 密密 后后 数数 据据 的的 长长
12、 度度,不超过不超过2 21414+2048+2048字节字节 EncryptedData fragment;EncryptedData fragment;密文数据密文数据 TLSCiphertext;TLSCiphertext;lengthTLS密码变化协议密码变化协议ChangeCipherSpecProtocolu它位于它位于TLS记录协议之上记录协议之上所以,它用到了所以,它用到了TLS记录协议的处理过程记录协议的处理过程ContentType=20协议只包含一条消息,一个字节协议只包含一条消息,一个字节1用途:切换状态用途:切换状态把密码参数设置为当前状态把密码参数设置为当前状态在握
13、手协议中,当安全参数在握手协议中,当安全参数协商一致后,发送此消息协商一致后,发送此消息这条消息使得接收方改变当这条消息使得接收方改变当前状态读参数,使得发送方前状态读参数,使得发送方改变当前状态写参数改变当前状态写参数TLS警告协议警告协议AlertProtocolu位于位于TLS记录协议之上记录协议之上所以,也用到了所以,也用到了TLS记录协议的处理过程记录协议的处理过程ContentType=21协议数据包含两个字节协议数据包含两个字节第一个字节为第一个字节为level:分别为分别为warning(1)和和fatal(2)两种情况两种情况第二个字节为情况说明第二个字节为情况说明Fatal
14、类型的类型的alert消息导致消息导致连接立即终止,此时,对应连接立即终止,此时,对应该会话的其他连接可以继续,该会话的其他连接可以继续,但是会话标识符无效,以免但是会话标识符无效,以免利用此失败的连接来建立新利用此失败的连接来建立新的连接的连接AlertProtocol第二字节说明第二字节说明close_notify(0),close_notify(0),unexpected_message(10),unexpected_message(10),bad_record_mac(20),*bad_record_mac(20),*decryption_failed(21),*decryption_
15、failed(21),*record_overflow(22),*record_overflow(22),*decompression_failure(30),*decompression_failure(30),*handshake_failure(40),*handshake_failure(40),*bad_certificate(42),bad_certificate(42),unsupported_certificate(43),unsupported_certificate(43),certificate_revoked(44),certificate_revoked(44),ce
16、rtificate_expired(45),certificate_expired(45),certificate_unknown(46),certificate_unknown(46),illegal_parameter(47),*illegal_parameter(47),*unknown_ca(48),*unknown_ca(48),*access_denied(49),access_denied(49),decode_error(50),*decode_error(50),*decrypt_error(51),decrypt_error(51),export_restriction(6
17、0),*export_restriction(60),*protocol_version(70),*protocol_version(70),*insufficient_security(71),*insufficient_security(71),*internal_error(80),*internal_error(80),*user_canceled(90),#user_canceled(90),#no_renegotiation(100),#no_renegotiation(100),#说明:说明:1*1*表示该消息往往是表示该消息往往是fatalfatal级别级别2#2#表示该消息往
18、往是表示该消息往往是warningwarning级别级别3 3 对于其他的错误情况,发送方可以对于其他的错误情况,发送方可以根据情况决定是根据情况决定是warningwarning还是还是fatal,fatal,对于对于warningwarning消息,接收方可以自行消息,接收方可以自行决定如何处理,如果是决定如何处理,如果是fatalfatal消息,消息,则一定要当作则一定要当作fatalfatal消息来对待消息来对待TLS握手协议握手协议TLSHandshakeProtocolu位于位于TLS记录协议之上记录协议之上也用到了也用到了TLS记录协议的处理过程记录协议的处理过程ContentT
19、ype=22协议格式协议格式用途:用途:当当TLS客户和服务器开始通讯的时候,它们要通客户和服务器开始通讯的时候,它们要通过协商,在以下信息方面获得一致过协商,在以下信息方面获得一致:协议版本、密码算法、是否认证对方、协议版本、密码算法、是否认证对方、用什么技术来产生共享秘密数据,等等用什么技术来产生共享秘密数据,等等TLS握手协议的流程握手协议的流程u交换交换Hello消息,对于消息,对于算法、交换随机值等协算法、交换随机值等协商一致商一致u交换必要的密码参数,交换必要的密码参数,以便双方得到统一的以便双方得到统一的premastersecretu交换证书和相应的密交换证书和相应的密码信息,
20、以便进行身份码信息,以便进行身份认证认证u产生产生mastersecretu把安全参数提供给把安全参数提供给TLS记录层记录层u检验双方是否已经获得检验双方是否已经获得同样的安全参数同样的安全参数TLS握手协议使用的消息握手协议使用的消息消息参数hello_requestNullclient_hello版本,随机数,会话id,密码参数,压缩方法server_hellocertificateX.509 v3证书链server_key_exchange参数,签名certificate_request类型,CAsserver_doneNullcertificate_verify签名client_ke
21、y_exchange参数,签名finishedHash值第一阶段:建立起安全能力属性第一阶段:建立起安全能力属性u客户发送一个客户发送一个client_hello消息,包括以下参数:消息,包括以下参数:版本、随机数版本、随机数(32位时间戳位时间戳+28字节随机序列字节随机序列)、会话会话ID、客户支持的密码算法列表客户支持的密码算法列表(CipherSuite)、客户支持的压客户支持的压缩方法列表缩方法列表u然后,客户等待服务器的然后,客户等待服务器的server_hello消息消息u服务器发送服务器发送server_hello消息,参数:消息,参数:客户建议的低版本以及服务器支持的最高版本
22、、服务器客户建议的低版本以及服务器支持的最高版本、服务器产生的随机数、会话产生的随机数、会话ID、服务器从客户建议的密码算法服务器从客户建议的密码算法中挑出一套、服务器从客户建议的压缩方法中挑出一个中挑出一套、服务器从客户建议的压缩方法中挑出一个关于会话关于会话ID(SessionID)u客户方客户方客户指定的会话客户指定的会话ID如果不等于如果不等于0,则表示它希,则表示它希望基于这个会话来更新已有连接的安全参数,望基于这个会话来更新已有连接的安全参数,或者创建一个新的连接或者创建一个新的连接如果会话如果会话ID等于等于0,则表示客户希望在一个新,则表示客户希望在一个新的会话上建立一个新的连
23、接的会话上建立一个新的连接u服务器服务器或者同意客户指定的会话或者同意客户指定的会话ID,需要检查需要检查cache中的会话状态中的会话状态或者返回一个新的会话或者返回一个新的会话IDCipherSuiteu第一个元素指定了密钥交换的方法,第一个元素指定了密钥交换的方法,TLS支持以下一些支持以下一些方法:方法:RSA,要求服务器提供一个要求服务器提供一个RSA证书证书DH(Diffie-Hellman),要求服务器的证书中包含了由要求服务器的证书中包含了由CA签名的签名的DH公开参数。客户或者在证书中提供公开参数。客户或者在证书中提供DH公开参数,或者在密钥公开参数,或者在密钥交换消息中提供
24、此参数交换消息中提供此参数EDH(EphemeralDiffie-Hellman),产生临时的密钥,产生临时的密钥,DH公开公开参数由发送者的私钥进行签名,接收者用对应的公钥进行验证参数由发送者的私钥进行签名,接收者用对应的公钥进行验证匿名的匿名的DH,不加认证。会受到中间人攻击不加认证。会受到中间人攻击u然后,指定以下信息然后,指定以下信息加密算法,和类型加密算法,和类型(流还是分组密码算法流还是分组密码算法)HMAC算法,算法,MD5还是还是SHA-1是否可出口是否可出口HashSizeKeyMaterialIVSize第二阶段:服务器认证和密钥交换第二阶段:服务器认证和密钥交换u服务器发
25、送自己的证书,消息包含一个服务器发送自己的证书,消息包含一个X.509证书,或者证书,或者一条证书链一条证书链除了匿名除了匿名DH之外的密钥交换方法都需要之外的密钥交换方法都需要u服务器发送服务器发送server_key_exchange消息消息可选的,有些情况下可以不需要。只有当服务器的证书没有包可选的,有些情况下可以不需要。只有当服务器的证书没有包含必需的数据的时候才发送此消息含必需的数据的时候才发送此消息消息包含签名,被签名的内容包括两个随机数以及服务器参数消息包含签名,被签名的内容包括两个随机数以及服务器参数u服务器发送服务器发送certificate_request消息消息非匿名非匿
26、名server可以向客户请求一个证书可以向客户请求一个证书包含证书类型和包含证书类型和CAsu服务器发送服务器发送server_hello_done,然后等待应答然后等待应答第三阶段:客户认证和密钥交换第三阶段:客户认证和密钥交换u客户收到客户收到server_done消息后,它根据需要检查服务器提消息后,它根据需要检查服务器提供供的证书,并判断的证书,并判断server_hello的参数是否可以接受,的参数是否可以接受,如果都没有问题的话,发送一个或多个消息给服务器如果都没有问题的话,发送一个或多个消息给服务器u如果服务器请求证书的话,则客户首先发送一个如果服务器请求证书的话,则客户首先发送
27、一个certificate消息,若客户没有证书,则发送一个消息,若客户没有证书,则发送一个no_certificate警告警告u然后客户发送然后客户发送client_key_exchange消息,消息的内容取消息,消息的内容取决于密钥交换的类型决于密钥交换的类型u最后,客户发送一个最后,客户发送一个certificate_verify消息,其中包含一消息,其中包含一个签名,对从第一条消息以来的所有握手消息的个签名,对从第一条消息以来的所有握手消息的HMAC值值(用用master_secret)进行签名进行签名第四阶段:结束第四阶段:结束u第四阶段建立起一个安全的连接第四阶段建立起一个安全的连接
28、u客户发送一个客户发送一个change_cipher_spec消息,并且把协商得消息,并且把协商得到的到的CipherSuite拷贝到当前连接的状态之中拷贝到当前连接的状态之中u然后,客户用新的算法、密钥参数发送一个然后,客户用新的算法、密钥参数发送一个finished消息,消息,这条消息可以检查密钥交换和认证过程是否已经成功。其这条消息可以检查密钥交换和认证过程是否已经成功。其中包括一个校验值,对所有以来的消息进行校验。中包括一个校验值,对所有以来的消息进行校验。u服务器同样发送服务器同样发送change_cipher_spec消息和消息和finished消消息。息。u握手过程完成,客户和服
29、务器可以交换应用层数据。握手过程完成,客户和服务器可以交换应用层数据。密钥交换算法密钥交换算法uTLS记录协议需要:记录协议需要:CipherSuite,mastersecret,andtheclientandserverrandomvaluesu在在hello消息中,交换随机数以及各种算法消息中,交换随机数以及各种算法u对于各种密钥交换算法,从对于各种密钥交换算法,从pre_master_secret计算得计算得到到master_secret,然后从内存中删除,公式:然后从内存中删除,公式:master_secret=PRF(pre_master_secret,“mastersecret”,
30、ClientHello.random+ServerHello.random)0.47*PRF(secret,label,seed)为伪随机函数为伪随机函数uMaster_secret总是总是48字节长,而字节长,而pre_master_secret长度不定,取决于密钥交换算法长度不定,取决于密钥交换算法u两类密钥交换算法:两类密钥交换算法:RSA,客户产生一个客户产生一个48字节的字节的pre_master_secret,然后通过然后通过服务器的公钥传递给服务器服务器的公钥传递给服务器Diffie-Hellman,双方协商得到的密钥被用作双方协商得到的密钥被用作pre_master_secre
31、t重用一个重用一个TLS会话会话u客户和服务器在交换客户和服务器在交换hello消息中,客户要消息中,客户要求重用已有的求重用已有的TLS会会话,服务器同意使用话,服务器同意使用cache中的会话中的会话*sessionidu跳过第二第三阶段,跳过第二第三阶段,直接把直接把TLS会话中的会话中的参数传递给参数传递给TLS记录记录层层伪随机函数伪随机函数PRF(secret,label,seed)uP_hash(secret,seed)=+HMAC_hash(secret,A(1)+seed)+HMAC_hash(secret,A(2)+seed)+HMAC_hash(secret,A(3)+s
32、eed)+.u这里这里A()定义如下:定义如下:A(0)=seedA(i)=HMAC_hash(secret,A(i-1)u伪随机函数伪随机函数PRF(secret,label,seed)=P_MD5(S1,label+seed)XORP_SHA-1(S2,label+seed);这里,这里,S1和和S2为为secret的各一半,如果的各一半,如果secret为奇数个字节,则为奇数个字节,则S1和和S2共享一个字节共享一个字节TLS/SSL安全性分析安全性分析u针对一些常见的攻击手法针对一些常见的攻击手法针对密钥算法的破解针对密钥算法的破解取决于算法的强度,协商过程取决于算法的强度,协商过程利
33、用明文模式的攻击利用明文模式的攻击上层协议中常常有一些固定的模式可以参考,比如上层协议中常常有一些固定的模式可以参考,比如http协议中协议中get字节串字节串构造字典构造字典(密文密文-密钥对密钥对),查字典,查字典TLS办法:用长密钥,使得不可能构造这样的字典办法:用长密钥,使得不可能构造这样的字典重放攻击重放攻击TLS中的中的nonce有有32字节字节(包含时间戳包含时间戳),可用于避免重放攻击,可用于避免重放攻击会话会话ID标识了一个完整的会话,要重放部分会话需要知道私钥标识了一个完整的会话,要重放部分会话需要知道私钥中间人攻击中间人攻击通过证书来认证对方通过证书来认证对方对于双方都是
34、匿名的模式,中间人攻击也是成立的对于双方都是匿名的模式,中间人攻击也是成立的历史上针对历史上针对SSL/TLS的攻击的攻击uPRNGuMillion-messageattacku其它其它SSL:PRNG攻击攻击uNetscapev1.1版本中存在,利用随机数发生器版本中存在,利用随机数发生器的弱点的弱点u先看随机数发生器先看随机数发生器global variable seed;RNG_CreateContext()(seconds,microseconds)=time of day;/*Time elapsed since 1970*/pid=process ID;ppid=parent pr
35、ocess ID;a=mklcpr(microseconds);b=mklcpr(pid+seconds+(ppid 1);(待续)SSL:PRNG攻击攻击(续续)u种子关联:种子关联:pid,ppid,seconds,microsecondsSeconds往往可以获得,往往可以获得,microseconds未知未知如果在目标机器上有账号,则如果在目标机器上有账号,则pid和和ppid可以获得可以获得否则,可以寻找否则,可以寻找pid和和ppid的。的。对于大多数对于大多数UNIX平台,平台,pid+(ppid12)只有只有27位位 global variable challenge,secr
36、et_key;RNG_GenerateRandomBytes()x=MD5(seed);seed=seed+1;return x;create_key()RNG_CreateContext();tmp=RNG_GenerateRandomBytes();tmp=RNG_GenerateRandomBytes();challenge=RNG_GenerateRandomBytes();secret_key=RNG_GenerateRandomBytes();PRNG的启示的启示uPRNG并不是并不是SSL协议本身的缺陷,而是协议本身的缺陷,而是实现上导致的缺陷实现上导致的缺陷随机数对于安全协议或
37、者安全系统的重要性随机数对于安全协议或者安全系统的重要性u源码开放的另一层含义源码开放的另一层含义关键的代码接受公众的审视关键的代码接受公众的审视Reference:Ian Goldberg and David Wagner,“Randomness and the Netscape Browser”,January 1996 Dr.Dobbs Journal SSL:Million-messageattacku在在RSA算法作加密运算的时候,首先对明文消息算法作加密运算的时候,首先对明文消息进行编码,其格式为进行编码,其格式为 0 2 random bytes 0 messageu假设密文假设
38、密文C,攻击者可以产生一系列整数攻击者可以产生一系列整数S并计算并计算C=C*(Se)modn,在解密的时候,每一个在解密的时候,每一个C对应于一个对应于一个M。大多数的大多数的M不会满足上面的格式,但是有不会满足上面的格式,但是有2-16的概率会产生的概率会产生这样的结果这样的结果(因为前两个字节是确定的因为前两个字节是确定的)。攻击者可以找到。攻击者可以找到一系列满足条件的一系列满足条件的S,然后推断出密文然后推断出密文C对应的明文对应的明文M。这这个过程大约需要个过程大约需要220个消息和应答。个消息和应答。u攻击实施依赖于攻击实施依赖于u需要一个可以提供解密准确性判断的服务器需要一个可
39、以提供解密准确性判断的服务器称为称为oracleuSSL实现是否能够精确地告知明文格式不正确?实现是否能够精确地告知明文格式不正确?u只能得到一个消息的明文,无法得到私钥只能得到一个消息的明文,无法得到私钥MMA的启示的启示u实现实现SSL的时候的时候对待错误消息如何响应?对待错误消息如何响应?Contiune?会不会招致会不会招致DOS?返回精确的错误返回精确的错误充分利用明文模式充分利用明文模式随机数填充随机数填充References1 RFC 32182 Bleichenbacher D.,Chosen Ciphertext Attacks against Protocols Based
40、 on RSA Encryption Standard PKCS#1 in Advances in Cryptology-CRYPTO98,LNCS vol.1462,pages:1-12,1998.针对针对SSL的其他攻击的其他攻击uExportciphersanddistributedcracking举例:举例:40位位RC4,http:/ Secret秘密Secret机密Confidential限制Restricted无密级Unclassified基于身份的控制基于身份的控制&基于规则的控制基于规则的控制u基于身份的控制基于身份的控制配置的粒度小配置的粒度小配置的工作量大,效率低配置的工
41、作量大,效率低u基于规则的控制基于规则的控制配置的粒度大配置的粒度大缺乏灵活性缺乏灵活性基于角色的策略基于角色的策略u与现代的商业环境相结合的产物与现代的商业环境相结合的产物u同时具有基于身份策略的特征,也具有基于规则同时具有基于身份策略的特征,也具有基于规则的策略的特征的策略的特征u可以看作是基于组的策略的变种。根据用户所属可以看作是基于组的策略的变种。根据用户所属的角色作出授权决定的角色作出授权决定u角色的定义:角色的定义:每个角色与一组用户和有关的动作相互关联,角色中每个角色与一组用户和有关的动作相互关联,角色中所属的用户可以有权执行这些操作所属的用户可以有权执行这些操作u角色与组的区别
42、角色与组的区别组:一组用户的集合组:一组用户的集合角色:一组用户的集合角色:一组用户的集合+一组操作权限的集合一组操作权限的集合RBAC的优势的优势u增加一层间接性带来了灵活性增加一层间接性带来了灵活性便于管理员赋予最小权限便于管理员赋予最小权限便于职责分担便于职责分担便于目标分级便于目标分级u低的管理代价低的管理代价举例:举例:COM+中基于角色的控制中基于角色的控制其他的访问控制其他的访问控制u与目标的内容相关的访问控制与目标的内容相关的访问控制动态访问控制动态访问控制u多用户访问控制多用户访问控制当多个用户同时提出请求时,如何做出授权当多个用户同时提出请求时,如何做出授权决定决定u基于上
43、下文的控制基于上下文的控制在做出对一个目标的授权决定时依赖于外界在做出对一个目标的授权决定时依赖于外界的因素,比如时间、用户的位置等的因素,比如时间、用户的位置等目标的粒度和策略的结合目标的粒度和策略的结合u在设计一个安全系统时,授权粒度代表了在设计一个安全系统时,授权粒度代表了控制的粒度和能力控制的粒度和能力比如,有的数据库只能控制对一张表的整体比如,有的数据库只能控制对一张表的整体访问或者禁止,而有的可以对一个字段进行访问或者禁止,而有的可以对一个字段进行控制控制u多种策略的结合多种策略的结合如何协调这些策略如何协调这些策略规定策略的优先级规定策略的优先级否定策略的优先级否定策略的优先级访
44、问控制机制:访问控制表访问控制机制:访问控制表(ACL,AccessControlList)u访问控制列表访问控制列表对应于访问控制矩阵中的对应于访问控制矩阵中的一列内容一列内容u基于身份的访问控制策略基于身份的访问控制策略和基于角色的访问控制策和基于角色的访问控制策略都可以用略都可以用ACL来实现来实现u优点:优点:控制粒度比较小控制粒度比较小适用于被区分的用户数比适用于被区分的用户数比较小的情况,并且这些用较小的情况,并且这些用户的授权情况相对比较稳户的授权情况相对比较稳定的情形定的情形其他访问控制机制其他访问控制机制u访问能力表访问能力表授权机构针对每个限制区域,都为用户维护它的访问授权
45、机构针对每个限制区域,都为用户维护它的访问控制能力控制能力与与ACL相比较:在每个受限制的区域,都维护一个相比较:在每个受限制的区域,都维护一个ACL表表u安全标签安全标签发起请求的时候,附属一个安全标签,在目标的属性发起请求的时候,附属一个安全标签,在目标的属性中,也有一个相应的安全标签。在做出授权决定时,中,也有一个相应的安全标签。在做出授权决定时,目标环境根据这两个标签决定是允许还是拒绝访问目标环境根据这两个标签决定是允许还是拒绝访问常常用于多级访问策略常常用于多级访问策略u基于口令的机制基于口令的机制一般化的访问控制机制一般化的访问控制机制u对于一个对于一个referencemonit
46、or访问控制模型,可以访问控制模型,可以设想在发起方设想在发起方(主体主体)有一些附属的安全属性信息,有一些附属的安全属性信息,在目标方在目标方(客体客体)也有一个附属的安全属性信息也有一个附属的安全属性信息u授权机构根据这些信息做出授权决定授权机构根据这些信息做出授权决定ReferenceMonitor主体客体控制规则库安全属性安全属性Windows平台上有关访问控制的几平台上有关访问控制的几个概念个概念uSID是一个可变长度的结构,用来唯一地描述一个用户或者组是一个可变长度的结构,用来唯一地描述一个用户或者组可以转化为字符串形式可以转化为字符串形式uSD包含了与一个安全对象有关的安全信息包
47、含了与一个安全对象有关的安全信息Securityidentifiers(SIDs)fortheownerandprimarygroupofanobjectDACL(discretionaryaccess-controllist)SACL(systemaccess-controllist)以及一组控制标记以及一组控制标记u数据结构数据结构ACL、ACEuAccesstoken此对象描述了一个进程或者线程的安全环境此对象描述了一个进程或者线程的安全环境包括包括SID,以及用户所属的组的以及用户所属的组的SIDs,logonSIDWindowsNT/2000的安全策略的安全策略安全基础部分小结安全基
48、础部分小结密码学基础密码学基础u对称加密算法对称加密算法DESFeistel结构结构分组密码算法的应用模式分组密码算法的应用模式AES:Rijndael随机数发生器随机数发生器u公钥密码学公钥密码学公钥算法:公钥算法:RSADiffie-Helman密钥交换协议密钥交换协议散列算法散列算法MAC算法和算法和HMAC算法算法数字签名数字签名安全基础部分小结安全基础部分小结认证协议认证协议u基本的认证协议基本的认证协议uLanMan的认证和口令加密方案的认证和口令加密方案uNTLM的认证过程的认证过程uHTTP认证认证BasicAuthenticationDigestAccessAuthentic
49、ation安全基础部分小结安全基础部分小结Kerberos认证协议认证协议uKerberos认证协议认证协议uKerberos中的中的FlagsuMIT和和Win2k中的中的Kerberos实现实现安全基础部分小结安全基础部分小结IPSecuIPSec包括包括协议部分,分为协议部分,分为AH:AuthenticationHeaderESP:EncapsulatingSecurityPayload密钥管理密钥管理(KeyManagement)ISAKMP定义了密钥管理框架定义了密钥管理框架IKE是真正用于是真正用于IPSec的密钥交换协议的密钥交换协议uIPSec的实现的实现(在在Windows
50、2000下下)安全基础部分小结安全基础部分小结PKIuPKI的动机的动机uPKI中的证书中的证书X.509证书的格式证书的格式u信任模型信任模型CA层次结构层次结构交叉认证交叉认证以用户为中心的信任模型以用户为中心的信任模型uPKCS标准标准u证书申请和发放的过程证书申请和发放的过程安全基础部分小结安全基础部分小结SSL/TLSu协议栈协议栈u握手过程握手过程u安全分析安全分析攻击攻击安全基础部分小结安全基础部分小结访问控制访问控制u访问控制策略访问控制策略u基于身份的策略基于身份的策略u基于规则的策略基于规则的策略u基于角色的策略基于角色的策略u几种实现访问控制的机制几种实现访问控制的机制其