密码学与信息安全
密码学(Cryptology)是什么
研究如何对己方信息及信息传递进行保护,如何对敌方信息进行破译的科学
密码编码学(Cryptography):研究如何对信息进行加密
密码分析学(Cryptanalysis):研究如何对加密信息进行解密
密码学与信息安全
密码学是对于信息安全各方面(机密性、完整性、认证性和不可否认性)有关的数学技术的研究
密码学是保障信息安全的核心,但密码学不是提供信息安全的唯一方式,是保护信息安全的主要手段之一
信息安全是密码学研究与发展的目的
密码学的发展
- 古典密码:密码学是一门艺术 1949年之前
密码体制:纸、笔或简单器械实现的 代换 及 置换
典型密码:凯撒密码、单表密码、多表密码、维吉尼亚密码、Hill密码、Playfair密码、Enigma密码机等
特点:加密速度慢,适合对少量数据进行加密
- 传统密码(对称密码):密码学是一门科学 1949年-1976年
1949年Shannon发表了《保密系统的信息理论》,提出信息论,密码学开始科学化。
密码体制:对称密码体制
典型密码:DES、AES、IDEA、RC4、RC5、RC6等
特点:密钥长度短,加密速度快,适合对大量数据进行加密,密钥管理困难
- 现代密码(公钥密码):密码学是一门数学工程 1976年后
1976年,Diffie和Hellman发表《密码学的新方向》,标志着公钥密码体制的诞生(第二次质的飞跃)。 1978年,Rivest、Shamir和Adleman提出了RSA公钥密码体制。
- 现代密码学基本原则
- 柯克霍夫原则:除了密钥之外,即使密码系统的一切均被公开,它仍然应当是安全的。
- 香农箴言:敌人了解系统
密码体制的安全性应该依赖于密钥而不是算法的保密
密码体制:公钥密码体制
典型密码:RSA、ElGamal、ECC、DSA、DH、MD5、SHA-1、SHA-2、SHA-3等
特点:密钥长度长,加密速度慢,密钥管理方便
密码体制的安全性
- 无条件安全:即使敌手拥有无限的计算能力,也不能破译密文或者推断出明文
- 实际安全:
- 可证明安全:破译密码的难度与数学上的某个难题的难度相同
- 计算安全:破译密码的代价大于破译所得的价值或者破译所需的时间大于信息的有效期
个人密码设计的三个前提
- 你的账号、密码大概率会忘记;
- 你的账号密码大概率即将(或已经)被泄露;
- 关于账号密码的记录大概率即将(或已经)丢失;
个人密码设计的三个要求
- 安全性
- 便利性
- 可重复现性
- 安全性
- 密码长度:当前一般的账号密码设置场景下,都会要求密码长度不低于8位;显然,密码长度越长,相对越安全,只不过这里要考虑密码长度过大带来的不便利性问题;
- 组成丰富:主流场景下,会要求字母大小写,数字,符号等多种组成;
- 避免弱密码:一般要求避免123456这类弱口令,类似个人手机号,身份证号,姓名拼音等个人基本信息也需要尽量避免;
- 差异性:要避免不同账号命名的雷同,更要避免不同密码之间的雷同,否则泄露了一个账号密码,就是"全军覆没"的下场了 ;
- 可迭代性:单一密码使用时间越长相对越不安全,加上突发意外的密码泄露事件,密码的可更新的特点,具有充分的必要性;
- 便利性
- 可标识性:即通过密码的部分要素可以快速对应出密码的类别,等级等信息以及该密码对应的账号的部分信息;
- 有规律性:对于大量要管理的密码而言,要想保证不同密码之间的差异性,显然需要有规律的来开发和管理方法,才能达到目的;
- 可重复现性
- 云同步:密码的管理可采用本地纸质化、电子化管理和线性的云同步来协同管理,可有效避免密码的丢失;
- 丢失找回:想要在密码丢失后还能找回,实际上也是回到了"密码的规律性"问题,即密码的设置有一套可重现性的规律,通过账号信息,即可”计算“出对应的密码;
个人密码管理
基于以上的前提和要求,在设计个人密码时,我们需要思考的是,如何实现密码的分级管理、差异化要求和规律性要求,并且要在“安全性”与“便利性”之间寻求一个平衡点。
列举三种常见的密码管理方案:
- 大脑记忆
最常见的密码管理方式
- 安全性:一般比较高,但是如果为了记忆方便,密码组成简单,或多账号密码雷同,安全性会大打折扣
- 便利性:一般比较高,但是如果密码过多,记忆负担会比较大
- 可重复现性:密码越安全(复杂),越容易忘记,可重复现性越差
- 记事本记录
无论记录在纸上还是电脑记事本里,这种方式也很常见。
- 安全性:较低,即使加密或上锁,也很难保证安全
- 便利性:一般比较高,但是如果密码过多,查找起来确实不方便
- 可重复现性:风险在于记录的丢失,需要注意备份
- 密码管理工具(Keepass)
常见的密码管理工具有:Keepass,1Password,LastPass,Dashlane等,这里以Keepass为例。 KeePass 是一款开源的密码管理工具,使用一个加密的数据库保存所有的密码,不仅可以加密保存账号密码,利用自带功能及插件,还可以方便的生成强密码、便捷安全地输入密码等。但外观较为粗糙。
- 安全性:高,数据库主密码只要不泄露,即使数据库文件泄露,也不会造成密码泄露
- 便利性:高,利用插件可以方便地多端同步及自动填充密码
- 可重复现性:风险在于记录的丢失,需要注意备份