密码学基础知识
一、安全原则
信息安全三要素(CIA):机密性(confidential)、完整性(integrality)、可用性(availability)
- 机密性
机密性是指保证信息不被非授权访问,即使非授权用户得到信息也无法知晓信息内容,因而不能使用。他的任务是确保信息不会被未授权用户访问,通常是通过访问控制阻止非授权用户获得机密信息,通过加密变换阻止非授权用户获知信息内容。
- 完整性
完整性是指维护信息的一致性,即信息在生成、传输、存储和使用过程中不应该发生人为或非人为的非授权篡改。信息的完整性包括两个方面:1.数据完整性:数据没有被(未授权)篡改或者损坏; 2.系统完整性:系统未被非法操纵,按既定的目标运行。
- 可用性
可用性是指保障信息资源随时可提供服务的能力特性,即授权用户可根据需要可以随时访问所需信息。可用性是信息资源服务功能和性能可靠性的度量,涉及到物理、网络、系统、数据、应用和用户等多方面的因素,是对信息网络总体可靠性的要求。
二、密码学组件知识
如果把密码体系比作一栋积木搭建的房子,里面的房间、家具、装饰等就是各种基本构成组件了,它们包括:对称密码、公钥密码、单向散列函数、消息认证码、数字签名以及伪随机数生成器。
任何密码体系都可被拆分成各种密码组件,对于密码体系的攻击也可以从 密码组件 和 密码体系本身来进行。
1、对称密码算法
加密和解密密钥相同,加密强度高、速度快;密钥管理是最大的问题(要满足保密性、唯一性);
常见的对称密码算法有:DES(不安全不使推荐)、三重DES(在DES的基础上增长了密钥长度)、AES(在用)、IDEA (国际数据加密算法)。
1.1 分组密码
分组密码:在密码学中,分组加密(英语:Block cipher),又称分块加密或块密码,是一种对称密钥算法。它将明文分成多个等长的模块(block),使用确定的算法和对称密钥对每组分别加密解密。分组加密是极其重要的加密协议组成,其中典型的如AES和3DES作为美国政府核定的标准加密算法,应用领域从电子邮件加密到银行交易转帐,非常广泛。DES、AES都属于分组密码。
ECB模式容易被攻击,不推荐使用。
2、公钥密码算法
公钥密码算法 又称 非对称密码算法,加密和解密密钥不同,通常是 公钥加密、私钥解密(公钥默认公开、私钥保密),常用于对称加密过程中密钥的传递。
常见的公钥密码算法有:RSA、Elgamal、背包算法、Rabin、Diffie-Hellman、ECC(椭圆曲线加密算法),使用最广泛的是RSA算法(推荐使用密钥长度大于768的,常见密钥长度1024、2048、4096)。
3、单向散列函数
单向散列函数(也叫Hash算法、消息摘要算法、散列算法、杂凑算法),输入不同长度的消息,生成固定长度的摘要值,通过前后对比摘要值来判断消息是否有被篡改(但不能实现身份的认证),具有单向性的特点(消息不可被解密回明文)。
常见单向散列函数有:
- MD4,可被爆破、不推荐使用;
- MD5,强抗碰撞性已被攻破,彩虹表,不推荐使用;
- SHA-1,可被爆破、不推荐使用;
- SHA-2,包含 SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224、SHA-512/256;
- SHA-3,包含 SHA3-224、SHA3-256、SHA3-384、SHA3-512。
应用场景:
- 文件完整性保护,通过Hash值检查软件指纹、判断是否被篡改;
- 密码保护,不直接记录密码本身、记录加盐的密码hash值;
- 数字签名,对消息的Hash值进行签名;
- 消息认证码(HMAC),Hash(消息,密钥),用于防止消息被篡改;
- 伪随机数生成器;
- 一次性口令。
4、消息认证码(Message Authentication Code)
消息认证码(Message Authentication Code)是一种确认完整性并进行认证的技术(消息是否被篡改、发送者身份是否被伪装)。
输入 消息 + 双方共享的密钥,输出 固定长度的 MAC 值,通过比对 MAC 来完成消息完整性和认证;由于发送者和接收者共享相同的密钥,因此会产生无法向第三方证明以及无法防止否认的问题。
常见的一种实现方法是HAMC(Hash-based Message Authentication Code),HMAC(Message,Key);此外还有使用分组密码来实现的(AES CBC模式)。
常见应用场景:
- SWIFT
- IPsec
- SSL/TLS
5、数字签名
使用非对称加密算法实现数字签名:消息发送者使用自己的私钥加密、消息接收者使用消息发送者的公钥解密验证,用于识别篡改和伪装、防止否认。 和公钥加密是刚好相反的过程;例如在RSA算法中:
-
公钥加密:公钥加密、私钥解密
-
数字签名:私钥签名(加密)、公钥验签(解密)
实现方法: -
直接对消息进行签名
-
对消息的散列值进行签名(较为常见的一种)
应用场景:
- 消息发布,加上发布者的签名以证明消息的真实性;
- 软件下载,证明其来自合法的渠道(配合单向散列函数,验证消息的完整性);
- 公钥证书
- SSL/TLS
6、公钥基础设施(PKI)
Referer:《信息安全技术公钥基础设施PKI 系统安全技术要求》
要保证所使用的数字证书是合法的,有个前提就是 保持公钥是合法的(没有被篡改和伪造),那么就要对该公钥进行签名、对为公钥进行签名的公钥进行签名、、、、、 需要构建一个可信的数字签名链条,就引入了PKI(Public Key Infrastructure)公钥基础设施。
证书的作用:对公钥进行认证(对公钥进行数字签名),证明该公钥是来自可信的公钥所有者。
PKI的组成:
- 用户:使用PKI的实体(人/服务)
- 认证机构(CA,Certification Authority):颁发证书
- 仓库:保存证书的数据库
6.1 PGP中的信任网
不依赖特定的证书机构,通过对用户对每个公钥进行互相签名从而建立起一个信任网络
7、密码协议
IPsec、SSL
IPsec:网络层,站到站通信
SSL:应用层和传输层,端到站通信 ,TLS 1.2/1.3
二、密码组件的应用
1、SSL/TLS
SSL/TLS是一种安全的密码协议,可以承载HTTP/SMTP/POP3/FTP等通信协议,在它们上面“套一层”安全协议,可以解决如下问题:
- 机密性——对称密码算法
- 完整性——消息认证码(HMAC)
- 认证——数字签名
本文来自博客园,作者:小丸子1111,转载请注明原文链接:https://www.cnblogs.com/ffx1/p/17490195.html