密码学涵盖了认证、数字签名以及更多基本的安全功能。
密码学涉及领域及其宽广,包括计算机安全、高等数学、经济学、量子物理学、民法和刑法、统计学、芯片设计、软件优化、政治、用户界面设计等。
密码学本身没有价值,必须作为一个系统的一部分,以起到相应的作用。虽然密码学只是整个安全系统中的一小部分,确实非常关键的一部分。
密码学需要能够提供系统的访问控制功能。即使系统存在其他脆弱性,让密码系统良好的运作也是很重要的,不同的脆弱性对不同的攻击者有不同的用处。
木桶原理
每个安全系统的安全性都取决于它最脆弱的环节。每一个安全系统都是有很多部分组成的,最脆弱的一部分往往都会先断开,而其他坚固性也就不重要了。
为了提高系统的安全性我们必须提高最脆弱环节的安全性。同时每个环节都有很多子环节,组成了一个攻击树(attack tree)。通常我们会分析每个环节并对每个环节的子环节进行列举。
每个环节的强度都取决于攻击者的能力工具和对系统的访问哪个环节被攻击都会造成其他环节的瓦解,最脆弱的环节是由具体情况而定的。
良好的安全性总是防护、检测和响应的结合体。密码学的作用属于防护部分防护的工作必须做好以确保检测和响应部分不会应接不暇。
加密是密码学最初的目的。
加密一般框架
在密码学方面首次提到 Alice 和 Bob 是在Rivest、Shamir和Adleman 1978 年的文章“获得数字签名和公钥密码系统的方法”中。他们写道,“对于我们的场景,我们假设 A 和 B(也称为 Alice 和 Bob)是公钥密码系统的两个用户”。
Alice 希望与 Bob 进行通信,但 Eve 可以在信道上进行窃听。
采用通用加密算法可以对 Alice 向 Bob 传送的消息进行加密,从而无法被Eve获取。
-
Alice 和 Bob 协商一个密钥Ke,必须采用 Eve 无法接听的行动来协商这个密钥。
-
传输前,Alice 用某一个加密函数加密这个消息,加密函数记为:E(Ke,m),加密结果称为:密文,原始信息称为明文。
-
Alice 将密文 c:=E(Ke,m) 发送给 Bob。
-
Bob 采用解密函数 D(Ke,m) 来解密密文,得到原始信息。
Kerckhoffs准则认为,一个安全保护系统的安全性不是建立在它的算法对于对手来说是保密的,而是应该建立在它所选择的密钥对于对手来说是保密的。
1、算法公开。算法应当经得起公开的检验。
2、Open Cryptographic Design
如果体制的安全依赖于算法的保密性,那么代码反向工程将会成为安全性的极大威胁
-
即使非数学上不可破解,系统也应在实质(实用)程度上无法破解。
-
系统内不应含任何机密物,即使落入敌人手中也不会造成困扰。
-
密钥必须易于沟通和记忆,而无需写下,且双方可以很容易的改变密钥。
-
系统应可以用于电讯。
-
系统应可以携带,不应需要两个人或两个人以上才能使用(应只要一个人就能使用)。
-
系统应容易使用,不致让使用者的脑力过分操劳,也无须记得长串的规则。
Eve 在窃听时,也可以对信息进行篡改,破坏信息的完整性。
-
Alice 和 Bob都知道一个密钥,密钥记为Ka。
-
Alice 发送消息 m 时,计算消息认证码(message authentication code)MAC。MAC是认证消息的完整性的技术。
-
Alice 计算 a:=h(Ka,m) 得到 MAC,h 是 MAC 函数,Ka 是加密函数。
若 Eve 将 m 修改成 m',Bob 会计算 h(Ka,m),并与 A 进行比较,并推测出数据已被篡改。
如果 Eve 不知道密钥,Eve 可以通过监听得到 m及有效 MAC。认证总是与消息顺序进行编号进行结合使用。
公钥加密使用一个必须对未经授权的用户保密的私钥和一个可以对任何人公开的公钥。
用公钥加密的数据只能用私钥解密,而用私钥签名的数据只能用公钥验证。
公钥加密算法使用固定的缓冲区大小,而私钥加密算法使用长度可变的缓冲区。
-
Bob 采用特殊算法生成一对密钥 (SBob,PBob),其中 SBob 为私钥,PBob 为公钥。
-
Bob 公开公钥 PBob。
-
Alice 获取 Bob 的公钥 PBob。
-
Alice 利用公钥 PBob 加密消息m,发送给 Bob。
-
Bob 利用私钥 SBob 解密,得到消息 m。
Bob 只需要发布一个任何人都可以看到的公钥,Alice 也可以用相同的方法公布他的公钥,他们就可以建立安全的连接。
数字签名(又称公钥数字签名)是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。它是一种类似写在纸上的普通的物理签名,但是在使用了公钥加密领域的技术来实现的,用于鉴别数字信息的方法。一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证。数字签名是非对称密钥加密技术与数字摘要技术的应用。
-
Alice 首先使用密钥生成算法,生成一个 (SAlice,PAlice)公钥/私钥对,并公开公钥 PAlice。
-
使用私钥生成钱敏 s:=∂(SAlice,m) 。将 m 和 s 一同发出去。
-
Bob 利用公钥验证算法 v:=∂(PAlice,m,s) 验证签名。
-
验证消息来源于 Alice。
公钥基础设施是一个包括硬件、软件、人员、策略和规程的集合,用来实现基于公钥密码体制的密钥和证书的产生、管理、存储、分发和撤销等功能。
PKI 体系是计算机软硬件、权威机构及应用系统的结合。它为实施电子商务、电子政务、办公自动化等提供了基本的安全服务,从而使那些彼此不认识或距离很远的用户能通过信任链安全地交流。
PKI 作为一组在分布式计算系统中利用公钥技术和 X.509 证书所提供的安全服务,企业或组织可利用相关产品建立安全域,并在其中发布密钥和证书。
在安全域内,PKI 管理加密密钥和证书的发布,并提供诸如密钥管理(包括 密钥更新,密钥恢复和密钥委托等)、证书管理(包括证书产生和撤销等)和策略管理等。
PKI 可以解决:让 Alice 相信此公钥来源于 Bob。
在 PKI 中每个参与方只需要让 CA 的给他的公钥颁发证书,并知道 CA 的公钥验证其他参与方的证书。
PKI系统组成
一个典型的PKI系统包括PKI策略、软硬件系统、证书机构CA、注册机构RA、证书发布系统和PKI应用等。
PKI安全策略
建立和定义了一个组织信息安全方面的指导方针,同时也定义了密码系统使用的处理方法和原则。它包括一个组织怎样处理密钥和有价值的信息,根据风险的级别定义安全控制的级别。
证书机构CA
证书机构CA是PKI的信任基础,它管理公钥的整个生命周期,其作用包括:发放证书、规定证书的有效期和通过发布证书废除列表(CRL)确保必要时可以废除证书。
注册机构RA
注册机构RA提供用户和CA之间的一个接口,它获取并认证用户的身份,向CA提出证书请求。它主要完成收集用户信息和确认用户身份的功能。这里指的用户,是指将要向认证中心(即CA)申请数字证书的客户,可以是个人,也可以是集团或团体、某政府机构等。
注册管理一般由一个独立的注册机构(即RA)来承担。它接受用户的注册申请,审查用户的申请资格,并决定是否同意CA给其签发数字证书。注册机构并不给用户签发证书,而只是对用户进行资格审查。
因此,RA可以设置在直接面对客户的业务部门,如银行的营业部、机构认识部门等。当然,对于一个规模较小的PKI应用系统来说,可把注册管理的职能由认证中心CA来完成,而不设立独立运行的RA。
但这并不是取消了PKI的注册功能,而只是将其作为CA的一项功能而已。PKI国际标准推荐由一个独立的RA来完成注册管理的任务,可以增强应用系统的安全。
证书发布系统
证书发布系统负责证书的发放,如可以通过用户自己,或是通过目录服务器发放。目录服务器可以是一个组织中现存的,也可以是PKI方案中提供的。
PKI的应用
PKI的应用非常广泛,包括应用在web服务器和浏览器之间的通信、电子邮件、电子数据交换(EDI)、在Internet上的***交易和虚拟私有网(VPN)等。
通常来说,CA是证书的签发机构,它是PKI的核心。构建密码服务系统的核心内容是如何实现密钥管理。公钥体制涉及一对密钥(即私钥和公钥),私钥只由用户独立掌握,无须在网上传输,而公钥则是公开的,需要在网上传送,故公钥体制的密钥管理主要是针对公钥的管理问题,较好的方案是数字证书机制。
唯密文攻击(ciphertext-only attack)
加密系统仍然受到纯密文攻击,示例包括:
-
微软的PPTP 虚拟专用网络软件的早期版本对发送方和接收方使用相同的R**密钥(后来的版本解决了这个问题,但可能还有其他问题)。在任何情况下,像 R** 这样的流密码使用相同的密钥两次使用,它都容易受到纯密文攻击。
-
Wi-Fi的第一个安全协议Wi-Fi 的有线等效保密(WEP)被证明容易受到多种攻击,其中大多数是纯密文攻击。
-
一些现代密码设计后来被证明可能会受到纯密文攻击。
仅知已加密文字(即密文)的情况下进行穷举攻击。
只知道密文,例如,Alice 向 Bob发送密文,攻击中得到的只有密文。
已知明文攻击(Known plaintext attack)
得到了一些给定的明文和对应的密文,在这里可以是的任意非空子集。
即使不知道完整的铭文,也经常可以知道他的一部分,电子邮件的开头一般都是可以预测的,或者结尾有一个固定的签名IP包头也是非常容易预测的,利用这些可预测的数据可以获得一部分英文,并通过明文和密文的对照进行已知明文攻击。
在已知明文攻击期间,攻击者可以访问密文及其相应的明文。他的目标是猜测密钥(或多个密钥)或开发一种算法,使他能够解密任何进一步的消息。
这给了攻击者更大的可能性来破解密码,而不是仅仅通过执行密文攻击。但是,他无法主动提供将由密码处理的定制数据或密钥。
这种类型的攻击可以使用简单的密码而不是针对现代密码。
选择明文攻击
攻击者除了知道加密算法外,还可以选定明文消息,并可以知道对应的加密得到的密文,即知道选择的明文和加密的密文。
-
离线攻击:攻击者在得到密文之前要做好所有想要加密的明文消息。
-
在线攻击:根据得到的密文选择新的明文。
这种类型的攻击比“已知明文攻击”更强大。
选择密文攻击
攻击者可以选择明文也可以选择密文。
易程度 由大到小
选择密文攻击 > 已知明文攻击 > 已知明文攻击 > 唯密文攻击
生日攻击
如果一个房间里有 23 个人,其中两个人生日相同的概率超过 50%,因为有365个可能的生日。
生日攻击是一种密码学攻击手段,所利用的是概率论中生日问题的数学原理。这种攻击手段可用于滥用两个或多个集团之间的通信。此攻击依赖于在随机攻击中的高碰撞概率和固定置换次数(鸽巢原理)。使用生日攻击,攻击者可在中找到散列函数碰撞,为原像抗性安全性。
生日攻击是利用概率论中的生日问题,找到冲突的Hash值,伪造报文,使身份验证算法失效。一般指对hash的攻击,例如常见的MD5、SHA1,或是字符串hash。
中途相遇攻击(Meet-in-the-middle attack)
中间相遇(MitM)攻击是一种密码分析攻击,攻击者使用某种空间或时间权衡来帮助攻击。
中途相遇攻击的目标是块密码加密功能。入侵者使用蛮力技术来解块密码的纯文本和密文。然后,根据不同的密钥来加密纯文本以获取中间密文(只由一个密钥加密的文本)。同时,根据不同的密钥来解密密文,寻求与经加密纯文本所取得的密文相同的中间密文块。如果与中间密文相匹配,极有可能的是,所使用的加密纯文本的密钥和用于解密密文的密钥是加密密码所使用的两个密钥。
中间相遇攻击通常用于解码多种数据加密标准 ( DES )技术。
例如,双 DES 使用两个加密密钥将其明文输入转换为密文输出。这种加密方法使用它的两个唯一密钥来执行两个加密阶段。在这种情况下,中间相遇攻击的目标是使用中间值——加密阶段之间的值——来解决所有使用的加密密钥;对于双 DES,它是两个。
首次创建 DES 时,专家认为较长的密钥长度会增加暴力攻击的难度,因为解密加密过程所需的熵(或加密过程中应用随机性的程度)将呈指数级增长。例如,单个 DES 的熵为 256。当两个DES组合使用形成双重DES加密时,熵为2112。这并不意味着双 DES 的强度是两倍,而是双 DES 的强度是 256倍。这个数字是指黑客为了产生与原始双 DES 相同的密文而必须尝试的可能加密密钥的数量。
然而,尽管有最初的假设,但事实证明,DES 的多个实例(例如双 DES)容易受到中间相遇攻击。这种攻击方法使黑客能够通过显着降低排列的熵来绕过较长的密钥。
除此之外,Tide安全团队还有更多丰富的Wiki知识体系:
红蓝对抗、移动安全、应急响应、代码审计、工控安全、物联网安全等9个技术wiki,目前共计对外撰文累计620篇。
链接地址:https://www.yuque.com/tidesec