《第05讲-认证协议ppt课件》.ppt

上传人:飞****2 文档编号:29690309 上传时间:2022-08-01 格式:PPT 页数:60 大小:818KB
返回 下载 相关 举报
《第05讲-认证协议ppt课件》.ppt_第1页
第1页 / 共60页
《第05讲-认证协议ppt课件》.ppt_第2页
第2页 / 共60页
点击查看更多>>
资源描述

《《第05讲-认证协议ppt课件》.ppt》由会员分享,可在线阅读,更多相关《《第05讲-认证协议ppt课件》.ppt(60页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、潘爱民,北京大学计算机研究所潘爱民,北京大学计算机研究所http:/ authenticity认证消息认证身份认证:验证真实身份和所声称身份相符的过程uu基于对称密码算法的认证方案基于对称密码算法的认证方案是否需要密钥分发中心是否需要密钥分发中心(KDC)?对于协议的攻击手法对于协议的攻击手法认证的对象认证的对象消息发送方消息发送方消息本身消息本身u基于公钥密码算法的认证方案基于公钥密码算法的认证方案公钥和身份的绑定公钥和身份的绑定u消息认证消息认证MAC码或者码或者HMAC码码前提:存在共享密钥前提:存在共享密钥密钥管理中心密钥管理中心或者用一个密钥交换协议或者用一个密钥交换协议u身份认证身

2、份认证依据依据所知:口令、密钥,等所知:口令、密钥,等所有:身份证、智能卡,等所有:身份证、智能卡,等物理标识:指纹、笔迹、物理标识:指纹、笔迹、DNA,等等基于口令基于口令证明是否知道口令证明是否知道口令口令的强度口令的强度双向和单向认证双向和单向认证目的:分发密钥、签名有效性,目的:分发密钥、签名有效性,u两方通讯两方通讯一方发起通讯,另一方应答一方发起通讯,另一方应答双向和单向认证双向和单向认证u有第三方介入的认证有第三方介入的认证第三方为可信任方,第三方为可信任方,KDCu在线和离线在线和离线u其他情形其他情形多方认证多方认证跨域认证跨域认证委托认证模型、信任模型委托认证模型、信任模型

3、u本地多用户认证本地多用户认证Login:如何管理口令如何管理口令u远程用户认证远程用户认证一次性一次性访问资源或者服务之前进行认证访问资源或者服务之前进行认证多次访问资源或者服务多次访问资源或者服务身份,获得身份,获得credential利用利用credential访问资源或者服务访问资源或者服务uTelnet远程登录远程登录逐个字母发送,明文方式逐个字母发送,明文方式uPOP3邮件登录邮件登录uFtp服务服务uu假设假设A和和B要进行通讯,要进行通讯,A和和B有一个共享的密有一个共享的密钥钥Kab,如何利用这个密钥进行认证,并且商定如何利用这个密钥进行认证,并且商定一个会话密钥一个会话密钥

4、Ks1 AB: (IDA|N1)2 BA: EKabKs,IDB,f(N1),N2)3 AB: EKsf(N2) 这里的这里的f函数为某个确定的运算,比如函数为某个确定的运算,比如f(x)=x+1AKabB我是A告诉你Ks,以后就用它,别让别人知道好的,我用它试试,可我怎么知道你是B呢如果你知道Kab,那么你就知道Ks,我就知道你是Au假设假设A和和B要进行通讯,要进行通讯,A和和B与与KDC各有一个共享密钥各有一个共享密钥Ka和和Kb, 如何利用这两个密钥进行认证,并且商定一个如何利用这两个密钥进行认证,并且商定一个会话密钥会话密钥KsAKDC: (IDA|IDB|N1)KDCA: EKaK

5、s|IDB|N1|EKb(Ks,IDA)AB: EKb(Ks,IDA)|EKs(M)AKbB我是A,我想和B通讯KDCKa我把必要的信息告诉你我把消息给你,如果你是B,你就可以解开会话密钥Ks,由A送给B的认证信息u中间人攻击中间人攻击(MITM, man in the middle)ABEu如果通讯双方没有任何先决条件,那么这种攻如果通讯双方没有任何先决条件,那么这种攻击总是存在的击总是存在的uA和和B的协商过程很容易受到这一类攻击的协商过程很容易受到这一类攻击u对策:对策:u增加增加A和和B之间的先决知识之间的先决知识u重放攻击重放攻击(replay attacks)ABEu偷听者可以记录

6、下当前的通讯流量,以后在适当的时候偷听者可以记录下当前的通讯流量,以后在适当的时候重发给通讯的某一方,达到欺骗的目的重发给通讯的某一方,达到欺骗的目的u对策:对策:unonceu保证通讯的唯一性保证通讯的唯一性u增加时间戳增加时间戳u字典攻击字典攻击只要能够获得口令的密文形式,就可以实施只要能够获得口令的密文形式,就可以实施字典攻击字典攻击在线和离线在线和离线字典攻击的有效性字典攻击的有效性判断一个口令是有效的判断一个口令是有效的u对策对策用户和管理员:选择好的口令用户和管理员:选择好的口令协议设计:对口令的使用过程中,不要泄露协议设计:对口令的使用过程中,不要泄露口令的信息口令的信息在密文中

7、增加口令以外的额外信息在密文中增加口令以外的额外信息u已知明文攻击已知明文攻击在许多认证协议中,一方会选择一个随机数,并且明在许多认证协议中,一方会选择一个随机数,并且明文传输这个随机数,另一方加密这个随机数,并送回文传输这个随机数,另一方加密这个随机数,并送回来来Challenge/Response,所以偷听者可以获得已知明文所以偷听者可以获得已知明文/密文对密文对对策:对策:避免传输明文避免传输明文/密文对密文对增加已知明文攻击的难度增加已知明文攻击的难度u选择明文攻击选择明文攻击在认证协议中,如果随机数的选择没有任何规则,那在认证协议中,如果随机数的选择没有任何规则,那么中间人或者假冒方

8、就有可能选择随机数,从而实施么中间人或者假冒方就有可能选择随机数,从而实施选择明文攻击选择明文攻击对策对策随机数的选择限制随机数的选择限制u时间戳时间戳A收到一个消息,根据消息中的时间戳信息,收到一个消息,根据消息中的时间戳信息,判断消息的有效性判断消息的有效性如果消息的时间戳与如果消息的时间戳与A所知道的当前时间足够接近所知道的当前时间足够接近这种方法要求不同参与者之间的时钟需要同步这种方法要求不同参与者之间的时钟需要同步在网络环境中,特别是在分布式网络环境中,时钟在网络环境中,特别是在分布式网络环境中,时钟同步并不容易做到同步并不容易做到一旦时钟同步失败一旦时钟同步失败要么协议不能正常服务

9、,影响可用性要么协议不能正常服务,影响可用性(availability),造成拒绝服务造成拒绝服务(DOS)要么放大时钟窗口,造成攻击的机会要么放大时钟窗口,造成攻击的机会时间窗大小的选择应根据消息的时效性来确定时间窗大小的选择应根据消息的时效性来确定u询问询问/应答方式应答方式(Challenge/Response)A期望从期望从B获得一个条件获得一个条件首先发给首先发给B一个随机值一个随机值(challenge)B收到这个值之后,对它作某种变换,得到收到这个值之后,对它作某种变换,得到response,并送回去并送回去A收到这个收到这个response,可以验证可以验证B符合这个条件符合这

10、个条件在有的协议中,这个在有的协议中,这个challenge也称为也称为nonce可能明文传输,也可能密文传输可能明文传输,也可能密文传输这个条件可以是知道某个口令,也可能是其这个条件可以是知道某个口令,也可能是其他的事情他的事情变换例子:用密钥加密,说明变换例子:用密钥加密,说明B知道这个密钥知道这个密钥;简单运算,比如增一,说明简单运算,比如增一,说明B知道这个随机值知道这个随机值常用于交互式的认证协议中常用于交互式的认证协议中u1 A BIDA|Nau2 B KDC IDB|Nb | EKbIDA | Na | Tbu3 KDC A EKaIDB|Na |Ks| Tb | EKbIDA

11、| Ks | Tb | Nbu4 A B EKbIDA | Ks | Tb | EKs Nb ABKDC4231uEKbIDA | Ks | Tb相当于一个相当于一个ticketu如果如果A要再次访问要再次访问B,可以不再通过可以不再通过KDCA B:EKbIDA | Ks | Tb | NaB检查检查ticket是否在有效时间,若是,则是否在有效时间,若是,则B A:Nb |EKsNa A B:EKsNbABKDC213uLanManager认证认证(称为称为LM协议协议)早期版本早期版本uNTLM v1 认证协议认证协议NT 4.0 SP3之前的版本之前的版本uNTLM v2 认证协议认证

12、协议NT 4.0 SP4开始支持开始支持uKerberos v5认证协议认证协议Windows 2000引进引进安全性加强u可以用于共享级认证可以用于共享级认证uWindows 9x/NT都支持都支持u由由IBM开发开发u从口令从口令hash值值口令变成大写口令变成大写把口令变成把口令变成14个字符,或者截断、或者补空字符个字符,或者截断、或者补空字符这这14个字符分成两个个字符分成两个7字符字符用用7个字符和个字符和DES算法加密一个算法加密一个“magic ”64位位把两个把两个64位结果拼起来,得到位结果拼起来,得到128位值位值服务器保存该服务器保存该128位值,作为位值,作为“has

13、hed password”u缺陷缺陷如果口令长度在如果口令长度在8-13位之间,则后面的位之间,则后面的7字符先破解字符先破解,对前,对前7个字符的破解可以提供某些信息个字符的破解可以提供某些信息u建议:使用建议:使用7位或者位或者14位口令位口令u从口令变成从口令变成hash值值把口令变成把口令变成Unicode编码编码使用使用MD4散列算法散列算法得到得到128位散列值位散列值u一种更好的方法是在口令上添加一些附加的信息,一种更好的方法是在口令上添加一些附加的信息,这样可以增加破解的难度这样可以增加破解的难度Hash之前增加附加信息之前增加附加信息UNIX的的crypt使用了附加信息使用了

14、附加信息u黑客工具黑客工具L0phtcrack下载:下载:使用注意事项使用注意事项u在一台高端在一台高端PC机机(4个个CPU)上强行破解上强行破解5.5小时内破解字母小时内破解字母-数字口令数字口令45小时破解字母小时破解字母-数字数字-部分符号口令部分符号口令480小时破解字母小时破解字母-数字数字-全部符号口令全部符号口令ucrypt()是一个口令加密函数,它基于是一个口令加密函数,它基于DESDES算法。我们可算法。我们可以认为这是一个单向加密操作以认为这是一个单向加密操作u函数原型:函数原型:char *crypt(const char *key, const char *salt)

15、;*salt是两个字符,每个字符可从是两个字符,每个字符可从a-zA-Z0-9./中选出来中选出来u算法算法UNIX标准算法使用标准算法使用DES加密算法,用加密算法,用key对一个常量进行加密对一个常量进行加密,获得一个,获得一个13字节的密文编码输出,其中包括字节的密文编码输出,其中包括salt的两个字符的两个字符from Red Hat Linux 6.2uSalt的作用的作用同样的口令产生不同的密文同样的口令产生不同的密文增加了穷举空间增加了穷举空间?u建议使用更为安全的建议使用更为安全的MD5算法算法1.用户在客户机上,提供域名、用户名和口令。系统计算用户在客户机上,提供域名、用户名

16、和口令。系统计算口令的口令的hash值,然后把口令丢掉值,然后把口令丢掉2.客户把用户名以明文方式发送给服务器客户把用户名以明文方式发送给服务器3.服务器产生一个服务器产生一个128位随机数位随机数(challenge或者或者nonce),发送给客户发送给客户4.客户用口令的客户用口令的hash值作为密钥,加密随机数,并把结果值作为密钥,加密随机数,并把结果送回给服务器。这是应答送回给服务器。这是应答(response)5.服务器把以下信息送给域控制器服务器把以下信息送给域控制器(DC):用户名、用户名、challenge和和response6.域控制器利用用户名从域控制器利用用户名从SAM(

17、Security Account Manager)数据库得到用户口令的数据库得到用户口令的hash值,并用此值加值,并用此值加密密challenge7.域控制器比较它自己算出来的域控制器比较它自己算出来的challenge密文和客户算密文和客户算出来的出来的challenge密文。如果相等的话,认证成功密文。如果相等的话,认证成功1.C-S ReqChal,Cc S-C Cs 2.C、S计算会话密钥计算会话密钥 Ks = E(PW9.15,E(PW0.6,Add(Cc,Cs) 3.3.C: C: RcRc = = CredCred(Ks,Cc) (Ks,Cc) C-S Authenticate

18、, C-S Authenticate, RcRc4.4.S: assert(S: assert(RcRc = = CredCred(Ks,Cc) (Ks,Cc) RsRs = = CredCred(Ks,Cs), (Ks,Cs), S-C S-C Rs Rs C: assert(C: assert(RsRs = = CredCred(Ks,Cs)(Ks,Cs)From From NT Domain AuthenticationuKerberos是一个经过长期考验的认证协是一个经过长期考验的认证协议议uKerberos替代替代NTLM的原因的原因功能功能委托机制委托机制可传递的信任关系可传递的信

19、任关系效率方面效率方面服务器不需要每次都与域控制器联系服务器不需要每次都与域控制器联系标准化标准化uWeb应用的认证机制应用的认证机制HTTP本身支持的认证协议本身支持的认证协议SSL协议协议uHTTP/1.1规范规范Basic AuthenticationDigest Access Authenticationu基本思想:基本思想:challenge-response机制,服务器机制,服务器询问客户,客户提供认证信息询问客户,客户提供认证信息指明指明authentication schemeu基本过程基本过程当客户请求一个被保护的资源的时候,服务器返回当客户请求一个被保护的资源的时候,服务器

20、返回401(Unauthorized)应答消息应答消息应答头中包含一个应答头中包含一个WWW-Authenticate域域然后开始认证过程然后开始认证过程最后,如果服务器不能接受客户的最后,如果服务器不能接受客户的credential,则应则应该返回一个该返回一个401消息,继续下一轮的认证消息,继续下一轮的认证u说明说明Proxy在中间必须是透明的在中间必须是透明的u一些消息类型一些消息类型认证方案:认证方案: auth-scheme = tokenauth-scheme = token auth-param = token = ( token | quoted-string ) 询问:询问

21、: challenge = auth-scheme 1*SP 1#auth-param提供范围信息提供范围信息( (域域) ) realm = realm = realm-valuerealm = realm = realm-value realm-value = quoted-string 客户提供认证信息客户提供认证信息 credentials = auth-scheme #auth-param u认证的思想:对于每一个域认证的思想:对于每一个域(realm),客户客户都需要提供一个用户都需要提供一个用户-ID和口令和口令服务器检查用户服务器检查用户-ID和口令和口令u消息消息challe

22、nge = “Basic” realmcredential = “Basic” basic-credentialsu过程过程服务器发出服务器发出challenge,例如例如WWW-Authenticate: Basic realm=“xxx(URI) 客户收到之后,发送应答客户收到之后,发送应答basic-credentials = base64-user-passbase64-user-pass = user-pass = userid : passworduserid = *password = *TEXT例如,如果用户例如,如果用户id为为aladdin,口令为口令为“open sesa

23、me”,则消息如下则消息如下Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ= u特点:特点:转换到字符集,而不是字符集的编码转换到字符集,而不是字符集的编码目标字符集包括目标字符集包括65个可打印字符,其中一个个可打印字符,其中一个用于用于padding,其他的可用其他的可用6位表达位表达不包括控制字符,所以不怕传输过程中被滤不包括控制字符,所以不怕传输过程中被滤掉掉没有使用没有使用“-”字符,避免与字符,避免与RFC 822冲突冲突u转换:转换:3个个8位位=24位位4个个6位,每个位,每个6位转换到位转换到一个字符,最终得到一个字符,最终得到

24、4个字符,如果用个字符,如果用ASC码码来表达,则为来表达,则为4个字节个字节u编码时,按编码时,按2424位进行处理,到最后可能出位进行处理,到最后可能出现三种情况:现三种情况:最后一组正好是最后一组正好是2424位,则无需特殊处理位,则无需特殊处理最后一组是最后一组是1616位,则前两个位,则前两个6 6位组按正常情形位组按正常情形处理,剩下的处理,剩下的4 4位补上两位位补上两位0 0,当作一组编码,当作一组编码,然后再补上一个,然后再补上一个= =最后一组是最后一组是8 8位,则第一个位,则第一个6 6位组正常处理,位组正常处理,剩下剩下2 2位补上位补上4 4位位0 0,当作一组编码

25、,然后,再,当作一组编码,然后,再补上两个补上两个= =作为输出。作为输出。u仍然基于一个简单的仍然基于一个简单的challenge-response结构结构u但是它用一个但是它用一个nonce值作为值作为challengeu应答是一个应答是一个hash值值(缺省缺省MD5算法算法),包括,包括用户名、口令、用户名、口令、nonce值、值、HTTP方法、以及被请求的方法、以及被请求的URIu好处好处口令不在网上传输口令不在网上传输uHash值的编码值的编码HEX编码编码每四位变成对应的每四位变成对应的16进制字符进制字符u口令的初始分发没有规定口令的初始分发没有规定 challenge = D

26、igest digest-challengechallenge = Digest digest-challenge digest-challenge = 1#( realm | domain | nonce | digest-challenge = 1#( realm | domain | nonce | opaque | stale | algorithm | opaque | stale | algorithm | qopqop-options | auth-options | auth-paramparam ) ) domain = domain = URI ( 1 domain = d

27、omain = URI ( 1* *SP URI ) SP URI ) URI = URI = absoluteURIabsoluteURI | abs_path | abs_path nonce = nonce = nonce-value nonce = nonce = nonce-value nonce-value = quoted-string nonce-value = quoted-string opaque = opaque = quoted-string opaque = opaque = quoted-string stale = stale = ( true | false

28、) stale = stale = ( true | false ) algorithm = algorithm = ( MD5 | MD5- algorithm = algorithm = ( MD5 | MD5-sesssess | | token ) token ) qopqop-options = -options = qopqop = 1# = 1#qopqop-value -value qopqop-value = auth | auth-value = auth | auth-intint | token | token credentials = Digest digest-r

29、esponsecredentials = Digest digest-response digest-response = 1#( username | realm | nonce | digest- digest-response = 1#( username | realm | nonce | digest-uriuri | response | algorithm | | response | algorithm | cnoncecnonce | | opaque | message- opaque | message-qopqop | | nonce-count | auth- non

30、ce-count | auth-paramparam ) ) username = username = username-value username = username = username-value username-value = quoted-string username-value = quoted-string digest- digest-uri uri = = uriuri = digest- = digest-uriuri-value-value digest- digest-uriuri-value = request-value = request-uri uri

31、 ; As specified by HTTP/1.1; As specified by HTTP/1.1 message- message-qop qop = = qopqop = = qopqop-value-value cnonce cnonce = = cnoncecnonce = = cnoncecnonce-value-value cnonce cnonce-value = nonce-value-value = nonce-value nonce-count = nonce-count = ncnc = = nc nc-value-value nc nc-value = 8LHE

32、X-value = 8LHEX response = response = request-digest response = response = request-digest request-digest = 32LHEX request-digest = 32LHEX LHEX = 0 | 1 | 2 | 3 | LHEX = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 4 | 5 | 6 | 7 | 8 | 9 | a | b | 8 | 9 | a | b | c | d | e | f c | d | e | f AuthenticationInfoAuthen

33、ticationInfo = Authentication-Info : auth-info = Authentication-Info : auth-info auth-info = 1#( auth-info = 1#(nextnoncenextnonce | message- | message-qopqop | response-auth | | response-auth | cnoncecnonce | nonce-count ) | nonce-count ) nextnonce nextnonce = = nextnoncenextnonce = nonce-value = n

34、once-value response-auth = response-auth = rspauthrspauth = response-digest = response-digest response-digest = response-digest = * *LHEX LHEX u可用于双向认证可用于双向认证u客户请求一个文档,没有包含客户请求一个文档,没有包含Authorization头,则服务头,则服务器响应器响应 HTTP/1.1 401 UnauthorizedHTTP/1.1 401 Unauthorized WWW-Authenticate: Digest WWW-Authe

35、nticate: Digest realm= realm=, qopqop=auth,auth-=auth,auth-intint, nonce=dcd98b7102dd2f0e8b11d0f600bfb0c093, nonce=dcd98b7102dd2f0e8b11d0f600bfb0c093, opaque=5ccc069c403ebaf9f0171e9517f40e41 opaque=5ccc069c403ebaf9f0171e9517f40e41u然后客户提示用户输入用户名和口令,并生成一个新的请求,其中然后客户提示用户输入用户名和口令,并生成一个新的请求,其中包含包含Authori

36、zation头头 Authorization: Digest username=Authorization: Digest username=MufasaMufasa, realm= realm=, nonce=dcd98b7102dd2f0e8b11d0f600bfb0c093, nonce=dcd98b7102dd2f0e8b11d0f600bfb0c093, uriuri=/dir/index.html,=/dir/index.html, qopqop=auth,=auth, ncnc=00000001,=00000001, cnoncecnonce=0a4f113b,=0a4f113b

37、, response=6629fae49393a05397450978507c4ef1, response=6629fae49393a05397450978507c4ef1, opaque=5ccc069c403ebaf9f0171e9517f40e41 uBasic Authentication,最严重的问题最严重的问题口令不加密传输口令不加密传输如果允许用户选择口令,则会波及到其他的系统如果允许用户选择口令,则会波及到其他的系统碰到假冒的服务器碰到假冒的服务器uDigest Authentication安全性不如基于公钥的机制安全性不如基于公钥的机制总比没有好总比没有好安全性强于安全性强于

38、Basic authentication不提供保密性不提供保密性一定程度的完整性一定程度的完整性u重放攻击重放攻击重放攻击是否有意义重放攻击是否有意义因为因为digest中包含了中包含了URI的信息的信息只对当前文档只对当前文档有效有效利用利用ip地址、时间信息、地址、时间信息、nonce、etag信息等可信息等可以减弱重放攻击的危害性以减弱重放攻击的危害性u中间人攻击中间人攻击(MITM)协商方案的时候,中间人降低客户端的认证协商方案的时候,中间人降低客户端的认证中间人提供一个免费的中间人提供一个免费的proxy,从而获得口令从而获得口令中间人欺骗客户去访问它想要的资源中间人欺骗客户去访问它

39、想要的资源u选择明文攻击选择明文攻击中间人或者恶意服务器可以选择中间人或者恶意服务器可以选择nonce,以以便客户计算便客户计算responseMD5增加了攻击的难度增加了攻击的难度客户可以使用客户可以使用cnonceu服务器一端的安全性服务器一端的安全性口令文件必须妥善保管口令文件必须妥善保管与与response计算策略结合起来计算策略结合起来思想类似于思想类似于UNIX的口令文件的口令文件又一个连接请求资源拒绝,要求认证challengeresponse授权访问uMicrosoft PassportuRecursive Authentication ProtocoluNested sign

40、aturesuData Integrity in an Active Content SystemuXML中的认证中的认证u中心化的认证服务中心化的认证服务对于所有的成员站点,只需一个登录和配置管理服务对于所有的成员站点,只需一个登录和配置管理服务A protected resource1Client3Passport(Logon Service)41 HTTP GET request without Passport ticket2 return 302 and redirect to the Passport logon service3 HTTP GET request to the l

41、ogon service4 present client a logon form5 fill out the form, POST back to server (using SSL)6 authenticate client, and redirect back to the original URI with ticket7 client request the resource with ticket8 the originating server authenticates client52678uWorkflow systemsSignature on some fields of paperuCA hierarchical treesgx+ry mod q MC0CFFrVLtRlk=.u书书William Stallings, Cryptography and network security: principles and practice, Second Edition“Hackers Beware”,中文版黑客(攻击透析与防范) u文章文章NT Domain Authentication, http:/ 2616,2617, http:/www.ietf.org/rfc.html

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com