V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
这是一个专门讨论 idea 的地方。

每个人的时间,资源是有限的,有的时候你或许能够想到很多 idea,但是由于现实的限制,却并不是所有的 idea 都能够成为现实。

那这个时候,不妨可以把那些 idea 分享出来,启发别人。
stupidcat
V2EX  ›  奇思妙想

有没有这样一种加密方法?

  •  
  •   stupidcat · 2015-12-01 13:25:10 +08:00 · 2720 次点击
    这是一个创建于 3281 天前的主题,其中的信息可能已经有所发展或是发生改变。
    解密时,无论输入什么密码,解密软件本身并不提示“密码正确”或“密码错误”,而是都会产生一个文件。当且仅当输入了正确的密码时,才会产生正确的原文件
    当然,也需要满足一些加密算法的基本要求,例如
    1. 加密算法本身完全公开
    2. 错误密码与错误文件的对应关系对于寻找正确密码没有帮助


    如果真的有这样一种加密方法,那破解难度就大大提高了。暴力破解的速度是很快,可是人眼一天能看几个文件?

    目前存在这样的加密算法吗?
    17 条回复    2015-12-09 04:43:45 +08:00
    ShadowStar
        1
    ShadowStar  
       2015-12-01 13:32:27 +08:00
    几乎常用的绝大部分加密算法都是这样的,你所说的只是加解密软件的问题。
    stupidcat
        2
    stupidcat  
    OP
       2015-12-01 13:37:48 +08:00
    @ShadowStar 解密软件之所以会提示“错误”,是因为算法本身提供了相关信息(校验之类),那么,有没有不提供这种信息的算法?
    PublicID
        3
    PublicID  
       2015-12-01 13:38:57 +08:00
    判断解密是否正确不是加密算法的事
    PublicID
        4
    PublicID  
       2015-12-01 13:40:53 +08:00
    @stupidcat 算法不提供信息。这么做通常是在加密时附加校验信息,然后解密时验证加密算法的输出。
    stupidcat
        5
    stupidcat  
    OP
       2015-12-01 13:43:35 +08:00
    @PublicID 以 rar 加密为例,为什么 winrar 会提示密码错误?因为校验和对不上。这个校验和不就是该加密算法规定了要保存在密文中的内容吗。
    是否存在某一种加密算法,不在密文中储存“校验和”、或是任何其他可以让解密软件判断出密码正确或错误的信息?
    RemRain
        6
    RemRain  
       2015-12-01 13:50:21 +08:00   ❤️ 1
    rar 是压缩算法, winrar 是软件,校验是软件做的,不是加密算法。 winrar 用的加密算法是 blowfish , blowfish 不含密码验证。
    est
        7
    est  
       2015-12-01 13:51:24 +08:00
    我早就说了, ssh 登陆提示信息无论成功与否一律改成 Permission denied, please try again. 。保证有奇效。
    ShadowStar
        8
    ShadowStar  
       2015-12-01 13:51:51 +08:00
    RAR 不是加密
    zjqzxc
        9
    zjqzxc  
       2015-12-01 13:52:06 +08:00
    事实上,就算是有这么一款加密软件(楼上意见解释了这个不是算法的事儿),暴力破解的难度并不会增加。。

    如果密码正确,那么产生的信息一定是有意义的。如果压缩的是文件,那解密后的内容也一定要是文件才行。图片什么的都有头文件,查一下就知道是不是,是什么类型的文件了。纯文本内容直接尝试使用 utf8,gbk 等方式解码,能解出来就是正确的,解不出来就可以认为不对。

    所以,就算是有这种软件,对暴力破解来说就是多了一个步骤而已(并增加了大量的 IO 次数?)
    wy315700
        10
    wy315700  
       2015-12-01 13:52:41 +08:00
    @stupidcat 算法本身不提供解密失败的信息,算法本身只是按照你输入的密文和密钥进行解密,
    msg7086
        11
    msg7086  
       2015-12-01 17:01:33 +08:00 via Android
    @stupidcat 5 楼
    回答你第一段的问题:不是。
    comicfans44
        12
    comicfans44  
       2015-12-04 16:40:29 +08:00   ❤️ 1
    首先加密算法只是变换,不会关心你的密钥是否正确。 rar 用错误密码解密并且选中保留损坏的文件,得到的就是你想要的无确认密码的加解密(得到一堆无用的二进制)。

    根据 rar 的描述

    http://www.rarlab.com/technote.htm#enchead

    If flag 0x0002 is present, RAR transforms the checksum preserving file or service data integrity, so it becomes dependent on encryption key. It makes guessing file contents based on checksum impossible. It affects both data CRC32 in file header and checksums in file hash record in extra area.

    checksum 是密码相关联的,因此对于寻找正确的密码没有帮助。
    另外 @zjqzxc 的说法是正确的,人眼看不过来,但是有专门的库(比如 libmagic)用于识别文件类型,因此即使没有这个额外的确认信息,也不会减少被破解的可能。



    你所描述的,其实是"裸"加密,去掉加密之外的一切信息,只剩下变换后的二进制。你自己随便编一个可逆变换就可以了。别人打死也猜不出来一个你乱编的算法是怎么变换的,当然也就没法解密了。
    akagi
        13
    akagi  
       2015-12-05 23:26:04 +08:00
    @comicfans44 然而也许可以用频率统计来减小解空间?
    comicfans44
        14
    comicfans44  
       2015-12-07 09:36:15 +08:00
    @akagi 不太了解你说的频率统计的方面的内容。具体的操作是?
    akagi
        15
    akagi  
       2015-12-08 17:33:22 +08:00
    @comicfans44 呃,只是个粗浅的想法。解密后的文件如果是规范的原始文件,即使是纯二进制流,也应该会有特定的频率统计特性。或许可以靠分析文件排除分布明显不合适的情况。

    比如,首先统计字串的出现次数,然后统计某字串后接另一字串的出现次数…… 然后统计百分比什么的。

    好像过于简陋了 ..
    comicfans44
        16
    comicfans44  
       2015-12-08 21:29:17 +08:00
    @akagi 感觉这个还是比较困难的
    Silicon
        17
    Silicon  
       2015-12-09 04:43:45 +08:00 via Android
    @comicfans44 并不困难
    但熵值分析本身也需要配合一些特定场景。如果目标文件本身很有规律( PE 、文本、波形或者位图),那熵值分析基本十拿九稳。
    但要是碰上其他文件就难说了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2796 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 09:49 · PVG 17:49 · LAX 01:49 · JFK 04:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.