openssl与数据传输安全

本文涉及的产品
数据传输服务 DTS,数据迁移 small 3个月
推荐场景:
MySQL数据库上云
简介:

数据安全服务的几个方面:

1
2
3
4
5
6
     1、认证  
           访问控制 阻止对资源的未授权访问
     2、数据保密性 
     3、数据完整性
          要保证发送方所发送的数据没有被修改。。。
     4、不可否认性

一、怎么验证数据的完整性。也就怎么知道数据在传输的过程中没有被修改过。这就要使用到单向加密算法,提取数据的指纹(特征码)。

数据的传输双方为:甲、乙

甲:在数据传输之前,提取该数据的“指纹”然后,把数据指纹附加在数据中一起发送给乙。

乙:接收到该数据以后,再提取数据的“指纹”。与附加在数据中的数据指纹作比较,如果一样,

    就证明,该数据在是完整的,在传输的过程中没有被修改过。

例:

1、使用【md5sum】单向加密算法提取文件secure的数据指纹

1
2
[root@server  test ] # md5sum secure
1f66b7c25cd47ba8dbe78ee4c28dfd36  secure

2、在secure文件中新增空白行

增加前

1
2
3
[root@server  test ] # tail -2 secure
Aug  2 09:48:27 stu13 sshd[2231]: pam_unix(sshd:session): session opened  for  user admin by (uid=0)
Aug  2 09:48:33 stu13  su : pam_unix( su -l:session): session opened  for  user root by admin(uid=

使用重定向增加空白行

1
2
3
[root@server  test ] # echo "" >> secure
[root@server  test ] # tail -2 secure
Aug  2 09:48:33 stu13  su : pam_unix( su -l:session): session opened  for  user root by admin(uid=502)

3、再提取文件secure的指纹

1
2
[root@server  test ] # md5sum secure
ffc2cd02fa9e936c29302c802131e629  secure

说明:

    从上面的事例可以看出,文件secure新增空白行之后,该文件的数据指纹已经发生了翻天腹地的改变了。类似于“蝴蝶效应”,在单向加密算法中被称为:”雪崩效应“。这也正是通过数据指纹可以检验数据的完整性的原因。


如果,在甲与乙的数据传输链路中,丙截获了数据包。上面的方法也不能确保数据在传输的过程没有被篡改过的。

通讯双方:甲、乙

黑客: 丙

:在发送数据包给乙之前,先提取数据指纹并把它附加在数据中一起发送给乙

:在数据包的传输链路中,使用某工具截获了甲发送给乙的数据包。修改数据内容,并重新生成数据

     指纹,再发送给乙

:接收到数据包以后,提取数据指纹。做数据指纹比较,是相同的。乙就认为该数据在传输的过程中

    没有被篡改过。事实上,数据已经被篡改过。

    原因:接收数据方乙,无从考证附加在数据包中的数据指纹是否是甲提取的。那么,乙怎么样才可以验证该数据指纹一定是甲提取的呢,还有数据指纹在传输的过程中没有被修改过。这就使用到非对称加密的功能了。


非对称加密的密钥是成对出现的,分为:公钥(public key)和私钥(secret key)。

这种加密方式有个特点:

1
2
3
4
                    公钥是公开的,私钥是自己保留的。
            公钥是从私钥中提取而来的。
            公钥加密的数据,使用私钥才能解密。
            私钥加密的数据,使用公钥才能解密。

前提:

通讯双方为:甲、乙

在数据交互之前,通讯双方都各自生成密钥对,都把公钥给对方,私钥自己保留。

数据传输:

:提取数据的指纹,并使用接收者乙的公称加密数据指纹,然后再与数据一起发送给乙。

:在接收到数据之后,使用自己的私钥对数据指纹进行解密,如果能够解密成功,

    证明提取数据指纹的一定是甲。再提取数据的指纹。做数据指纹比较,如果它们一样的话。

    就说明,该数据在传输的过程中没有被篡改过。

如果,在数据的传输链路上截获了数据,篡改了数据,重新提取数据的指纹。但是没有数据发送者的私钥,接收者乙使用甲的公钥做数据指纹的制作者身份核实的时候就会发现数据指纹已经被修改了。这样就能检测数据在传输的过程中是否被修改过。即使某人截获了数据,接收者也能正确无误的判断数据在传输的过程中是否被人篡改过。也就是数据的完整性。

   但是,甲发送给乙的数据是明文传输的,只保证了数据的完整性,没有满足数据的保密性的要求。如果它们传送的数据是机密性的内容,在数据链路上的窃听者就会截获到数据就可以看到数据包中的绝密内容。所以,我们的数据要加密之后,再传送的。


二、数据的保密性是如何实现的呢?    

数据的加密方式有两种:

1
2
1、对称加密    
2、非对称加密

     非对称加密的密钥非常长,对数据加密的速度比对称加密的速度慢得多。速度最少相差上百倍。如果web服务器传输的数据使用非对称加密的话,会影响用户的体验效果的。所以对称加密一般是用作数据加密的。

     但是,使用单向加密数据,通讯双方密钥交换也是个问题,怎么办呢?

非对称加密能够实现密钥的交换,对称加密加密数据的速度又很快,那么它们联合起来就可以解决:数据的加密和密钥的交换了。


:使用对称加密方法,一起加密数据和数据指纹。再使用乙的公钥加密对称加密的密钥。

     把它们一起发送给乙。

:接收到数据包以后:

     使用自己的私钥解密对称加密的密钥(甲使用乙的公钥加密了密钥) -----> 获取到了明文的对称加

                                                                       密的密钥

     使用密钥解密,数据与数据指纹。 --------------->    分别获取到使用乙公钥加密的数据指纹

                                                         和明文的数据

    使用自己的私钥解密数据指纹 ------------------->      获取到明文的数据指纹

    提取数据的数据指纹        ------------------->       做数据指纹的比较。

1
2
3
4
前面的甲乙双方数据通讯中:
          数据的保密性,使用对称加密。              密钥交换是依靠非对称加密完成的。
          数据的完整性,使用单向加密。              加密数据指纹、验证数据指纹的制作者的身
                                                     份都是非对称加密完成的。

    都涉及到了数据通讯双方的公钥。假如通讯双方在公钥交换的过程中,丙在数据的链路中,截取到了乙发给甲的公钥,丙自己生成密钥对把自己的公钥发给了甲。这样丙就冒充乙与甲进行通讯。也就是所谓”中间人攻击“。那么甲怎么确保与自己通讯的一定是乙呢?或者说自己获取到的公钥一定是乙的呢?这就要使用到数据证书了。

三、如何辨别公钥的真伪?

    这就需要一个第三方机构,认证中心CA。做个证明,这个证明就是所谓的数据证书。这个数据证书包含了用户的部分信息(如:主机名称、邮件地址)和公钥信息。通过查这个数据证书,就知道这个公钥一定是的。这样就可以放心地和进行数据交换了。

    但是,怎么知道这个这个数据证书一定是合法的公证的CA机构颁发的呢?

这就需要身份验证了,像公安局对***盖章一样,CA利用自己的私钥在乙的数字证书加上数据签名。甲利用CA的公钥就可以辨别数据证书的真伪了。


Linux 中是使用:Openssl 能够实现单向加密、对称加密、非对称加密、证书的发放制作以及简单构建一个PKI(公钥基础设施),是一种开源的实现。

openssl它由三个主件:

1
2
3
4
5
6
1、libcrypto
     这是一个加密库,专门为其它软件调用的加密功能的加密库。
2、libssl
     用于实现ssl协议的一个库。很多网络应用都可以使用ssl进行加密数据。如:web 服务器 Apache
3、命令行工具:openssl
     可以实现数据的完整性校验、加密、解密、证书的生成,还包括生成证书请求、颁发证书等等。

查看openssl工具的使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
[root@server ~] # openssl -h
openssl:Error:  '-h'  is an invalid  command .
 
##openssl  命令的子命令。
## dgst    表示提取数据的特征码(数据指纹)。
## enc     表示使用对称加密算法加密数据
## getrsa  生成私钥
## req     从私钥中提取公钥,要求输入公司的名称、主机、邮箱、公司地址等。生成证书签署请求
## ca      CA机构审核证书签署请求后,使用该子命令发证
## passwd   加密明文的密码
Standard commands
asn1parse         ca                ciphers           cms
crl               crl2pkcs7         dgst              dh
dhparam           dsa               dsaparam          enc
engine            errstr            gendh             gendsa
genpkey           genrsa            nseq              ocsp
passwd             pkcs12            pkcs7             pkcs8
pkey              pkeyparam         pkeyutl           prime
rand              req               rsa               rsautl
s_client          s_server          s_time            sess_id
smime             speed             spkac             ts
verify            version           x509
 
##所支持的提取数据指纹的算法
Message Digest commands (see the `dgst'  command  for  more  details)
md2               md4               md5               rmd160
sha               sha1
 
##所支持的对称加密的算法
Cipher commands (see the `enc'  command  for  more  details)
aes-128-cbc       aes-128-ecb       aes-192-cbc       aes-192-ecb
aes-256-cbc       aes-256-ecb       base64            bf
bf-cbc            bf-cfb            bf-ecb            bf-ofb
camellia-128-cbc  camellia-128-ecb  camellia-192-cbc  camellia-192-ecb
camellia-256-cbc  camellia-256-ecb  cast              cast-cbc
cast5-cbc         cast5-cfb         cast5-ecb         cast5-ofb
des               des-cbc           des-cfb           des-ecb
des-ede           des-ede-cbc       des-ede-cfb       des-ede-ofb
des-ede3          des-ede3-cbc      des-ede3-cfb      des-ede3-ofb
des-ofb           des3              desx              rc2
rc2-40-cbc        rc2-64-cbc        rc2-cbc           rc2-cfb
rc2-ecb           rc2-ofb           rc4               rc4-40
seed              seed-cbc          seed-cfb          seed-ecb
seed-ofb          zlib

如果使用openssl进行对称加密的:

1
2
3
[root@server ~] # openssl enc -des3 -salt -a -in fstab -out fstab.des3
enter des-ede3-cbc encryption password:     -----> 输入密码 
Verifying - enter des-ede3-cbc encryption password:

查看加密后的文件类型

1
2
[root@server ~] # file fstab.des3 ----> 文件类型跟加密前一样的。但是打开是乱码。
fstab.des3: ASCII text

解密fatab.des3

1
2
[root@server ~] # openssl enc -d -des3 -salt -a -in fstab.des3 -out fstab
enter des-ede3-cbc decryption password:  --------> 输入密码

单向加密 使用命令dgst

1
2
[root@server ~] # openssl dgst -md5 fstab
MD5(fstab)= 53b4962a89e6eb77a83cb7592ee7f783

加密明文密码

1
2
3
4
[root@server ~] # openssl passwd -1  
Password:    ---> 输入明文的密码
Verifying - Password:
$1$CgFeVKbO$8.KGlawM.3vHADcOS1VZT.




     本文转自成长的小虫 51CTO博客,原文链接:http://blog.51cto.com/9528du/1534286 ,如需转载请自行联系原作者



相关实践学习
RocketMQ一站式入门使用
从源码编译、部署broker、部署namesrv,使用java客户端首发消息等一站式入门RocketMQ。
Sqoop 企业级大数据迁移方案实战
Sqoop是一个用于在Hadoop和关系数据库服务器之间传输数据的工具。它用于从关系数据库(如MySQL,Oracle)导入数据到Hadoop HDFS,并从Hadoop文件系统导出到关系数据库。 本课程主要讲解了Sqoop的设计思想及原理、部署安装及配置、详细具体的使用方法技巧与实操案例、企业级任务管理等。结合日常工作实践,培养解决实际问题的能力。本课程由黑马程序员提供。
相关文章
|
3月前
|
安全 大数据 网络安全
Sqoop安全性:确保安全的数据传输
Sqoop安全性:确保安全的数据传输
|
5月前
|
网络协议 安全 Linux
解密TCP连接断开:四次挥手的奥秘和数据传输的安全
本文将介绍TCP连接的断开过程,重点关注四次挥手的过程和状态变迁,以及为什么挥手需要四次和为什么需要TIME_WAIT状态。在TCP连接断开的过程中,双方需要发送FIN和ACK报文来确保数据的可靠传输和连接的正确关闭。挥手需要四次的原因是为了确保数据的完整传输和连接的可靠关闭。
208 1
解密TCP连接断开:四次挥手的奥秘和数据传输的安全
|
11月前
|
Web App开发 安全 算法
多省市政务数据管理机构,选用沃通SSL证书保护数据传输安全
我国多省市政务数据管理机构选用沃通SSL证书,应用于政务机构官网、在线政务系统、移动政务APP等各类电子政务场景,实现数据传输安全及通信主体身份认证。沃通WoSign SSL证书上线阿里云平台以来,成为阿里云平台热销的SSL证书,目前可在阿里云平台直接选购 WoSign SSL证书。
308 0
|
12月前
|
存储 安全 固态存储
OushuDB 小课堂丨最大限度地提高企业数据安全性:安全数据传输的终极指南
OushuDB 小课堂丨最大限度地提高企业数据安全性:安全数据传输的终极指南
39 0
|
算法 安全 数据安全/隐私保护
Android网络数据传输安全——AES加密解密(ECB模式)
Android网络数据传输安全——AES加密解密(ECB模式)
684 0
|
安全 Java 数据安全/隐私保护
Android网络数据传输安全——实现RSA公钥加密私钥解密
Android网络数据传输安全——实现RSA公钥加密私钥解密
534 0
Android网络数据传输安全——实现RSA公钥加密私钥解密
|
Web App开发 tengine 算法
阿里云CDN不止于加速:基于https国密算法构建安全数据传输链路
5月20日,阿里云政企安全加速解决方案正式发布。在发布会中,阿里云技术专家林胜恩从HTTPS的技术概述,国密算法的标准内容以及国密算法在阿里云CDN上的应用情况三个方面,来介绍了阿里云CDN在安全方面的重要实践。
1873 0
阿里云CDN不止于加速:基于https国密算法构建安全数据传输链路
|
Web App开发 tengine 算法
阿里云CDN不止于加速:基于https国密算法构建安全数据传输链路
5月20日,阿里云政企安全加速解决方案正式发布。在发布会中,阿里云技术专家林胜恩从HTTPS的技术概述,国密算法的标准内容以及国密算法在阿里云CDN上的应用情况三个方面,来介绍了阿里云CDN在安全方面的重要实践。
2019 0
|
算法 安全 网络安全
国密SSL证书,保护金融领域数据传输安全
对于金融领域而言,在信息安全各环节实现国产密码算法的深入应用具有非常重要的战略意义。
2916 0

热门文章

最新文章