程序员学习密码学是否有前途?

论坛 期权论坛 期权     
匿名用户   2018-9-24 00:35   40021   8
提示: 作者被禁止或删除 内容自动屏蔽
分享到 :
0 人收藏

8 个回复

倒序浏览
2#
于江山  2级吧友 | 2018-9-24 00:35:32 发帖IP地址来自
------我很少回答问题。这次因为@王国钦的一句
“更何况搞密码学的那帮人都是天才”。
就简单回答一下吧。
问题:程序员学习密码学是否有前途?
答案:有。
多几个字的答案:cyber security是一直存在的问题,而懂得信息安全的程序员少之又少。在欧洲,如果你懂安全又是好程序员的话,年薪55k英镑起(具体可以参考FB和Google的招聘信息)。希望这样算是有一点前途。其他需求量比较大的程序员是懂machine learning 和AI的。

再多几个字:只是知道密码学的数学原理和算法是不够的,还要知道信息安全其他方面,推荐剑桥大学信息安全教授Ross Anderson的secure engineering, 他个人网站有免费电子版。这本书就是讲故事,讲基础,没什么难度,适合简单理解信息安全是怎么回事。基本密码学算法和安全协议看看 Bruce Schneier 写的书,简单易懂,适合入门。另外斯坦福大学的教授 Dan Boneh有一些密码学视频教程,简单易懂,适合入门。高级的密码学书籍和算法需要很强的数学功底,如果你只是为了当一个对安全有些理解的程序员的话,就没必要看了。
---更新---(说的有点乱,没时间斟酌自己打的每一个字,大家凑活看吧。)

偶尔回来看到有些人说密码学现在的科研脱离工业界需求,也没有什么公司愿意投入。。。我只能说这样说就有些片面了。我先不说后量子安全系统是不是实用,也不说从国家安全战略角度出发后量子安全的重要性,咱们就扯扯现在一些很实用的前沿科研:

-前几天和Bristol的 Prof. N. Smart聊天,他说他们的MPC密码学组在做卫星相关的项目,比如如何在两个国家(e.g. 中美)都不想让对方知道自己卫星位置的情况下,避免双方卫星发生意外碰撞。这就是MPC可以解决的。很多其他的例子可以参考Estonia这个神奇的国家的各种密码学应用。
- 斯坦福的物联网研究组,密码学方面由Prof Dan Boneh来研究。做的课题都是很实用的。
- 2014年有一个安全电子投票项目,目前已经被澳大利亚维多利亚州用来进行选举。我碰巧和这个项目的几个负责人都还算比较熟,也比较了解。这里面密码学的东西用的不少,而去电子投票是一个蛮难的密码学问题。图灵奖获得者Prof. Ron. Rivest 有一些文章讨论的很多,感兴趣的自己搜。
- 我附近一些人在做攻击,然后把一些顶级品牌的汽车攻击的七七八八差不多了。(主要是破解就是遥控钥匙。)现在拿了挺多项目的,主要就是帮助这些公司提升产品安全。
- 前几天在布萊切利公园开会,遇到UCL的一个教授,他问我想不想去公司工作,有一个伦敦公司招懂密码学的java程序员但是找不到。。。
- Royal Holloway 的Prof. Kenny Peterson,微软剑桥研究所,还有剑桥安全组都在做TLS安全,我就不科普什么是TLS了,也不科普这货有多重要有多少漏洞等等。。。

再给点其他数据。
- 英国National Security Strategy 在2011年建立了一个5年安全项目去保护英国企业,投入接近9亿英镑。2016年,英国政府决定在建立一个5年计划,投资额增加到19亿英镑。并且要求企业聘用安全专家去保护自己的数据。
- Cisco研究报告称目前全球有超过一百万的工作需要做安全的人才,在2019年会有6百万的职位,而且预计将有一百五十万的职位招不到人,因为没有那么多搞安全的。
- 英国BT今年发布消息说预计招聘900个搞安全的

当然了,搞安全的不一定都精通密码学,但是大部分搞安全的还是需要对密码学有些了解的。

P.S. 密码学不是所有算法都超级慢。。。比如AES有些实现比memory lookup还快。。。太具体我就不说了,如果懒得真正去读论文理解的话,那我也没必要在这科普。。。
3#
王国钦  4级常客 | 2018-9-24 00:35:33 发帖IP地址来自
与其拿这么大一个问题在这里找前辈问、得到一个或模棱两可或简单笼统的答案,不如找一本密码学入门书籍,花上两三天时间认认真真地看一遍,了解一下密码学的前生今世、基本概念,以及它在当今IT技术界以及相关领域的应用情况,到时自然会对这个问题有比较深刻的理解的,也不会再纠结于要不要学这么浅显的问题了。

至于密码学的书籍,除了教学用书以外,市面上大部分的书都还是由浅入深、循循善诱的,零基础的也可以看懂并且看得津津有味。如果你有一些编程或是IT相关基础的话,那更会看着书中的例子恍然大悟,更何况搞密码学的那帮人都是天才,光看故事就停不下来了。另外你如果还有一点点数学技术的话,就会发现,数学之美和工程技术居然可以结合得这么好。

至于我对于这个问题的具体表态么。。。自从高中时候不小心看了一本密码学的书,之后根本就是欲罢不能好吧。读书的时候大部分时间在“天才果然是天才我这辈子是赶不上了”和“连我都早看出来了这帮傻子都在干什么”之间摇摆,写代码的时候更是以可以把某些方法(早期)或是某些思想(晚期)融入程序里去为荣。(虽说实际上并没有什么卵用。)
4#
真真  3级会员 | 2018-9-24 00:35:34 发帖IP地址来自

谢邀,我从以下三个方面来回答这个问题:

1.想清楚自己为什么学习密码学

做为一个程序员学习密码学的目的是什么?是工作的过程中发现需要用到密码学知识才能完成工作,或者是想转密码算法工程师,或者只是自己感兴趣那?如果是这些原因都应该学习。

2.信息安全和密码学的关系

我认为一个懂信息安全的程序员还是很有前途的,大部分程序员只是会编程就可以了。但是由于没有信息安全知识,写出来的程序存在各种安全问题。如果你懂信息安全,并在编程的过程中利用自己的安全知识,写出漏洞更少、更安全的程序,那你已经与普通程序员拉开距离了。再说一下信息安全与密码学的关系,密码只是信息安全中非常非常小的一部分,同时也是信息安全的基石。对于程序员来说除了密码算法工程师,一般都不太会用到密码知识(个人理解,木有做过开发,可纠正)。

3.作为一个计算机专业学生找密码方向工作的经历

我虽然学习的是计算机专业,但是由于不爱编程,上学期间又学习了一些密码知识,找工作便从密码行业入手。密码属于小众行业,找工作时发现可选择的范围非常小,目前在一家普密单位就职。入职后就开始对自己未来的发展深深的担忧,因为以后跳槽也只能在那几家竞争单位跳,目前已经调整自己的职业方向为信息安全了。所以把密码当成兴趣或者扩展知识面都可以,千万不要把它当成你职业发展的重要筹码。

5#
捉木马的蓝胖纸  3级会员 | 2018-9-24 00:35:35 发帖IP地址来自
哎说下自己的理解求指正。密码学毕竟只是cyber security的一小部分……吧?好比建一个安全屋,这就是门上的一把锁。

完全暴力破解现代的密码已经不可能。要依靠side channel泄露的信息,埋藏着的Trojan去实现攻击。同时现有系统之庞大是不可能避免漏洞的考虑到软硬件一起更加不可能_(:зゝ∠)_,于是可以利用一些比如没抹掉的测试接口进行攻击。除了试图获取控制权限或者偷信息之外还有reverse engineering,伪造仿制产品篡改功流控劫持如何避免来自内部的攻击(分类不严谨互有交叉&才不要提社工呢(⊙o⊙)哼)能等等很多攻击方式。针对这些都有相应的防范措施。

安全领域缺口很大,个人觉得研究密码的已经很多所以就避开了……(逃。
6#
刘洋   | 2018-9-24 00:35:37 发帖IP地址来自
提示: 作者被禁止或删除 内容自动屏蔽
7#
Yorkie   | 2018-9-24 00:35:38 发帖IP地址来自
提示: 作者被禁止或删除 内容自动屏蔽
8#
龖燚  3级会员 | 2018-9-24 00:35:39 发帖IP地址来自
不用学的很深入,比如分析加密算法漏洞之类的,但是起码要知道一些基础概念和应用吧,不然写出来的都是什么用md5(time())这样的东西拿来做密码找回token甚至生成加密key...
9#
风口的猪  3级会员 | 2018-9-24 00:35:40 发帖IP地址来自
导师是做密码学的,我虽然不做,但是老师的课还是要去上的...密码学有很多方向
基础理论:加密,签名认证两大块吧
加密:
对称加密DES,3DES,AES,流密码
非对称加密RSA,椭圆曲线一类
签名认证:
主要是结合一些摘要算法(md5一类)利用公钥体系进行签名
基本理论基本上是做不了工作的,设计出一个加密算法或者摘要算法并且证明其理论上的安全性,难度很大,需要很强的数学知识,另一方面就算弄出来也没什么用,椭圆曲线貌似还是很安全的。(RSA的设计者以及非对称加密体系的提出者均获图灵奖)
协议:光有加密算法往往没啥用。加密的需求往往是在两人之间或者多人之间通讯对话产生的,这个时候要按一定的步骤方法协调多方,协议差不多就是这样一系列的步骤方法吧。最重要的是密钥分配协议。这里面有一些比较有趣的问题,比如说百万富翁问题(两个富翁如何在不知道对方财富的前提下如何知道谁更富,不考虑财富相等并且财富值的上限已知),这里就可以在公钥加密的基础上解决,还有在线的猜硬币问题一类的。
很多人做的工作都在这一块吧(我猜的),如何在现有的加密算法基础之上设计一个协议安全有效的实现自己的意图。或者就是找别人的协议漏洞,再改进协议。比较常见的会看协议是否可以抵抗第三者攻击,重播攻击,明文攻击等。
硬件设计:
这一块简单的说就是怎么算的快。研究的就是某个电路里面有多少个与门,有多少个异或门,有多少延时。看起来蛮无聊的,其实还是很重要的。
数学基础:
密码学是需要数学基础的,最重要的就是有限域,基础数论,然后可能还要抽象代数。不过我没学过,应该不是太容易。
结论:程序员深入学密码意义不大。不如做一点信息安全的事,了解基本的密码知识就可以。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:
帖子:24326
精华:1
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP