数据加密和OpenSSL

数据加密:

SSL: Secure Socket Layer安全的套接字层

Openssl:ssl在Linux上实现的一个软件,开源的

例:使用了ssl协议就不在是原来的协议了

http(80) --> ssl --> https (443)

NIST定义数据安全性的基本法则:

保密性:

数据保密性

隐私性

完整性:

数据完整性

系统完整性

可用性:

安全攻击:

被动攻击:监听

主动攻击:伪装、重放、消息篡改、拒绝服务

安全机制:

加密/解密、数字签名、访问控制、数据完整性、认证交换、流量填充、路由控制、公证

安全服务:

认证

访问控制

数据保密性

连接保密性

无连接保密性

选择域保密性

流量保密性

数据完整性

不可否认性

密码算法和协议:

对称加密

公钥加密[非对称加密 ]

单向加密

认证协议

对称加密:加密和解密使用同一个密钥;将一种数据流结合加密秘钥输出成另一种数据流;

常见算法:

DES:Data EncryptionStandard, 56bits

3DES:

AES:Advanced Encrpytion Standard, (128bits, 192, 256, 384, 512bits)

Blowfish

Twofish

IDEA

RC6

CAST5

特性:

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

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

3、依赖于:算法和密钥;

安全性依赖于密钥,而非算法;

缺陷:

1、密钥过多;

2、密钥分发不便;

非对称加密:公钥加密

分为私钥和公钥,私钥仅给个人使用,公钥是给所有人公开获取的。常用算法:RSA、DSA(只能实现数据签名)

私钥:secret key,仅允许个人使用;

公钥:public key,公开给所有获取;

公钥从私钥中提取而来;使用公钥加密的数据,只能使用与此公钥配对儿的私钥解密;反之亦然;

用处:

1.身份认证:私钥拥有者用自己的私钥加密的数据,只要用其公钥能解密,即可认证其身份;

2. 密钥交换:与被通信方通信之前,首先获取到对方的公钥,自己生成一个加密密码,用对方的公钥加密,并发送给对方;

3. 数据加密:但加密时间长,一般不用于数据加密

特性:

1、密钥长度较大,例如512bits, 2048bits,4096bits

2、加密解密分别使用密钥对儿中的密钥相对进行;

3、常用于数据签名和密钥交换;

单向加密:提出数据的特征码;

用于数据完整性校验

特性:

1、定长输出:无论原来的数据是多大级别,其加密结果长度一样;

2、雪崩效应:原始数据微小改变,将会导致结果巨大变化;

3、不可逆:

算法:

MD5:128bits定长输出;

SHA1:160bits定长输出;

SHA256

SHA384

SHA512:

一次加密通信过程

发送者:

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

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

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

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

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

接收方:

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

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

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

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

数字证书:

CA:签证机构

功用:保证通信方公钥信息安全分发;

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

版本号(version)

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

签名算法标志(Signature algorithm identifier)

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

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

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

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

发行商的惟一标识:

证书主体的惟一标识:

扩展信息:

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

证书通常有两类用途:

用户证书

主机证书(httpd)

撤消证书:当私钥丢失时

PKI: Public KeyInfrastructure  公钥基础设施

签证机构:CA

注册机构:RA

证书吊销列表:CRL

证书存取库:

openssl的组成部分:

libcrypto:加密、解密库文件;

libssl: ssl协议实现

openssl:多用途命令行工具,每种功能都使用专用的子命令来实现

openssl:

子命令分类:

标准命令

消息摘要命令

加密、解密相关的命令

加密文件(对称加密):

工具:openssl enc, gpg

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

enc工具:

加密:

# openssl enc -e -加密算法 -a -salt -in 要加密的文件 -out 加密后输出的文件

例:   -e  -des3 表示指定加密方法为des3    -a表示要用ASCII格式输出你的内容  -salt 加杂质  -in 加密哪个文件  -out 加密后输出成哪个文件

解密:

# openssl enc -d -解密算法 -a -salt -in要解密的文件 -out 解密后输出的文件

例:opensslenc -d -des3 -a -salt -in fstab.drs3 -out fstab2

-d  -des3 表示用什么算法解密    -a 表示要用ASCII格式输出你的内容  -salt 加杂质  -in 解密哪个文件  -out 解密后输出成哪个文件

单向加密:

算法:md5, sha1

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

# openssl dgst  -加密算法 文件名

例:提取fstab文件的特征码,会输出到屏幕

生成用户密码:

# openssl passwd -1 -salt 8位随机数[做为杂质]

例:-1 指定MD5算法

生成随机数:

# openssl rand -hex[16进制]|-base64[文本格式] NUM

例:openssl rand -hex 4

随机数生成器:

任何随机数都是从这两个中取得

random,urandom

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

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

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

生成密钥对儿:

操作过程:生成私钥,从私钥中提取公钥;

# openssl genrsa -out   生成的私钥文件  密钥长度[1024 20484096]

例:

注意:在bash命令行上放在小括号中执行的命令,其实是通过打开一个子shell进程进行的;

因为私钥应该仅属主可以查看,所以权限应为400或600

#(umask277; openssl genrsa -out 生成的私钥文件密钥长度[10242048 4096])

例:

从私钥中手动提取公钥:

# openssl rsa -in  生成的私钥文件 -pubout

X.509 v3数字证书的格式:

证书撤销链:

获取证书的方法:

向RA注册申请

建立私有CA:

OpenSSL

OpenCA

使用OpenSSL构建私有CA:

1、生成私钥:私钥用于签发证书时,向证书添加数字签名使用

2、生成自签署证书:每个通信方都导入此证书至“受信任的证书颁发机构”

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

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

建立私有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

给节点发证书:

1、节点申请证书

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

(1) 生成私钥;

# (umask 077; openssl genrsa -out 私钥位数[1024])

(2) 生成证书签署请求;openssl req -new key 私钥 -out 请求.csr

# openssl req -new -key httpd.key -out httpd.csr-days #

注意:

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

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

(3) 把请求发送给CA;

2、CA签发证书

(1) 验正请求者信息

(2) 签署证书

# openssl ca -in 请求.csr -out 证书.crt -days N

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

吊销证书:

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

# openssl x509 -in 证书.crt -noout-serial -subject

2、实现证书吊销

(0) 确保与index.txt中的序列号一致

(1) 吊销证书

# openssl ca -revoke 证书.crt

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

echo 数字[原有吊销+1] >/etc/pkie/CA/crlnumber

echo 01 >/etc/pkie/CA/crlnumber

(3) 更新证书吊销列表

# openssl crl -gencrl -out 正在使用的吊销链文件.crl

大菜鸟祝:更上一层楼。欢迎加入大菜鸟3群:264723618

时间: 2024-10-14 19:09:48

数据加密和OpenSSL的相关文章

数据加密openssl&openssh

数据加密特性:机密性.完整性与身份认证. 常见的加密算法 对称加密 在对称加密算法在加密与解密过程中都使用同一密钥,不能有有效管理密钥. 对称加密算法有:DES:3DES:AES:Advanced:AES192 AES256 AES512:OpenSSL:gpg 单向加密 能够有效保证数据的完整性,单向加密算法,提取特征码:输入一样,输出必然一样:雪崩效应:输入的微小改变,会引起结果的巨大改变:定长输出,无论原始数据有多大,结果大小相同:具有不可逆,无法根据特征码来还原原来的数据.md4;md5

OpenSSL - 数据加密和数字证书

功能应用: 消息摘要,给文件或数据生成消息摘要,消息摘要只能校验数据的完整性,如SHA.MD5 数据加密和解密:对数据进行加密解密,OpenSSL实现了所有加密算法 数字证书:可以通过命令行或代码生成证书,证书内包含了公钥 数字签名:利用加密算法对数据进行签名,验证数据来源可靠性,如RSA 随机数字:产生可靠的随机数 加密算法: HASH算法:SHA.MD5等,不可逆加密,用于校验数据的完整性. 对称加密算法:DES.3DES.DESX等,双方使用相同的密钥进行加密解密. 非对称算法:RSA.E

使用openssl库实现RSA、AES数据加密

使用openssl库实现RSA.AES数据加密 openssl是可以很方便加密解密的库,可以使用它来对需要在网络中传输的数据加密.可以使用非对称加密:公钥加密,私钥解密.openssl提供了对RSA的支持,但RSA存在计算效率低的问题,所以一般的做法是使用对称密钥加密数据,然后再把这个只在当前有效的临时生成的对称密钥用非对称密钥的公钥加密之后传递给目标方,目标方使用约定好的非对称密钥中的私钥解开,得到数据加密的密钥,再进行数据解密,得到数据,这种使用方式很常见,可以认为是对HTTPS的裁剪.对称

使用OpenSSL进行数据加密

0x01 OpenSSL的基本概念 OpenSSL是为网络通信提供安全性和数据完整性功能的一种协议,其中包括囊括了主要的密码算法.常用的密钥和证书封装管理功能以及SSL协议. 0x02 加密和解密的基本概念 这里说一下加密和解密的过程:       文件加密 :原始数据 -> 单向加密提取特征码 -> 使用私钥加密特征码并附加于原始数据中 -> 使用对称加密算法加密全部数据 -> 使用解密者的公钥加密 密码附加于已加密的数据中             文件解密:使用自己的私钥解密对

php使用openssl进行Rsa长数据加密(117)解密(128) 和 DES 加密解密

PHP使用openssl进行Rsa加密,如果要加密的明文太长则会出错,解决方法:加密的时候117个字符加密一次,然后把所有的密文拼接成一个密文:解密的时候需要128个字符解密一下,然后拼接成数据. 加密: /** * 加密 * @param $originalData * @return string|void */ /*function encrypt($originalData){ // if (openssl_private_encrypt($originalData, $encryptD

openssl数据加密

一.openssl简介 openssl是最著名的开源SSL,其用 C 实现,被广泛应用在基于TCP/Socket的网络程序中. OpenSSL:开源项目 三个组件:openssl: 多用途的命令行工具,包openssllibcrypto: 加密算法库,包openssl-libslibssl:加密模块应用库,实现了ssl及tls,包nss 1.SSL(Secure Sockets Layer,*接层)是一个安全协议,为基于TCP的应用层提供安全链接,如https.其目标是保证两个应用间通信的保密性

Openssl及加密解密(一)数据加密解密及CA原理

明文:plaintxt或者cleartext,也就是没有加密的,直接可以看懂的内容.密文就是通过特殊方式处理过的内容,无法直接看懂. 常见的加密方式: 对称加密 公钥加密 单向加密 对称加密: 加密算法+口令,把要转换的数据也就是明文数据,通过加密算法内部转换明文变成密文.这个算法可能是公开的,但口令只有你自己知道.为了更加安全,那么加密本身不能过于依赖算法,因为算法固定而且一旦算法遭到破解,那么基于这个算法的所有密文都可以破解,所以算法固然重要,但是最重要的是口令,口令可以变,就算算法破解了,

openssl基础

OpenSSL 是一个安全套接字层密码库,囊括主要的密码算法.常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用. OpenSSL is an open source project that provides a robust, commercial-grade, and full-featured toolkit for the Transport Layer Security (TLS) and Secure Sockets Layer (SSL) prot

加密、解密的原理及Openssl创建CA和ssh的基础应用

加密.解密的原理及Openssl创建CA和ssh的基础应用 随着互联网的不断发展和技术的不断成熟,在互联网上传输文件不在安全,在需要传送重要的数据时就必须加密处理. 密码算法分为三种:分别是对称加密,公钥加密,单向加密:以及需要对加密算法的认证,叫做认证协议.下面为大家概述对称加密,公钥加密,单向加密及认证协议 对称加密: 采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密. 需要对加密和解密使用相同密钥的加密算法.由于其速度快,对称性