加解密技术基础

一、SSL协议

现代信息流通中web占了巨大的一部分,但是实际上web除了https协议支持的web服务器,信息对外都是透明的,现在流行的https全栈设计就是要摆脱信息泄漏的危险。传统的服务如http都是成熟已久的服务,为了减少不必要的麻烦,SSL(Secure Socket Layer)协议就应运而生了--在TCP/IP的应用层和网络层之间添加协议SSL子层(如下图),程序员调用协议子层协议实现数据加密和传输。

二、SSL协议会话会话过程

三、openssl基础

单向加密:只能加密,不能解密。

工具:openssl dgest,mdsum,sha1sum,sha224sum等等

dgst命令:单向加密可以选定加密方法

openssl dgst -md5 /tmp/fstab MD5(/tmp/fstab)= 85301c14005a7d9eae19ddfc3475131d# md5sum /tmp/fstab 85301c14005a7d9eae19ddfc3475131d  /tmp/fstab

公钥加密:三种功能:加密解密,密钥传送,数字认证

1加密解密:

算法:RSA,ELGamal

工具:openssl,rsautl,gpg

2.数字签名:

算法:RSA,DSA,ELGamal

工具:openssl,rsautl,gpg

3.密钥交换:

算法:DH

生成密钥:

生成私钥:~]#(umask 077;openssl genrsa -out /PATH/TO/PRIVATE_KEY_FILE NUM_BITS )

提出公钥:~]#openssl rsa -in /PATH/FROM/PRIVATE_KEY_FILE -pubout

# (umask 077;openssl genrsa -out /tmp/a.private  1024) 
Generating RSA private key, 1024 bit long modulus...........................................................++++++....................++++++e is 65537 (0x10001)
# cat /tmp/a.pr 
-----BEGIN RSA PRIVATE KEY-----
MIICXgIBAAKBgQC5cLbUjCv9MELyHAndxltipdmvvtnMem6E9JZ7ymifMnggFHwbcRO3q03S6pTbdDKaBnMRulw9OQdvCOexm3Ym9P1jNLM6vNgGnROyWxWUoXZWd/YRG4WP0Lo2yvTdzXkNAwFL9S0wZTKfsFI3FYtV/432XA5vuI3olwgG8IJWhwIDAQABAoGBAKFf/TsqYH2NKjUXQV7F53EJc08FfvP694KsduhzVGh1uyPvr7ERzl7frHIHwlLX49E2G50p2GtO3bE6xqZA66euq8W4TefCVmKZm2P3c2Aj6HuRhVyKkFdZ7bZSjYDtGYjksTlzmHzC8g6Wzs3B3AHifuNU8oazqxINPObz5hABAkEA7P9oSBfhu8wm42r95UFqxWlwSRaYHyWSN4KQyM6IIWzjGFTSt4+DX4AUDGc9PpoB4l2HcnRctdU/RHn/54DxhwJBAMhPC2NzmGtiG1XW0uYfCXjmqF+iU79zQ/ikfVJRoEfZN4jPdTurCFxssbyQSJYnWxZTtM+4eS6F7mlKUabgswECQQDYwfB6n30R6fJXZW+50k75JypPbp7LPe2xX3VUc7EGATTi+BGRWWzqV5X+kh3tt6Wph6luAQcaN2OaGYr4DXLZAkBwVfQbGC74uhJ+d3XbXLihNypiR9UT337VKNqnmeN7p9Q/Q6mJhwevXb3n9DrhCr1IrjUO8XP0pWPpZKaaIhYBAkEAja39oNrqbvmBbmaanMfACTkf9CTgpjbfau63lArey1e0QJRz8I4wOZA/EEm9twvvNyYnUiiDJbTIwuY7xHwTyA==-----END RSA PRIVATE KEY----- # openssl rsa -in  /tmp/a.private  -puboutwriting RSA key-----BEGIN PUBLIC KEY-----MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC5cLbUjCv9MELyHAndxltipdmvvtnMem6E9JZ7ymifMnggFHwbcRO3q03S6pTbdDKaBnMRulw9OQdvCOexm3Ym9P1jNLM6vNgGnROyWxWUoXZWd/YRG4WP0Lo2yvTdzXkNAwFL9S0wZTKfsFI3FYtV/432XA5vuI3olwgG8IJWhwIDAQAB
-----END PUBLIC KEY-----

Linux系统上的随机数生成器

/dev/random:仅从熵池返回随机数;随机数用尽,阻塞;

/dev/urandom:从熵池返回随机数;随机数用尽,会利用软件生成伪随机数,非阻塞;

伪随机数不安全;

熵池中随机数的来源:

硬盘IO中断时间间隔;复制大文件到磁盘会有大量磁盘IO中断

键盘IO中断时间间隔;

五、 CA

CA分为公共信任的CA,私有CA两种,公有CA是外部机构建立的,申请即可,费用也不低。私有CA范围有限,可以在公司内部建立,当然只能在公司内部使用,因为你的证书别人并不认可,缺乏权威。

搭建私有CA:以下两种实现

openssl

OpenCA:开源CA

这里讲解openssl搭建私有CA:

openssl命令:

openssl的配置文件:/etc/pki/tls/openssl.cnf ;其中部分配置定义了CA的配置。

[ca]段定义ca特性:ca怎么管理ca,ca 工作环境

dir              = /etc/pki/CA            # Where everything is kept 工作目录
certs            = $dir/certs             # Where the issued certs are kept 已经签发的证书位置
crl_dir          = $dir/crl               # Where the issued crl are kept 吊销证书列表
database         = $dir/index.txt         # database index file.各个已经颁发的证书索引,包含序列号
new_certs_dir    = $dir/newcerts          # default place for new certs.对应certs目录中的证书的
SERIAL.crtserial = $dir/serial            # 用于为ca提供证书序列号存储位置
certificate      = $dir/cacert.pem        # 指定CA 自签证书
private_key      = $dir/private/cakey.pem # The private key.CA自身私钥
default_days     = 365                    # 默认的证书有效期

[req]段是request请求配置段,需要的认证单位个人向CA发出注册签署请求,这里定义怎么生成配置请求。

在确定配置为CA的服务上生成一个自签证书,并为CA提供所需要的目录及文件即可:

步骤:

(1)生成私钥;

~]#(umask077;openssl genrsa -out /etc/pki/CA/private/cakey.pem 4096)

(2)生成自签证书;man req即可

~]#openssl  req  -new  -x509  -key  /etc/pki/CA/private/cakey.pem  -out  /etc/pki/CA/cacert.pem -days 3655 #命令自动抽取公钥再生成req,在签署过程中生成公钥。证书申请填写的是组织信息。

# openssl req -key  -new -x509 /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3650
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ‘.‘, the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:BeiJing
Locality Name (eg, city) [Default City]:BeiJing
Organization Name (eg, company) [Default Company Ltd]:MagEdu   # 私建CA,那么用于公司内部,就用公司名
Organizational Unit Name (eg, section) []:Ops
Common Name (eg, your name or your server‘s hostname) []:ca.magedu.com   #要服务器或主机名字
Email Address []:[email protected]
# ls /etc/pki/CA/cacert.pem
/etc/pki/CA/cacert.pem
[[email protected] ~]# ls /etc/pki/CA/cacert.pem -al
-rw-r--r--. 1 root root 2065 4月   7 02:06 /etc/pki/CA/cacert.pem

-new:生成新证书签署请求;

-x509:生成自签格式证书,专用于创建私有CA时;不是自签就不要加了,自动签署证书;

-key:生成请求时用到的私有文件路径;

-out:生成的请求csr文件路径;如果自签操作将直接生成签署过的证书;

-days:证书的有效时长,单位是day;

(3)为CA提供所需的目录及文件;

~]#mkdir -pv /etc/pki/CA/{certs,crl,newcerts}

~]#touch /etc/pki/CA/{serial,index.txt} #序列号,数据库文件

~]#echo 01 > /etc/pki/CA/serial # 给定一个需要起始号码

请求签署证书:要用到证书进行安全通信的服务器,需要向CA请求签署证书;

步骤:(以httpd为例,前三步骤在请求主机上做,第四步在CA主机上做)

(1)用到证书的主机生成私钥;

~]#mkdir /etc/httpd/ssl

~]#cd /etc/httpd/ssl

~]#(umask 077;openssl genrsa -out /etc/httpd/ssl/httpd.key 2048)#不要在CA配置目录下创建,那是作为CA主机并自建CA才用到的路径。

(2)生成证书签署请求

~]#openssl req -new -key /etc/httpd/ssl/httpd.key -out /etc/httpd/ssl/httpd.csr -days 365 # 不要写-x509

(3)将请求通过可靠方式发送给CA主机;

(4)在CA主机上签署证书;

~]#openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365

~]#cat /etc/pki/CA/index.txt

#cat /etc/pki/CA/index.txt 
 V     170105083250Z   01 unknown /C=CN/ST=Beijing/U=Magedu/OU=Ops/CN=www.magedu/[email protected]

主识标标:

/C=CN/ST=Beijing/U=Magedu/OU=Ops/CN=www.magedu/emailaddress[email protected]

查看证书中的信息:

~]#openssl x509 -in /etc/pki/CA/certs/httpd.crt -noout -serial -subject # 只显示serial subject

吊销证书:

步骤:

(1)客户端获取要吊销的证书的serial(在使用证书的主机执行):

~]#openssl x509 -in /etc/pki/CA/certs/httpd.crt -noout -serial -subject

(2)在CA主机吊销证书

先根据客户提交的serial和subject信息,对比其与本机数据库index.txt中存储的是否一致;

如果一致,那么吊销:

#openssl ca -revoke /etc/pki/CA/newcerts/SERIAL.pem,其中的SERIAL要换成证书真正的签署序列号;

(3)生成吊销证书的吊销编号(第一次吊销证书时执行)

#echo 01 > /etc/pki/CA/crlnumber # 吊销序列号

(4)更新证书吊销列表

#openssl ca -gencrl -out /etc/pki/CA/CA_NAME.crl

查看crl文件:

#openssl crl -in /PATH/FROM/CRL_FILE.crl -noout -text

时间: 2024-10-25 04:32:50

加解密技术基础的相关文章

加密和解密技术基础与OpenSSL

加密和解密技术基础与OpenSSL 加密和解密技术基础(01) 1.了解Linux  service  and  securityOpenSSL:为网络通信提供安全及数据完整性的一种安全协议 2.一般都是C/S通信,此种通信客户端有什么特性?服务端有什么特性呢?(1)两台主机上的通信方式?主机通信实际是进程间通信.通信方式:socket (套接字)ip:port          客户端cip:port<-->服务器端 scip:port(2)如何让客户知道自己的主机和端口呢?把某些众所周知的

加密解密技术基础、PKI及创建私有CA

加密解密技术基础.PKI及创建私有CA 一.背景 随着互联网的快速发展,整个互联网中涌入了大量的用户,正所谓林子大了什么鸟都有,随之而来的就是数据的安全性得不到保障:因此就有了对数据的加密及解密. 二.安全的目标 1.目标: 信息加密的目的是为了确保所传输的信息具有保密性,不被其他人所劫持后篡改信息:如果被篡改后接收方也应该能知道,而且也应该确保没被劫持的信息接收方可以读取. 2.数据在网络中传输过程中要保证三个要点: (1)数据的完整性:防止数据在传输过程中遭到未授权用户的破坏或篡改. (2)

11.Java 加解密技术系列之 总结

Java 加解密技术系列之 总结 序 背景 分类 常用算法 原理 关于代码 结束语 序 上一篇文章中简单的介绍了第二种非对称加密算法 — — DH,这种算法也经常被叫做密钥交换协议,它主要是针对密钥的保护.同时,由于水平的限制,打算这个系列就到此为止了,这篇文章就算是一个总结吧,回顾一下这几个月来都写了些什么. 背景 其 实,在开始写这个系列之前,我对于 Java 的加解密也并不是那么了解.之所以要写这些文章,还主要是由于工作的原因.记得几个月以前,当时项目要做一个数字证书,证书的生成.存储.传

6. Java 加解密技术系列之 3DES

Java 加解密技术系列之 3DES 序 背景 概念 原理 代码实现 结束语 序 上一篇文章讲的是对称加密算法 — — DES,这篇文章打算在 DES 的基础上,继续多讲一点,也就是 3 重 DES — — Triple DES. 背景 至于 3DES 为什么会出现呢?其实,这个不难想到.由于 DES 是一种非常简便的加密算法,但是密钥长度比较短,计算量比较小,相对来说,比较容易被破解.因此,在 DES 的基础上,使用三重数据加密算法,对数据进行加密,这样来说,破解的概率就小了很多. 概念 3D

加解密入门基础知识

很多人都想学习解密,这东西刚入门时会让人沉迷进去,可以饭不吃.觉不睡.出现这种现像,也许是解密满足了人们的猎奇心里吧.但掌握这方面技术,对自身的 提高确实有好处.可以通过跟踪软件,提高自己的调试技能,并且能了解他人程序思路,使自己写出更好的程序.研究解密技术有助于掌握一些系统底层知识,系统 底层知识绝对是构造起大型软件的坚实基础.许多程序发展,都经历了这一锻炼过程的. 而大多数人可能认为解密是一门高深的学问.造成这种原因是以前这方面 的技术资料缺乏,从而将“解密”这一技能“神”化了.初学者一般不

10.Java 加解密技术系列之 DH

Java 加解密技术系列之 DH 序 概念 原理 代码实现 结果 结束语 序 上一篇文章中简单的介绍了一种非对称加密算法 — — RSA,今天这篇文章,继续介绍另一种非对称加密算法 — — DH.当然,可能有很多人对这种加密算法并不是很熟悉,不过没关系,希望今天这篇文章能帮助你熟悉他. 原理 整个通信过程中g.g^a.g^b是公开的,但由于g.a.b都是整数,通过g和g^a得到a还是比较容易的,b也是如此,所以最终的“密钥”g^(a*b)还是可以被计算出来的.所以实际的过程还需要在基本原理上加入

8.Java 加解密技术系列之 PBE

Java 加解密技术系列之 PBE 序 概念 原理 代码实现 结束语 序 前 边的几篇文章,已经讲了几个对称加密的算法了,今天这篇文章再介绍最后一种对称加密算法 — — PBE,这种加密算法,对我的认知来说,并没有 DES.3DES.AES 那么流行,也不尽然,其实是我之前并没有这方面的需求,当然接触他的机会也就很少了,因此,可想而知,没听过显然在正常不过了. 概念 PBE,全称为“Password Base Encryption”,中文名“基于口令加密”,是一种基于密码的加密算法,其特点是使用

linux关于加密解密技术基础、KPI及创建私有CA

linux加密和解密技术基础.KPI及创建私有CA 一.加密方式分为:1.对称加密:加密和解密使用同一个密钥:      对称加密:采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,在对称加密算法中常用的算法有:DES. 3DES.TDEA.AES.    Blowfish.Twofish          IDE.ARC6.CAST5等.    特性:      1.加密.解密使用同一个密钥:      2.强原始数据分割成固定大小的块,逐个进行加密

9.Java 加解密技术系列之 RSA

Java 加解密技术系列之 RSA 序 概念 工作流程 RSA 代码实现 加解密结果 结束语 序 距 离上一次写博客感觉已经很长时间了,先吐槽一下,这个月以来,公司一直在加班,又是发版.上线,又是新项目太紧,具体的就不多说了,想听我吐槽的小伙伴, 可以私信给我(*^__^*) .上一篇文章,已经把对称加密的算法讲完了.从今天开始,要说说非对称加密了.因为,非对称加密真的是太重要了,我们的日常生活中,都离不开非对称加密. 概念 在说 RSA 之前,首先聊聊什么是非对称加密.在讲对称加密的时候,就曾