V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
httpbin - 协议调试工具
httpstatuses - 协议状态码查询
httpie - cURL-like tool for humans
Fiddler
xzg1993
V2EX  ›  HTTP

想问个关于 HTTPS 的技术上的问题

  •  
  •   xzg1993 · 2016-11-10 23:32:40 +08:00 · 2963 次点击
    这是一个创建于 2942 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现在 IOS 强制使用 HTTPS 连接了,正好公司业务上也需要 HTTPS ,这几天研究了下,讨论出一个情况觉得 HTTPS 应该是不安全的,不知道设想是否对,请这方面的大神解救下。 总所周知, https 在握手的时候是明文的, SSL/TLS 协议的基本流程如下: ( 1 ) 客户端向服务器端索要并验证公钥。 ( 2 ) 双方协商生成"对话密钥"。 ( 3 ) 双方采用"对话密钥"进行加密通信。

    如果在第一步的时候,中间人就对数据进行拦截(可以是免费公共 wifi 网络情况下),之后中间人模拟服务器给客户端返回消息和公钥(这里的公钥假设已经被木马程序安装到 Android 手机中了)之后和客户端进行通讯,获取到用户提交的敏感信息。之后中间人拿着用户的信息在模拟客户端和服务器端进行握手通讯。这样是不是做到拦截了呢?

    我想的解决办法就是每次 APP 验证的时候从手机安装包中提取公钥进行验证。

    还有个问题不太懂,请教下各位:请求被拦截是否可以被重定向到一个木马网站,之后返回个一个早期被植入 Android 手机中的木马网站的可信任证书,之后伪装成客户端所要访问的服务器和客户端进行通讯呢?谢了。

    第 1 条附言  ·  2016-11-11 14:46:13 +08:00
    Android 的 webview 可以对 https 连接的 服务器证书进行验证吗?

    在 HttpsURLConnection 中可以在 checkServerTrusted 中对证书进行比对,防止与中间人握手。 webview 有解决方案吗。。。。。各位大神们。
    27 条回复    2016-11-11 14:52:56 +08:00
    nopy
        1
    nopy  
       2016-11-10 23:35:30 +08:00 via Android
    手机既然已经中了木马病毒了当然就不安全了。
    JohnLou
        2
    JohnLou  
       2016-11-10 23:36:45 +08:00 via iPhone
    不安全那么多人用,脑子锈逗了?
    iyaozhen
        3
    iyaozhen  
       2016-11-10 23:39:29 +08:00 via Android
    你这个就是中间人攻击。
    这里的公钥假设已经被木马程序安装到 Android 手机中了。这样的话基本安全已经没有了,其它都是空谈。

    你既然是 iOS 开发者,肯定用过 charls 抓包工具,要抓 https 的包需要手机端装证书。就是这个原理
    xfspace
        4
    xfspace  
       2016-11-10 23:45:09 +08:00 via Android   ❤️ 1
    这就有请 Certificate Transport 上场了。从根源治疗 MITM.
    xfspace
        5
    xfspace  
       2016-11-10 23:47:28 +08:00 via Android
    @xfspace 不好意思打错了。应是 Certificate Transparency
    zomco
        6
    zomco  
       2016-11-10 23:49:09 +08:00
    很多抓包工具就是这样玩的
    lhbc
        7
    lhbc  
       2016-11-10 23:51:30 +08:00
    贼已经爬窗 /翻墙进你家了,你还担心家里的门安不安全……
    ipconfiger
        8
    ipconfiger  
       2016-11-11 00:06:56 +08:00
    中木马一切玩完, 所以别用安卓
    bdbai
        9
    bdbai  
       2016-11-11 00:15:55 +08:00 via Android
    @ipconfiger 碰上猪队友, iOS 也没辙。按照“提示”点开证书,安装描述文件,指纹确认,然后...
    ipconfiger
        10
    ipconfiger  
       2016-11-11 00:49:36 +08:00
    @bdbai 试试, 手把手指导还差不多. 都这样了就别提安全二字了
    kkzxak47
        11
    kkzxak47  
       2016-11-11 00:54:58 +08:00 via Android
    不理解,我的疑问: 客户端手机系统都沦陷了,失去了公钥鉴别能力,中间人躺着收钱就行了,还要攻击?那个木马能给系统装上伪造公钥,不能伪造你 APP 的验证?
    mornlight
        12
    mornlight  
       2016-11-11 03:04:41 +08:00 via iPhone
    在符合使用规范和大环境安全的前提下, HTTPS 可以保证通信过程不被窃听或篡改。
    能随便在客户端安装 CA 已经破坏这个前提了。
    abellee
        13
    abellee  
       2016-11-11 04:09:45 +08:00 via iPhone
    @bdbai 这么多步都能中的人 还拿来跟猪猪比 你有考虑过二师兄的感受吗
    xenme
        14
    xenme  
       2016-11-11 05:37:40 +08:00 via iPhone
    certificate pinning ,代码验证证书就好了
    des
        15
    des  
       2016-11-11 08:05:55 +08:00 via Android
    @ipconfiger 你这逻辑有点迷啊。
    类似的可以有,中了病毒,一切玩完,所以别用 Windows
    被诈骗,一切玩完,所以别用银行卡
    finian
        16
    finian  
       2016-11-11 08:23:13 +08:00
    关键字: MITM, SSL Pinning
    VYSE
        17
    VYSE  
       2016-11-11 08:25:43 +08:00 via Android
    可以不用系统 CA ,自带增加攻击难度
    xzg1993
        18
    xzg1993  
    OP
       2016-11-11 08:26:52 +08:00
    @iyaozhen 是的,我用了 charles 它代理 https 就是这个原理在手机中安装证书。
    xzg1993
        19
    xzg1993  
    OP
       2016-11-11 08:27:39 +08:00
    @VYSE 考虑了自带 ca ,自带 ca 的话,安卓的 webview 不还是走的系统的么
    xzg1993
        20
    xzg1993  
    OP
       2016-11-11 08:27:51 +08:00
    @finian 尝试下,谢谢
    Quaintjade
        21
    Quaintjade  
       2016-11-11 09:31:53 +08:00 via Android
    能种入根证书并且能拦截到数据的话,就连 http public key pinning 都是浮云啊。

    首先你要保证第一次访问的是真服务器,其次你要确保每次都能在 max-age 时间内访问真服务器,再者你要确保客户端不会提前清除数据导致 max-age 失效。
    否则的话中间人直接返回个 public-key-pins 把假根证书给 pin 起来,那就 233 了
    Quaintjade
        22
    Quaintjade  
       2016-11-11 09:39:29 +08:00 via Android
    你说的“每次 APP 验证的时候从手机安装包中提取公钥进行验证”也是同样问题,你得保证用来验证的安装包是真的,这又取决于前一次这安装包怎样来的。

    以上说了这么多都假设木马只有能力植入根证书、从外部拦截数据。如果是精心设计的木马的话,可干的事情更多了。
    ipconfiger
        23
    ipconfiger  
       2016-11-11 10:38:44 +08:00
    @des 被诈骗你用现金一样被人诈走啊, 这是智商税, 无解, 多上少上的问题, 多花点钱买个 iPhone 可以少上智商税, 当然拿个安卓小心用也行, 但是增大了心智负担, 比如说给老年人用怎么解?
    VYSE
        24
    VYSE  
       2016-11-11 10:44:42 +08:00
    @xzg1993 7.0 是福音,帮你搞定一切 https://developer.android.com/training/articles/security-config.html
    但无论怎样,客户端环境都是不可控的,再咋保护我直接 hook 上去把你程序内部逻辑 data 泄露出来,只能说尽量
    BubbleNoodle
        25
    BubbleNoodle  
       2016-11-11 11:45:58 +08:00
    用 hsts 还有 OCSP
    xzg1993
        26
    xzg1993  
    OP
       2016-11-11 14:46:35 +08:00
    @VYSE 最低支持 4.0 以上怎么办。。。
    xzg1993
        27
    xzg1993  
    OP
       2016-11-11 14:52:56 +08:00
    @luoliwang1987 额,小弟才疏学浅,百度了下,没找到具体如何做。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2610 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 07:14 · PVG 15:14 · LAX 23:14 · JFK 02:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.