V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
jzjjzj
V2EX  ›  程序员

知道明文 密文 能推导出加密方式?

  •  
  •   jzjjzj · 2020-05-18 09:32:07 +08:00 via iPhone · 11590 次点击
    这是一个创建于 1680 天前的主题,其中的信息可能已经有所发展或是发生改变。
    63 条回复    2024-08-20 09:23:41 +08:00
    reus
        1
    reus  
       2020-05-18 09:38:09 +08:00 via Android
    不能
    exiaoxing
        2
    exiaoxing  
       2020-05-18 09:39:49 +08:00   ❤️ 1
    明文:a,密文:z,请问加密方式是什么?
    虽然不太懂加密,但是至少样本很少的情况下,肯定是推不出来的吧
    菜鸟一枚,大神勿喷
    Mithril
        3
    Mithril  
       2020-05-18 09:43:14 +08:00   ❤️ 1
    少部分加密方式可以。
    cmdOptionKana
        4
    cmdOptionKana  
       2020-05-18 09:45:26 +08:00   ❤️ 1
    可能根据加密后的长度变化能做一个猜测(但只是猜测)。另外,根据现代加密理论,知道加密方式也没多大意义。
    xiri
        5
    xiri  
       2020-05-18 09:46:20 +08:00
    你需要去学习《信息安全概论》
    MadHouse
        6
    MadHouse  
       2020-05-18 09:46:54 +08:00 via Android   ❤️ 1
    @Mithril 相反,样本多了才能推导破解,样本太少的话无法推导
    myd
        7
    myd  
       2020-05-18 09:47:19 +08:00   ❤️ 1
    不能推导出来。但可以猜
    Mutoo
        8
    Mutoo  
       2020-05-18 09:47:58 +08:00
    某些古典加密算法,不抗频率攻击的,是可以返推现密码表的。例如凯撒加密。现代加密算法基本上都没办法用这种方式进行反推。
    cmdOptionKana
        9
    cmdOptionKana  
       2020-05-18 09:48:15 +08:00
    @exiaoxing 比如 “明文:a,密文:z” 这种,由于明文与密文的长度一模一样,因此加密方式有可能是简单的字典映射。
    imaning
        10
    imaning  
       2020-05-18 09:48:23 +08:00
    从密文格式和长度上能判断个大概,也只是个大概。
    DGideas
        11
    DGideas  
       2020-05-18 09:48:59 +08:00
    补充 #5 @xiri,推荐另外一本《应用密码学:协议、算法与 C 源程序》
    cmdOptionKana
        12
    cmdOptionKana  
       2020-05-18 09:51:09 +08:00   ❤️ 1
    @Mutoo 呃,看到你这个回复我才发现,我还以为楼主问的是加密算法的种类…… 现在想想,他可能问的是完全破解整个加密系统。
    stoneabc
        13
    stoneabc  
       2020-05-18 09:58:25 +08:00
    你这就是 CPA 嘛。。可以去搜一搜密码学几种攻击方式。 也可以 @geelaw
    shoaly
        14
    shoaly  
       2020-05-18 10:01:44 +08:00
    加密算法设计之初就是要防止楼主这种人, 所以就看加密算法厉害 还是楼主厉害了
    Pythondr
        15
    Pythondr  
       2020-05-18 10:14:20 +08:00
    看复杂度,早期的对称加密却是有反推的可能,不过需要大量的数据集作支撑
    legiorange
        16
    legiorange  
       2020-05-18 10:59:31 +08:00   ❤️ 1
    1:密码加密分古典和现代
    2:古典可以现代不行,比如古典的凯撒密码,猪圈(共济会)密码加密简单解密容易,有明显特征。现代密码 AES 加密光加密方式就几种,要是能蒙到一个 CBC 对称加密还可能
    3:为什么不行楼上大佬们说也说完了我的看法是这样的:

    加密分对称加密和非对称加密。

    对称加密多可逆,可以通过明文攻击猜出来(我见上面提到 CPA 了),直接用工具解密试试看,问题万一加盐了?啊这……

    非对称加密,比如 MD5 这有固定特征的你还可能搞定。纵观 sha 家族……也就几个的特征比较容易看。

    加密算法有很多种,问题是你根本没法确定人家只用了一种?万一是 AES+RSA(有的 3 层)你怕是要推死在这。

    我曾经看过国外大佬们一起解密这种“谜题”的时候真的是全靠经验……
    locoz
        17
    locoz  
       2020-05-18 11:14:21 +08:00
    能,先搞台量子计算机
    ZRS
        18
    ZRS  
       2020-05-18 11:16:38 +08:00
    不太行,只能猜猜
    zhucegeqiu
        19
    zhucegeqiu  
       2020-05-18 11:17:15 +08:00
    本质就是给你 x,y,然后推导出关系,样本量足够的话就可以
    locoz
        20
    locoz  
       2020-05-18 11:17:40 +08:00
    @locoz #17 补充一下:目前一般的加密算法理论上是可以被量子计算机快速爆破的,但如果是抗量子密码,那量子计算机也没辙。
    不管怎样,首先你得有台量子计算机
    wangkun025
        21
    wangkun025  
       2020-05-18 11:21:31 +08:00
    能。
    不然我楼梯为啥被封啊
    PopRain
        22
    PopRain  
       2020-05-18 11:21:32 +08:00
    @legiorange 对称加密可以猜出密钥?像 DES 这种现代加密办法,不加盐个人也不可能逆向出密钥的。。。。
    Ehend
        23
    Ehend  
       2020-05-18 11:21:33 +08:00 via Android
    你可以建个神经网络,正好你知道输入输出,映射关系让神经网络自己去找吧。不过这个前提就是大样本
    tianshilei1992
        24
    tianshilei1992  
       2020-05-18 11:22:20 +08:00
    Known-plaintext attack or chosen-plaintext attack or chosen-ciphertext attack
    tianshilei1992
        25
    tianshilei1992  
       2020-05-18 11:24:50 +08:00   ❤️ 1
    @wangkun025 楼梯被封是 pattern recognition 甚至还没这么高端(比如一些 IP 段一看就是几个目标机场,宁可错 reset 一千不可放过一个),而不是你加密的流量被破解了。
    zeocax
        26
    zeocax  
       2020-05-18 11:28:07 +08:00 via Android
    @wangkun025 墙又不需要知道你的加密方式,只需要流量特征像就可以了
    wangkun025
        27
    wangkun025  
       2020-05-18 11:31:26 +08:00
    @zeocax 多谢大神指教。
    我听说某些加密算法更加容易被识别。
    看来是我天真了。
    多谢。
    jugelizi
        28
    jugelizi  
       2020-05-18 11:45:47 +08:00 via iPhone   ❤️ 1
    2+2=4 。
    2x2=4 。
    请问你知道明文 密文 怎么证明用的算法
    FFFire
        29
    FFFire  
       2020-05-18 11:56:29 +08:00
    足够的样本,专业的团队,能提升成功率
    wang93wei
        30
    wang93wei  
       2020-05-18 11:59:03 +08:00
    机器学习,,,在你有足够样本的时候卷积神经网络能自己解开
    legiorange
        31
    legiorange  
       2020-05-18 12:02:07 +08:00
    @PopRain 但可惜不能,比较好的是大部分服务基本菜用一个密钥。
    legiorange
        32
    legiorange  
       2020-05-18 12:04:26 +08:00
    @PopRain 当初 3DES 加密的文件我就用 winhex 搞得,没什么不可能.
    Hanggi
        33
    Hanggi  
       2020-05-18 12:13:55 +08:00
    虽说不是无懈可击,但是那么容易就能搞清楚的话,这些加密手段怎么会活到现在呢?
    qwertyegg
        34
    qwertyegg  
       2020-05-18 12:15:05 +08:00   ❤️ 1
    @locoz 你说的大概是 Shor 算法,来破解椭圆曲线加密的离散对数和 RSA. AES-256 这种是不怕量子计算机的
    zoffy
        35
    zoffy  
       2020-05-18 12:31:06 +08:00
    二战时期,剑桥的数学家干过这个事情
    otakustay
        36
    otakustay  
       2020-05-18 13:42:04 +08:00   ❤️ 1
    @legiorange 对称非对称不是你这么分的……MD5 就不是加密算法,既不是对称的也不是非对称的
    Mithril
        37
    Mithril  
       2020-05-18 13:55:47 +08:00
    @MadHouse 我说的是少部分加密方式,唉。。。
    janxin
        38
    janxin  
       2020-05-18 14:09:51 +08:00
    如果有明文,密文和对应的密钥,初始化向量等一切入参,推导已知加密方式(目标一定在范围内)是可行的。大不了暴力跑一遍加密,匹配上了就是的。不过这种分析方法一般过于理想,比如一种加密方法需要运行 N 遍,如果你不知道需要跑几遍肯定这种分析是没用的。

    另外讨论分析加密方式怎么会转进到密钥了...对已知加密方法的,可以使用差分密码分析方法,不过前提是加密已知,很多算法也无法使用这种攻击方法。
    janda
        39
    janda  
       2020-05-18 14:12:05 +08:00
    要是密上密呢:
    明--->密(MD5)--->密(SHA512)
    xd314697475
        40
    xd314697475  
       2020-05-18 15:12:19 +08:00
    根据我安全课老师的 ppt,简单的加密方式是可以被推导出来的,利用的是纯密码学原理

    还有一种方法是机器学习(包括深度学习),分析加密算法特征,这个也是一条路子
    vvtoo
        41
    vvtoo  
       2020-05-18 15:18:03 +08:00
    想到一个无关但有趣的话题: https://www.v2ex.com/t/303036
    msg7086
        42
    msg7086  
       2020-05-18 15:21:39 +08:00 via Android
    @legiorange 兄弟可以先了解下非对称加密是什么。
    yidinghe
        43
    yidinghe  
       2020-05-18 15:23:02 +08:00
    如果使用了多次加密,猜都很难猜,你不但要知道用了哪些加密方法,还要知道它们的顺序。
    yidinghe
        44
    yidinghe  
       2020-05-18 15:31:29 +08:00
    @janda 那是摘要算法(hash function),不是加密,加密(encryption)是可以解密(decryption)的,任何加密手段(cipher)都有对应的解密手段(decipher)。

    https://en.wikipedia.org/wiki/Encryption
    https://en.wikipedia.org/wiki/Hash_function
    lvybupt
        45
    lvybupt  
       2020-05-18 15:31:31 +08:00
    不能。
    ormand1bd
        46
    ormand1bd  
       2020-05-18 15:40:20 +08:00
    不能
    janus77
        47
    janus77  
       2020-05-18 16:02:34 +08:00
    理论上是不能,但是有一套方法论可以提高概率,在场景固定和熟悉的情况下,靠猜的方式还是有比较高的概率猜对的
    Still4
        48
    Still4  
       2020-05-18 16:05:45 +08:00
    任何不可逆算法加点盐你就没法

    比如 明文=abc 密文=md5(sub(md5('abc'),4,8)+'test')
    你怎么能通过密文和明文知道这个算法,而且还知道盐=test
    Jooooooooo
        49
    Jooooooooo  
       2020-05-18 16:07:39 +08:00
    不能, 已知把 1 到 1w 的数字都映射成 a 了

    你猜猜我的加密方法是什么?

    (答案是我把 10001 映射成了 b, 其他数字都是 a
    tsui
        50
    tsui  
       2020-05-18 16:21:28 +08:00
    @Still4 你这个不是加密而是 hash,从密文是无法解密(还原)出明文的。
    ajaxfunction
        51
    ajaxfunction  
       2020-05-18 16:26:42 +08:00
    扔个骰子,如何推导出是几?
    当然无法推导出来,但是可以猜出来
    julyclyde
        52
    julyclyde  
       2020-05-18 18:18:15 +08:00
    如果能的话说明这个算法的特征过于明显了
    slanternsw
        53
    slanternsw  
       2020-05-18 21:10:46 +08:00 via Android
    这..这不就是“存在一个黑箱函数,已知部分给定的输入和相应的输出,问能不能推导出这个黑箱函数”

    结论上面已经有了,不存在通用的方法,部分情况下可以猜.
    akira
        54
    akira  
       2020-05-18 22:23:50 +08:00
    有些可以
    Johnny168
        55
    Johnny168  
       2020-05-19 09:17:18 +08:00
    你想推导出来不过就是为了解密,电脑配置好点的直接跑字典算了
    legiorange
        56
    legiorange  
       2020-05-19 09:53:22 +08:00
    @otakustay 那具体是神马。。。
    legiorange
        57
    legiorange  
       2020-05-19 09:54:45 +08:00
    @msg7086 啊这,才疏学浅也没搜到什么还是比较模糊,那么 MD5 和非对称算法究竟有什么区别? MD5 本身是不可逆的,那么他也不算是对称也不算是非对称的话他究竟是……?
    Cmdhelp
        58
    Cmdhelp  
       2020-05-19 10:22:18 +08:00
    这个不好说,有的还真可以。。。 刚遇到过, 组合的明文,密文 32 位,,,试了一下 md5,,果然是,节省了继续逆向挖掘的时间
    qwertyegg
        59
    qwertyegg  
       2020-05-19 10:45:12 +08:00   ❤️ 1
    @legiorange MD5 sha-n 算 hash,跟加密解密不是一回事.更不用说对称非对称加密.
    co2fe
        60
    co2fe  
       2020-05-19 11:30:43 +08:00
    个人觉得
    只要样本数量足够的多,比如说无穷大
    理论上应该是可以推倒出加密的方式的
    实际上估计不可能
    只要有点复杂度的加密方式在现实中就很难有人会去花时间去推导,但是理论上是可以的。
    msg7086
        61
    msg7086  
       2020-05-19 14:13:53 +08:00   ❤️ 1
    @legiorange MD5 不是加密,是摘要 /哈希。
    加密,这个词本身就隐含着「可以解密」。

    摘自维基百科的词条:在密码学中,加密(英语:Encryption )是将明文信息改变为难以读取的密文内容,使之不可读的过程。只有拥有解密方法的对象,经由解密过程,才能将密文还原为正常可读的内容。

    注意这里的「经由解密过程」。一个算法被称为加密算法的前提就是加密后可以解密。

    至于非对称加密,是指使用秘钥对来加密解密的过程,秘钥对的其中一半用来加密,另一半用来解密,非对称的意思是这里来的。
    legiorange
        62
    legiorange  
       2020-05-19 14:50:16 +08:00
    @qwertyegg 感谢指教
    james19820515
        63
    james19820515  
       125 天前
    有结论了吗?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5286 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 03:47 · PVG 11:47 · LAX 19:47 · JFK 22:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.