数据日益成为咱们我的生活、经济发展和安全保障的核心。这就意味着,咱们必须作到时刻保障数据的安全。这就如同在现实世界中紧锁家门、限制重要物品的进出,以及保护咱们重要的企业财产同样,咱们有赖于加密来保证数据不会遭受各类网络犯罪的侵入和盗取。任何有关于限制这种重要保护方式的建议,不管其初衷多么美好,最终结果都会致使咱们的安全保障被弱化。
当咱们存款、购物和通讯时,数据安全显得愈加重要。而这种安全的核心即是加密。随着咱们的生活愈来愈多地依赖于互联网,人们更应该不断提升数据安全意识,并为此付诸行动,保护咱们的数字化世界再也不继续遭受各类网络犯罪的***和破坏。redis
如今常见的加密技术主要有三种:对称加密,非对称加密,单向加密
对称加密
对称加密指的是加密和解密使用同一个密钥
特色:一、加密、解密使用同一个密钥,效率高。
二、将原始数据分割成固定大小的块,逐个进行加密。
缺点:一、密钥过多。
二、密钥分发。
三、数据来源没法确认。
常见的对称加密算法有:算法
DES:使用56位的密钥,2000年的时候被人破解了,因此如今基本再也不使用 AES:高级加密标准,可使用128,129,256三种长度密钥
其余的还有blowfish,Twofish和RC6,IDEA(商业算法),CAST5等
非对称加密
公钥:公开给全部人
私钥:本身保留,必须保证其私密性
特色:一、用公钥加密数据,只能使用与之配对的私钥解密;反之亦然。
二、数字签名:主要在于让接收方确认发送方身份。
三、对称秘钥交换:发送方用对方的公钥加密一个对称密钥后发送给对方。
四、数据加密:适合加密较小的数据。
缺点:密钥长,加密解密效率低下。
常见的非对称加密算法有:数据库
RSA:既能够用来加密解密,又能够用来实现用户认证centos
DSA:只能用来加密解密,因此使用范围没有RSA广
单向加密
单向加密: 只能加密、不能解密,即提取出数据的特征码,能够校验数据的完整性。
特色:一、定长输出,雪崩效应(微小变化产生巨大反应)只要被加密内容有一点点的不一样,加密所得结果就会有很大的变化。
二、不管被加密的内容多长/短,加密的结果(就是提取特征码)是定长的。
常见的单向加密算法有:
md5:128bits定长输出安全
sha系列:安全的哈希算法服务器
sha-1,sha224,sha384,sha512网络
1.使用gpg工具实现对称加密ide
咱们先准备一个文件而后使用gpg工具对其进行加密
输完密码后加密就算完成了,这时就会生成一个.gpg文件就是加密后的文件
咱们把这个文件传到另外一台机器上进行解密
这里的-o参数后跟的是将解密后的内容导出到一个指定文件(名字能够随便指定)
2.使用gpg工具实现非对称加密
先在A主机上生成公钥/私钥对工具
[root@centos7 ~]# gpg --gen-key gpg (GnuPG) 2.0.22; Copyright (C) 2013 Free Software Foundation, Inc. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Please select what kind of key you want: (1) RSA and RSA (default) (2) DSA and Elgamal (3) DSA (sign only) (4) RSA (sign only) Your selection? 1 #选择加密算法 RSA keys may be between 1024 and 4096 bits long. What keysize do you want? (2048) 1024 #选择密钥长度 Requested keysize is 1024 bits Please specify how long the key should be valid. 0 = key does not expire <n> = key expires in n days <n>w = key expires in n weeks <n>m = key expires in n months <n>y = key expires in n years Key is valid for? (0) 0 #选择密钥过时时间 0表明永不过时 Key does not expire at all Is this correct? (y/N) y GnuPG needs to construct a user ID to identify your key. Real name: rootkey #给密钥命名 Email address: #邮箱(能够为空) Comment: #注释(能够为空) You selected this USER-ID: "rootkey" Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O #N重命名,C重写注释,E重写邮箱,O生成密钥,Q退出
将刚才生成的公钥导出来
将生成的公钥文件传给另外一台须要加密的主机
而后咱们再把公钥导入,在这里咱们要注意下两天机器的时间,我刚开始没有注意到这点致使公钥导入失败以下:
把两台机器的时间同步以后,咱们须要从新生成公钥,从新开始,时间同步后咱们再次导入就没有问题了
咱们再用导入的公钥对要传输的文件进行加密
咱们能够看到文件已进行了加密,这个加密的文件本身也是没法解密的,只有用另外一台机器的私钥才能解开,这样就确保了数据的安全性
咱们把加密后的文件传给另外一台机器
咱们回到原来的机器用本身的私钥对文件进行解密
咱们也能够把解密后内容导出来
删除公钥和私钥
咱们要先删除私钥才能再删除公钥
删除公钥
加密工具还有openssl,也能够作到对称加密,非对称加密,我就在这里给你们演示下用openssl作单向加密
单向加密是不可逆的,作单向加密通常都是为了校验数据的完整性,咱们先用md5算法对一个文件作一个加密,导出一个md5值
咱们再对文件作一个小小的修改加个空格就行
能够看到,文件的md5值发生了很大的改变,这就是雪崩效应,这样就能够判断这个文件是否被别人篡改过。网站
咱们都知道,当客户端与服务器端创建会话以前,首先是客户端发送请求,而后进行TPC/IP的三次握手,接着客户端与服务器端创建ssl会话。
会话过程以下:
1.客户端计算数据特征值
2.使用私钥加密特征值
3.随机生成密码对称加密整个过程
4.使用服务器端公钥加密密码
5.服务器端使用私钥解密密码
6.服务器端解密整个数据
7.服务器端使用公钥验证身份
8.比较数据特征值
可是这些存在一个问题,谁来管理公钥,任何在互联网上传播的数据都不安全,更不用说传递公钥,若是它被篡改,那就没法验证身份,因此不可能由用户本身颁发公钥。
这个时候就须要一个具备公信力的中间机构来作这个工做,就是CA。国内的大部分互联网公司都在国际CA机构申请了CA证书,而且在用户进行访问的时候,对用户的信息加密,保障了用户的信息安全。理论上来讲,任何组织或者我的均可以扮演CA的角色,只不过,难以获得客户端的信任,不能推而广之,最典型应用莫过于12306网站,这个网站就是本身给本身颁发的根证书。咱们如今就本身搭建一个CA认证中心。
一、CA认证中心简述
CA:CertificateAuthority的缩写,一般翻译成认证权威或者认证中心,主要用途是为用户发放数字证书。
功能:证书发放、证书更新、证书撤销和证书验证。
做用:身份认证,数据的不能否认性。
端口:443
2.CA证书的制做
咱们在这里用三台主机进行实验,其中两台是做为CA机构存在,因此建立所须要的文件的时候主机A和主机B都须要建立。若是不提早建立这两个文件,那么在生成证书的过程当中会出现错误。咱们将文件建立在配置文件中指定的路径下面。
生成证书索引数据库文件:touch /etc/pki/CA/index.txt
指定第一个颁发证书的序列号:echo 01 > /etc/pki/CA/serial
CA自签名证书(构造跟CA)
首先构造根CA证书。由于没有任何机构可以给跟CA颁发证书,因此只能根CA本身给本身颁发证书。
首先在A主机上生成私钥文件
生成自签名证书
3.颁发证书
颁发证书这里咱们将分红两个环节介绍,分别是 子CA证书机构向根CA证书机构申请证书以及普通用户向子CA证书机构申请证书。
子CA证书机构向根CA申请证书,这个过程和前面根CA生成私钥的过程是一致的。
在子CA这里咱们就没有设置私钥密码,密钥长度也设置了为1024
用私钥文件生成证书申请文件
将证书申请文件传递给根CA
根CA颁发证书
这时切换到根CA也就是A主机,生成证书
这时咱们查看index.txt文件就会看到新增了一条记录
将CA生成的证书颁发给子CA
主机B是做为子CA机构存在的,因此证书文件,必须是cacert.pem,不然,子CA将不可以给其余用户颁发证书。
普通用户向子CA机构申请证书
过程和子CA申请差很少,首先也是生成私钥文件,不过由于是普通用户,因此生成的私钥文件应该与以前的cacert.pem 有所区别
利用私钥生成证书申请文件
将证书申请文件发送给子CA颁发机构
切换到子CA颁发机构颁发证书
将生成的证书传递给申请者
这样,正常的证书颁发流程就算是完成了。
咱们验证下证书-text 证书的内容-issuer 证书颁发者的信息-subject 证书主体的信息-serial 证书的序列号信息-dates 查看证书的时间