网络传输的加密与解密(不是很难理解的一个版本)

--网络传输的加密与解密--   

由于互联网早期并没有考虑到数据报文安全的问题,早期的理念都是基于进行通信的。现在随着网络兴起,互联网上慢慢有很多“犯罪团体”,用较低的犯罪成本通常是基于一个网络通信协议的一个小的漏洞来完成窃取、篡改、重播其他人的数据报文。

而往往计算机网络安全维护者和那些恶意攻击者玩的就是一个类似猫鼠游戏,网络安全维护者处处考虑对计算机的安全负责,而恶意攻击者处处找安全的漏洞。而对于那些恶意攻击方式大体分两种。

一种叫被动攻击,大体上来说就是窃听,攻击者获得传输信息,捕获了数据流量。而另外一种叫做主动攻击,即伪装,冒名顶替数据接受者。重播,把窃取的消息一遍遍的发送给接收方。修改、把其他人的信息截取下来篡改一番。而针对那些恶意的攻击者,我们的网络安全机制就规定了,至少要保证在安全的网络通信下,这两点是必备的,

一、保证数据完整性,保证是发送方发送的信息没有被非授权修改 插入删除重复发送。

二、安全认证,为了验证发送者的身份,要求发送者做数字签名,证明是他自己的身份。

为了下面更好的讲述,现在引入几个概念:

明文  指的是传送方想要接收方获得的可读信息,说白了,就是大家都能看懂的信息啦。

密文  把明文经过一些加密算法后生成的一堆正常的地球人无法直接读懂的字符串。

密钥  就是在同一种算法内明文、密文之间相互转换需要输入的数据,如果输错了,就无非获得正确的明文信息啦。

算法(计算机) 无非就是利用一些数学公式算法的方式。

在计算机加密方式有以下几种:

一、对称加密方式:

发送方和接收方都使用同一个密钥对信息进行加密、解密。这里举个例子就好理解了,假设XX村有个寡妇叫小翠,跟隔壁的二狗有“交流”,小翠要和二狗通信,通常都是写一些大家都能理解的语句“月上柳梢头,人约黄昏后。”一类的吧,万一“信”让不怀好意的大牛截取了,张大牛打开信就看到了秘密了。这个似乎就很尴尬了,于是小翠和二狗商量好了,采取用他俩人的“暗号”对信加密呀。

这样,小翠和二狗两个人都拥有同一个密钥,就可以情意绵绵的通信啦,对于大牛来说,他没有密钥,就算截取了信,也是只能看到一堆乱码。但是,万一小翠要是脚踩N只船,和不同的人都有“交流”,岂不是小翠要记得好多密钥?万一大牛利用一些手段,截取了信息,破解了密钥,这样的加密就毫无意义了,再设想一下,大牛截取了,破解不了,但是他又一次生成了不一样的信息发给二狗,二狗也并不知道小翠要表达什么,这样岂不是曲解了原意了么?还有最重要的,如果小翠和二狗并没有办法相见,小翠加密以后,怎么把密钥告诉二狗呢???

这样,对称加密的缺陷就显现出来了:

密钥真的是过多,身份也无法认证,更不用提数据完整性可靠了,同理,密钥交换就很困难。

但是本质上说,对称加密的速度还是蛮快的。

二、非对称加密方式

W.Diffie和M.Hellman 1976年在IEEE Trans.on Information刊物上发表了文章,提出了“非对称密码体制即公开密钥密码体制”的概念,开创了密码学研究的新方向。该加密方式规定了密钥需要有一对儿

一个公钥(Public Key)和 一个私钥(Private Key/Security Key),如果用公钥加密信息,就需要用相同配对的私钥才能解密,反之亦然。

让我们看看非对称加密的过程是什么样子的:

Tom如果想跟Jerry通信:

Tom再获得了Jerry的公钥以后用Jerry的公钥加密了一段小的“数据”,放到要传输的信息后面,一并发给Jerry,假设信道传输时没有被别人窃听破坏,Jerry拿到这个数据,想读取内容,只能通过它自己的私钥才能开启那小段数据。此外因为Tom用Jerry的公钥加密,也能够保证获取到正确信息的一定是Jerry本人(Jerry的私钥没有泄露),这样Jerry不仅拿到了数据也保证了Jerry本人拿到的。非对称加密方式在很大程序上保证了数据的安全性。但是没有一种办法能保证万无一失,假设这个数据不幸被第三方的Dog拿到了,Dog虽然不知道Jerry的私钥是什么,但是Dog恶意破坏数据,随便用一个私钥就解密数据,得到一种错误的信息。
非对称加密的算法:

RSA

D-H

Elgamal

等等

但是这里有个很大的问题,Tom和Jerry双方怎么取得各自的公钥呢??是不是双方需要一个可靠的机构或者是第三方个人来担保双方获得的公钥是正规途径得来的。而且公钥加密本身生成的密码就很长,意味着解密时间也就很长。

非对称加密算法

优点:数据可靠性相当强,很大程序上保证了身份认证。

缺点:生成大量字串故解密速度较慢,若用公钥加密,公钥传输的渠道成问题。

三、单向加密

单向加密,它自己无法进行解密过程,不能用作直接进行加密数据信息。它采用两种MD5和SHA算法方式,把一段数据进行加密处理,获得一个叫做“特征码”的东西。

这段“特征码”跟原数据信息半毛钱关系没有。假设现在有人采用高科技手段篡改了文件内容,此时文件内容做了改动,哪怕是微小改动,被修改过以后的文件再次提取“特征码”。结果也会发生翻天覆地的变化,加密学里称之为雪崩效应(avalanche effect)。这种对于数据内容的识别很直接,一眼就能辨别数据内容有无修改。“特征码”识别过程我们好比照妖镜一样,伪装的再好的妖精也会被识别出来。

就让我们采取md5方式在linux上做个小实例:

[[email protected] tmp]# cat 1.txt 
I have a dream.
[[email protected] tmp]# md5sum 1.txt 
431ee9fa1c63997e59586b118905d32d  1.txt
[[email protected] tmp]# cat > 1.txt << EOF
> i have a dream.
> EOF
[[email protected] tmp]# md5sum 1.txt 
10734d2b3be4151b61faea8a7cc622af  1.txt
本来1.txt的文档内容是I have a dream,我们把它进行md5算法加密,获得一个
431ee9fa1c63997e59586b118905d32d这就是原数据1.txt的长度为256bits的“特征码”
而我们一旦对原文件的数据内容进行个微小的修改把“I ”改成“i”结果又偷偷写回到原文件之中

结果确发现大相径庭,10734d2b3be4151b61faea8a7cc622af变成这个“特征码”了。用它来甄别数据是否被人偷偷的改过是不是很有效?

让我们对上述的做个总结,

我仅仅是想快速的对数据进行加密对其他人发送的时候,我可以采取对称加密的办法。

我们要验证发送接收双方的身份真伪,可以用“非对称加密”办法。

我们想知道数据内容有没有被人非法篡改过,就用“单向加密”方式。

所以大致上

对称加密:快速

非对称加密:认证身份

单向加密:验证数据内容


这里就有个好的意见,如果我们想跟另一个机构或个人通信,不妨把上述三点都揉在一起,这样任何都会照顾到了。这样就大致诞生了PKI里面叫做“公钥基础通信设施模型”。

模型大体上步骤是这样的,还是以Tom和Jerry为例:

Tom想跟Jerry通信,Tom会采取加密步骤,步骤如下

此时我们的Jerry收到信息,它的解密步骤如下:

这样是不是就能够保证通信双方万无一失了呢??看着很是天衣无缝,但是其实仔细想想,似乎哪里还有蹊跷。

Tom想跟Jerry通信,Tom是怎么获得Jerry的公钥的呢????

看看,原来是如此缜密的通信机制里还有遗漏,我们仍无法保证数据够保密的。Tom和Jerry如何可靠的获得真正属于本人的公钥的?看来得找一个牢靠的第三方,一个能够保障双方身份都可靠的仲裁机构了。对,这就是CA的诞生了。

==================================CA(Certification Authority)==========================

CA就是认证身份的中心,用它来确认公钥拥有者的真实身份!!它会给Tom和Jerry每个人发给类似***一样的“数字证书”。而且对于这个CA的第三方几乎没人敢怀疑它是“冒牌货”。那么CA是如何进行认证的呢?

CA会利用它自己的私钥为数字证书附加上数字签名,类似于上公安局盖上大印了一样。

通常我们的CA采取x.509格式信息的数字证书

·证书的版本信息;

·证书的序列号,每个证书都有一个唯一的证书序列号;

·证书所使用的签名算法;

·证书的发行机构名称,命名规则一般采用X.500格式;

·证书的有效期,现在通用的证书一般采用UTC时间格式;

·证书所有人的名称,命名规则一般采用X.500格式;(这里必须要写真实的主机名)!!!

·证书所有人的公钥。

·证书发行者对证书的签名。

但如果Tom想申请一个证明自己公钥所有权的CA的数字证书并不是那么容易,Tom需要填写一个类似“入党申请书”一样的东西交给CA,CA进行实地考察,看看Tom三代是否有不合法的,看看Tom是不是一个品德高尚的人等等,核实成功了,CA才会签署表示同意。

当然了,如果做做实验也可以建立CA的,这样更好的帮助理解CA概念,如何搭建一个属于自己的CA,请关注我的下一篇Blog。


网络传输的加密与解密(不是很难理解的一个版本),布布扣,bubuko.com

时间: 2024-12-10 11:22:07

网络传输的加密与解密(不是很难理解的一个版本)的相关文章

网络传输与加密 (2)

网络传输与加密 让我们先回顾一下上次的验证过程,如下图 有了"原信息"和它对应的"md5签名字符串",我们就可以做最基本的信息验证:通过md5签名字符串的一致性,来保障我们收到的信息没有受到更改. P.S.:由于签名signature在后续文章中会另有所指,为区分md5签名字符串,我们将md5签名字符串的叫法,更改为md5指纹字符串.意思同签名是一样的,就是A之所以是A的证据.特征,可以用签名来表示,也可以用指纹来表示.这里,我们开始将md5字符串对应的这个特征,称

Oracle网络传输的加密和完整性验证

转自 http://blog.itpub.net/24052272/viewspace-2129175/ 测试环境: 11.2.0.4 winodows  单机 应用场景: 对oracle服务器和客户端之间的网络传输数据进行加密和完整性校验. 默认是使用明文方式传输数据,举例可以通过wireshark.sniffer等网络抓包工具抓取到传输的具体信息. 对于敏感信息是很不安全的. 举例: 对于汉字可以通过很多在线转换工具将HEX编码转换成可读汉字. 对于了解业务的人来说,这些信息是很有价值的.

网络传输与加密

谈到网络,就必然会涉及网络安全.但"安全"这个事情, 一下子就会让人联想到黑客,进而把"安全"这个事情无限放大为各种高大上.神秘莫测.不可知.这不是一个engineer应有的态度(<一次艰难debug的反思>). 要讨论网络安全,可以从最核心的"加密"谈起. 加密,英文叫encryption.显然,无论中.英文,都不太能够从字面文法上,给人以直观的联想和理解(这是典型的"装X亮词"的特性).那更接地气的直观说法是什

linux网络数据传输的加密,解密以及基于openssl的私有CA的建立

网络数据传输的安全性是计算机通信领域的重要课题,数据加密就是保证数据安全性的主要方法.所谓数据加密,即是通过某种算法和秘钥对数据明文进行处理,从而得到密文的过程.计算机网络通信过程中的加密形式主要有以下几种: 1,对称加密,用同一个密钥对信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密.对称加密算法的优点是算法公开.计算量小.加密速度快.加密效率高,但秘钥有时会很多,难以管理.而且秘钥交换又是一个难以解决的问题. 常见算法: DES:Data Encryption Standard,

Linux之加密和解密技术

加密和解密技术 本章内容: 安全机制 对称加密 不对称加密 散列算法 PKI和CA 相关知识: 1)传输层协议: TCP(面向连接),UDP(面向无连接),SCTP(流控协议) 2)port(端口):传输层协议都会提供端口, 端口(port)是标记进程的地址,进程向内核注册才能使用某端口(独占) 任何一个进程占领某个端口之后,其他进程进不能使用了: 3)同一主机上的进程间通信: IPC,message qoeue(消息队列),shm(共享内存),semerphor 4)不同主机间的进程通信: 通

加密、解密原理和openssl自建CA过程详解

一.加密和解密相关知识简介 1.信息安全标准 NIST(National Institute of Standards and Technology)美国国家标准与技术研究院,制定了网络信息安全与保密的三个要素: 保密性(confidentiality):信息不泄露给非授权用户.实体或过程,或供其利用的特性.(一般包括数据保密性.隐私性.) 完整性(Integrity):数据未经授权不能进行改变的特性.即信息在存储或传输过程中保持不被修改.不被破坏和丢失的特性.(一般包括数据完整性.系统完整性.

Android 密钥保护和 C/S 网络传输安全理论指南

注:本文将着重讲解 Android KeyStore.so 库保护 app key / secret.HTTPS 原理及其防中间人***措施. 谈到 Android 安全性话题,Android Developers 官方网站给出了许多很好的建议和讲解,涵盖了存储数据.权限.网络.处理凭据.输入验证.处理用户数据.加密等方方面面,甚至对于动态加载代码也提供了建议,具体可以看看 training 的?security tips?章节.而今天,我想特别来讲一讲在 Android 密钥保护和 C/S 网

[Java 安全]加密、解密与数字签名

引言 本文使用的密码学术语请见术语章节. Base64编码 算法简述 定义 Base64内容传送编码是一种以任意8位字节序列组合的描述形式,这种形式不易被人直接识别. Base64是一种很常见的编码规范,其作用是将二进制序列转换为人类可读的ASCII字符序列,常用在需用通过文本协议(比如HTTP和SMTP)来传输二进制数据的情况下.Base64并不是加密解密算法,尽管我们有时也听到使用Base64来加密解密的说法,但这里所说的加密与解密实际是指编码(encode)和解码(decode)的过程,其

C#操作Word文档(加密、解密、对应书签插入分页符)

原文:C#操作Word文档(加密.解密.对应书签插入分页符) 最近做一个项目,客户要求对已经生成好的RTF文件中的内容进行分页显示,由于之前对这方面没有什么了解,后来在网上也找了相关的资料,并结合自己在MSDN上面的查找,后来总算把问题给解决掉啦.下面对C#操作Word文档(加密.解密.插入分页符)做一个简单的总结,希望对一些朋友有所帮忙吧.^_^ 写代码之前,需要引用对应的DLL文件: 1.Interop.Microsoft.Office.Interop.Word.dll  (网上可以下载)