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

私有加密算法优于公开算法?

  •  
  •   baskice · 2016-01-29 02:16:05 +08:00 · 6161 次点击
    这是一个创建于 3228 天前的主题,其中的信息可能已经有所发展或是发生改变。
    为什么我上的所有 CS 课,加密算法课,都说公开算法在性能和加密强度等综合性能上优于所有已知私有算法?

    有人是想说,私有加密算法仅在加密强度一项上优于主流公开算法吗?

    把 AES 之类的套几层能叫私有算法吗?只层套的话强度显然会高于主流公开加密算法的强度啊
    31 条回复    2016-01-29 23:37:00 +08:00
    phoenixlzx
        1
    phoenixlzx  
       2016-01-29 02:31:50 +08:00
    一般会认为公开算法像开源软件一样会有很多人来贡献,集体的智慧大于一两个人的智慧

    用公开算法套再多层也还是公开算法,套一层就说是自己的私密算法那和国内拿别人成果当自己论文的叫兽们差不多

    不过也说了只是高于所有已知的私有算法,谁知道会不会有什么私密的神级算法出现_(:3//
    Cloudee
        2
    Cloudee  
       2016-01-29 02:44:30 +08:00   ❤️ 1
    设计一个靠谱的加密算法要求的数学知识太深厚了,不是一群一般人或者一个高水平的人能完成的
    (当然不排除大神基本的人的存在)
    binux
        3
    binux  
       2016-01-29 02:51:02 +08:00
    no ,加密不靠算法安全,靠密钥安全。私有加密算法,用着看起来没事,那是因为人家懒得理你。
    lightening
        4
    lightening  
       2016-01-29 02:56:33 +08:00
    我认为算法好坏和是否公开没有必然联系。好的算法可能是公开的,也可能是私有的。
    sinxccc
        5
    sinxccc  
       2016-01-29 03:16:08 +08:00
    @lightening 对。但是公开算法意味着盯着它的眼睛更多,漏洞也会更多的被发现。私有的就全靠开发者的本事了。

    我怎么记得每一本算法书上都会说,加密的安全与否不能靠算法的保密。加密算法的设计前提应该就是算法本身会被(主动 /被动)公开。
    sinxccc
        6
    sinxccc  
       2016-01-29 03:17:22 +08:00
    @phoenixlzx 不排除比如 NSA 那种地方有他们内部使用的黑科技加密算法…
    lightening
        7
    lightening  
       2016-01-29 04:22:34 +08:00
    @sinxccc
    对,加密不应该依靠算法保密。
    算法公开意味着盯着它的眼睛更多,确实没错,但这也只是提高了漏洞被发现的概率而已。盯着的那么多眼睛里,又有多少双眼睛有能力、有时间去寻找漏洞呢?这事情没那么绝对。前段时间 OpenSSL 的漏洞也是过了好久才有人发现的。
    wbsdty331
        8
    wbsdty331  
       2016-01-29 08:43:40 +08:00
    @sinxccc @lightening
    那么 OpenSSL 的 HeartBleed 为什么这么长时间了才被人发现
    sinxccc
        9
    sinxccc  
       2016-01-29 08:57:21 +08:00
    @lightening @wbsdty331 算法和算法实现是两回事。
    maemual
        10
    maemual  
       2016-01-29 09:16:48 +08:00 via iPhone
    古典密码学和现代密码学的区别就在于,古典密码学只要加密方法不泄漏就是安全的,现代密码学是 key 不泄漏就是安全的。
    eriale
        11
    eriale  
       2016-01-29 09:36:27 +08:00   ❤️ 1
    破解私有算法发明者的成本比破解公开算法低
    PowerK6
        12
    PowerK6  
       2016-01-29 10:34:04 +08:00
    算法理论上的安全并不代表编程实现的时候程序员完全遵照理论设计,而且可能还有好多暗坑。例子可参照 RSA

    私有算法不公开,听起来很美,但你能确保你的算法比那些公开算法更好?
    yeyeye
        13
    yeyeye  
       2016-01-29 10:35:21 +08:00   ❤️ 1
    公有算法未必安全,私有算法未必不安全。


    这样的解释你满意么,别争了,算法就是算法,还分私有和公有?


    明明说的是私有算法,马上又说被获取源码被获取后怎么怎么样,这样说来哪有什么私有算法?我真是不知道一群人在争什么。


    真的不懂,求解释。

    另一个角度说公有算法经得住考验云云(同样也能被更多人完善),难道私有算法就不能是高手写出来的,就不能参考公有算法去写么。就不能是一个知道公有算法漏洞而修补后改成自己算法的么。

    公有算法可以是一个人,一群人,一国人,全球人去做的,难道私有算法就不能是一群高手利用全球人现有的高级算法去改进并跟进么?

    有巨人的肩膀可以站,为啥就一定要从巨人的脚下走起呢。


    真的不懂,求解释。(我觉得这更像是一个哲学问题,毕竟时代在进步,没有人能保证所谓的公有算法就没有改进的空间)
    wy315700
        14
    wy315700  
       2016-01-29 10:37:15 +08:00
    各国军方用的算法,包括加密协议都是私有的。
    AES 什么的, NSA 根本不会用。
    Khlieb
        15
    Khlieb  
       2016-01-29 10:53:18 +08:00 via Android
    关键还是取决于算法本身
    libook
        16
    libook  
       2016-01-29 11:00:43 +08:00
    我们的老师讲是因为公有算法是美帝发明的,鬼知道会不会有后门,所以做国家安全相关项目最好用私有的算法。

    如果你不是做国家安全相关项目的话其实用哪种都无所谓吧,没必要纠结,公有算法即便有后门在研发者来看也是绝密的,就像核弹一样是战略意义的,泄露出去就没有意义了,所以你大可放心使用,建议把目标集中在性能上,达到一个性能和安全性的平衡点就好啦,开心就好。
    nbndco
        17
    nbndco  
       2016-01-29 11:09:33 +08:00
    公有算法的安全性体现在理论本身上( RSA 到今天依然是安全的,不要提任何实现的漏洞,那和算法无关),私有算法的安全性体现在成本上。说白了,私有算法的安全就是因为你不值得别人花钱花时间去破解,理论本身基本是没法保证的(因为没有经过大规模的验证和破解)。
    所以我很难想象什么情况下私有算法会真正的更安全。
    毕竟如果没人对你的数据那么感兴趣你随便怎么加密都不会有人破解的。
    mcone
        18
    mcone  
       2016-01-29 11:52:09 +08:00
    楼主真的挖得一手好坑, 写过理论密码学 paper ,但是只发了水会的渣的来说几句

    (1) 不公开加密算法,当然相对更加安全。但是,如果一旦你的加密算法被人“猜”出来了呢?
    (2) 目前所有理论密码学论文,都是基于两点:加密算法已知 + 除了所攻击部分,其他部分均被攻击者掌握。 好好理解下这两点,可以帮你理解“公开算法”的鲁棒性与安全性。当然,一些没有发在论文里的“私有算法”,做到以上两点也是很可能的。
    (3) 楼主提到的“公开算法”,是一个工程向的东西,并不等于上面说的论文中提出的、完全公开算法,具体不解释。不懂的话可参见心脏流血事件……

    综上,楼主的提问方式就是知乎式的挖坑,一个大坑。

    继续讨论下去就是扯皮和骗金币罢了
    Bryan0Z
        19
    Bryan0Z  
       2016-01-29 12:25:54 +08:00 via Android
    @mcone 最多骗铜币,哪有金币
    liwei
        20
    liwei  
       2016-01-29 12:48:05 +08:00
    我记得有句话(大意)是说:”永远不要自己设计加密算法,除非你是 djb “
    louk78
        21
    louk78  
       2016-01-29 13:46:56 +08:00
    公开算法安全性不在于算法本身,而在于 KEY ,私有算法安全性汪汪在于算法本身
    lightening
        22
    lightening  
       2016-01-29 18:20:37 +08:00
    @nbndco 比如 RSA 的所有 contributor 当年组成一个小组开发了 RSA ,而且决定不公开 RSA 算法?
    nbndco
        23
    nbndco  
       2016-01-29 18:53:57 +08:00
    @lightening 问题在于在这种情况下你怎么知道 RSA 和我刚刚上厕所的时候想出来的 RSB 是不是一样安全?
    公开算法的安全本来就体现在公开本身上,换言之,这是由所有人共同验证过的安全的方法。
    lightening
        24
    lightening  
       2016-01-29 19:15:34 +08:00
    @nbndco

    我不知道 RSA 和 RSB 哪个更安全啊。所以 RSA 比 RSB 安全是完全可能的, RSB 比 RSA 安全也是完全可能的。

    “公开算法的安全本来就体现在公开本身上,换言之,这是由所有人共同验证过的安全的方法。”
    不是。很多人验证提升了算法安全的概率而已,不能保证算法是安全的。
    nbndco
        25
    nbndco  
       2016-01-29 20:15:53 +08:00
    @lightening
    如果你秉持安全性的不可知论那又何必要在关心有哪些加密算法呢?反正这世上算法都没差。
    echo1937
        26
    echo1937  
       2016-01-29 20:28:03 +08:00
    我们看的书都不一样吗?

    现代密码学和经典密码学的区别在于,加密的效果不再依靠算法的保密来实现。

    言外之意是现代密码学要求,即使你的加密算法被公开了,也依然可以保证保密效果。

    这保证即使你的加密仪器,操作人员被敌方获取了,你依然可以通过更换密钥来实现加密安全,


    所以私有加密算法和公开加密算法谁安全就是个伪命题,
    既然你的加密系统本就不靠算法保密性活着,那你为什么要保密你的算法,
    商业利益要靠著作权法,专利法来保护。
    lightening
        27
    lightening  
       2016-01-29 20:42:09 +08:00
    @nbndco 可是作者(们)自己如果有足够的能力,是可以知道自己的算法比公共的好的。他们可以使用自己开发的算法。
    lightening
        28
    lightening  
       2016-01-29 20:43:23 +08:00
    @echo1937 加密算法在设计时不依赖算法的保密实现不假,但这不意味着一定要真的公开算法。
    nbndco
        29
    nbndco  
       2016-01-29 21:36:47 +08:00
    @lightening 其实事实上是不存在一个比公共算法更好的私有算法的,光是实现上的优化就不是私有算法能够比得了的。
    不过你要是一定要说理论,我只能说理论上当然有可能有人设计出一个比公开算法更好的算法,还写出了一个更高效的实现。
    不过又回到老问题,如果只有你自己,你自己觉得什么安全高效就用什么都是无所谓的,关键问题在于如果你如何让别人相信你的那个闭源的二进制包是真正安全的。
    RSA 如果当年没有公开,那现在根本不会有人用唯一一个公司发表的 RSA 二进制包来进行加密。
    ipconfiger
        30
    ipconfiger  
       2016-01-29 22:24:57 +08:00
    私有算法更容易被社会工程学攻破, 比如当年的恩尼格玛密码机
    lightening
        31
    lightening  
       2016-01-29 23:37:00 +08:00
    @nbndco

    事实上的问题是,开源软件所获得的关注并不如你想像的大。 OpenSSL 的 heartbleed 漏洞好几年才会有人发现呢。实际上用开源软件的人中极少数会真的去自己核对算法,确认是否存在漏洞。

    “ Given enough eye balls, all bugs are shallow ”, but how many eye balls are enough?

    当然,如我我现在要用一个算法来加密,我会用知名的公开算法。但是如我我是一个情报机构,从事机密工作,并且手下有一群足够好的信息安全专家,很可能会选择自己开发加密算法来自己用。使用公开算法会有 0day 漏洞的风险。也可能有人发现了公开算法的漏洞不发表,而利用漏洞攻击。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2558 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 01:31 · PVG 09:31 · LAX 17:31 · JFK 20:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.