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

盐是什么?

  •  1
     
  •   oy9r · 200 天前 · 4207 次点击
    这是一个创建于 200 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我听朋友说:“加盐可以抵御黑客”,这令我感觉非常疑惑,请告诉我在服务器上撒盐来抵御黑客的原理。还是我理解错误?

    45 条回复    2021-03-31 15:28:02 +08:00
    irever
        1
    irever   200 天前
    加盐是针对密码,防止被破译,保护明文
    putaozhenhaochi
        2
    putaozhenhaochi   200 天前 via Android   ❤️ 23
    盐已经过时了。现在流行孜然
    PeakFish
        3
    PeakFish   200 天前
    @putaozhenhaochi 哈哈哈,你想逗死我,继承我的蚂蚁花呗
    Cooky
        4
    Cooky   200 天前 via Android
    盐是避难所的货币🐶
    Cooky
        5
    Cooky   200 天前 via Android
    盐是避难所的货币(
    apostle
        6
    apostle   200 天前 via Android   ❤️ 5
    指一类金属离子或铵根离子( NH4+)与酸根离子结合的化合物
    PeakFish
        8
    PeakFish   200 天前
    楼主搜索 HMAC
    lokya
        10
    lokya   200 天前
    撒盐空中差可拟
    misaka19000
        11
    misaka19000   200 天前
    这种查一下就能得到结论的东西也能问个问题
    sambawy
        12
    sambawy   200 天前   ❤️ 1
    因为盐影响钙吸收,黑客顺着网线过来的时候会接触到过多的盐,导致优质钙白白的流失,身体就没有强度,无法进一步破坏服务器。
    namelosw
        13
    namelosw   200 天前
    这都不懂?国外不是有很多人拿盐往肩膀后面撒,可以驱散恶魔。道理都差不多。
    superrichman
        14
    superrichman   200 天前 via iPhone
    服务器撒盐可以形成结构松散的保护膜,(物理)黑客入侵服务器的时候会因为表面有盐手滑偷不走服务器,所以加盐可以抵御黑客。 🐶

    ——
    正经解释,加盐是用来抵御彩虹表攻击的。
    eason1874
        15
    eason1874   200 天前   ❤️ 47
    用户设置密码 abc,如果数据库保存明文 abc,一旦泄露就等于泄露密码,黑客就可以登录。

    所以服务器不存密码明文,存摘要的哈希值,比如存 md5("abc") 的结果 900150983cd24fb0d6963f7d28e17f72,但登录只接受明文输入,不接受哈希值。

    当黑客脱裤没拿到明文 abc,只拿到了哈希值 900150983cd24fb0d6963f7d28e17f72,他们就要想办法知道哈希值对应哪个明文。于是他们就穷举出尽可能多字符串的哈希值,做成一个表,叫彩虹表。拿着表逐个去对,哈希值对上了就知道是哪个明文了。

    为了防止彩虹表这种破解方式,于是就有了盐 salt,在摘要的时候加进去,比如 md5("a 盐 1b 盐 2c 盐 3"),这样一来摘要输入变长了,简单的彩虹表就不够用了,得制作足够大的彩虹表去对,而且就算你对出来了你还要知道哪部分是盐哪部分是真正的密码。
    junziyangyang
        16
    junziyangyang   200 天前
    @putaozhenhaochi 大哥,这回答精辟独到
    kaiki
        18
    kaiki   200 天前   ❤️ 15
    你的密码就是你炒菜的原材料,比如你炒个番茄炒西红柿,那么黑客吃一口知道这道菜是用啥原材料做出来的,就知道你密码了,这个是你洒一袋盐进去,黑客吃一口直接吐了,根本吃不到番茄和西红柿,就无法破解密码了。
    RobertLyu
        19
    RobertLyu   200 天前 via iPhone
    啊,这篇文章读得我口舌生津。
    imn1
        20
    imn1   200 天前   ❤️ 1
    撒盐是驱鬼辟邪的一种操作
    wanguorui123
        21
    wanguorui123   200 天前   ❤️ 1
    盐就是让黑客觉得很咸,使到手的食物很难下口的调料,这个调料就是盐很重口的盐。

    盐混淆了每个加密样本的共同特征,让黑客很难用通用的模型进行逆向分析。
    wakzz
        22
    wakzz   200 天前
    日本那边服务器上线要请巫女去开光,撒盐辟邪
    ronman
        23
    ronman   200 天前
    @kaiki 这个解释绝了,有画面了
    daytick
        24
    daytick   200 天前
    给认真回答的人点个赞👍🏻
    daytick
        25
    daytick   200 天前
    @eason1874 给认真回答的人点个赞👍🏻
    loading
        26
    loading   200 天前 via Android
    搜索 hash salt
    oy9r
        27
    oy9r   200 天前
    不知道怎么搜,搜了全是 NaCl
    xavierskip
        28
    xavierskip   199 天前
    很多用户会使用相同(或者很弱)的口令,那么存储在数据库中的密码就会是相同的。(如何存储用户的密码这个过程还需要科普吗?)
    黑客获取到用户的密码后要反向得到用户的口令,一般通过提前准备好的表来查对应关系,哪些经常出现以及容易出现的自然就会在表中被查到(把每一个可能的口令都放到表里将是巨大的),所以我们擅做主张给用户的口令加上一点点的东西让它们看起来不那么简单和弱以及各不相同,这样简单的加上点东西就会就给黑客带来很大的麻烦。
    wmwgijol28
        29
    wmwgijol28   199 天前 via iPhone
    @putaozhenhaochi 🤣🤣🤣
    redtea
        30
    redtea   199 天前
    用盐也不安全,如果盐是一样的,黑客拿到 hash 后的密码还是能破解的,用 bcrypt 。
    zhangfuguan
        31
    zhangfuguan   199 天前
    NaCl
    pabupa
        32
    pabupa   199 天前
    hash(pwd) => h1,虽然 h1 很难推出 pwd,但是如果数据多了,就还是可以推出来。
    hahs(pwd+NaCl) => h2, 即使黑客通过 h2,找出了(pwd+NaCl),也不能直接推出 pwd 。
    但是如果整个数据库都没了,而刚好很多账户的 h2 都能被反推,那这样还是不行……
    pabupa
        33
    pabupa   199 天前
    @pabupa #32 NaCl == salt
    kimwang
        34
    kimwang   199 天前 via Android
    EscYezi
        35
    EscYezi   199 天前 via iPhone
    @oy9r #27 关键词 md5 加盐
    X-Force
        36
    X-Force   199 天前
    难道不是加些盐可以驱魔辟邪,让系统更安全么?
    yeqizhang
        37
    yeqizhang   199 天前 via Android
    氯化钠,食用盐还要加点碘
    243205964
        38
    243205964   199 天前 via Android
    @oy9r 搜的时候加上关键词“密码”
    tabris17
        39
    tabris17   199 天前
    题外话,为什么要把参与哈希运算的随机字符串叫做 salt ? 而不是 sugar 、pepper 、chili ?
    tonyaiken
        40
    tonyaiken   199 天前 via iPhone
    @misaka19000 同感,直接搜一下密码加盐就知道了
    mritd
        41
    mritd   199 天前 via iPhone
    首先一般数据库都不会明文存储用户密码,大部分都是采用 md5 sha 之类的 hash 算法先对密码计算 hash 值,然后将计算结果存储在数据库里,这样用户登录时重新计算并对此 hash 值就可以知道密码是否正确
    mritd
        42
    mritd   199 天前 via iPhone
    但问题在于,现在有有人收集了海量常用密码的 hash 结果,也就是说一旦被脱裤,黑客可以通过 hash 对此来验证用户的真实密码,所以这个时候一般会放一点 “盐” 和用户密码做混淆,然后再 hash
    mritd
        43
    mritd   199 天前 via iPhone
    大多数 hash 算法都有两个效应: 雪崩效应和定长输出,雪崩即原始的微小改变会带来结果的巨大改变,从而抵御推测,定长输出导致原始数据 hash 后不可逆
    shm7
        44
    shm7   199 天前 via iPhone
    让人猜不透的随机数
    lanbatian
        45
    lanbatian   199 天前
    加盐主要是指数据交互的时候增加一些加密算法。常见的有 RSA 、AES 、国秘算法等,还有双向加解密和单向加解密,SSL 就是常见的双向加解密。
    关于   ·   帮助文档   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2019 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 11:06 · PVG 19:06 · LAX 04:06 · JFK 07:06
    ♥ Do have faith in what you're doing.