加密学原理及openssl,私有CA搭建

公钥加密:密钥是成对儿出现
    公钥:公开给所有人;pubkey
    私钥:自己留存,必须保证其私密性;secret key
    特点:用公钥加密的数据,只能使用与之配对儿的私钥解密;反之亦然;
实现:
    数字签名:主要在于让接收方确认发送方身份;用自己的私钥加密;
    密钥交换

方式(IKE):

①.发送方用对方的公钥加密一个对称密钥,并发送给对方;

②.DH算法,不会在网络上发送秘钥,所以就算破解了也拿不到秘钥,想了解DH算法请google

安全通信过程解析:(假设A和B要安全传输数据,A要发送数据给B)

发送方A:

1.A用单向加密算法对实际数据做hash,并且用自己的私钥加密hash得到的特征码

2..A用随机对称密钥加密实际数据和刚刚hash得到的特征码,用B的公钥加密那个随机的对称密钥

3.将⑴用刚刚对称密钥加密的数据和特征码,⑵用B的公钥加密后的对称密钥发送给B

接收方B:

1.用自己的私钥解密得到发送方的随机对称密钥

2.用对称密钥解密数据得到以A的私钥加密了的特征码和实际数据

3.用A的公钥解密那个加密了的特征码

4.对实际数据做hash比对上面说的特征码实现了完整性校验

上面过程看似很完美,其实有个漏洞:

A如何拿到B的公钥呢?万一C假冒B告知A自己是B呢?同理B如何拿到A的公钥呢?

这时就需要用到CA了,CA是证书颁发机构,B会把自己的公钥发送给CA,让CA证明B就是B(会在发给B的证书(证书里内嵌了B的公钥)上面盖一个章,实现B的身份认证,这就是数字签名)

为了保证私钥丢了其他人也不能用,私钥需要加密,但是万一别人解密呢?

所以:CA机构需要有证书吊销列表(证书其实有有效期的),接受方每次都会查看证书是不是可信机构发的,而且会查看CA服务器上的证书吊销列表有没有发送方的这个证书,有的话就不可信

PKI: Public Key Infrastructure
    签证机构:CA
    注册机构:RA
    证书吊销列表:CRL
    证书存取库

证书格式:

X.509:定义了证书的结构以及认证协议标准
    版本号
    序列号
    签名算法ID
    发行者名称
    有效期限
    主体名称
    主体公钥
    发行者惟一标识
    主体的惟一标识
    扩展
    发行者签名

上面流程还是有漏洞,万一有人冒充CA呢?那么收到CA证书的人如何验证CA的可靠性呢?

这时,CA会用自己的私钥加密自己颁发给A或者B的证书的特征码,这时,就需要CA的公钥去解密得到特征码,此时就用到CA的证书了,CA自己给自己发证书,当A或者B收到CA颁发给自己的证书同时要验证CA的签名是否可靠(是不是可信CA),用什么方式验证呢?就是装系统时系统会内嵌所有可信CA公证机构的证书,会用系统内嵌的证书里提取出CA公钥,除非系统盗版

windows上自带的证书:

SSL/TLS:在应用层和传输层之间加了半层

分层设计:
    1、最低层:基础算法原语的实现,aes, rsa, md5
    2、向上一层:各种算法的实现
    3、再向上一层:组合算法实现的半成品
    4、用各种组件拼装而成的种种成品密码学协议/软件:
        tls, ssh,

三个组件:
    openssl: 多用途的命令行工具;
    libcrypto: 公共加密库;
    libssl: 库,实现了ssl及tls;

linux上openssl命令使用:

1.enc命令:
加密:~]# openssl enc -e -des3 -a -salt -in fstab -out fstab.ciphertext
解密:~]# openssl enc -d -des3 -a -salt -in fstab.ciphertext -out fstab
openssl ?可以获取帮助

2.单向加密:
工具:md5sum, sha1sum, sha224sum, sha256sum,..., openssl dgst
dgst命令:openssl dgst -md5 /PATH/TO/SOMEFILE

MAC: Message Authentication Code,单向加密的一种延伸应用,用于实现在网络通信中保证所传输的数据的完整性;
机制:CBC-MAC    HMAC:使用md5或sha1算法

3.生成随机数:
openssl rand -base64|-hex NUM
NUM: 表示字节数;-hex时,每个字符4位,出现的字符数为NUM*2;

4.生成密钥对儿:
openssl genrsa -out /PATH/TO/PRIVATEKEY.FILE NUM_BITS
# (umask 077; openssl genrsa -out key.pri 2048)
提取出公钥:
# openssl rsa -in /PATH/FROM/PRIVATEKEY.FILE -pubout(公钥可以从私钥中提取出来)

时间: 2024-12-15 02:48:49

加密学原理及openssl,私有CA搭建的相关文章

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

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

Linux运维之加密/解密原理、自建CA及搭建基于https的Apache

上几次博文我们具体讨论了Apache(httpd)的基础知识: HTTP协议基础(参见博文:http://sweetpotato.blog.51cto.com/533893/1656137) Apache2.2的基本配置(参见博文:http://sweetpotato.blog.51cto.com/533893/1657668) Apache2.2的虚拟主机(参见博文:http://sweetpotato.blog.51cto.com/533893/1660229) 本次博文我们具体讨论下加密/

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

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

openssl的加密、解密以及构建私有CA

SSL.TLS介绍: SSL:安全套接字(Secure Socket Layer,SSL)协议是Web浏览器与Web服务器之间安全交换信息的协议,提供两个基本的安全服务:鉴别与保密. TLS:安全传输层协议(Transport Layer Security)用于在两个通信应用程序之间提供保密性和数据完整性.该协议由两层组成: TLS 记录协议(TLS Record)和 TLS 握手协议(TLS Handshake).较低的层为 TLS 记录协议,位于某个可靠的传输协议(例如 TCP)上面,与具体

加密、解密以及openssl建立CA

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

Linux下私有CA搭建

数字证书为实现双方安全通信提供了电子认证.在因特网.公司内部网或外部网中,使用数字证书实现身份识别和电子信息加密.数字证书中含有密钥对(公钥和私钥)所有者的识别信息,通过验证识别信息的真伪实现对证书持有者身份的认证. 证书申请及签署步骤: 1.生成申请请求: 2.RA核验: 3.CA签署: 4.获取证书: 创建私有CA 1.在/etc/pki/CA 下面创建所需的文件 [[email protected] CA]# touch index.txt [[email protected] CA]#

OpenSSL(私有CA)

一.相关环境1.系统环境2.软件环境二.OpenSSL相关文件 1.配置文件 2.相关选项 二.OpenSSL:创建私有证书签发机构CA步骤 在确定配置为CA的服务器主机上生成一个自签证书,并为CA提供所需要的目录及文件: 在真正的通信过程中CA服务器主机不需要网络参与,只需要参与到签名中,不需要提供服务 1.生成私钥: ~]# (umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 4096) 因为在默认配置文件中默认配置/e

openssl加密、解密及建立私有CA

OpenSSL:俗称安全套接字 它可以实现数据加密: SSL全称为:Secure Socket Layer可以在Internet上提供秘密性传输,其目标是保证两个应用间通信的保密性和可靠性,SSL能使用户/服务器应用之间的通信不被攻击者窃听,并且始终对服务器进行认证,还可选择对用户进行认证.SSL协议要求建立在可靠的传输层协议(TCP)之上.SSL协议在应用层协议通信之前就已经完成加密算法.通信密钥的协商及服务器认证工作.在此之后应用层协议所传送的数据都会被加密,从而保证通信的私密性. 一.Op

加密解密原理,自建CA

目前数据的加密方式有3种:单向加密,对称加密,公钥加密(非对称加密),我们常见的加密算法有DES,MD5,SHA1...SHA512,RSA,都有各自不同的用处.简单介绍下这3中加密方式. 单向加密 通过某种Hash 函数对原始数据进行提取,提取得到一端固定长度的密文(不管文件有多大,密文长度不变),这段数据也常被称为数据指纹或特征码. 特点:1)单向加密,只能由原始数据得到特征码,而不能由特征码逆向推出原始数据. 2)雪崩效应,原始数据微小的改变会导致特征码巨大的变化 应用:常被应用于数字签名