范学雷,前 Oracle 首席软件工程师,Java SE 安全组的成员,OpenJDK 安全评审成员,是 Java SE 安全的主要推动者和贡献者之一,也是Java语言平台的设计实现者之一。极客时间《代码精进之路》专栏作者。
他在密码学应用领域工作二十余年,日常工作包括关注信息安全威胁与技术进展,参与信息安全领域国际合作,制定与实现Java安全规范,提升Java SE生态安全水准,促进Java技术的普及与运用等。
如果2020年可以重启,提供在线会议服务的龙头企业Zoom最想做的,一定是在2020年之前就聘用密码学领域的专家,提高研发人员的密码学水平,为什么?
在2020年3月末,研究者公开了Zoom产品的重大安全漏洞,Zoom使用了一种并不安全的加密模式:ECB加密模式,而这种加密模式的安全问题早已经暴露多年。因为算法失当这个“小问题”,Zoom自身的品牌和信誉受到了极大伤害,给了竞争者充分的机会。
不可否认,密码技术是信息网络安全的基础,也是核心。无论是系统开发还是App开发,只要存在网络通信,信息就要加密,防止被截取和篡改。然而,即便大家意识到信息安全的重要性,清楚密码学的意义和价值,能够灵活使用不同密码算法的研发人员还很少;懂得密码学的安全领域专家更少;能够跟得上密码学发展进程的研发人员更是少得可怜。
在信息安全市场上,人才的需求和供给之间有一个巨大缺口,而且这个缺口还没有停止扩张。对研发人员来说,安全领域更是有着广阔的发展空间,很多技术人也开始向安全领域转型。
可学好用好密码学并不容易,它是一门需要深度积累的领域,且不说它的知识本身很庞杂,在实际应用层面,更是有很多“坑坑洼洼”。所以,如果在学习的过程中,有经验丰富的专家指点,学习起来会更加简单高效。
因此,我们邀请了范学雷老师,他会通过这门课,帮你厘清密码学里的复杂概念,给出不同场景下,密码技术的选择和使用注意事项,尽可能帮你规避掉密码学常见的“坑”,让你真正地学会、用好密码学。
本专栏分为四个模块。
模块一:课前必读
在正式开始密码学的学习之前,我们会先探讨一些问题:密码学是什么?学习密码学有什么用?通过讨论,你会理解信息安全的基本问题和需求,明确学习密码学的意义,为你的学习之路奠定一个良好的基础。
模块二:学会使用哈希函数
在这个部分,我们会讨论什么是单向散列函数、怎么判断和选择它的安全强度、如何根据性能和实际需求来选择哈希算法,以及有哪些常见的错误用法。单向散列函数是密码学的基础,扎扎实实地掌握了这部分内容,能够帮助我们建立起缜密的密码学思维方式。
模块三:学会使用加密算法
在这个部分,我们会讨论加密算法的相关知识,比如说,什么是对称密钥、如何选择合适的对称密钥、加密算法的安全陷阱有哪些、ECB模式为什么不安全等等。你不用担心这部分知识枯燥难学,我们会把重点放在各种密码技术的适用场景和局限性上。
最后,我们一起去看看密码学前沿技术的发展,感受密码学的魅力,学习应对未来的变局。
模块四:案例分析
在这部分,我们会通过一个综合案例,带你分析如何组合、搭配不同的密码技术,实现信息安全,也就是把密码学用起来,解决实际问题,将学到的知识融会贯通。