linux的数据加密和CA认证

一、加密协议和算法

1.对称加密算法:加密和解密使用同一秘钥

主流私钥加密算法:

DES:数据加密标准

64bit块,加密密钥的长度56bit

NSA

3DES,三次DES加密

AES:高级加密标准

加密密钥的长度更长:128bit,192bit,256bit

Blowfish

Twofish

IDEA

RC4,RC6

CASTS

特性:

1.每对通信主机都需要保有一个唯一的通信密钥,用于加密和解密数据

2.将原始的数据分割成固定大小的块逐个加密

3.加密和解密的速度非常快

缺陷:在一台主机上需要保有的密钥数量比较多;密钥的分发非常困难

2.公钥加密算法:

由私钥和与私钥数学相关的公钥构成,其中公开的密钥为公钥,不公开的密钥为私钥

使用公钥加密的数据只有用与之对应的私钥才能解密,使用私钥加密的数据只有用与之对应的公钥才能解密

使用公钥加密:用于其他用户向该用户传递加密信息,只有该用户的私钥才能进行解密

使用私钥加密:其他用户使用公钥进行解密,用于确定用户身份,这种方法叫做数字签名

公钥加密算法的私钥长度均较长:512bit,1024bit,2048bit,4096bit,8192bit,16384bit

主流公钥加密算法:

RSA:加密,数字签名

DSA:只能做数字签名,也被称为DSS

Elgamal

缺陷:加密数据的时候,消耗的资源和时间都较多,速度很慢,因此,极少用来加密大量数据,所以进行数据加密的时候仍使用对称加密算法,但在传输过程中,将对称加密算法的密钥通过公钥加密算法进行加密。

3.单向加密算法:

只能加密不能解密,又称为"数据指纹提取",其输出结果为定长的特征码,即"数据指纹"

主流的单向加密算法:

md5:128bits定长输出

sha系列:安全的哈希算法

sha-1,sha224,sha384,sha512

二、CA和PKI

PKI是一种遵循标准的利用公钥加密技术为电子商务的开展提供的一套安全基础平台的技术和规范,其提供安全服务利用公钥技术和证书,包含以下内容:

1.签证机构:CA

2.注册机构:RA

3.证书吊销列表:CRL

4.证书存储库:CR

国际标准化组织(ISO)定义了证书的结构和认证标准,:x.509协议标准

证书的组成包括:

证书的版本号

证书的序列号

有效期限

签发算法的ID

证书主体的名称

证书主体的公钥

证书主体唯一标识符

发证者的唯一标识符

发证者的数字签名

扩展信息

通信双方进行身份认证的步骤:

1.通信双方互相交换证书

2.双方验证证书的真伪

3.双方协商加密算法

4.用CA办法的公钥解密证书中的CA的签名,能解密说明证书来源可靠

5.用协商出来的加密算法加密证书,并取得特征值,与解密出来的特征值进行比较,如果相同,说明证书完整性有保证

6.检查证书的有效期是否合法,如果在有效期内,则证书可用

7.检查证书的主体名和此次通信的目标是否能够对应;

8.检查证书是否被吊销

三、实现安全加密功能:

1.进行安全加密传输数据的一般步骤:

1)通信双方互相交换证书,并到信任的CA进行证书有效性认证

2)发送方:

① 使用协商好的对称加密算法进行数据加密

② 使用单向加密算法对加密后的密文抽取特征值,并使用自己的私钥将特征值加密

③ 利用接收方的公钥对对称加密算法的私钥进行加密

3)接收方:

① 使用自己的私钥解密对称加密算法的私钥

② 使用发送方的公钥解密被加密的特征值,证明数据来源可靠

③ 利用相同的单向加密算法对密文进行抽取特征值,若与发送方的特征值相同,则证明数据完整未损坏

④ 利用对称加密算法对密文进行解密

2.实现上述安全加密功能的协议

1)SSL:Security Socket Layer,安全套接字层

位于传输层和应用层之间。

2)TLS:Transport Layer Security,传输层安全协议

分层设计方案:

最底层:规定了基础算法的原语的实现;包括:AES, md5, sha,...

向上一层:各种算法的基本实现;

再向上一层:各种算法组合实现的半成品;

最高层:用各种组件拼装而成的各种成品密码学协议软件;

由于较低层位于某个传输协议上面,与上面具体的应用无关,故一般把TLS归于传输层安全协议

3.SSL/TLS的handshake的四个阶段:

1)客户端向服务器索要证书并验证证书;

发送Client Hello的消息,此消息主要内容:

支持的协议的版本,如:SSL v3.0或TLS v1.2;

客户端生成一个随机数,稍后用于生成回话密钥;

支持的加密算法,如:DES,3DES,AES,RSA,....

支持的压缩算法,如:gzip,bzip2,deflate,...

2)双方协商生成会话密钥:

发送Server Hello消息,此消息主要内容:

确认使用的协议的版本,如:TLS v1.2

服务器也生成一个随机数,稍后用于生成会话密钥;

确认加密算法和压缩算法;

服务器的证书;

3)双方采用以及生成的会话密钥进行安全加密的数据通信:

① 客户端验证服务器证书,在确认无误后,取出其中的服务器公钥;

验证服务器证书的步骤:

验证发证机构(CA);

验证证书的完整性;

验证证书的持有者信息;

验证证书的有效期;

验证CA的吊销列表中是否有此证书;

② 客户端发送信息给服务器端;

③ 客户端再次生成一个随机数,用于公钥加密;

④ 编码格式的变更通知,表示以后的信息都将采用双方已经协商好的加密算法和压缩算法;

此时客户端握手结束;

⑤服务器收到客户端发送来的第三个随机数(Pre_Master_key),计算生成此次会话用到的会话密钥,向客户端发送相关信息;

⑥编码格式的变更通知,表示以后的信息都将采用双方已经协商好的加密算法和压缩算法;

此时服务器端握手结束;

4)双方互相结束通信:

四、openssl命令行工具:

众多的子命令实现各种安全加密功能

标准命令:

enc,dgst,ca,req,genrsa,rand,rsa,x509,passwd,...

对称加密命令enc:

提供对称加密算法,以进行数据或文件的手动加密

openssl enc -ciphername [-in filename] [-out filename] [-e] [-d] [-a/base64] [-salt]

-ciphername:加密算法的名称

-in filename:openssl要读取的文件路径

-out filename:加密或解密操作后用于保存结果的文件路径

-e:加密操作

-d:解密操作

-a/-base:用纯文本格式进行密文编码

-salt:随机加盐

示例:

加密文件:

openssl enc -e -des3 -in anaconda-ks.cfg -a -out anaconda-ks.cfg.encryptfile

解密文件

openssl enc -d -des3 -out anaconda-ks.cfg -a -in anaconda-ks.cfg.encryptfile

单向解密命令dgst

示例:

openssl dgst -sha1 fstab

生成随机数命令rand:

openssl rand [-out file] [-rand file(s)] [-base] [-hex] num

示例:

openssl rand -base64 8

生成带盐的密码passwd

openssl passwd -1 -salt SALT_STRING

示例:

openssl passwd -1 -salt 01234567

公钥加密算法genrsa

生成rsa加密算法的私钥

openssl genrsa [-out filename] [-des] [-des3] [-idea] [-f4] [-3] [numbit]

出于安全考虑,需要给创建的私钥富裕只有拥有者才能读写其他人都不能读写的权限,建议使用下列方法生成私钥

]#(umask 077 ; open ssl genrsa -out /tmp/my.key 4096)

]#(umask 077 ; open ssl genrsa > /tmp/my.key 4096)

umask:设置之后创建文件的权限掩码,即对umask命令后面的权限码进行取反即为创建文件的权限码。

从已经生成的私钥文件中抽取公钥rsa

openssl rsa  [-in filename] [-out filename] [-pubout]

-pubout:抽取公钥

-in filename:私钥文件的路径

-out filename:公钥文件的路径

示例:

openssl rsa -in key.my -out mykey.pub -pubout

五、利用openssl建立私有CA

1.首先创建CA所在主机的私钥文件

2.生成自签证书

3.必须为CA提供必要的目录协议文件以及文本级文件

目录级文件:

/etc/pki/CA/certs

/etc/pki/CA/crl

/etc/pki/CA/newcerts

文本级文件:

/etc/pki/CA/serial保存证书序列号编号,一般初始序列号为01

/etc/pki/CA/index.txt:证书索引

/etc/pki/tls/openssl.cnf 配置文件

示例:

创建CA的密钥文件

]#umask 077

]#openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048

生成自签证书

使用openssl req命令

openssl req [-out filename] [-new] [-key filename] [-x509] [-days n]

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

之后需要在交互界面填写相应信息,国家、地区、城市、单位等,生成的证书为加密后数据

使用x509命令查看证书内容

]#openssl x509 -serial -noout -in /etc/pki/CA/cacert.pem

]#openssl x509 -subject -noout -in /etc/pki/CA/cacert.pem

完善目录及文本文件结构

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

]#echo 01 > /etc/pki/CA/serial

六、吊销证书:必须在CA上执行:

1.获取客户端证书对应的序列号

openssl x509 -in /etc/pki/CA/certificate -noout -serial

2.吊销证书

openssl ca -revoke /etc/pki/CA/newcerts/SERIAL.pem

注意,上述命令中的"SERIAL"要换成准备吊销证书的序列号

3.生成吊销证书的吊销索引文件;仅需要第一次吊销证书时执行此操作:

echo "SERIAL" > /etc/pki/CA/crl/crlnumber

4.更新证书吊销列表

openssl ca -genctl -out /etc/pki/CA/crl/ca.crl

5.查看CRL

openssl crl -in /etc/pki/CA/crl/ca.crl -noout -text

七、实现加密/解密的应用程序:gpg,可以使用gpg实现对称加密

gpg2 [--homedir dir] [--options file] [options] command [args]

常用选项

-c:实施对称加密

-o file , --output file:将解密结果保存于指定文件中

--gen-key:生成密钥对,即公钥+私钥

--list-keys:查看公钥

--export:导出钥匙环上所有的公钥,也可以导出指定名称的公钥:默认直接将公钥输出到标准输出;需要配合使用-o或--output选项,才能将其保存到文件中

--import:导入指定的公钥到钥匙环

-r: 复制加密文件

-e 加密数据

--delete-key name

--delete-secret-key name

--delete-secret-and-public-key name

删除公钥和/或私钥

gpg应用示例:

加密文件:

]# gpg -c fstab

解密文件:

]# gpg -o fatab.out fstab.gpg

注意参数和参数的顺序

生成密钥对:

]# gpg --gen-key

查看公钥:

]#gpg --list-key

导出公钥:

]#gpg -a --export -o /tmp/qhdlink.pub

在其他主机导入公钥,以进行公钥加密:

]# gpg --import /PATH/TO/qhdlink.phb

在其他主机上使用的公钥加密文件:

]# gpg -e -r qhdlink.pub /PATH/TO/SOME_FILE

原文地址:http://blog.51cto.com/papapa213/2096589

时间: 2024-08-01 19:07:46

linux的数据加密和CA认证的相关文章

linux之数据加密与私有CA建立

Linux在网络中通信首先要保证数据的安全保密,所以我们就要了解一下数据的加密解密的过程 OSI国际标准化组织制定了为x.800 的安全框架:包含一下方面 安全攻击:任何危机信息安全的都叫安全攻击                                    被动攻击:窃听                                     主动攻击:伪装.重播.消息修改.拒绝服务               安全机制: 组织攻击,或从攻击状态恢复到正常状态             

[Linux] centos 6.5 httpd 自建CA 认证 实现 https 服务

httpd 自建CA 认证 实现 https 服务 需要的软件: httpd mod_ssl openssl 本文将CA证书服务器和 httpd服务器放到一台物理机器上实现的, 可以作为学习的参考. 本文测试主机IP192.168.1.100/24 [[email protected] CA]# httpd -v #httpd版本 Server version: Apache/2.2.15 (Unix) Server built: Jul 23 2014 14:15:00 [[email pro

centos 6.5 httpd 自建CA 认证 实现 https 服务

httpd 自建CA 认证 实现 https 服务 需要的软件: httpd mod_ssl openssl [[email protected] CA]# httpd -v #httpd版本 Server version: Apache/2.2.15 (Unix) Server built:   Jul 23 2014 14:15:00 [[email protected] CA]# uname -r #内核版本 2.6.32-431.el6.i686 [[email protected] C

CA认证授权服务器部署

数字证书授权中心:CA →Certificate Authority - 被通信双方信任的.独立的第三方机构 - 负责证书颁发.验证.撤销等管理 国内常见的CA机构 - 中国金融认证中心(CFCA) - 中国电信安全认证中心(CTCA) - 北京数字证书中心(BJCA) PKI公钥基础设施 - PKI是一套标准的密钥管理平台; - 通过公钥加密.数字证书技术确保信息安全; PKI体系基本组成 - 权威认证机构(CA) - 数字证书库.密钥备份及恢复系统 - 证书作废系统.应用接口 web网站把公

CA认证的具体实验步骤

博文目录 CA认证的配置文件是/etc/pki/tls/opensl.cnf 服务器的操作 1.进入/etc/pki/CA下 创建 index.txt,serial,crlnumber这三个文件 并为为创建记录证书文件和吊销证书文件给予编号 [[email protected] ~]# cd /etc/pki/CA [[email protected] CA]# touch index.txt [[email protected] CA]# touch serial [[email protec

CA认证和颁发吊销证书

摘要:涉及到网络安全这一块,想必大家都听过CA吧.像百度.淘宝.京东等这些知名网站,每年都要花费一笔money来买CA证书.但其实简单的企业内的CA认证,我们自己就可以实现,今天小编我就讲解一下怎么在企业局部实现CA认证. 一.CA介绍 1.电子商务认证授权机构(CA, Certificate Authority),也称为电子商务认证中心,是负责发放和管理数字证书的权威机构,并作为电子商务交易中受信任的第三方,承担公钥体系中钥的合法性检验的责任. 2.PKI: Public Key Infras

数字签名,数字证书,CA认证等概念理解

本文将介绍数字签名,数字证书以及CA相关知识. 加密相关知识可见我的上一篇博文:http://watchmen.blog.51cto.com/6091957/1923426 本文参考文献引用链接: 1.https://www.zhihu.com/question/25912483 2.https://blog.jorisvisscher.com/2015/07/22/create-a-simple-https-server-with-openssl-s_server/ 3.https://zh.

Linux Token Auth 一次性密码认证

Linux Token Auth 一次性密码认证 http://netkiller.github.io/journal/token.html Mr. Neo Chen (netkiller), 陈景峰(BG7NYT) 中国广东省深圳市龙华新区民治街道溪山美地 518131 +86 13113668890 +86 755 29812080 <[email protected]> Mr. 曾 祥建, Android 手机端开发 中国广东省深圳市南山区 +86 18665871161 <[em

如何在 Linux 中配置基于密钥认证的 SSH

什么是基于 SSH 密钥的认证? 众所周知,Secure Shell,又称 SSH,是允许你通过无安全网络(例如 Internet)和远程系统之间安全访问/通信的加密网络协议.无论何时使用 SSH 在无安全网络上发送数据,它都会在源系统上自动地被加密,并且在目的系统上解密.SSH 提供了四种加密方式,基于密码认证,基于密钥认证,基于主机认证和键盘认证.最常用的认证方式是基于密码认证和基于密钥认证. 在基于密码认证中,你需要的仅仅是远程系统上用户的密码.如果你知道远程用户的密码,你可以使用 ssh