密码系统的两个基本要素是加密算法和密钥管理。
加密算法是一些公式和法则,它规定了明文和密文之间的变换方法。由于密码系统的反复使用,仅靠加密算法已难以保证信息的安全了。事实上,加密信息的安全可靠依赖于密钥系统,密钥是控制加密算法和解密算法的关键信息,它的产生、传输、存储等工作是十分重要的。
数据经过加密工具 既是一种加密算法 变成密文(一堆乱码) 所有算法的安全性都基于密钥的安全性;而不是基于算法的细节的安全性,这也就意味着算法可以公开,也可以被分析,可以大量生产使用算法的产品,即使偷听着知道你的算法也没关系,如果不知道你是用的具体密钥,也就不能阅读数据 。 EK1(M)=C DK2(C)=M K1是加密密钥 K2是解密密钥
密码学可以实现的目的 : 保密性:防止用户的标示或数据被读取
数据完整性:防止数据被更改。 身份验证:确保数据发自特定的一方。数据加密解密的实现 : 对称加密
公钥加密 单向加密对称加密:加密方和解密码使用同一个密钥:
可以采用: 56bit 128bit 256bit 512bit 算法: DES:Data enpcryption standard :数据加密标准,速度极快,适用于加密大量的数据场合 3DES:是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高。 AES:advanced data encryption standard:高级加密标准,是下一代的加密算法标准, 速度快安全级别高 可以使用128,192,256位密钥 AES256 AES192 AES512公钥加密:采用一对密钥加密 secret key public key 公钥和私钥。
采用: 512bit 2048bit 功能:1、密钥交换 IKE(internet key exchange ) 2、数字签名 ,身份验证,防抵赖 算法: RSA 加密/签名 由RSA公司发明,是一个支持变长密钥的公共密钥算法, 需要加密的文件块的长度也是可变的 DSA (Digital Signature Algorithm)签名 :数字签名算法,是一种标准的DSS(数字签名标准) ECC(Elliptic Curves Cryptography) :椭圆曲线密码编码学单向加密:(散列算法) 不是加密,而是提取数据特征码 且一定是不可逆的。
雪崩效应:任何输入信息的变化,哪怕仅一位,都将导致散列结果的明显变化 定长输出 :散列是信息的提炼,通常其长度要比信息小得多,且为一个固定长度 。 功能:验证数据的完整性 常见算法: md5 :Message Digest Algorithm 5,128bit 是RSA 数据安全公司开发的一种单向散列 算法 SHA (Secure Hash Algorithm ):可以对任意长度的数据运算生成一个160位的数值; sha1:Secure Hash Algorithm 1 ,160bit SHA256: 256bit的定长输出 SHA512:三种方法,各有有缺, 所以, 在实际的操作中,我们通常采用的方法是:采用非对称的加密算法管理对称算法的密钥,然后用对称加密算法加密数据。
发送方: 1、发送发用单行加密算法计算数据的特征码 2、发送方用自己的私钥加密这段特征码,并附加在数据的尾部 3、发送方生成一个对称密钥 4、用此对称码加密这段数据 和加密后特征码 5、发送方用接收方的公钥加密这个对称密钥,附加在密文的尾部,并发送之 接收方: 1、用自己的私钥解密加密过的对称密码; 2、用密码解密密文; 3、对发送方的公钥解密发送方私钥加密的特征码; 4、用同样的单向加密算法计算出原始数据的特征码; 5、比较两段特征码;
CA认证:是Certificate Authority的简称,指电子商务认证授权机构。它是负责发放和管理数字证书的权威机构,并作为电子商务交易中受信任的第三方,承担公钥体系中公钥的合法性检验的责任。
CA是证书的签发机构,它是PKI(public key infrastructure 公钥基础设施)的核心。CA是负责签发证书、认证证书、管理已颁发证书的机关。它要制定政策和具体步骤来验证、识别用户身份,并对用户证书进行签名,以确保证书持有者的身份和公钥的拥有权。。
CA 也拥有一个证书(内含公钥)和私钥。网上的公众用户通过验证 CA 的签字从而信任 CA ,任何人都可以得到 CA 的证书(含公钥),用以验证它所签发的证书。如果用户想得到一份属于自己的证书,他应先向 CA 提出申请。在 CA 判明申请者的身份后,便为他分配一个公钥,并且 CA 将该公钥与申请者的身份信息绑在一起,并为之签字后,便形成证书发给申请者。
如果一个用户想鉴别另一个证书的真伪,他就用 CA 的公钥对那个证书上的签字进行验证,一旦验证通过,该证书就被认为是有效的。CA认证的主要作用就是:保证公钥的合法性。同时也提供 CRL (certificate revoke )证书吊销列表 (当客户端的私钥丢了,可申请调销证书)
公共CA (收费 ) 私有CA
证书格式 :x509 通用的格式
,pkcs#l0 pkcs#12 pkcs#7 证书存储的格式, 证书信息的组织格式 即证书里面包含什么
SSL:(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。
OpenSSL:是一个开放源代码的实现了SSL及相关加密技术的软件包,由加拿大的Eric Yang等发起编写的。
组件:
libcrpto: 库 通用的加密库 libssl :实现ssl tls 协议的 openssl: 多用途的加密工具 命令行工具openssl 可以实现多种加密算法:
对称加密算法
非对称加密算法 单向加密算法 CA (openCA) (可以实现证书格式转换 )openssl提供的CA应用程序就是一个小型的证书管理中心,实现了证书签发的整个流程和证书管理的大部分机制 。
配置文件:/etc/tls/pki/openssl.cnf 默认位置,我们也可以自己定义。
openssl 的一些简单命令的使用 :
- #openssl passwd -1 -salt 123456 -1采用MD5 -salt是接入的杂质 是123456
- Password: <<-- 输入密码
- $1$123456$wWKtx7yY/RnLiPN.KaX.z. 加密后的 密码 $$$分成三段
- 加密一个文件
- #openssl enc -des3 -salt -a -in inittab -out inittab.des
- 子命令 加密方法 自己加杂志 ASCLL码输出
- 解密一个文件
- #openssl enc -d -des3 -salt -a -in inittab.des3 -out inittab.plain
- 测试加密速度
- #openssl speed MD5
- base64 编码 格式
- #echo -n "redhat" | openssl base64
- 生成密钥对
- #openssl genrsa -out key.pem(密钥保存位置) 1024(长度)
- 生成的是私钥 公钥可以从私钥提取
- #openssl rsa -in key.pem -pubout -out key.pem.pub 提取公钥
- #openssl genrsa 1024 >key.pem 也可以生成密钥。权限是 644
- #(umask 077;openssl genrsa 1024 -out key.test ) 权限是600
- 计算特征码
- #openssl md5 ininttab 计算inittab 的MD5格式 的特征码
- #echo -n "redhat" |openssl md5 计算一段数据的md5格式的特征码
创建一个简易的CA :
过程:
1、先给自己发一证书 : 2、某主机或用户 自己生成证书颁发请求 3、递交请求 4、服务验证信息,并签署
/etc/pki/tls/openssl.conf 配置文件 /etc/pki/CA/ 自己给自己发的证书
具体步骤:
一、CA 服务器配置文件的修改
- 1.vim /etc/pki/tls/openssl.cnf
- dir =/etc/pki/CA明确说明目录
- 2.cd /etc/pki/CA
- #mkdir cents(证书存放) newcerts(新证书) crl (调销证书 )#touch index.txt (证书索引表 )serial (序列号)
- #echo 01 >serial 证书序列号 第几个证书了
- 3、自签证书 (先生成一个密钥对 放在 private )
- #(umask 077;openssl genrsa -out private/cakey.pem 2048)生成密钥对
- 在配置文件里固定位置和名称
- # openssl req -x509 -new -key private/cakey.pem -out cacert.pem -days 365
- 申请 自签 新证书 密钥位置 证书保存位置 证书有效期
证书申请方 :
- 1.为某服务生成密钥
- #cd /etc/vsftpd/
- #mkdir ssl
- #cd ssl
- #(umask 077;openssl genrsa 1024 > vsftpd.key) 生成密钥
- #openssl req -new -key vsftpd.key -out vsftpd.csr 申请证书
- 2.将此证书 通过某方式传递给CA服务器
- #scp vsftpd.csr root@172.16.100.1:/tmp
- 3、CA 签署证书 (在CA 服务器上 )
- #openssl ca -in vsftpd.csr -out vsftpd.crt -days N
- #scp vsftpd.crt root@客户端IP:/etc/vsftpd/ssl/ 直接复制到申请方的对应目录下
加密解密就先总结到此,每个知识点扩展开来都可以出一本书,我这里只是抛砖引玉而以,望大家共同学习进步~·