V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
revlis7
V2EX  ›  问与答

关于HTTPS的疑问

  •  
  •   revlis7 · 2013-10-11 11:40:33 +08:00 · 3553 次点击
    这是一个创建于 4091 天前的主题,其中的信息可能已经有所发展或是发生改变。
    一般站点登录页面都会用https做加密,防止用户信息在传输过程中泄漏。但是假如两个请求的参数都相同的话,https加密后的数据是完全一样的吗?

    假如说一个登陆请求明文是12345,加密后数据是ABCDE,如果这个加密数据被截获,我们不用去破解里面的具体信息,直接用拦截下的加密包伪造一个登陆请求,是否能够让登陆进行下去,并获得别人的帐号登录权限?

    如果这种情况不会发生,那么是什么机制实现的呢?
    11 条回复    1970-01-01 08:00:00 +08:00
    kurtis
        2
    kurtis  
       2013-10-11 11:56:26 +08:00   ❤️ 1
    咳, 我也不懂具体如何实现,但是不需要很复杂的设计就能防止你说的情况发生。

    1. 由于全文加密,你不知道一个报文里哪段是加密的登陆口令。

    2. 基于1,如果 每次连接都有内容更换,例如时间戳甚至加密密码本身,在没有原文的情况下,你无法构造出下次登录的报文。

    3. 如果有量子计算技术,基本上目前的传统的密钥都会被破解。

    4. 如果采用量子传输技术,一旦观察者开始观察报文,报文就被破坏了。

    5. 所以量子技术才是王道。
    est
        3
    est  
       2013-10-11 12:14:07 +08:00   ❤️ 1
    > 直接用拦截下的加密包伪造一个登陆请求,是否能够让登陆进行下去,并获得别人的帐号登录权限?

    SSL/TLS是 block cipher,当前加密block依赖上一个block的结果。所以你没法只替换掉某一个block,必须从第0个block全部重新开始加密。

    所以整个加密体系就是,即便你只改变一个 bit 的信息,也会导致密文非常大程度的改变。
    est
        4
    est  
       2013-10-11 12:17:16 +08:00   ❤️ 2
    @kurtis 量子技术没有你吹嘘的那么安全。量子只保证了传输层的安全,但是安全体系又不止是传输层。


    http://www.technologyreview.com/view/428202/quantum-cryptography-outperformed-by-classical-technique/

    传统方法就可以破解量子通信
    clino
        5
    clino  
       2013-10-11 13:15:19 +08:00
    "但是假如两个请求的参数都相同的话,https加密后的数据是完全一样的吗?"
    不是很了解,但这个答案我觉得应该是不会一样的,上面那个wikipedia提到"客户端与服务器通过公钥保密协商共同的主私钥(双方随机协商)" ,可能是用这个方法吧
    revlis7
        6
    revlis7  
    OP
       2013-10-11 13:59:04 +08:00
    其实我想解决的是如何识别请求者身份合法的问题,把自己给绕进去了。

    对https来说,即使相同的数据,伪造请求的人拿到服务器响应的包也没用,因为没有私钥可以解密,所以这个应该不是问题。
    BOYPT
        7
    BOYPT  
       2013-10-11 14:07:50 +08:00
    啧。。这密码常识了好吧。

    即使在简单的对称加密条件下,加盐值以避免相同明文生成的密文一样的做法很基础基础了好吧。

    相同POST参数怎么可能会有相同报文。
    revlis7
        8
    revlis7  
    OP
       2013-10-11 15:18:16 +08:00
    @BOYPT 我想问的不是密文破解的问题,而是对于两次完全相同请求,服务器是否可以有方法鉴别哪个是真实合法的问题,有点类似于中间人攻击,这个过程里并不需要去解密你的信息。
    rankjie
        9
    rankjie  
       2013-10-11 21:33:37 +08:00 via iPhone
    每个客户和服务器通信使用的密钥都是不同的,所以相同数据在传递过程中的密文也不同
    lehui99
        10
    lehui99  
       2013-10-12 00:23:56 +08:00 via Android
    参见rfc5246中6.1节的struct定义 http://tools.ietf.org/html/rfc5246#section-6.1
    数据的加密包含服务器产生的随机数,每次连接服务器都会将重新产生的随机数通过之前协商好的密钥加密后发给客户端,重放攻击中的随机数是之前连接的随机数而不是本次连接的随机数,所以重放攻击无效。
    即使劫持连接进行重放,因为有sequence number(是ssl的,不是tcp的seq),所以也无效。
    BOYPT
        11
    BOYPT  
       2013-10-15 17:43:18 +08:00
    @revlis7 两次完全相同的请求,第二次肯定是无效的,加密原理决定。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1532 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 16:55 · PVG 00:55 · LAX 08:55 · JFK 11:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.