数据加密、数字签名,CA制作

数据安全->加密

1.基础概念:

机密性:防止他人拿到数据

完整性:数据不被破坏

身份验证:保证数据的来源

PKI(public key infrastructure):公共的密钥基础设施。

协商生成密码:密码交换(Interne Key Exchange,IKE)

Diffie-Hellman协议(这是一种安常见的IKE)

原理;

A 和 B 进行协商:选择两个数字p, g (大素数,生成数)

A: 自动产生随机数字x

B: 自动产生随机数字y

A: 计算g^x%p 发送到B

B: 计算g^y%p 发送到A

此时在网络上传输的数据有:g, p, g^x%p, g^y%p

这是不能够找出x和y的。

A:计算(g^y%p)^x=g^yx%p

B: 计算(g^x%p)^y=g^xy%p

此时的g^yx%p就是双方的密钥,但是谁也不知道究竟密钥是多少。

2.机密性:

对称加密:加密和解密的用的都是一把密钥。

特点:加速速度快

缺点:由于不同的会话之间都是要用到不同的密钥,所以维护的密钥过多。

实现:

DES:Data Encryption  Standard 56bit加密(这个已经不常用了)

3DES:经过三次的DES

AES:Advanced Encryption Standard 这个有很多的变种,例如AES192 AES256

BlowFish:这个是要收费的。

3.完整性:

单项加密:提取数据的特征码。

特点:输入一样,那么输出也一样;

 雪崩效应:输入产生微小变化就会引起结果的巨大变化。

 定长输出:无论原始数据多大,结果大小相同。

 不可逆:无法根据特征码还原原数据。

实现:

MD4、MD5(128bit)

SHA1 sha224  sha256  sha384 sha512  等。

linux中的命令有:sha1hmac    sha224sum   sha256sum   sha384sum   sha512sum   

sha1sum     sha256hmac  sha384hmac  sha512hmac  

 

4.身份验证:

非对称密钥:分为公钥和私钥,公钥机密私钥解密,私钥加密公钥解密。

公钥(从私钥中提取):机密数据

私钥:身份验证

特点:1.公钥加密数据的速度很慢,所以一般不用公钥加密数据。

 2.私钥主要是用来身份验证。

实现:

RSA:加密和签名

DSA:签名

ELGamal:收费

5.网络传输数据的过程:

对于A

1.用户要发一封秘密邮件给B用户,首先A用户的明文通过hash函数得到一个信息摘要,在用A的私钥对摘   要进行签名得到一个数字信封,我们中的数字信封又称数字指纹,具有不可否认性,就是说我们可以   根据数字信封来确认这封邮件是A发过来的,这个数字签名有什么用途,下面我们就知道了。

2.明文 A的数字签名 A的公钥钥三者和三惟一用对称加密密钥进行加密,通常这步对用户来说是透明     的,换句话来说就是系统自动用对称加密算法对数据进行加密处理,来防止网上有人的信息监听。

3.用用户B的公钥对对称加密的密钥进行加密,得到一个数字信封,我们知道对于非对称加密算法,用B   的公钥进行加密,只有B用户的私钥才可以解密,而用户B的私钥是存储在B的个人pc机上的,这样即使在传输过程中信息被人截获,由于无法得知用户B的私钥根本上是打不开的,

4.A用户把信息发送到公网

对于B用户来说,他需要做的也有4步

1.先对数字信封用B的私钥进行解密,因为我们发送的文件使用对称加密算法得出的,对于对称加密算法钥匙就有一个,而B用户是不知对称加密的密钥的,ok,B用户首先用自己的私钥对数字信封进行解密,从而得到对称加密的密钥

2.用对称加密的密钥对密文进行解密,这时候B用户才可以看到文件的明文,通过解密B用户也同时得到了三个文件,分别是明文,A的数字签名,A的公钥,这时候有人要问了,那么我们不可以伪造A的公钥吗?首先A的公钥是在我们通过非对称加密用B的私钥和对称加密算法揭开的,要得到A的公钥我们就是和对称加密和非对称加密为敌,即使是可以伪造A的公钥,可A的私钥是伪造不出来的,我们知道对于非对称加密算法,密钥是成对出现的,用私钥加密只能公钥解开,二者是相互关联的,即使有人伪造了A的公钥,同样解不开密文。这步对于用户来说同样是透明的。

3.下面我们就说到数字签名了,我们用A的公钥对数字签名进行解密,如果能解得开说明文件就是A用户发过来的,具有不可抵赖性,这样我们也就知道了为什么数字签名又叫数字指纹了。这样我们得到一个信息摘要,同样我们对明文进行HASH运算同样能得到一个信息摘要.

4.我们通过对二者进行对比,一样说明信息传递无误,不一样则说明文件别人篡改了。

6.对于以上的传输过程需要一个公正单位能够证明身份,也就是说让别人知道我是谁,而不是假冒的。

这时候就要有一个CA(Certificate Authority)证书颁发机构。

1.一个完整的CA是一个认可的证书颁发机构。

2.CA中维护者一个CRL(Certificate Revocation list)证书吊销列表。

3.CA的标准是X509(常用),pkcs12(不常用)

X509内容:

1.公钥以及其有效的期限

2.证书的合法拥有者

3.证书应该如何使用

7.PKI的具体实现:TLS/SSL,OpenGpG

1.SSL:这个是网景公司开发的,在TCP的传输层和应用层加入一个半层的SSL实现数据的加密。

它其实是一个库,实现数据的加密。

SSL版本:SSLV1 SSLV2 SSLV3 ,现在SSLV1已经不用了。

SSL全称是 Security Socket Layer 安全套接字层.

2.TSL: Transport Layer Security 这个是国际标准化制定的。

TLSV1等价于SSLV3,其实现原理一样。

8.SSL会话的建立过程

例如:http(tcp)

         客户端                                  服务器

1.客户端请求会话。                   1.服务器端收到请求

2.协商构造SSL会话,包括算法等        2.协商构造SSL会话,包括算法等

3.接受客户端的证书。                 3.向客户端发送自己的证书

4.随机产生对称密钥等打包数据         4.接受数据,并且验证数据

5.重复上面动作                       5.重复上面动作

6.使用完关闭会话                     6.关闭会话

注意:以上没有用到Diffie-Hellman协议.

9.OpenSSL:是一种强大的工具,实现了开源ssl功能。

1.构成:libcrypto:加密库文件

 libssl:ssl的库文件

 openssl:多用途的命令行工具。

2.openssl命令有很多的子命令:

例如:

1.对称加密文件

openssl enc -des3 -salt -a -in 文件名 -out 文件名

解密:

openssl enc -des3 -salt -d -in 文件名 -out 文件名

2.单向加密文件(计算出MD5)

例如:md5sum + 文件

注意:md5加密都有salt,会使得相同的密码有不一样的加密结果。

3.openssl指出RSA和DSA对文件进行加密,对应的子命令是rsautl和dsa

同时也支持随机数加密。例如 openssl rand -base64 数字 表示加密数字的长度。

10.利用openssl实现私有的CA:

1.先要生成一对密钥;

 (umask 077;openssl genrsa -out 文件名)

2.用私钥生成公钥

openssl rsa -in 私钥文件 -pubout

3.req 可以生成证书也可以申请签名

openssl req -new -x509 -key 私钥文件 -out 文件名.crt -days 天数

注意:此时的ca不一定能用,这个要按照/etc/pki/tls/openssl.cnf进行设定然后完成。

经过以上步骤就可以完成了CA的创建,接下来就是办法证书了,

1.要签证就要有自己的密钥,例如给http服务器做签证。

(umask 077;openssl genrsa -out httpd.key 1024)

2.生成请求;(这个是同一台机器上的,否则要进过网络的传输然后进行签证)

openssl req -new -key -out httpd.csr

csr:certificate signing request 证书请求文件

3.进行签证:

openssl ca -in httpd.csr -out httpd.crt -days 365

时间: 2024-10-13 20:59:33

数据加密、数字签名,CA制作的相关文章

linux的数据加密和CA认证

一.加密协议和算法 1.对称加密算法:加密和解密使用同一秘钥 主流私钥加密算法: DES:数据加密标准 64bit块,加密密钥的长度56bit NSA 3DES,三次DES加密 AES:高级加密标准 加密密钥的长度更长:128bit,192bit,256bit Blowfish Twofish IDEA RC4,RC6 CASTS 特性: 1.每对通信主机都需要保有一个唯一的通信密钥,用于加密和解密数据 2.将原始的数据分割成固定大小的块逐个加密 3.加密和解密的速度非常快 缺陷:在一台主机上需

数字证书及CA的扫盲介绍(转)

★ 先说一个通俗的例子 考虑到证书体系的相关知识比较枯燥.晦涩.俺先拿一个通俗的例子来说事儿. ◇ 普通的介绍信 想必大伙儿都听说过介绍信的例子吧?假设 A 公司的张三先生要到 B 公司去拜访,但是 B 公司的所有人都不认识他,他咋办捏?常用的办法是带公司开的一张介绍信,在信中说:兹有张三先生前往贵公司办理业务,请给予接洽......云云.然后在信上敲上A公司的公章. 张三先生到了 B 公司后,把介绍信递给 B 公司的前台李四小姐.李小姐一看介绍信上有 A 公司的公章,而且 A 公司是经常和 B

openssl搭建私有CA

数据加密.CA.OpenSSL SSL security socket layer,安全套接字层 openssl (软件) 加密算法和协议: 对称加密:加密和解密使用同一密钥:(依赖于算法和密钥,其安全性依赖于密钥而非算法) 常见算法:des  3des(常用)  idea  cast5 特性:加密.解密使用同一密钥:将明文分隔成固定大小的块,逐个进行加密 缺陷:密钥过多和密钥分发 非对称加密: 密钥对儿:公钥(public key)和私钥(secret key) 公钥从私钥中提取而来,使用公钥

数字证书及CA的扫盲介绍

先说一个通俗的例子 考虑到证书体系的相关知识比较枯燥.晦涩.俺先拿一个通俗的例子来说事儿. ◇ 普通的介绍信 想必大伙儿都听说过介绍信的例子吧?假设 A 公司的张三先生要到 B 公司去拜访,但是 B 公司的所有人都不认识他,他咋办捏?常用的办法是带公司开的一张介绍信,在信中说:兹有张三先生前往贵公司办理业务,请给予接洽......云云.然后在信上敲上A公司的公章. 张三先生到了 B 公司后,把介绍信递给 B 公司的前台李四小姐.李小姐一看介绍信上有 A 公司的公章,而且 A 公司是经常和 B 公

[转贴] 数字证书及 CA 的扫盲介绍

[略有删节] 为了达到普及的效果,俺会尽量用比较浅显,非技术的语言来讲清楚. ★先说一个通俗的例子 考虑到证书体系的相关知识比较枯燥.晦涩.俺先拿一个通俗的例子来说事儿.   ◇普通的介绍信 想必大伙儿都听说过介绍信的例子吧?假设 A 公司的张三先生要到 B 公司去拜访,但是 B 公司的所有人都不认识他,他咋办捏?常用的办法是带公司开的一张介绍信,在信中说:兹有张三先生前往贵公司办理业务,请给予接洽......云云.然后在信上敲上A公司的公章. 张三先生到了 B 公司后,把介绍信递给 B 公司的

C#编程总结(八)数字签名

C#编程总结(八)数字签名 在日常工作中,有很多文件需要领导审阅.签名和盖章,由于公司业务开展,跨地域.跨国业务也日益普遍,领导签名盖章变得很麻烦,开始的时候人们通过邮寄.传真等方式来解决,但是耗费时间.人力.物力.在网络化日益深入的今天,需要领导审批.签字盖章的东西越来越多,时间也越来越紧迫,数字签名的出现,很好了解决了这一问题.推动了互联网及跨国集团的发展. 数字签名 1.概念 数字签名基于哈希算法和公钥加密算法,对明文报文先用哈希算法计算摘要,然后用私钥对摘要进行加密,得到的值就是原文的数

Linux下自建CA的实现

CentOS7上搭建lamp环境 要求如下,搭建在同一台虚拟机上,实现下述3个功能: vhost1: pma.stu13.com, phpMyAdmin, 同时提供https服务 vhost2: wp.stu13.com, wordpress vhost3: dz.stu13.com, Discuz Vmware机器情况如下:     CA服务器:192.168.2.100/24     httpd服务器:192.168.2.109/24     Client客户机:192.168.2.1/24

深入揭秘HTTPS安全问题&连接建立全过程

作者:[已重置]链接:https://zhuanlan.zhihu.com/p/22142170来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 作为开发者必备的网络安全知识,HTTPS一直戴着神秘的面纱.接下来让我们一起深入揭秘HTTPS的安全问题和建立的全过程吧! 本文将分两个专题去理解HTTPS. 专题一,主要介绍HTTPS建立安全链接的原理,包括非对称加密.对称加密.CA认证等知识,还包括对一些业界常用算法的优缺点对比,性能简介与对比等. 专题二,主要采用实

HTTPS为什么安全 &分析 HTTPS 连接建立全过程

专题一:HTTPS为什么安全 1.http为什么不安全? http协议属于明文传输协议,交互过程以及数据传输都没有进行加密,通信双方也没有进行任何认证,通信过程非常容易遭遇劫持.监听.篡改,严重情况下,会造成恶意的流量劫持等问题,甚至造成个人隐私泄露(比如银行卡卡号和密码泄露)等严重的安全问题. 可以把http通信比喻成寄送信件一样,A给B寄信,信件在寄送过程中,会经过很多的邮递员之手,他们可以拆开信读取里面的内容(因为http是明文传输的).A的信件里面的任何内容(包括各类账号和密码)都会被轻