SHA256 加两个不同的盐拼接出来的 512bit 和 SHA512 加一个盐相比哪个更安全(更抗碰撞)?我写了个脚本测试,好像算两个 SHA256 比 SHA512 还快,不知道是不是有硬件加速 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
drymonfidelia
V2EX    信息安全

SHA256 加两个不同的盐拼接出来的 512bit 和 SHA512 加一个盐相比哪个更安全(更抗碰撞)?我写了个脚本测试,好像算两个 SHA256 比 SHA512 还快,不知道是不是有硬件加速

  •  1
     
  •   drymonfidelia 182 天前 2618 次点击
    这是一个创建于 182 天前的主题,其中的信息可能已经有所发展或是发生改变。
    19 条回复    2025-04-11 13:35:03 +08:00
    geelaw
        1
    geelaw  
       182 天前   1
    简单的答案:没有人研究过这个问题,所以“不知道”。

    复杂的答案:可以考虑各种建模的情况,此时不使用 SHA-256 和 SHA-512 的具体结构,为了明确这一点,说两个函数是 h 和 H ,且 h 的输出长度是 H 的的一半。

    如果用 AI-ROM 建模 h 和 H ,若盐足够长且两个情况里的盐长度相同,那么两个 h 和一个 H 的安全性相当。

    如果用 ROM 建模,则可以去掉盐的随机性和长度的要求,两个 h 和一个 H 的安全性也是一样的。

    如果在标准模型下考虑多项式安全性,那么已经有(精神上类似但是不同的)结果 suggest:多项式安全性无法量化增强(所谓 cannot amplify beyond negligible )。见 ePrint 2012/032 。因此如下情况是可能的,h 安全,但是用两个不同的盐,安全性没有任何提升。如果假设上述情况并且假设一个 H 比一个 h 安全,则说明如下情况是可能的,两个 h 不如一个 H 安全。同时,完全有可能一个 h 不如一个 H 强。
    lloovve
        2
    lloovve  
       182 天前 via iPhone
    看你怎么拼接,两个 265 只是计算两次 265 然后拼接,跟直接计算 512 远算量根本不一样
    hefish
        3
    hefish  
       182 天前
    我觉得 4 个 SHA128 的更安全。。。
    ZE3kr
        4
    ZE3kr  
       182 天前 via iPhone
    SHA 512 安全得多
    yinmin
        5
    yinmin  
       182 天前 via iPhone   5
    SHA256 加两个不同的盐的安全性 < SHA256 加 1 个盐,更远低于 SHA512 加 1 个盐

    在安全界有一个准则:不要试图去自建算法,其安全性绝大多数情况都是远低于已经过考验的标准算法
    joh
        6
    joh  
       182 天前 via Android   1
    加密算法不是两个 256 加起来可以顶一个 512 的。类比应该是 n 和 n
    lovelylain
        7
    lovelylain  
       182 天前 via Android
    破解 hash 不是非要解出跟你一样的输入值,而是找出 hash 结果跟你的 hash 相同的输入值,只要时间能接受,暴力破解也是一种解法,举个极端例子,hash32 加 16 次盐与 sha512 相比,安全性能一样吗?
    hanyuwei70
        8
    hanyuwei70  
       182 天前   1
    看到你加盐,猜测你是想存密码。
    存密码不要用 SHA2 ,用 argon2id ;库比较老的话用 bcrypt 。
    villivateur
        9
    villivateur  
       182 天前   3
    如果 sha256 拼接成 512bit 比 sha512 更安全,那么 sha512 就会直接设计成两个 sha256 拼接,或者 sha512 根本就不会存在。因此肯定是 sha512 更安全。
    twinsant
        10
    twinsant  
       182 天前
    @villivateur 正解
    likelylee
        11
    likelylee  
       182 天前
    如果你是考虑合规需求,那么 SHA-256 加盐的任何用法基本都是能满足要求的,除非国密强制 SM3 。如果是海外合规相关,上边有人提到 argon2id 以及 bcrypt ,相比 SHA2 系列算法的“合规”风险更高,因为有些审核机构会指定要求 FIPS 许可算法。
    如果你只是单纯考虑安全性本身,无脑 SHA-512 就可以。首先 SHA-512 和 SHA-256 可以简单认为不是一个算法,其次 SHA-512 的算法安全强度是 256bits ,而 SHA-256 只有 128bits 。参考 SP 800-57 即可。
    mengzhuo
        12
    mengzhuo  
       182 天前
    理论上 512 更安全

    搞 crypto 库的路过,其实这两都是 SHA2 家族的,算法一样,差别就是最后是否压缩摘要。
    p.s. 跟楼上说的一样,如果要存密码,就不要用加盐的方式。
    leonshaw
        13
    leonshaw  
       182 天前 via Android
    抛开其它的,从基本的计算安全性来说算的慢更安全
    DivineRapierH
        14
    DivineRapierH  
       182 天前   2
    找 Gemini 分析了一下,它提到了一点:
    你用两个 SHA256 拼接,那么攻击者只要能碰撞出来两个 Hash 中的任意一个就能破解了。从这个角度看还不如只 SHA256 一次。

    如果要保存密码,推荐看一下这篇文章: https://crackstation.net/hashing-security.htm
    SHA256 的优势在于速度快,但是保存密码需要一个“慢”算法来让暴力破解几乎不可能。
    julyclyde
        15
    julyclyde  
       182 天前
    @hanyuwei70 库比较老的话应该升级库
    julyclyde
        16
    julyclyde  
       182 天前
    @DivineRapierH 相当于“semi 已知明文攻击”了
    tool2dx
        17
    tool2dx  
       182 天前
    一般来说 hash 越慢越安全,这能防止被大算力给暴力字典破解。
    seansong
        18
    seansong  
       182 天前
    SHA2 家族中,目前主流 CPU ,支持 SHA2-256 的 SHA-NI 硬件加速指令,而 SHA2-512 没有 SHA-NI 支持,只能使用 SIMD 来加速计算过程。如果你用的 sha 计算库都是足够优化的话,SHA2-256 速度确实会明显更快。从安全性角度来说,绝大部分场合,SHA2-256 安全性足够了,如果你希望更高安全性,建议可以考虑下 blake3
    12101111
        19
    12101111  
       182 天前
    印象中 TPM PCR 会使用递归 hash 的办法

    hash_{n+1} = Digest(hash_n | Hash(input_n))
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5288 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 31ms UTC 09:07 PVG 17:07 LAX 02:07 JFK 05:07
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86