V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
tool2d
V2EX  ›  编程

创建一个无法被破解的 zip 压缩包

  •  
  •   tool2d · 115 天前 · 6105 次点击
    这是一个创建于 115 天前的主题,其中的信息可能已经有所发展或是发生改变。
    试想一下,你把有敏感信息的文本或代码保存到 U 盘作为文档备份,但又怕 U 盘有一天不小心掉了,怎么办?

    最简单的办法,就是用 zip 给文本加个密码后压缩保存。

    但是密码始终存在被暴力破解的风险,现在 GPU 运行速度飞快,又再次加大了这种风险因素。

    解决办法是,只要把 zip 的内部 hash 校验算法改成 MD5 ,就能高枕无忧。主流破解软件的暴力破解,都是针对特定 hash 的。那些非标准格式的 hash ,破解软件都是不支持的。
    100 条回复    2022-10-11 10:47:23 +08:00
    xtreme1
        1
    xtreme1  
       115 天前   ❤️ 1
    别用 ZipCrypto 不就得了, Zip 标准现在支持 AES-256
    你自己用又不需要考虑兼容性
    tool2d
        2
    tool2d  
    OP
       115 天前
    ZipCrypto 只要你提供正确密码,敏感信息还是能被正确解压出来。

    如果你改成 MD5 ,那 U 盘掉了后,除了你自己,没有第二个人能把文件给还原。这样就算被猜到密码也没用,常规解压工具都无法识别。只有魔改的工具才行。
    hgc81538
        3
    hgc81538  
       115 天前 via iPhone
    敏感信息加密碼 zip, rar, 7z 等等一遍就可以了
    xuboying
        4
    xuboying  
       115 天前   ❤️ 1
    还以为 op 提供了一个开箱即用的方法。
    既然是魔改了 zip ,那不是等于自己写了一个私有的加解密算法。扩展名也没必要叫.zip 吧,直接叫.bin 就好了
    7zlid
        5
    7zlid  
       115 天前 via Android
    Why not 7z ?
    XiLingHost
        6
    XiLingHost  
       115 天前
    建议直接 veracrypt 之类的加密
    tool2d
        7
    tool2d  
    OP
       115 天前
    @xuboying 扩展名叫 zip 才有迷惑性,会让黑客误以为是密码错误,而不是算法错误。

    只要捡到 U 盘的人误以为是 zip 文件,那被破解的概率就是 0%
    AoEiuV020CN
        8
    AoEiuV020CN  
       115 天前
    这种程度的修改感觉有心人可以人工判断猜出来,
    都魔改了不如更彻底一点,直接一全全新的算法,只要别人猜不到你的算法加密过程,就不可能破解,
    tool2d
        9
    tool2d  
    OP
       115 天前
    @7zlid 7z 还是有被破解的概率,如果密码正好是英文字典,那破解概率就很高。如果是超强密码,那概率会很低,趋近于 0 ,但不会完全等于零。

    而魔改 MD5 的 ZIP ,被破解概率完全等于 0.
    ccc008
        10
    ccc008  
       115 天前
    不用那么麻烦,密码里面加入汉字、特殊符号就足够强壮了。
    vAvyummyICE
        11
    vAvyummyICE  
       115 天前 via Android
    使用 rar AES-256 127 位随机密码双层加密,然后分卷压缩再加密,分卷分块储存不同网盘
    dingwen07
        12
    dingwen07  
       115 天前
    用 GPG 密码加密
    gam2046
        13
    gam2046  
       115 天前
    zip 为了防止爆破,采用 rar 即可。非弱密码,基本上可以杜绝爆破的可能性。
    idealhs
        14
    idealhs  
       115 天前
    那我为啥不 7z 压完改扩展名?
    qrobot
        15
    qrobot  
       115 天前
    @tool2d

    ```
    只要把 zip 的内部 hash 校验算法改成 MD5 ,就能高枕无忧。
    ```

    据我所知 zip 的加密不应该是 Symmetric-key algorithm 么. 应该不需要 hash 算法才对呀, 而且 md5 的碰撞那么简单, 怎么可能用 md5 进行 hash, 起码都是 sha-256 以上
    7zlid
        16
    7zlid  
       115 天前 via Android   ❤️ 42
    我还没想好这叫一叶障目还是叫掩耳盗铃…
    tool2d
        17
    tool2d  
    OP
       115 天前
    @qrobot md5 是验证解压后数据是否正确,理论上你用任意密码都是可以解压文件的,但只有密码正确的情况,解压后计算 hash 才和文件头里的 hash 一致。
    qrobot
        18
    qrobot  
       115 天前
    @tool2d hash 只是用来做文件校验, 和加密没任何意义, 这一步本身可以省略, 甚至可以用 CRC (Cyclic Redundancy Check) 来进行校验,因为这样很快.

    问题是你的数据都已经被破解了, 后面的校验数据的完整性有什么意义? 我已经拿到了我想要的数据, 校验可以不做的.
    qrobot
        19
    qrobot  
       115 天前
    @tool2d 还不如 GPG 来的实在
    cloudfox
        20
    cloudfox  
       115 天前
    不公开的算法并不比公开的算法安全
    cxtrinityy
        21
    cxtrinityy  
       115 天前 via Android
    我选择强密码,暴力破解的基础是密码表,不是被人特意针对建立专用密码表的,一般用的都是从类似 SecLists 项目里的密码表,一些常用的密码,data breach 泄漏的密码,只要你的密码足够强壮,根本不用担心暴力破解
    tool2d
        22
    tool2d  
    OP
       115 天前
    @qrobot 黑客是用 hash 来校验猜测密码是否正确,要不断尝试才能猜测出正确的明文密码。

    通常要先挖一个大坑陷阱,黑客才会掉进去。

    md5 就是陷阱,并不是自己用的,是给黑客留的。zip 内部结构也不能变动太多,要不就很假了。
    villivateur
        23
    villivateur  
       115 天前
    这是掩耳盗铃吧,真想破解你的人,总归会察觉到你用的什么 hash 算法的。还不如用一个强一点的密码
    stroh
        24
    stroh  
       115 天前   ❤️ 1
    小姐姐不喜欢被压缩的感觉,做人要大意凌然(手动狗头)
    krixaar
        25
    krixaar  
       115 天前   ❤️ 1
    @7zlid #16 这叫中二……路上捡到一个 U 盘还得想办法破解里面加密的压缩包是有多闲……
    放动漫里这就是感觉自己搞了完美犯罪然后时不时回到现场来看看的那种……
    dcsuibian
        26
    dcsuibian  
       115 天前
    之前还见过改某几个字节破坏完整性来防范的方法,都是利用隐蔽式安全性
    不公开才是好的,公开了,用的人越多安全性就越差,如果成为标准了,那就没啥安全性提升了

    从实用度来说提升加密强度和复杂度更简单粗暴有效。
    janus77
        27
    janus77  
       115 天前
    那就是说你解压的话也得搞个自己魔改的解压软件是吧?
    makelove
        28
    makelove  
       115 天前
    与其折腾这些加个长随机密码有这么难吗,别说破解概率不为 0 了,你下一秒被陨石砸死的概率比破长密码大
    paramagnetic
        29
    paramagnetic  
       115 天前
    然后解压软件总得放在哪里不是?在同样的地方存一个超长 key 不是一样安全 /不安全?还省了自己魔改和维护软件的麻烦。
    你要真非得折腾隐蔽式安全性,不如把你的秘密用长密钥加密后隐写到小姐姐视频合集里,再在外面打个 zip 密码比如就 WoAiLaoPo1992 ,别人好不容易黑进去了一看就一堆视频可能也就收手了。哦不过小姐姐质量还不能太好,否则被人觉得口味不错收藏了还有以后被看出来的危险……
    westoy
        30
    westoy  
       115 天前
    不如考虑下其他方式吧

    比如把线序换掉, 正常情况要通过一个转接器转接读取

    如果碰到不走读卡器的标准线序, 就把电压升压后直接打到闪存

    谁打了板子记得送我一份........
    shakoon
        31
    shakoon  
       115 天前
    十几年前 U 盘厂商和移动硬盘厂商就已经有现成的加密软件了,比如 sandisk 的 secureaccess ,又方便又好用,还是免费的。如今自创一个工具在易用性上,在大量存储数据的场景下的性能,有什么优势吗?
    aecra1
        32
    aecra1  
       115 天前 via Android
    如果我捡到 U 盘但有联系不上所有人,我肯定会格式化后自己用,有闲心才看看文件内容,加密的看那玩意干啥,除非你文件名叫 btc 私钥
    maojun
        33
    maojun  
       115 天前 via iPhone
    与其寄希望于破解软件不支持,不如直接强密码来得实在
    FengMubai
        34
    FengMubai  
       115 天前
    首先 MD5 是不安全的哈希算法. 其次, 要暴力破解 AES-256, 神威太湖之光也得跑上万亿年
    qzwmjv
        35
    qzwmjv  
       115 天前
    密码安全的有条原则是不要自己造加密算法
    binux
        36
    binux  
       115 天前 via Android
    @tool2d 那你直接把校验整个删除不就好了,除了你自己谁还知道什么校验?而你自己知道密码,还搞个 md5 脱裤子放屁?
    tool2d
        37
    tool2d  
    OP
       115 天前
    @binux hash 还是需要保留的,万一 U 盘物理损坏呢。早期 U 盘技术很菜,保存文件里坏几个字节,都是很正常的。
    Divinook
        38
    Divinook  
       115 天前 via iPhone
    楼主对安全想的太简单了
    superrichman
        39
    superrichman  
       115 天前 via Android   ❤️ 2
    用不着,你用 ext4 分区就能难住 99%的人。
    DAPTX4869
        40
    DAPTX4869  
       115 天前
    拿到手就格式化清一波先
    你怕破解我还怕中毒额
    bk201
        41
    bk201  
       115 天前
    做个算法,可以设置伪密码,破解到了伪密码后给予特定无用文件让对方误以为已破解。
    binux
        42
    binux  
       115 天前 via Android
    @tool2d 你又没法恢复,保留有什么用?你非得校验,校验压缩后的文件不是一样的。
    你压根没想清楚自己在干嘛。
    tulongtou
        43
    tulongtou  
       115 天前 via iPhone
    @superrichman zfs 吧,又能难住 50%的人
    CatCode
        44
    CatCode  
       115 天前
    @tool2d hash 留着有啥用? hash 只是校验码,不是纠错码。你只能知道文件坏了,但你修复不了啊。
    tulongtou
        45
    tulongtou  
       115 天前 via iPhone
    你这已经不是 zip 压缩了啊,为啥还叫 zip 压缩包
    duke807
        46
    duke807  
       115 天前 via Android   ❤️ 1
    @superrichman
    我 u 盘两个分区,fat 以及 ext4 ,兼顾通用和安全
    另外,重要的数据我用自己写的小脚本加密,on-the-fly 解密:
    https://github.com/dukelec/cde/blob/master/tools/aes-mount.sh
    tool2d
        47
    tool2d  
    OP
       115 天前
    @binux 有没有留 hash 肯定不一样,hash 能知道文件有没有被黑客动过手脚。

    只要黑客知道 hash 算法,修改源文件后,就可以被黑客覆盖回去的。

    但这里 MD5 是我们自己的算法,也可以用 MD4 之类非常规算法,那么黑客不知道算法,自然就没办法回算 hash 了,能保证源文件 100%没有被动过。
    tool2d
        48
    tool2d  
    OP
       115 天前
    @tulongtou 是 zip 压缩,文件格式没有变,加密算法也没有变,仅仅改变了解密后文件的校验部分,防止密码被爆破。
    wdssmq
        49
    wdssmq  
       115 天前
    现在去打印店打印东西都是微信传过去,只能说不方便传的话那最好是自己买打印机(之前为了自己开发票买过一台,已经送人了),U 盘最大的作用是当 pe ,也就放一些系统镜像和必装的软件……
    ZE3kr
        50
    ZE3kr  
       115 天前 via iPhone
    不存 hash ,加密用 aes 256 gcm ,就可以保证完整行了,如果覆盖了一部分解密的时候会发现有问题
    tool2d
        51
    tool2d  
    OP
       115 天前
    @wdssmq 现在的 U 盘不一样,随着固态硬盘价格全线崩溃,SSD 价格超便宜。随便买个 SSD 固态加个 USB 3.0 盒子,都能当副硬盘使用。

    我电脑接 U 盘已经常态化,512G ,2T 之类的,很好用。

    但是 U 盘太小,为了防止遗失,安全性就必须要考虑一下了。
    binux
        52
    binux  
       115 天前 via Android
    @tool2d 凭什么黑客知道 hash 算法,不知道你校验的 hash 算法?
    dbow
        53
    dbow  
       115 天前   ❤️ 1
    bitlocker 解君愁
    toaruScar
        54
    toaruScar  
       115 天前
    可 ZIP 用的 CRC32 是 32bit 的,你换成 MD5 的话变成了 128bit 的了,这样比较容易就能看出来校验算法被人换过了。
    tool2d
        55
    tool2d  
    OP
       115 天前
    @binux 我指假设黑客知道算法了,那就可以用计算的新 hash ,去覆盖老 hash 。

    代码不泄漏的话,黑客肯定不知道魔改算法。

    zip 文件格式很老,就 4 个字节空间保存 hash ,99.9%的黑客,拿到陌生的 zip 加密文档,绝对会认为是官方默认 zip hash 算法。
    tool2d
        56
    tool2d  
    OP
       115 天前
    @toaruScar 肯定是 MD5 截断后的,我试验过,防止碰撞效果一样。
    binux
        57
    binux  
       115 天前 via Android
    @tool2d 你把 hash 随便在文件里隐写不就完了。凭什么你可以假设黑客知道“算法”,但是不知道“算法”?既然你可以随心所欲地假设自己的方案不会被破解,别人的就能被知道,你干脆假设黑客没看出来文件就是明文的算了。
    Jooooooooo
        58
    Jooooooooo  
       115 天前
    (不要自己发明加密算法)
    clorischan
        59
    clorischan  
       115 天前
    这种与密码本有什么区别.
    可靠性都是建立在非公开算法的保密程度上.
    还是相信密码学吧.
    zhzy0077
        60
    zhzy0077  
       115 天前
    这不是典型的民科思维吗 如果你担心 AES-256 的安全性 首先你要证明你存的东西比图灵奖对这个黑客来说更有诱惑性.

    当然前提是你的密码不能是 123456
    tool2d
        61
    tool2d  
    OP
       115 天前
    @clorischan 人类为了自己方便输密码,一般会有规律可循。

    有规律,就能被强大的 AI 给学习。

    现在破解又不比以前,盲目跑字典加数字组合。都是 AI 加工过的泄漏网站后台,用户大数据密码。

    你以为自己的强密码与众不同,其实对于地球人口 78 亿来说,你能想到,别人同样也能想到,这就是概率。要扼杀这种概率,只有用本帖大杀招。

    最强防御不是自己需要穿多少层甲,而是误导敌方,去攻打完全不存在的虚拟目标。
    ihciah
        62
    ihciah  
       115 天前   ❤️ 5
    地铁-老人-手机.jpg
    xuboying
        63
    xuboying  
       115 天前   ❤️ 1
    @tool2d #7 如果你觉得这样安全就安全吧,毕竟是你自己的数据(“不要网友觉得,要自己觉得”)

    当然如果你愿意听一些建议,也许可以看看 veracrypt 的开发思路,毕竟他们的用户可能有真正对抗“FBI”的实战经验。
    qsnow6
        64
    qsnow6  
       115 天前
    @tool2d 所以密码要长,要随机不就完了,随便找个密码生成器,一个 32 位的随机密码足够安全。
    0o0o0o0
        65
    0o0o0o0  
       115 天前
    请问非标准 hash 的解密加密程序存在哪里?你不怕这个程序被黑客拿到吗?
    tool2d
        66
    tool2d  
    OP
       115 天前
    @qsnow6 我以前也是沿用你这种思路,网站 url+salt 做 hash ,把 hash 的结果截取部分当成用户密码。

    但是有一点,密码毕竟是需要手动输入的。过于复杂的随机密码很反人类,所以最后人总倾向于偷懒,用一个相对容易记忆的密码去替代纯随机数。

    个人密码经历过几轮循环后,就会进入到一种相对稳定的状态。这种带一点点设计规律的状态,正好能被 AI 所识别。
    tool2d
        67
    tool2d  
    OP
       115 天前
    @0o0o0o0 我又没有修改 zip 加密解密算法,没有密码的前提下,黑客无法解压文件罢了。

    当然也无法通过暴力去破解密码。
    amrnxcdt
        68
    amrnxcdt  
       115 天前
    让我想起了之前 android 的第三方 ROM.zip 有一种叫 zip pseudo encryption 的操作
    woctordho
        69
    woctordho  
       115 天前
    你以为黑客看到.zip 结尾的文件就会想着用 zip 解压它?

    很多人用二进制编辑器打开它,就能看出它里面是什么文件格式
    raptor
        70
    raptor  
       115 天前
    直接 GPG 啊,加密带压缩,只要自己保管好加密私钥就行
    pkoukk
        71
    pkoukk  
       115 天前
    U 盘?那是什么东西?我的 U 盘只有一个 PE
    不如考虑下自己网盘密码的强度吧
    arch9999
        72
    arch9999  
       115 天前   ❤️ 5
    以为你在讲冷笑话,你来真的啊?
    y0bcn
        73
    y0bcn  
       115 天前
    卧槽!你是在整活还是真的是大聪明
    WUWENZE
        74
    WUWENZE  
       115 天前
    那么麻烦做什么,弄个 zip 套娃,一层密码破解了还有下一层
    Projection
        75
    Projection  
       115 天前
    私有加密算法优于公开算法? t/254122

    魔改算法是可行的,但光是改 hash 算法还远远不够。构造一个合理的规则要比构造一个强度足够的密钥复杂得多。简单的规则也是比较容易被破解的,就像很多构思精巧的解密游戏一样。当规则(算法)足够复杂的时候,或许才能比得上复杂的密码。SM7 是否安全谁知道呢,规则应该挺复杂的。如果真的想破解你的文件,不会只从密钥这一个维度去考虑。

    另外改成 MD5 可能会引入额外的风险,比如构造一个相同 MD5 的文件,这样你这个魔改算法是有很多不易察觉的风险的。
    vikaptain
        76
    vikaptain  
       115 天前
    先找到你的住址,找个机会控制住,五金店买个扳手,一个手指一个手指敲, 一直敲到你说出密码。
    Zhancha
        77
    Zhancha  
       115 天前
    曾参加过 CTF 国赛总决赛的人告诉你,这在 CTF 杂项里面属于入门题。
    meeop
        78
    meeop  
       115 天前
    如果是这样的话,你自己随便瞎编个加密算法,比如把文件每个字节循环加 100 之类,实现简单,甚至不用装软件,现场用 python 现撸现用都行,其他人鬼知道你是啥加密算法
    jhdxr
        79
    jhdxr  
       115 天前
    谁说计算机领域没有民科的???
    EricXuu
        80
    EricXuu  
       115 天前 via Android
    试想一下,你把有敏感信息的文本或代码保存到 U 盘作为文档备份,但又怕 U 盘有一天不小心掉了,怎么办?
    bitlocker
    Kiriya
        81
    Kiriya  
       115 天前
    直接上 U 盘加密不就好了,都找不到通用的软件破解
    lmshl
        82
    lmshl  
       115 天前 via iPhone   ❤️ 2
    我愿称你为教科书般的密码学民科😏
    7RTDKSAK
        83
    7RTDKSAK  
       115 天前
    以前有一种姿势:

    1.新建一个全新压缩包
    2.向其中加入文件 1,使用密码 A 压缩
    3.向其中加入密码 2,使用密码 B 压缩

    这样,市面上常见地穷举破解软件就无效了
    li02
        84
    li02  
       115 天前
    没意义的,若信息价值足够高,你这点小花招拦不住人的
    SekiBetu
        85
    SekiBetu  
       115 天前
    换个属于自己的字典就行,不需要换算法
    zzzsy
        86
    zzzsy  
       115 天前 via Android
    一看就没 1 做过 Misc1
    ZhiyuanLin
        88
    ZhiyuanLin  
       114 天前
    @lmshl V2EX 的月经贴,定期出现连本基础密码学教科书都没看完的人跑来讨论如何发明无法破解的新加密方案(
    yanqiyu
        89
    yanqiyu  
       114 天前
    不要期望通过不公开的加密算法保证安全性
    yanqiyu
        90
    yanqiyu  
       114 天前
    @tool2d
    > 你以为自己的强密码与众不同,其实对于地球人口 78 亿来说,你能想到,别人同样也能想到,这就是概率。要扼杀这种概率,只有用本帖大杀招。

    如果你如此不相信你的密码建议使用密码学设备

    > 黑客是用 hash 来校验猜测密码是否正确,要不断尝试才能猜测出正确的明文密码。

    那就成了脚本小子了,脚本一跑不通就抓瞎,真要到了对你的密文进行系统性的攻击的时候不会靠 hash 来看猜对没有。到了这个攻击程度安全性也就只取决于密码强度以及加密算法可靠性
    yanqiyu
        91
    yanqiyu  
       114 天前
    类似的事情国内厂商干过很多,用私有格式“加密”版权保护的内容
    结果就是你经常能看见的各种 xx 音乐 yyy 格式解密器
    yvkino
        92
    yvkino  
       114 天前
    强密码,套娃压缩
    v2tudnew
        93
    v2tudnew  
       114 天前
    再想想,对方会不会根据指纹和残留 DNA 找到你,然后刀架你脖子上呢?😆
    ayconanw
        94
    ayconanw  
       114 天前
    密码学第一条,不要自己发明算法
    mritd
        95
    mritd  
       114 天前 via iPhone
    密码学经典案例🫠
    tool2d
        96
    tool2d  
    OP
       114 天前
    我发现有些人没仔细看贴,就直接回帖了。

    又没修改 zip 原本的加密算法?何来发明新算法一说。

    hash 只是校验解压后,文件解密是否正确。理论上不同的 hash 算法,都是可以相互替换的,对安全性没太大影响。
    Unclev21x
        97
    Unclev21x  
       114 天前   ❤️ 1
    我是用的 trueCrypt, 创建一个 container ,可以是任何格式的文件,最后一步加密方式选择 keyfile ,创建完毕后挂载这个 container ,把重要的文件放里面。然后再把这个 container 复制到 U 盘中,keyfile 存在其他的地方,如邮箱,网盘等。

    也可以选择用密码而不是 keyfile ,然后将密码以二维码的形式放在自己的手机 /网盘 /邮箱里面。

    上面两种方式有些许的不便,但是可靠性还是很不错的。我把 container 复制到 U 盘里面,可以改成 pdf ,txt ,zip ,rar 等等,捡到 U 盘的人,无论怎么改格式,打开的时候都会报错。
    Unclev21x
        98
    Unclev21x  
       114 天前
    @Unclev21x #97 我有点偏题了,哈哈 @tool2d
    tool2d
        99
    tool2d  
    OP
       114 天前
    @Unclev21x 我也想过类似的 container 方法,不同的是 VHD 虚拟磁盘。

    用的时候解密后挂载,用完了卸载后加密。

    就算 U 盘掉了也不怕,没解密也是无法挂载到任何系统磁盘上的。
    demen
        100
    demen  
       114 天前
    最省事的话,直接 windows 下对这个 u 盘开 BitLocker 就挺不错了呀,其他系统另议
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   实用小工具   ·   1534 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 56ms · UTC 15:20 · PVG 23:20 · LAX 07:20 · JFK 10:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.