HTTPS连接过程以及中间人攻击劫持

HTTPS连接过程以及中间人攻击劫持,第1张

HTTPS连接过程以及中间人攻击劫持

一、HTTPS毗邻过程与中央人民入侵原则

Https和平协商是httpssl和平协商,下图是其相邻流程:

1.https乞讨

手机后台服务端接收https乞讨;

2.死公钥与公钥

在服务结束乞讨后,它作为公钥死去。公钥相当于锁,公钥相当于钥匙。只有公钥才能打开被公钥锁定的内容;

3.回到公钥

服务器将公钥(证书)发送回手机客户端。公钥衬里包含许多疑点,例如证书的实现组织和过期时间。

4.移动客户端资质证书公钥

手机到达公钥后,客户端首先会知道资质证书是否有效,比如实施机构大约在时间后面等等。如果该发明有测试分数,则抛出十分,提示证书保存测试分数。如果有一个考试结果,那么它会死到一个任意值,这个值会作为客户的整个瘦密钥,然后用整个公钥进行瘦;

5.收集移动客户端的稀有密钥。

手机使用服务的整体公钥还原稀释密钥,然后接收到服务端。

6.服务端支持和稀疏键,对称细化内容

服务器支持稀释密钥,然后用公钥解密,得到整个客户的稀释密钥。然后,服务器用整个客户的稀释密钥的结尾对称地稀释要传输的内容,所以除非知道稀释密钥,否则不可能知道传输的内容。

7.稀释传输

服务器会将稀释后的内容发送到手机客户端。

8.获得稀释物并稀释。

手机获得稀释内容后,使用苏贞成的稀释键终止稀释,获得内容。

中心人物生气了。

没有一个https是完全和平的。如下图,中心人强行入侵,中心人可以获取手机客户端服务器中间的所有通讯内容。

HTTPS毗邻进程和中心人物的攻击

中心拦截手机客户端向服务器的乞讨,然后冒充手机客户端带服务器终止通信;服务器将全部内容返回给客户,接收到手机客户端,伪装成服务器,带着手机客户端终止通信。

整个过程结束后,你就可以得到手机客户端和服务器中间通信的所有内容。

要使用中心人的攻击手腕,必须怀疑手机客户端是中心人的凭证。如果手机客户端不被怀疑,那种攻击手腕是发挥不了作用的。

2.当心中央人民的侵略。

中心人强制的结果是服务端的证书和网站的域名都是发件人核对的,核对不完整。为了更方便,我们间接接受开源框架的默认检查方法来终止https乞讨。

如凌空

HTTPS毗邻进程和中心人物的攻击

HTTPS毗邻进程和中心人物的攻击

OKhttp3.0

HTTPS毗邻进程和中心人物的攻击

当心方法:

有两种方法可以提防。

1.对于需求比较冷静的app,可以通过手机客户端的预埋件证书的方式,听取意见,锁定死亡证书。如果手机客户端证书与整个证书的细节不一致,可以批准通信,比如一些银检app。但是那种方法要处理一个考试结果和过期的考试结果,证书会有一定的有效期。当嵌入件证书过期时,如果全程强制升级,需要客户免费下载证书解决。

以截击为例:正确的检查方法如下

创建SSLSocketFactory贯穿预埋件证书的全过程;

私有静态SSLSocketFactorybuildSSLSocketFactory(Context上下文,

intcertRawResId){

KeyStorekeyStore=null

尝试{

keyStore=buildKeyStore(context,certRawResId);

}catch(KeyStoreExceptione){

e.printstacktrace();

}catch(证书例外e){

e.printstacktrace();

}catch(nosuchalgorithmexceptione){

e.printstacktrace();

}catch(IOExceptione){

e.printstacktrace();

}

stringtmfAlgorithm=trustmanagerfactory.getdefaultalgorithm();

TrustManagerFactorytmf=null

尝试{

tmf=trustmanagerfactory.getinstance(tmfAlgorithm);

tmf.init(密钥库);

}catch(nosuchalgorithmexceptione){

e.printstacktrace();

}catch(KeyStoreExceptione){

e.printstacktrace();

}

SSLContextsslContext=null

尝试{

SSLcontext=SSLcontext.getinstance("TLS");

}catch(nosuchalgorithmexceptione){

e.printstacktrace();

}

尝试{

sslContext.init(null,tmf.getTrustManagers(),null);

}catch(KeyManagementExceptione){

e.printstacktrace();

}

返回SSLcontext.getsocketfactory();

通过了ssl检查和网站域名检查的连接。

HTTPS毗邻进程和中心人物的攻击

HTTPS毗邻进程和中心人物的攻击

2对冷静度要求一般的app,可以接受全程检查网站域名、证书有效性、证书核心区疑点、证书链。

以凌空为例,调用HTTPSTrustManager中的checkServerTrusted方法,打开网站域名进行强校对。

3.Webview的HTTPS很平静

现在很多应用使用webview卸载H5页面。如果服务端接受可由CA执行的证书,则在已经是WebView的情况下,轻下载WebViewClient的onReceivedSslError()。设置WebView客户端。如果有证书问题,间接盗用handler.proceed()会导致不小心的问题。如果您盗用handler.cancel(),那么您可以卸载带有测试结果的页面。如果证书显示检测结果,可以提醒客户风险,让客户选择减载。如果需要冷静水平比较,您可以间接卸载带有测试结果的页面,提示客户收集风险:

HTTPS毗邻进程和中心人物的攻击

Handler.proceed()不提倡间接性。如果webview卸载https,需要强校对服务证书,可以使用HttpsURLConnection强美术联考证书对服务证书进行校对。如果校对未能在截止日期前完成,请下载网页。虽然那样会减缓网页的减载速度,需要进一步的劣化,但是详细的劣化方法不在本次咨询的范围内,那里也没有实际的解释。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/768638.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-02
下一篇 2022-05-02

发表评论

登录后才能评论

评论列表(0条)

保存