处在信息时代的今天,我们享受着 Internet 带给我们的便利和快捷的同时,也同时面临着巨大的威胁,特别是在电子商务大行其道的今天,数据安全问题显得更加严峻,那计算机是怎么保证数据在传输过程中的数据安全呢?下面简单介绍一下数据加密在数据通信中应用。
网络通信的数据安全包括数据传输的安全性、数据的完整性、身份验证、不可抵赖性等几个方面。数据传输的安全性即是要保证在公网上传输的数据不被第三方窃取;对数据的完整性需求是指数据在传输过程中不被篡改;身份验证是指由于网上的通信双方互不见面 ! 必须在相互通信时 ( 交换敏感信息时 ) 确认对方的真实身份;不可抵赖性是指在网上开展业务的各方在进行数据传输时 ! 必须带有自身特有的 , 无法被别人复制的信息 ! 以保证发生纠纷时有所对证。那怎么保证这么功能的实现呢?最好的办法就是使用加密技术。
加密技术
加密技术简单可以分为单向加密、对称加密和非对称加密。
单向加密:
单向加密又叫非可逆加密,准确的说他不是一种加密技术,而是一种信息摘要技术。他是通过安全的单向散列函数(Secure Hash )作用于一段数据来提取该段数据的特征码从而验证数据的完整性。他具有以下特征:
1)变长输入,定长输出
它能处理任意大小的信息并将其按信息摘要方法生成固定大小的数据块对同一个源数据反复执行 Secure Hash 函数将总是得到同样的结果。
2)不可逆性
它是完全不可逆的,没有办法通过生成的数据块直接恢复源数据。
3) 雪崩效应
它是不可预见的,产生的数据块的大小与原始信息的大小没有任何联系同时源数据和产生的数据块看起来也没有明显关系,源信息的一个微小变化都会对小数据块产生很大的影响,使其发生很多的变化。
常用的信息摘要算法有 BASE64 、 MD5 、 SHA-1 等。
MD5 -- message-digest algorithm 5 (信息 - 摘要算法)缩写,广泛用于加密和解密技术,常用于文件校验。校不管文件多大,经过 MD5 后都能生成唯一的 MD5 值。好比现在的 ISO 校验,都是 MD5 校验。把 ISO 经过 MD5 后产生MD5 的值。一般下载 ISO 文件的下载链接旁边放着 MD5 的串。就是用来验证文件是否一致的。
对称加密
对称密钥加密又被称为私钥加密 ! 它使用同一组钥匙对消息进行加密和解密 " 因此消息的接收者和发送者必须拥有一组相同的密钥。在私钥加密体 ! 比较有名的加密算法是 DES 、 3DES 、 AES 、 BlowFish 、 CAST 等,其中比价常用的用3DES 和 AES 。
非对称加密
非对称密钥加密又被称为公开密钥加密体制,是由 Whitfield Diffie 和 Martin Hellman 在 1976 年提出 . 其加密机制是,每个人拥有一对密钥,一个称为公开密钥,另一个称为秘密密钥。这两个密钥是数学相关的,公开密钥是公开信息,秘密密钥由用户自己保存。在这种体制中,加密和解密使用不同的密钥,因此,发送者和接收者不再需要共享一个秘密,即在通信的全部过程中不需要传送秘密密钥。
介绍完基本概念了,那怎么把加密技术运用用数据安全之中呢?
数据在网上传递的时候为了防止被人篡改,我们可以使用单向加密算法提取数据的特征码。这就好比提取一个人的指纹信息,因为单向加密技术的特点,我们提取的特征码就好比这段数据的指纹,在现实社会中我们怎么判断一个指纹是不是某个人的呢,那就拿这个人的指纹对比一下,同理,接收方怎么验证数据是否被修改呢?使用同样的信息摘要算法重新计算一下与发送方发送过来的特征码做比较,一致即表示信息是完整的。这是又会存在一个问题,那就是如果黑客截取了这段数据重新计算一下在发生过去怎么办呢?
这时我们就需要对整段数据进行加密了,这是用什么加密呢?非对称加密?太慢了,如果你的机子性能太差估计你加密完那边就要抓狂了,那就对称加密吧!但是如果是第一次通信,那我们怎么共享密钥呢,难不成我专门那个优盘考给你一个,那估计你就崩溃了,这怎么办呢,那就用非对称加密,只对对称加密的密钥进行加密吧,虽然公钥加密的数度慢,但总是安全啊,咱不能对大的数据进行加密,一个小的密钥还是没问题的吧。
对了这里要特别强调用谁的公钥加密,如果你给小 A 发送一段数据,结果用自己的公钥加密了对称加密的密钥,你总不能把自己的私钥告诉小 A 吧,否则小 A 怎么解密这个密钥呢,但是如果你给,估计你就傻了,如果小 A 人品好还行,否则后果你自己想把。所以在这里发送方要使用接受方的公钥加密,这样除了接收方用自己的私钥才能解密,其他人想都别想(在这里希望小 A 保存好自己的私钥不要乱扔啊!)。
到了这里我们已经可以基本保证我们传输的数据的完整性和安全性了,别人想要篡改或是查看那就是很难地。但是这里还有一个重要问题,就是数据传送是安全了,但是怎么防止对方抵赖呢。我们上面用的加密算法都是保证数据的传输安全的,可是如果发送方抵赖真正办呢,好吧让他签字画押。刚才介绍过非对称加密有一对密钥对,公钥加密私钥解密,私钥加密公钥解密,私钥只用你自己知道。
如果我用你的公钥能解密,那就一定是你发的数据了(什么你的私钥丢了?那个你的钱包丢了人家把你的卡里的钱花光了,商场会退给你钱吗,当然不会,所以请保存好它 . )那我对什么加密呢,数据太大是加密不了,对称密钥又由对方的公钥加密了,就剩下一个数据的“指纹 ” 了,而且还不大,太完美了,就它了。好吧这下你放心了吧,我不能抵赖了,看我都签字了,这就是所谓的数字签名了。
现在貌似一切都搞定了,可是还有一个问题,什么问题呢 ? 如果,如果小 A 被冒名顶替了怎么办。
小 B :你说你是小 A 你就是小 A 啊,怎么证明你不是小 h 呢,我都没见过你。
小 A :我不是给你我的公钥了吗?这还不能证明啊?
小 B :什么你给我公钥了,你有公钥就是小 A 了,那公钥要是假的呢,现在啥东西不能造假啊。
小 A :好吧,你说要我怎么证明,你才相信。
小 B :你去派出所开个证明,
小 A :派出所?网上哪有派出所啊?
小 B :你这人怎么没一点幽默感呢,派出所就是 CA 啊,你不会连着都不知道吧。
小 A : ooo
小 A 拿着自己的个人信息到 CA 认证中心,让 CA 证明他就是小 A , CA 经过一番调查发现信息属实,就把小 A 提供的信息整理了一下,加上小 A 的公钥和 CA 自己私钥加密生产的签名弄到一起做了一个证明给了小 A (这就是证书),然后发给小 B ,小 B 用 CA 的发给的自己的证书一对发现没错,就相信这个小 A 就是真的小 A 了,这时小 A 也不干了,让小 B 也去开证明,结果小 B 也去 CA 办了一个证明。现在他们终于可以安全的通信了……