加密与解密简述

加密与解密简述

基础理论

密码学的定义

密码学
  • 研究保密通信和信息保密的学科,包括信息保密传输和信息加密存储
  • 密码学包含密码编码学(Cryptography)和密码分析学(Cryptanalyst)两个分支
  • 编码学与分析学相互促进,又相互制约。两者在加强密码分析的安全上相互促进,且两者在实施更为有效的攻击方面也有相互影响
密码编码学

研究如何对信息进行编码,如何实现对信息的隐蔽,是密码学理论的基础,也是波阿米系统设计的基础

密码分析学

研究加密消息的破译或消息的伪造,是检验密码体质安全性的最为直接的手段,只有通过实际密码分析考验的密码体质,才是真正可用的

密码学常用术语

  • 明文(Plaintext)。指待加密的信息。明文可以是文本、图片、二进制数据等
  • 密文(Ciphertext)。指经过加密后的明文。密文通常以文本、二进制数据等形式存在
  • 发送者(Sender)。指发送信息的人
  • 接收者(Receiver)。指接收信息的人
  • 加密(Encryption)。指将明文转换为密文的过程
  • 加密算法(Encryption Algorithm)。指将明文转换为密文的算法
  • 加密密钥(Encryption Key)。通过加密算法进行加密操作时使用的密钥
  • 解密(Decryption)。指将密文转换为明文的过程
  • 解密算法(Decryption Algorithm)。指将密文转换为明文的算法
  • 解密密钥(Decryption Key)。指通过解密算法进行解密操作时使用的密钥
  • 密码分析(Cryptanalysis)。指对加密后的密文进行分析,从而推断出原来的明文或密钥的过程
  • 密码体制。由明文空间、密文空间、密钥空间、加密算法、解密算法五部分组成
  • 密码协议(Cryptographic Protocol)。是指以密码学为基础的消息交换的通信协议,为网络环境中提供各种安全服务。有时又称安全协议
  • 密码系统(Cryptography)。指用于加密和解密的系统

密码学分类

按时间划分
  • 古典密码学。以字符为基本加密单元
  • 现代密码学。以信息块为基本加密单元
按保密内容的算法划分
  • 受限制算法密码学。算法的保密性基于保持算法的秘密。常用于军事一类的应用,算法由专业机构开发、验证,确保其算法的安全性
  • 基于密钥算法密码学。算法的保密性基于对密钥的保密。即基于柯克霍夫原则设计的算法
按照密码体制划分
  • 对称密码体制(Symmetric Cryptosystem)
    • 该密码体制中的加密密钥与解密密钥相同,即加密过程与解密过程使用同一套密钥。又称单钥密码体制或私钥密码体制
    • 在该体制下使用的加密算法被称为 对称加密算法(Symmetric Cipher)。常见的DES、AES算法都是对称加密算法
  • 非对称密码体制(Asymmetric Cryptosystem)
    • 该密码体制中的加密密钥与解密密钥不同,密钥分为公钥与私钥,公钥对外公开,私钥对外保密。又称双钥密码体制或公钥密码体制
    • 在该体制下使用的加密算法被称为 非对称加密算法(Asymmetric Cipher)。例如RSA算法就是对称加密算法
按明文的处理方式划分
  • 分组密码(Block Cipher)。指加密时将明文分成固定长度的组,用同一密钥和算法对每一块加密,输出也是固定长度的密文。分组密码多用于网络加密
  • 流密码(Stream Cipher)。指加密时每次加密一位或一个字节的明文。又称为序列密码。例如RC4

保密通信模型

柯克霍夫原则(Kerckhoffs’Principle)

概述
  • 由柯克霍夫在19世纪提出的密码理论,即数据的安全基于密钥而不是算法的保密。系统的安全性取决于密钥,对密钥进行保密,对算法公开。柯克霍夫原则是现代密码学设计的基本原则,也被称为柯克霍夫假说、公理或定律
  • 信息论始祖香农将其改为“敌人了解系统”,这样的说法称为香农箴言
原则明细
  • 即使非数学上不可破解,系统也应在实质(实用)程度上无法破解
  • 系统内不应含任何机密物,即使泄露也不会造成困扰
  • 密钥必须易于沟通和记忆,而无须写下,且双方可以很容易的改变密钥
  • 系统应可以用于电讯
  • 系统应可以携带,不应需要两个人或两个人以上才能使用,即单人就能使用
  • 系统应容易使用,不致让使用者脑力过分操劳,也无须记得长串的规则

密码体制安全性原则

  • 密码体制的破译所需要的时间和费用超出了现有的资源和能力
  • 密码体制的破译所需要的时间超过了该体制锁保护的信息的有效时间
  • 密码体制的破译锁需要的费用超过了该体制所保护的信息的价值

密码学分析

古典密码

加密方式
  • 位移密码(Transposition Cipher)。即将字符顺序重新排列,又称错位密码
  • 替代密码(Substitution Cipher)。将明文中的字符替换成其它字符,又称置换密码

对称密码体制

流密码
  • 同步流密码
    • 信息发送方和接收方在传递信息时,同步进行加密解密操作,明文与密文一一对应
    • 适用于音频和视频数据提供版权保护
  • 自同步流密码
分组密码
设计原则
安全性
  • 扩散原则。设计的密码应使得密钥的每一位数字影响到密文的多位数字,以防止对密钥进行逐段破译,而且明文的每一位数字也影响密文的多位数字以便隐藏明文数字的统计性
  • 混乱原则。设计的密码应使得密钥和明文及密文之间的信赖关系相当复杂以至于这种信赖性对密码分析者来说是无法利用的
实现方式
  • 软件实现的设计原则
  • 硬件实现的设计原则
分组密码工作模式
  • 电子密码本模式(ECB)。适合加密密钥、随机数等短数据。例如:安全的船体DES密钥
  • 密文链接模式(CBC)。不推荐使用
  • 密文反馈模式(CFB)。可用于检查发现明文密文的篡改
  • 输出反馈模式(OFB)。用于加密冗余性较大的数据,如语言和图像数据
  • 计数器模式(CTR)。适用于各种加密应用

非对称密码体制

RSA

RSA源于整数因子分解问题

DSA

数字签名算法源于离散对数问题

ECC

ECC椭圆曲线加密算法,源于离散对数问题

散列函数

散列函数特性
  • 消息的长度不受限制
  • 对于给定的消息,其散列值的计算是很容易的
  • 如果两个散列值不相同,则者两个散列值的原始输入消息也不相同。此特性使得散列函数具有确定性的结果
  • 散列函数的运算过程是不可逆的。此特性也被称为函数的单向性
  • 对于一个已知的消息及其散列值,要找到另一个消息使其获得相同的散列值是不可能的,这个特性称为抗弱碰撞性。此特性用于防止伪造
  • 任意两个不同的消息的散列值一定不同,这个特性称为抗强碰撞性
常见算法
  • MD(消息摘要算法)
  • SHA(安全散列算法)
  • MAC(消息认证码算法)
使用场景
  • 散列函数广泛用于信息完整性的验证,是数据签名的核心技术

数字签名

  • 签名者任何时候都无法否认自己曾经签发的数字签名
  • 信息接收者能够验证和确认收到的数字签名,但任何人无法伪造信息发送者的数字签名
  • 当收发双方对数字签名的真伪产生争议时,通过仲裁机构(可信赖的第三方)进行仲裁

公钥基础设施

概述
  • 公钥基础设施(Public Key Infrastructure, PKI)。是一个基于X.509的用于创建、分配和撤回证书的模型
  • PKI能够为所有网络应用提供加密和数字签名等密码服务,及所必须要的密钥和证书管理体系
  • PKI技术是信息安全技术的核心,也是电子商务的关键和基础技术
  • PKI由公钥密码技术、数字证书、证书认证中心和关于公钥的安全策略等基本成分共同组成,对密钥和证书进行管理
  • PKI技术涉及对称加密算法、非对称加密算法、消息摘要算法和数字签名等技术
PKI的标准

RSA公司定义了PKCS(Public Key Cryptography Standards,公钥加密标准)

并定义了许多PKI基础组件,例如:数字签名和证书请求格式、IETF(InternetEngineering Task Force,互联网工程任务组)、PKIWG(Public Key Infrastructure Working Group,PKI工作组),定义了一组具有可操作性的公钥基础设施协议PKIX(Public Key Infrastructure Using X.509,公钥基础涉及X.509)

PKCS标准
  • PKCS#1。RSA公钥算法加密和签名机制
  • PKCS#3。DH密钥交换协议
  • PKCS#5。PBE加密标准
  • PKCS#6。公钥证书(X.509证书的扩展格式)标准语法
  • PKCS#7。加密消息语法标准
  • PKCS#8。私钥信息格式
  • PKCS#9。选择属性格式
  • PKCS#10。证书请求语法
  • PKCS#11。密码装置标准接口
  • PKCS#12。个人信息交换语法标准
  • PKCS#13。椭圆曲线密码体制标准
  • PKCS#14。伪随机数生成标准
  • PKCS#15。密码令牌信息格式标准
补充
  • PKCS标准主要用于用户实体通过注册机构(RA)进行证书申请、用户证书更新等过程。当证书作废时,注册机构通过证书中心向目录服务器发布证书撤销列表。上述标准还用于扩展证书内容、数字签名、数字签名验证和定义数字信封格式等。在构建密钥填充方式时,考虑到不同的安全级别,也会选择不同的PKCS标准
  • PKIX作为操作性标准,涉及证书管理协议(Certificate Management Protocol,CMP)、安全多用途邮件拓展(S/MIME)和在线证书状态协议(Online Certificate Status Protocol,OCSP)等
PKI系统的组成
  • 认证中心(Certificate Authority,CA)
    • 认证中心主要由注册服务器、注册机构和认证中心服务器三部分组成
    • 认证中心的主要功能包括:证书发放、证书更新、证书撤销、证书验证
  • 数字证书库(Certificate Repository,CR)
    • 数字证书库用于存储已签发的数字证书及公钥,包括LDAP(Light Direct Access Protocol,轻量级目录访问协议)目录服务器和普通数据库
  • 密钥备份及恢复系统
    • 提供密钥备份与恢复功能。密钥备份需要可信的权威机构来完成,这也是认证机构存在的必要条件
  • 证书作废系统
    • 可以主动将证书作废的系统,当证书存在一定的安全性问题时,即便证书未超过有效期,亦需要作废。PKI通过将证书列入作废证书列表来完成证书作废操作
  • 应用程序接口(Application Programming Interface,API)
    • 提供良好的应用程序接口,提供安全一致、可信的方式与PKI进行交互。支持加密、签名验证等安全服务
数字证书
  • 数字证书是网络用户的身份标表,包含ID、公钥和颁发机构的数字签名等内容
  • 其形式主要由X.509公钥证书、SPKI(Simple Public Key Infrastructure,简单PKI)证书、PGP(Pretty Good Privacy)证书和属性(Attribute)证书。X.509证书较为常见,通常X.509公钥证书也被成为数字证书
  • 目前X.509证书通常由VeriSign、GeoTrust和Thawte三大国际权威认证机构签发

PGP、OpenPGP与GPG

  • PGP
    • 用于数据加密和数字签名的程序,通过PGP可以很容易的对数据文件、邮件进行加密。通过PGP可以在一个非安全的网络环境下,提供可信交互
  • Open PGP
    • 由于PGP被广泛应用,最终形成了一个开放的标准-OpenPGP
  • GPG
    • GPG是实现了开放标准的一个开源免费程序。通过GPG可以对密钥进行管理、对文件和电子邮件进行加密/解密和数字签名
  • PGP与X.509的区别
    • X.509依赖于CA的信任链,即群签名;PGP不依赖CA,依赖可信的环签名
    • X.509主要应用于可信任的、安全的网络环境中,如电子商务平台等;PGP可用于不安全的网络环境中,如电子邮箱等

常见算法

Base64算法

简述
  • Base64是一种基于64个字符的编码算法。在RFC 2045中有Base64的具体定义与规范
  • Base64算法常用于“简单的加密”来保护某些数据
  • Base64算法主要是对给定的字符以与字符编码(如ASCII码、UTF-8码)对应的十进制数为基准,提供编码与解码操作
  • Base64算法可以很好的解决非ASCII码字符的传输问题,如中文字符的传输问题
应用场景
  • 电子邮件数据传输
  • 网络数据传输
  • 密钥存储。可以将密钥的二进制数据转换成Base64字符编码的字符串
  • 数字证书存储
URL Base64算法

消息摘要算法

简述
  • 消息摘要算法常用于验证数据的完整性,是数字签名算法的核心算法。包含MD、SHA、MAC系列
  • 消息摘要算法又称散列算法,其核心在于散列函数的单向性。即通过散列函数可获得对应的散列值,但不可以通过该散列值反推其原始信息。这是消息摘要算法的安全性的根本所在
分析
MD算法系列
  • MD系列包括MD2、MD3、MD4、MD5算法
  • 该系列的最终结果均是产生一个128位的消息摘要
MAC算法系列
  • MAC(Message Authentication Code,消息认证码算法)是含有密钥散列函数的算法,兼容了MD和SHA算法的特性,并在此基础上加入了密钥
  • MAC系列包括MmacSHA1、HmacSHA224、HmacSHA256、HmacSHA384和HmacSHA512五种算法
CRC算法
  • CRC(Cyclic Redundancy Check,循环冗余校验)是可以根据数据产生简短固定位数的一种散列函数,主要用于检测或校验数据传输/保存后出现的错误
  • CRC算法从最初的CRC-1算至CRC-160算法,为消息摘要算法奠定了基础
其它消息摘要算法
  • RipeMD系列
  • Tiger算法
  • Whirlpool算法
  • GOST3411算法

对称加密算法

简述
  • 该类算法是解密算法是加密算法的逆运算,加密密钥和解密密钥相同
  • 常见的该类算法有DES、DESede、AES、Blowfish、RC2、RC4、IDEA、PBE等
分析
DES算法
  • 该算法包括了DES和DESede
  • 该算法是对称算法领域的典型算法,为后续对称加密算法的发展奠定了坚实的基础
  • DESede算法是基于DES算法进行了三重迭代,增强了算法的安全性
AES算法
  • 由于DES算法系列存在安全隐患,以及DESede算法效率低等问题,AES算法正是基于这些缘由诞生
  • 其实现也成为其它对称加密算法实现的参考模型
IDEA算法
  • IDEA(International Data Encryption Algorithm,国际数据加密标准)算法于1990年提出的一种对称分组密码
  • 该算法使用长度128位的密钥,数据块大小为64位。在理论上IDEA属于“强”加密算法
PBE算法
  • PBE(Password Based Encryption,基于口令加密)算法是一种基于口令的加密算法,其特点在于口令由用户自己掌管,采用随机数(也称作盐)杂凑多重加密等方法保证数据的安全性
  • 该算法没有密钥的概念,密钥在其它对称加密算法中是通过计算得出的,PBE算法中则是使用口令代替了密钥
  • PBE算法并没有真正构建新的加密/解密算法,而是对已知的对称加密算法(如DES算法)做了包装

非对称加密算法

简述
  • 该类算法的加密和解密的密钥不同,公开的密钥称为公钥,保密的密钥称为私钥。该类算法也被称为双钥或公钥加密算法
  • 公钥通过非安全通道发放,私钥则由发放者保留。公钥与私钥相对应,成对出现。公钥加密的数据,只能通过私钥对其解密,私钥加密的数据,只能通过公钥进行解密
  • 该算法常用于安全性要求较高的领域。该密钥安全性高,但却无法回避加密/解密过程效率低的问题
  • 该算法源于DH(Diffie-Hellman,密钥交换算法)算法,DH算法为非对称加密算法奠定了基础,堪称为非对称加密算法之鼻祖
分析
DH算法
  • DH密钥交换算法的安全性基于有限域上的离散对数难题。基于这种安全性,通过DH算法进行密钥分配,使得消息的收发双方可以安全地交换一个秘密密钥,再通过这个密钥对数据进行加密和解密处理
ECC DH算法
  • ECC DH是基于椭圆曲线加密算法的密钥交换算法(ECC DH简化为EC DH,同知椭圆曲线加密算法),密钥较短但安全性更强,其原理与DH算法一致
RSA算法
  • RSA算法基于大数因子分解难题
  • RSA算法是唯一被广泛接受并实现的通用公开加密算法,目前已经成为非对称加密算法国际标准
  • RSA算法即可用于数据加密,也可以用于数字签名
ElGamal算法
  • Glgamal算法基于离散对数问题的非对称加密算法
  • 该算法具有较好的安全性,因此得到了广泛的应用

数字签名算法

简述
  • 该算法是一种带有密钥的消息摘要算法,并且这种密钥包含了公钥和私钥。即该算法是非对称加密算法与消息摘要算法的结合体
  • 数字签名算法要求能够验证数据的完整性、认证数据来源,并起到抗否认的作用
  • 该类算法包括RSA、DSA、ECDSA等算法
分析
RSA算法
  • 参考非对称加密算法下的RSA算法
DSA算法
  • 通过RSA作为数字签名算法的研究对象,并逐步转为标准–DSS,并形成了DSA算法。DSS本质上是ElGamal数字签名算法,DSS使用的算法称为数字签名算法DSA(Digital Signature Algorithm)
ECDSA算法
  • ECDSA(Elliptic Curve Digital Signature Algorithm,椭圆曲线数字签名算法),该算法具有速度快、强度高、签名短等优点,其用途也越来越广泛

数字证书应用参考

什么是数字证书

  • 数字证书集合了多种密码学算法,自身带有公钥信息,可完成相应的加密/解密操作;同时,还带有数字签名,可鉴别消息来源;且自身带有消息摘要信息,可验证证书的完整性;由于证书本身含有用户信息,因而具有认证性
  • 数字证书(Digital Certificate),也称为电子证书。用于标识网络中的用户(计算机)身份
  • 通过数字证书颁发机构(Certificate Authority,CA)签发,经过CA签发的数字证书在网络中才具备可认证性

国际数字证书颁发机构

  • VeriSign
  • GeoTrust
  • Thawte
  • CAcert。免费的数字证书颁发组织

国内数字证书颁发机构

  • 各省、直辖市设置有数字证书颁发机构,如XX市数字证书认证中心、XX省数字证书认证中心

证书签发

  1. 由数字证书需求方产生自己的密钥对
  2. 由数字证书需求方将算法、公钥和证书申请者身份信息发送给认证机构
  3. 由认证机构核实用户的身份
  4. 由认证机构将数字证书颁发给用户

构建自签名证书

  1. 生成本地数字证书。未经过CA认证的证书
  2. 导出数字证书
  3. 本地CA签发证书。本地对证书进行认证并签发数字证书
  4. 获得签发的数字证书后,将其导入信任库

OpenSSL证书管理

  1. 构建根证书
    • 构建随机数文件
    • 构建证书秘钥
    • 生成根证书签发申请文件
    • 得到根证书签发文件
  2. 将根证书签发文件发送给CA机构进行认证并签发
  3. 将数字证书转化为PKCS#12编码格式。在java语言环境中无法直接使用OpenSSL产生的数字证书

构建服务器证书

  1. 构建服务器证书
    • 构建服务器私钥
    • 生成服务器证书签发申请
    • 通过根证书签发服务器器证书,或者向CA机构申请签发服务器证书
    • 将数字证书转换为PKCS#12编码格式,便于后续使用
  2. 构建客户证书
    • 构建客户私钥
    • 生成客户证书签发申请
    • 通过根证书签发客户证书,或者向CA机构申请签发客户证书
    • 将数字证书转换为PKCS#12编码格式,便于后续使用

证书文件操作

服务器
  • 加载秘钥库
  • 由秘钥库获得私钥
  • 由秘钥库获得数字证书并构建数字签名对象
  • 基于密钥库进行加密/解密操作和签名/验证操作
客户端
  • 加载数字证书
  • 由数字证书获得公钥
  • 初始化签名对象
  • 基于数字证书进行加密/解密和签名/验证操作

安全协议

协议
  • HTTPS协议。HTTPS(Hypertext Transfer Protocol Over Secure Socket Layer)协议是Web上安全的访问协议
  • SSL协议。SSL(Secure Socket Layer,安全套接字层),位于TCP/IP参考模型中的网络传输层,为网络通信提供安全及数据完整性的一种安全协议
  • TLS协议。TLS(Transport Layer Security,传输层安全),位于TCP/IP参考模型中的网络传输层,为SSL协议的继任者,称为下一代网络安全性和数据完整性安全协议

认证模式

  • 单向认证服务
  • 双向认证服务
  • 17
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Z先生09

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值