linux中加密解密以及Opensll建立CA

现在如今个人以及公司对自己的数据以及隐私越来越关注,之前美国斯诺登事件的爆出,又将通讯安全话题引发激烈的讨论。下面我们就来说下linux中的加密解密,以及通讯过程中如何确保通讯的安全。

常见的加密方法有三种:对称加密、单向加密、非对称加密,下面简单说下这三种加密方式。

对称加密:加密和解密使用同一个密钥;依赖于算法和密钥;安全性依赖于密钥,而非算法常见算法有DES:Data Encryption Standard, 56bits、3DES、AES: Advanced Encrpytion Standard, (128bits, 192, 256, 384, 512bits)、Blowfish、Twofish、IDEA、RC6、CAST5。此些算法都有由数学家们通过精心计算得到。

特性:

1、加密、解密使用同一密钥;

2、将明文分隔成固定大小的块,逐个进行加密;

缺陷:

1、密钥过多;

2、密钥分发;

非对称加密:公钥从私钥中提取而来;使用公钥加密的数据,只能使用与此公钥配对儿的私钥解密;反之亦然;有公钥和私钥的密钥对,私钥:secret key,仅允许个人使用,公钥:public key,公开给所有获取;私钥拥有者用自己的私钥加密的数据,只要用其公钥能解密,即可认证其身份,与被通信方通信之前,首先获取到对方的公钥,自己生成一个加密密码,用对方的公钥加密,并发送给对方,对方得到自己公钥加密的数据以及发送者的私钥。通常的算法有RSA、DSA、ELGamal,主要的特征有:1、密钥长度较大,例如512bits,
2048bits, 4096bits,2、加密解密分别使用密钥对儿中的密钥相对进行,3、常用于数据签名和密钥交换

单向加密:通过提出数据的特征码获得,它的特性为:1、密钥长度较大,例如512bits,
2048bits, 4096bits;2、雪崩效应:原始数据微小改变,将会导致结果巨大变化;3、不可逆;通常的算法有:MD5(128bits定长输出)、SHA1(160bits定长输出)、SHA256(160bits定长输出)、SHA256(256bits定长输出)、SHA512(128bits定长输出)等。

在一次加密通信过程的过程如下。

发送者:

1、使用单向加密算法提取生成数据的特征码;

2、使用自己的私钥加密特征码附加在数据后面;

3、生成用于对称加密的临时密钥;

4、用此临时密钥加密数据和已经使用私钥加密后的特征码;

5、使用接收方的公钥加密此临时密钥,附加在对称加密后的数据后方;

接收方:

1、使用自己的私钥解密加密的临时密钥;从而获得对称密钥;

2、使用对称密钥解密对称加密的 数据和私钥加密的特征码密文;从而获得数据和特征码密文;

3、使用发送方的公钥解密特征码密文,从而获得从计算生成的特征码;

4、使用与对方同样的单向加密算法计算数据的特征码,并与解密而来的进行比较;

此过程比较繁琐,故通常的使用者不会手动每次去操作此过程,因此产生了SSL,SSL:secure socket
layer(即获取到对方服务器的CA证书,得到对方的公钥,生成私钥,然后发送给服务器端,服务器发送数据给请求方,请求方有服务器端的公钥,可以解密,这样就能形成联系),通常证书主要有两类,主机证书以及用户证书,用户证书包含主机证书将自己的私钥形成的公钥,以及CA证书等信息。CA:CA证书的发证机构为具有公信力的机构,一般网站会购买一个CA证书用于认证,保证公钥信息的安全分发;

数字证书的格式(x.509 v3):

版本号(version)

序列号(serial number):CA用于惟一标识此证书;

签名算法标志(Signature algorithm identifier)

发行者的名称:即CA自己的名称;

有效期:两个日期,起始日期和终止日期;

证书主体名称:证书拥有者自己的名字

证书主体公钥信息:证书拥有者自己的公钥;

发行商的惟一标识:

证书主体的惟一标识:

扩展信息:

签名:CA对此证书的数字签名;

openssl是基于ssl开发的,在linux上使用,openssl的组成部分:libcrypto(加密、解密库文件)、libssl( ssl协议实现)、openssl(多用途命令行工具,每种功能都使用专用的子命令来实现)。

下面首先来说下openssl的一些加密指令:

openssl:

子命令分类:标准命令、消息摘要命令、加密、解密相关的命令

加密文件(对称加密):

工具:openssl enc, gpg

算法:des, 3des, aes, blowfish, twofish, idea, cast5

enc工具:

#
openssl enc -e -CIPHERNAME -a -salt -in /PATH/FROM/SOMEFILE -out
/PATH/TO/SOMECIPHERFI

例openssl enc -e -des3 -a -salt -in path -out path.de3

#
openssl enc -d -CIPHERNAME -a -salt -in /PATH/FROM/SOMECIPHERFILE -out
/PATH/TO/SOMEFILE

例openssl enc -d -des3 -a -salt -in path.de3 -out path.22

单向加密:

算法:md5, sha1

工具:openssl dgst, md5sum, sha1sum, sha224sum, sha256sum, sha384sum,
sha512sum

# openssl dgst -CIPHER(算法如md5) /PATH/TO/SOMEFILE...

或者 
md5sum  /PATH/TO/SOMEFILE

例如:

[[email protected] tmp2]# openssl dgst -md5 lib

MD5(lib)= 8fcd1d3f02caeebfa22c649471a57b28

[[email protected] tmp2]# md5sum lib

8fcd1d3f02caeebfa22c649471a57b28 
lib

MAC: 消息认证码,单向加密的一种延伸应用,用于实现在网络通信中保证所传输的数据的完整性;

机制:

CBC-MAC

HMAC:使用md5或sha1算法

生成用户密码:

# openssl passwd -1 -salt 8bits   -salt是加在密码前面,用于加强加密

生成随机数:

# openssl rand -hex|-base64 NUM   -hex是16位  -base64生成字母和数字

随机数生成器:

random,
urandom

熵池:保存硬件中断产生的随机数

/dev/random:仅从熵池中返回随机数,当熵池中的随机数耗尽时,取随机数的进程将会被阻塞;

/dev/urandom:先从熵池中取随机数,当熵池中的随机耗尽时,就通过伪随机数生成器生成随机数;

下面说下我们平时工作会遇到的在自己公司建立私有的CA,以及发证、签证的过程;

使用OpenSSL构建私有CA的过程为主机在服务器生成私钥,然后生成自己证书文件;

(1) 私钥用于签发证书时,向证书添加数字签名使用;

(2) 证书:每个通信方都导入此证书至“受信任的证书颁发机构”;

配置文件(默认CA的配置文件):/etc/pki/tls/openssl.cnf

工作目录:/etc/pki/CA/

[[email protected]
CA]# ls

certs  crl 
newcerts  private

certs证书文件存放

crl       吊销列表

newcerts 新证书文件

private 私钥存放位置

建立私有CA:

1、生成私钥文件:
/etc/pki/CA/private/cakey.pem

#
(umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)

2、生成自签证书

#
openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out
/etc/pki/CA/cacert.pem -days #、

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

-key:私钥文件路径,用于提取公钥;

-days N: 证书有效时长,单位为“天”;

-out:输出文件保存位置;

-x509:直接输出自签署的证书文件,通常只有构建CA时才这么用;

3、提供辅助文件

#
touch /etc/pki/CA/index.txt

# echo 01 > /etc/pki/CA/serial  (01表示第一个)

给节点发证书:

1、节点申请证书

在证书申请的主机上进行如下步骤:

(1) 生成私钥;(umask 077; openssl genrsa -out httpy.key
1024)

(2) 生成证书签署请求; openssl req
-new  -key /etc/http.key -out /etc/httpd/http.csr

(3) 把请求发送给CA;

注意:

(a) 其中的subject信息部分,要与CA的保持一致;

(b) Common Name要使用此主机在通信真实使用名字;

2、CA签发证书

(1) 验正请求者信息

(2) 签署证书

# httpopenssl ca -in
/PATH/FROM/CSR_FILE -out /PATH/TO/CRT_FILE -days N

(3) 把签署好的证书发还给请求者

吊销证书:

1、获取吊销证书的序列号;

#
openssl x509 -in /PATH/FROM/CRT_FILE -noout -serial -subject

2、实现证书吊销

(1) 吊销证书

#
openssl ca -revoke /PATH/FROM/CRT_FILE

(2) 生成吊销证书的编号

echo
01 > /etc/pkie/CA/crlnumber

(3) 更新证书吊销列表

#
openssl crl -gencrl -out THISCA.cr

小结下,在公司的服务器中很有可能会用到私有CA,以保证通信的安全性。

时间: 2024-10-11 01:10:06

linux中加密解密以及Opensll建立CA的相关文章

Linux中加密和解密技术及CA认证

网络安全通信: 为了不让自己的隐私,信息等随随便便就能让获取,所以需要对数据进行加密处理,保证数据在传输的过程中不被别人获取,网络通信安全需要达到以下三个目的: 1.数据的保密性 2.数据的完整性 3.来源的合法性 解决网络安全通信的方案: SSL:Secure Sockets Layer  安全的套接层,位于应用层和传输层之间,为数据通信提供安全支持,可在服务端和客户端同时支持一种加密算法.目前版本SSLV2,SSLV3(常用). HTTP调用SSL协议就变成HTTPS,多了层加密解密功能.

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

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

Linux之加密解密基础、openssl及CA基础应用

加密解密基础简介 数据在网络中传输过程中要保证三个要点: (1)数据的完整性:防止数据在传输过程中遭到未授权用户的破坏或篡改 (2)数据的机密性:防止文件数据泄漏给未授权用户从而让其利 (3)数据的可用性:保证授权用户能按需访问存取文件数据 因此加密技术是最常用的安全保密手段,利用技术手段把重要的数据变为乱码(加密)传送,到达目的地后再用相同或不同的手段还原(解密).加密技术包括两个元素:算法和密钥.算法是将普通的信息或者可以理解的信息与一串数字(密钥)结合,产生不可理解的密文的步骤,密钥是用来

加密、解密以及openssl建立CA

首先先科普一下OpenSSL,我们知道OpenSSL,全名叫Open Secure Sockets Layer,这是一个强大的安全套接字层密码库,主要包括密码算法.常用的密钥和证书封装管理功能及SSL协议,并提供丰富的程序供测试或其它目的使用.此外,OpenSSL是基于SSL协议的,SSL要求建立在可靠的传输层协议之上.它优势在于它是与应用层协议独立无关的,高层的应用层协议(例如:HTTP,FTP,TELNET等协议)能透明地建立于SSL协议之上.SSL协议在应用层协议通信之前就已经完成加密算法

加密解密以及OpenSSL建立私有CA

一次加密通信过程的建立: 发送方: 使用单向加密算法提取数据的 特征码:[单向加密算法] 单向加密>特征码+特征码 使用自己的 私钥 加密 特征码,附加在数据的后面:[公钥加密(非堆成加密)] 公钥加密>[特征码密文+数据] 生成用于 对称加密 的 临时密钥,并用此临时密钥 加密数据和加密的数据特征码.[对称加密] 对称加密>[密文[特征码密文+数据]] 使用接受方的公钥加密 临时密钥,附加在对称加密后的数据后方. 公钥加密(对方)>[临时密钥][密文[特征码密文+数据]] 接受方

加密解密与OpenSSL建立私有CA

安全规范: 1)NIST规定的数据安全性标准: ①保密性:数据保密性:隐私性: ②完整性:数据完整性:系统完整性 ③可用性:数据与服务随时可用 2)OSI,X.800:定义了安全攻击,安全机制,安全服务 ①安全攻击 被动攻击:监听 主动攻击:报文伪装.重放.消息篡改.拒绝服务(将有限资源耗尽,使得正常资源无法访问DDOS) ②安全机制 加密/解密,数字签名,访问控制,数据完整性保证,认证交换,数据填充,路由控制,人为公证 ③安全服务 认证 访问控制 数据保密性: 连接保密性 无连接保密性 选择域

Linux之加密解密基础技术

下文主要介绍了什么是加密解密:为何要用到加密解密技术:加密解密技术能够为我们带来什么样的好处:常见的几种加密解密技术介绍以及Linux中的openssl. 一.什么是加密,解密 加密技术是一种常用的安全保密手段,利用各种技术手段把重要的数据进行加密传送:再用对应的技术手段进行解封,该过程的逆过程就称为解密.这里用一个不太恰当的例子说一下:也就好比你去办一张银行卡,需要你设置一个密码,就可以理解成在为这张银行卡做一个加密的操作:用银行卡到提款机取钱需要你输入密码,这就是一个解密的操作. 二.为什么

学习笔记之加密解密,PKI,CA

1.加密解密 背景:在网络通信中为了达到安全需要,比如通信保密性,保证信息完整性和可用性,这就需要一些技术,下面就来介绍相关的技术 技术包括:加密和解密 服务(用于抵御攻击的服务,也即是为了上述安全目标而特地设计的安全服务) 加密和解密: 传统加密方法:替代加密方法.置换加密方法 现代加密方法:主要是现代块加密方法 注:真正的加密主要依赖密钥而不是加密算法 服务: 认证机制 访问控制机制 加密包括: 对称加密 公钥加密 单向加密 认证加密 2.对Linux系统:为了实现上述安全目标需要一些工具需

linux下加密解密之OpenSSL

一.为什么要加密 在网络这个大森林里面,所有的数据传输都是不安全的,在数据传输中必须要给数据加密,以防止被别人劫持盗取 二.数据在网络中怎么传输 数据从发送出去到目的地都经过了哪些步骤? 1.ISO国际标准组织定义了数据在网络传输中的七层模型:数据从 应用层--会话层--表达层--传输层--网络层--数据链路层--物理层 逐层封装传输,数据到达最底层后传送出去,到达目标主机后在从底层往上层传输并逐层解压封装. 2.在TCP/IP定义的四层模型里,数据传输也是一样的道理,应用层--传输层--网络层