在计算机网络建设的初期,由于能使用到计算机的人少之又少,并没有考虑到有数据加密需求,随着社会的发展,互联网已俨然成为我们生活中不可或缺的一部分,人们不管是交流,购物,还是工作都已经离不开互联网。在电脑,手机,各种电子设备构建的互联网中,数据的安全问题已经成为人们很是关注一个重要环节。
现在,我们就来了解一下linux下是如何实现数据加密及解密的。
对于确保数据的安全性,我们要达成的目标有三个:
保密性,完整性,可用性。
现今蛇龙混杂的互联网,总是有很多拥有强烈好奇心的不安分的人想尽办法要获知其他人的数据信息,这就有了威胁这三个安全性目标的攻击手段:
威胁保密性的攻击:窃听,通信量分析;
威胁完整性的攻击:更改,伪装,重放,否认;
威胁可用性的攻击:拒绝服务(Dos)
对于这些烦人的攻击手段,我们就不得不想出一些方法来防止别有用心的人来威胁我们的数据安全,这就有了加密解密技术,还有抵御攻击的认证机制,访问控制机制服务了。
首先,我们对加密解密的算法做一个简单的了解:
传统的加密方式在科技发展迅猛的今天,已经变的不堪一击,这就有了现代的块加密方法。
linux下的加密方法主要有对称加密,公钥加密,单向加密方式;
对称加密:加密和解密使用同一个密钥,将原始数据分割成为固定大小的块,逐个进行加密;
缺点:当文件过多时,需要管理的密钥太多,不易于管理;
加密方式:
DES data encryption standard,56bit(安全性不高,已弃用)
3DES 3次DES
AES advanced encryption standard,128bit(国家安全局)
AES192,AES256,AES512
Blowfish ,Twofish,IDEA,RC6,CAST5等
非对称加密:密钥分为公钥与私钥,公钥就是公布与众的密钥,任何人都可以获取一份,而私钥就只能当事人私自拥有,不允许被任何其他人获取到了;用公钥加密的数据只能用对应的私钥解密,反之亦然;这种加密方式主要用于数字签名,密钥交换;
缺点:用于数据加密的速度太慢,比对称加密方式至少慢了3个数量级,就是1000倍了,对于大文件,就这个速度恐怕是没人能受得了
加密方式:主要有RSA, DSA, ELGamal
单向加密:即只能加密数据,而不能解密;但是这种加密方式可以定长输出加密后的数据,而且加密后的数据一丁点的改变都会造成用相同加密方法加密后的数据有着相当大的区别,这就是雪崩效应了;所以常用来做数据完整性的判定;
加密方式:md5:Message Digest 5, 128bits
sha1:Secure Hash Algorithm 1, 160bits
sha224, sha256, sha384, sha512
通过下图我们来认识一下是如何通过这些方法来进行数据加密,来满足人们对安全性的需求的:
上图中看起来完美的无懈可击,但是仔细想想,如果A,B双方之间根本不认识,并且是第一次进行通信,如何保证他们获取对方的公钥是就一定是对方的公钥了?假设A,B通信的双方一直有个图谋不轨的C在监听着双方的一举一动,A获取B公钥的请求时,C将自己的公钥给A,并告诉A他就是B,而B获取A的公钥时,C也把他的公钥给B,对B说他就是A,这样A,B间通信的内容C都可以通过处理后再发送给双方了,这就是中间人攻击,既然有这么危险的可能性,那我们如何解决他呢?
这时,就该PKI(Public Key Infrastructure) 公钥基础设施登场了,他是一种遵循标准的利用公钥加密技术为电子商务的开展提供一套安全基础平台的技术和规范。
完整的PKI系统必须具有权威认证机构(CA)、数字证书库、密钥备份及恢复系统、证书作废系统、应用接口(API)等基本构成部分,构建PKI也将围绕着这五大系统来着手构建。
PKI的基础技术包括加密、数字签名、数据完整性机制、数字信封、双重数字签名等。一个典型、完整、有效的PKI应用系统至少应具有以下部分:
· 公钥密码证书管理。
· 黑名单的发布和管理。
· 密钥的备份和恢复。
· 自动更新密钥。
· 自动管理历史密钥。
· 支持交叉认证。
那么问题又来了,如何保证这个权威的认证机构无法被冒充了?这就需要互联网下的一些方法了,比如×××,当面交换权威机构的证书,以及认证。
目前的证书格式主要是X.509v3,包括:
版本号
序列号
签名算法ID
发行者名称
有效期限
主体名称
主体公钥
发行者的惟一标识
主体的惟一标识
扩展
发行者的签名
等,知道了这些基础知识,那么linux 下是如何实现这些方法的呢?且听下回分解