Linux的加密和认证
数据日益成为我们个人生活、经济发展和安全保障的核心。这就意味着,我们必须做到时刻保障数据的安全。这就如同在现实世界中紧锁家门、限制重要物品的进出,以及保护我们
一、加密的重要性 数据日益成为我们个人生活、经济发展和安全保障的核心。这就意味着,我们必须做到时刻保障数据的安全。这就如同在现实世界中紧锁家门、限制重要物品的进出,以及保护我们重要的企业财产一样,我们有赖于加密来保证数据不会遭受各种网络犯罪的侵入和盗取。任何有关于限制这种重要保护方式的建议,无论其初衷多么美好,最终结果都会导致我们的安全保障被弱化。 当我们存款、购物和通信时,数据安全显得越发重要。而这种安全的核心便是加密。随着我们的生活越来越多地依赖于互联网,人们更应该不断提高数据安全意识,并为此付诸行动,保护我们的数字化世界不再继续遭受各种网络犯罪的攻击和破坏。 二、加密技术 现在常见的加密技术主要有三种:对称加密,非对称加密,单向加密 对称加密 对称加密指的是加密和解密使用同一个密钥 特点:1、加密、解密使用同一个密钥,效率高。 2、将原始数据分割成固定大小的块,逐个进行加密。 缺点:1、密钥过多。 2、密钥分发。 3、数据来源无法确认。 常见的对称加密算法有:
其他的还有blowfish,Twofish和RC6,IDEA(商业算法),CAST5等 非对称加密 公钥:公开给所有人 私钥:自己保留,必须保证其私密性 特点:1、用公钥加密数据,只能使用与之配对的私钥解密;反之亦然。 2、数字签名:主要在于让接收方确认发送方身份。 3、对称秘钥交换:发送方用对方的公钥加密一个对称密钥后发送给对方。 4、数据加密:适合加密较小的数据。 缺点:密钥长,加密解密效率低下。 常见的非对称加密算法有: RSA:既可以用来加密解密,又可以用来实现用户认证 DSA:只能用来加密解密,所以使用范围没有RSA广 单向加密 单向加密: 只能加密、不能解密,即提取出数据的特征码,可以校验数据的完整性。 特点:1、定长输出,雪崩效应(微小变化产生巨大反应)只要被加密内容有一点点的不同,加密所得结果就会有很大的变化。 2、无论被加密的内容多长/短,加密的结果(就是提取特征码)是定长的。 常见的单向加密算法有: md5:128bits定长输出 sha系列:安全的哈希算法 sha-1,sha224,sha384,sha512 三、实验操作 1.使用gpg工具实现对称加密 我们先准备一个文件然后使用gpg工具对其进行加密 输完密码后加密就算完成了,这时就会生成一个.gpg文件就是加密后的文件 我们把这个文件传到另一台机器上进行解密 这里的-o参数后跟的是将解密后的内容导出到一个指定文件(名字可以随便指定) 2.使用gpg工具实现非对称加密 先在A主机上生成公钥/私钥对
将刚才生成的公钥导出来 将生成的公钥文件传给另一台需要加密的主机 然后我们再把公钥导入,在这里我们要注意下两天机器的时间,我刚开始没有注意到这点导致公钥导入失败如下: 把两台机器的时间同步之后,我们需要重新生成公钥,重新开始,时间同步后我们再次导入就没有问题了 我们再用导入的公钥对要传输的文件进行加密 我们可以看到文件已进行了加密,这个加密的文件自己也是无法解密的,只有用另一台机器的私钥才能解开,这样就确保了数据的安全性 我们把加密后的文件传给另一台机器 我们回到原来的机器用自己的私钥对文件进行解密 我们也可以把解密后内容导出来 删除公钥和私钥 我们要先删除私钥才能再删除公钥 删除公钥 加密工具还有openssl,也可以做到对称加密,非对称加密,我就在这里给大家演示下用openssl做单向加密 单向加密是不可逆的,做单向加密一般都是为了校验数据的完整性,我们先用md5算法对一个文件做一个加密,导出一个md5值 我们再对文件做一个小小的修改加个空格就行 可以看到,文件的md5值发生了很大的改变,这就是雪崩效应,这样就可以判断这个文件是否被别人篡改过。 四、CA认证 我们都知道,当客户端与服务器端建立会话之前,首先是客户端发送请求,然后进行TPC/IP的三次握手,接着客户端与服务器端建立ssl会话。 会话过程如下: 1.客户端计算数据特征值 2.使用私钥加密特征值 3.随机生成密码对称加密整个过程 4.使用服务器端公钥加密密码 5.服务器端使用私钥解密密码 6.服务器端解密整个数据 7.服务器端使用公钥验证身份 8.比较数据特征值 但是这些存在一个问题,谁来管理公钥,任何在互联网上传播的数据都不安全,更不用说传递公钥,如果它被篡改,那就无法验证身份,所以不可能由用户自己颁发公钥。 这个时候就需要一个具有公信力的中间机构来做这个工作,就是CA。国内的大部分互联网公司都在国际CA机构申请了CA证书,并且在用户进行访问的时候,对用户的信息加密,保障了用户的信息安全。理论上来说,任何组织或者个人都可以扮演CA的角色,只不过,难以得到客户端的信任,不能推而广之,最典型应用莫过于12306网站,这个网站就是自己给自己颁发的根证书。我们现在就自己搭建一个CA认证中心。 1、CA认证中心简述 CA:CertificateAuthority的缩写linux认证,通常翻译成认证权威或者认证中心,主要用途是为用户发放数字证书。 功能:证书发放、证书更新、证书撤销和证书验证。 作用:身份认证,数据的不可否认性。 端口: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 查看证书的时间 (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |