加密类型、数据加密解密过程以及CA创建
对称加密算法
对称加密:加密和解密使用同一个密钥
DES:Data Encryption Standard,56bits
3DES:
AES:Advanced (, , 256bits)
Blowfish,Twofish
IDEA,RC6,CAST5
特性:
、加密、解密使用同一个密钥,效率高
、将原始数据分割成固定大小的块,逐个进行加密
缺陷:
、密钥过多
、密钥分发
、数据来源无法确认
非对称加密算法
公钥加密:密钥是成对出现
公钥:公开给所有人;public key
私钥:自己留存,必须保证其私密性;secret key
特点:用公钥加密数据,只能使用与之配对的私钥解密;反之亦然
功能:
数字签名:主要在于让接收方确认发送方身份
对称密钥交换:发送方用对方的公钥加密一个对称密钥后发送给对方
数据加密:适合加密较小数据
缺点:密钥长,加密解密效率低下
算法:
RSA(加密,数字签名)
DSA(数字签名)
ELGamal
单向散列(hash算法)
将任意数据缩小成固定大小的“指纹”
任意长度输入
固定长度输出
若修改数据,指纹也会改变(“不会产生冲突”)
无法从指纹中重新生成数据(“单向”)
功能:数据完整性
常见算法
md5: 128bits、sha1: 160bits、sha224 、sha256、sha384、sha512
常用工具
md5sum | sha1sum [ --check ] file
openssl、gpg
rpm -V
hash(data)=digest 摘要,有时候也称为指纹 只要数据不同摘要必不同,得到摘要推不出原来的数据值
不论什么数据。不论数据的大小,只要用的算法相同,那么输出长度必定相同
只要数据不同,摘要完全不同,哪怕数据之间只相差一个空格字符都会产生巨大的变化也称雪崩效应
常用于对比数据,数据是否被修改过,数据相同,摘要必定相同 文件完整性的两种实施方式
被安装的文件
md5单向hash
rpm -V package-name
例:修改文件内容查看hash
rpm -qf /etc/issue
centos-release--6.1810..el7.centos.x86_64
rpm -V centos-release
missing c /etc/yum.repos.d/CentOS-Base.repo
missing c /etc/yum.repos.d/CentOS-CR.repo
echo >> /etc/issue
rpm -V centos-release
......T. c /etc/issue :5就表示md5,说明文件内容变了,T表示文件的时间变了
missing c /etc/yum.repos.d/CentOS-Base.repo
missing c /etc/yum.repos.d/CentOS-CR.repo
然后将追加的1删掉。再次比较
rpm -V centos-release
.......T. c /etc/issue :文件内容恢复。但是时间改变了
missing c /etc/yum.repos.d/CentOS-Base.repo
missing c /etc/yum.repos.d/CentOS-CR.repo 发行的软件包文件
GPG公钥签名
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-
rpm -K tree-1.6.-.el7.x86_64.rpm 如果不导入公钥,系统提示没有公钥,不能检查,如果有问题提示NOT OK
CA和证书
PKI: Public Key Infrastructure
签证机构:CA(Certificate Authority)
注册机构:RA
证书吊销列表:CRL
证书存取库:
X.:定义了证书的结构以及认证协议标准
版本号 主体公钥
序列号 CRL分发点
签名算法 扩展信息
颁发者 发行者签名
有效期限
主体名称
证书获取
证书类型:
证书授权机构的证书
服务器
用户证书
获取证书两种方法:
使用证书授权机构
生成证书请求(csr)
将证书请求csr发送给CA
CA签名颁发证书
自签名的证书
自已签发自己的公钥
安全协议
SSL:Secure Socket Layer,TLS: Transport Layer Security (安全套接层)
:SSL 2.0 Netscape
:SSL 3.0
:TLS 1.0
:TLS 1.1 IETF(Internet工程任务组) RFC
:TLS 1.2 当前使用
:TLS 1.3
功能:机密性,认证,完整性,重放保护
两阶段协议,分为握手阶段和应用阶段
握手阶段(协商阶段):客户端和服务器端认证对方身份(依赖于PKI体系,利用数字
证书进行身份认证),并协商通信中使用的安全参数、密码套件以及主密钥。后续通信使
用的所有密钥都是通过MasterSecret生成。
应用阶段:在握手阶段完成后进入,在应用阶段通信双方使用握手阶段协商好的密
钥进行安全通信
SSL/TLS
Handshake协议:包括协商安全参数和密码套件、服务器身份认证(客户端身
份认证可选)、密钥交换
ChangeCipherSpec 协议:一条消息表明握手协议已经完成
Alert 协议:对握手协议中一些异常的错误提醒,分为fatal和warning两个级别,
fatal类型错误会直接中断SSL链接,而warning级别的错误SSL链接仍可继续,
只是会给出错误警告
Record 协议:包括对消息的分段、压缩、消息认证和完整性保护、加密等
HTTPS 协议:就是“HTTP 协议”和“SSL/TLS 协议”的组合。HTTP over
SSL”或“HTTP over TLS”,对http协议的文本数据进行加密处理后,成为二
进制形式传输
OpenSSL
OpenSSL:开源项目
三个组件:
openssl:多用途的命令行工具,包openssl
libcrypto:加密算法库,包openssl-libs
libssl:加密模块应用库,实现了ssl及tls,包nss
openssl命令:
两种运行模式:交互模式和批处理模式
openssl version:程序版本号
标准命令、消息摘要命令、加密命令
标准命令:enc, ca, req, ...
openssl命令
对称加密:
工具:openssl enc, gpg
算法:3des, aes, blowfish, twofish
enc命令:
帮助:man enc
加密:
openssl enc -e -des3 -a -salt -in testfile -out testfile.cipher
解密:
openssl enc -d -des3 -a -salt –in testfile.cipher -out testfile
openssl ?
单向加密:
工具:md5sum, sha1sum, sha224sum,sha256sum…
openssl dgst
dgst命令:
帮助:man dgst
openssl dgst -md5 [-hex默认] /PATH/SOMEFILE
openssl dgst -md5 testfile
md5sum /PATH/TO/SOMEFILE
MAC: Message Authentication Code,单向加密的一种延伸应用,用于实现
网络通信中保证所传输数据的完整性机制
CBC-MAC
HMAC:使用md5或sha1算法
生成用户密码:
passwd命令:
帮助:man sslpasswd
openssl passwd - -salt SALT(最多8位)
openssl passwd - –salt centos
–salt:打乱生成的hash值,正常使用md5生成的hash值只要数据相同
hash值就相同添加–salt严之后就可以打乱hash值即使数据一样hash
值也是不一样的
生成随机数:
帮助:man sslrand
openssl rand -base64|-hex NUM
NUM: 表示字节数,使用-hex,每个字符为十六进制,相当于4位二进制,出现的字符数为NUM*
公钥加密:
算法:RSA, ELGamal
工具:gpg, openssl rsautl(man rsautl)
数字签名:
算法:RSA, DSA, ELGamal
密钥交换:
算法:dh
DSA:Digital Signature Algorithm
DSS:Digital Signature Standard
RSA:
生成密钥对儿:man genrsa
生成私钥
openssl genrsa -out /PATH/TO/PRIVATEKEY.FILE NUM_BITS
(umask ; openssl genrsa –out test.key –des )
openssl rsa -in test.key –out test2.key 将加密key解密
从私钥中提取出公钥
openssl rsa -in PRIVATEKEYFILE –pubout –out PUBLICKEYFILE
openssl rsa –in test.key –pubout –out test.key.pub
随机数生成器:伪随机数字
键盘和鼠标,块设备中断
/dev/random:仅从熵池返回随机数;随机数用尽,阻塞
/dev/urandom:从熵池返回随机数;随机数用尽,会利用软件生成伪随机数,非阻塞
创建CA和申请证书
openssl的配置文件:/etc/pki/tls/openssl.cnf
配置文件中有对应的语句块,定义默认CA,也可以添加CA,CA的默认设置
文件中关于CA的选项策略,搭建CA时需要指定的信息(国家,城市,公司等等)
match:要求申请填写的信息和CA设置信息必须一致
optional:可有可无,和CA设置信息可不一致
supplied:必须填写这项申请信息
将来客户端申请填写时要注意以上字段,需要填写一致,否则报错
、创建所需要的文件
touch /etc/pki/CA/index.txt :生成证书索引数据库文件
echo > /etc/pki/CA/serial:指定第一个颁发证书的序列号
、CA自签证书
生成私钥
cd /etc/pki/CA/
(umask ;openssl genrsa -out private/cakey.pem ) :安全
、生成自签名证书:
openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -days -out /etc/pki/CA/cacert.pem
回车后输入CA的信息,地区(两个字符,例CN),公司,CA的域名,邮箱(可选项)
选项说明:
-new:生成新证书签署请求
-x509:专用于CA生成自签证书
-key:生成请求时用到的私钥文件
-days n:证书的有效期限
-out /path/to/file:证书的保存路径
客户端创建私钥申请证书:
、创建私钥
(umask ;openssl genrsa -out http.key )
、利用私钥生成证书申请
openssl req -new -key /data/http.key -out /data/http.csr
回车后输入相关信息,默认国家,城市,和公司这三项必须填写一样。部门是自定义的,主机名也是自定以,输入将来你要作为域名的那个名字。
、将生成的申请发送到CA服务器
scp http.csr 服务器IP:/tmp/
服务端CA签署证书,并将证书颁发给请求者
、生成证书
openssl ca -in /tmp/http.csr -out /etc/pki/CA/certs/http.crt -days
回车后输入信息,默认要求国家,省,公司三项必须和CA一致
、将证书版发给请求者客户端
scp /etc/pki/CA/certs/http.crt 客户端IP:/data/
至此证书申请完毕,使用证书是应用软件中实现,在软件例如httpd中添加此证书的路径就可以用了 查看证书中的信息
openssl x509 -in /path/to/file.crt -noout -test|issuer|subject|serial|dates
例:openssl x509 -in /data/http.crt -noout -text
openssl ca -status SERIAL :查看指定编号的证书状态
加密类型、数据加密解密过程以及CA创建的更多相关文章
- mcrypt加密以及解密过程
Mcrypt库支持20多种加密算法和8种加密模式,具体可以通过函数mcrypt_list_algorithms()和mcrypt_list_modes()来显示 Mcrypt扩展库可以实现加密解密功能 ...
- ASP.NET中的DEC加密解密过程
本文章分享自 青青果树园的博客,地址是:http://www.cnblogs.com/qqingmu/archive/2008/01/10/1034168.html 我们做网页时经常会遇到URL传输( ...
- Python实现AES的CBC模式加密和解密过程详解 和 chr() 函数 和 s[a:b:c] 和函数lambda
1.chr()函数 chr() 用一个范围在 range(256)内的(就是0-255)整数作参数,返回一个对应的字符. 2.s[a:b:c] s=(1,2,3,4,5) 1>. s[a]下标访 ...
- https的加密解密过程
前置知识 SSL是90年代Netscape弄出来的一套东西,为的是解决HTTP协议明文传输数据的问题.后来SSL慢慢成了事实上的标准,于是IETF就把SSL标准化了,名字叫做TLS,TLS 1.0其实 ...
- golang实现aes-cbc-256加密解密过程记录
我为什么吃撑了要实现go的aes-cbc-256加密解密功能? 之前的项目是用php实现的,现在准备用go重构,需要用到这个功能,这么常用的功能上网一搜一大把现成例子,于是基于go现有api分分钟实现 ...
- springmvc在处理请求过程中出现异常信息交由异常处理器进行处理,自定义异常处理器可以实现一个系统的异常处理逻辑。为了区别不同的异常通常根据异常类型自定义异常类,这里我们创建一个自定义系统异常,如果controller、service、dao抛出此类异常说明是系统预期处理的异常信息。
springmvc在处理请求过程中出现异常信息交由异常处理器进行处理,自定义异常处理器可以实现一个系统的异常处理逻辑. 1.1 异常处理思路 系统中异常包括两类:预期异常和运行时异常RuntimeEx ...
- des加密解密——java加密,php解密
最近在做项目中,遇到des加密解密的问题. 场景是安卓app端用des加密,php这边需要解密.之前没有接触过des这种加密解密算法,但想着肯定会有demo.因此百度,搜了代码来用.网上代码也是鱼龙混 ...
- Java 前端加密传输后端解密以及验证码功能
目录(?)[-] 加密解密 1 前端js加密概述 2 前后端加密解密 21 引用的js加密库 22 js加密解密 23 Java端加密解密PKCS5Padding与js的Pkcs7一致 验证码 1 概 ...
- RSA前台js加密,后台C#解密
一.需求: 为了安全,项目中前台登陆用的密码需要加密传到后台,后台c#解密登陆密码. 二.解决方案 采用非对称加密算法RSA来达到目的,前台登陆页面一加载便发送一次ajax请求获取后台产生的公钥,用于 ...
随机推荐
- Qt编写气体安全管理系统29-跨平台
一.前言 Qt的跨平台特性是非常厉害的,本来作为C++来说,跨平台的特性比JAVA还要好,只不过学习难度更大,所以大家更理解的跨平台是JAVA,Qt的跨平台特性是我见过的所有开发环境和语言中最厉害的, ...
- 转:laydate只显示时分,不显示秒
@转载地址 原文全文: 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/weixin_40 ...
- [LeetCode] 141. Linked List Cycle 链表中的环
Given a linked list, determine if it has a cycle in it. Follow up:Can you solve it without using ext ...
- 机器学习技法总结(一):支持向量机(linear support vector machine,dual support vector machine)
第一阶段技法: large margin (the relationship between large marin and regularization), hard-SVM,soft-SVM,du ...
- QT笔记--组合框
1 数据项 (1)位置 index 第一项位0 (2)文本text 这一项的显示值 (3) 关联数据,每一项可以关联一个数据比如整数或者文本类型数据 2 手工添加项 (1)additem:新数据项附加 ...
- javascript实现每秒执行一次的方法
javascript实现每秒执行一次的方法 <pre> i=0; function showzhandou() { $('.zhandouresult p').eq(i).fadeIn() ...
- 使用WinFrom + CefSharp 开发客户端程序
今天使用CefSharp,加上本地资源文件嵌入了HTML.CSS.JS文件,做为Winform的UI:效果不错,漂亮可控,简简单单,半天时间搞定从开发到上线: 下面记录下相关的备忘: (窗口的效果) ...
- LeetCode 235. 二叉搜索树的最近公共祖先 32
235. 二叉搜索树的最近公共祖先 235. Lowest Common Ancestor of a Binary Search Tree 题目描述 给定一个二叉搜索树,找到该树中两个指定节点的最近公 ...
- pyhton数据类型:字典、集合、列表、元组
基本常识 元组 列表 字典 集合 初始化 tuple=(1,2,3,4) list=[1,2,3,4] dic={'a':12,'b':34} set={1,2,3,4} 元素索引 tuple[0] ...
- 【转帖】MIPS构架:曾经是英特尔的“眼中钉”
MIPS构架:曾经是英特尔的“眼中钉” https://www.eefocus.com/mcu-dsp/363953 <处理器史话>之十一 2016-06-17 08:02 作者:付丽华预 ...