安全和加密技术详解

安全和加密技术详解



 目录

        前言

        一、加密技术分类

          1、对称机密算法

          2、非对称加密

          3、单向散列

          4、安全通信模型

  前  言

随着网络通信和互联网时代的到来,与之而来的互联网安全问题面临很大的威胁。网络的传输的信息随时有可能会被不法分子截获、篡改,对于互联网数据安全和加密技术显得尤为重要。

加密技术其实是一门古老的学科。长期以来一直被应用于军事、情报等部门,例如早期古罗马的凯撒移位、中国古代的兵符等等都是早期的数据加密技术。密码学在近代发展尤为迅速,例如两次世界大战期间加密及解密技术在战争中起到确定行的作用,可见密码学的重要性。

一、加密技术分类

1、对称机密算法

对称机密(也叫私钥加密)指加密和解密使用相同密钥的加密算法,又称为传统算法,就是加密密钥能够从解密密钥中推算出来,同时解密密钥也可以从加密密钥中推算出来。而大多数的对称算法中,加密密钥和解密密钥是相同的,所以也称为这种加密算法为秘密密钥或单密密钥算法。

对称加密:加密和解密使用同一个密钥

常见对称加密算法

DES:Date Encryption Standard 56bits

3DES:

AES:Advanced(128,192,256bits)

Blowfish, Twofish

IDEA,RC6,CAST5

特性:

1) 加密、解密使用同一个密钥,效率高

2) 将原始数据分割成固定大小的块,逐个进行加密

缺陷:

交易双方都是用相同钥匙,安全性得不到保证。此外,每次用户使用对称加密算法时,都需要使用其他人不知道的唯一密钥,这使得收发双方所拥有的密钥数量呈几何级数增长,密钥管理成为负担。

工作过程

A、B双方交换数据,相互之间需要掌握相同的钥匙不得外泄,A将数据通过算法加密后传送给B,B则利用相互之间掌握的钥匙进行解密。此间双方知道的钥匙不可外泄否则会被他人截获并解密数据,与此同时如果A与C通信或B与C通信等,则双方都需要掌握相同的钥匙。假设一个企业中有n个用户则整个企业需要n(n-1)个密钥。密钥的生成和分发管理则称为负担,同时企业内不可能每一个密钥持有人都能很好的保守秘密,所以对称加密的安全性难以保证,管理成本也很高。

(对称加密图解 图示1)

2、非对称加密

非对称加密算法需要两个密钥来进行加密和解密,这两个密钥是公开密钥(public key,简称公钥)和私有密钥(orivate key,简称私钥)

公钥加密:密钥是成对出现

公钥:公开给所有人;public key

私钥:自己留存,必须保证其私密性;secret key

特点:用公钥加密数据,只能使用与之配对的私钥解密;反之亦然

功能:

数字签名:主要下雨让接收方确认发送方身份

对称密钥交换:发送方用对方的公钥加密一个对称密钥后发送给对方

数据加密:适合加密较小数据

缺点:

密钥长,加密解密效率低

算法:

RSA(加密,数字签名)、 DSA(数字签名)、 ELGamal

工作过程:

假设A、B之间使用非对称加密的方式进行重要数据的安全传输

1、 假设B生成密钥(公钥和私钥)并将公钥向其他人公开

2、 A使用该密钥对数据进行加密后在传送给B

3、 B则用自己的私钥对加密后的数据进行解密,B只能使用私钥解密对应公钥加密的数据

4、 如果在传输过程中有第三方攻击者截获了传输的密文,并得到了B的公钥也无法破解密文因为只有B的私有才可以解密。

但如果有人制作了一个与A相同的一样格式的数据包给B。B也无法验证这就是A发过来的。

5、 同上所述,如果A用自己的私钥加密数据后发送给B,则B使用A的公钥解密数据后,就能证明这段数据确实是A的,A是数

据的发送者。

6、 同上4、5所述,使用私钥加密后发布数据,数据的接受者可以使用发布者的公钥来验证数据的完整性,接受者由此可知这

条信息确实来自私钥拥有者,这也被称为数字签名。解决了数据的不可否认性

   图示:

图示2中所述由A用B公钥加密数据发送给B,B用自己的私钥解密A发送的数据

图示3中所述由A用自己私钥将数据加密并发送给B,B利用A的公钥解密数据,不仅保证数据的安全性同时也保证数据的来源。一下两图对应上方所述非对称加密数据工作过程。

(图示2)

(图示3)

3、单向散列

单向散列算法(又称为hash函数),hash函数(也称为杂凑函数或杂凑算法)就是把任意长度的输入消息串变化为固定长度的输出字符串的一种函数。这个输出串称为该消息的杂凑值。一般用于产生消息摘要,密钥加密等。

单向散列函数的输出值也被称为“散列值”或“消息摘要”,其长度通常在128-256位之间。

一个安全的杂凑函数应该至少满足一下几个条件;

① 输入长度是任意的;

② 输出长度固定的,根据目前的计算技术应至少取128bits长,以便抵抗生日攻击

③ 对每一个给定的输入,计算输出即杂凑值是很容易的;

④ 给定杂凑函数的描述,找到两个不同的输入消息杂凑到同一个值是计算上不可行的,或给定杂凑函数的描述和一个随机选

择消息,找到另一个与该消息不同的消息使得他们杂凑到同一个值是计算上可行的。

功能: 主要用于数据的完整性和提高数字签名的有效性。

常见的单向散列函数有    :

MD5(message Digest Algorithm 5)是rsa数据安全公司开发的一种单向散列算法,MD5被广泛应用,可以用来把不同长度的数据块进行暗码运算成一个128为的数值。

SHA1:安全哈希算法 可以对任意长度数据进行运算生成一个生成160位的数值。

Sha256、sha384、sha512等。

4、安全通信模型

从以上的介绍中可以看出,各种加密算法都有其特点和适用性:

使用非对称加密,发送者A使用私钥加密,接受者B能够验证数据的发送者A是谁,由于所有人都能使用发布者A公钥解密,这种方法

只能适合发布公开的信息。

接受者B的公钥是公开的,用它加密数据后发给B,有可能被截获掉包。

非对称加密算法,加密速度很慢,强度高。对称加密算法,速度快,但是密钥交换是个问题。

单向加密不可逆,接收者无法还原到明文。

那么,就需要一种通信模型能够扬长避短,解决通信安全的问题,于是便有了下面的模型:

PKI通信流程

通信工作流程

1、发送者A准备好信息明文。

2、发送者A对信息进行哈希运算(单向加密算法),得到一个信息摘要。

3、发送者A使用自己的私钥(SK)对信息摘要进行加密,即数字签名,之后将其附件在发送的信息上。(实现不可否认性)

4、发送者A随机生成一个对称加密密钥,并使用它对发送的信息包括摘要进行对称加密,生成密文。

5、发送者A再使用接收方的公钥(PK)对第4步使用的随机对称密钥进行加密,之后将其附加至第4步生成的密文上,一并发给

接收者B。

6、接收者B收到发送者A的密文后,首先使用自己的私钥(SK)解密出对称加密的密钥。

7、接收者B使用对称密钥解密密文,得到附加摘要的信息明文。

8、接收者B使用发送者的公钥(PK)解密摘要,获得哈希值

9、接收者B使用同样的哈希算法再次对信息明文计算,得到新的信息摘要,与解密后的摘要比对,如果一致,则说明收到的信

息明文未被篡改。(保证数据完整性)

五、总结

以上的通信模型很好的解决了数据完整性、不可否认性,但这个模型的依赖的关键点是双方公钥。

这个模型中双方公钥来源无法验证,而且在通讯前,如何获得每个人的可信任的公钥也成了整个系统的关键。

因此,需要一套系统,能够解决以上存在的种种问题:身份认证、数据完整性、密钥交换、操作的不可否认性,它就是PKI。

PKI(Public Key Infrastructure)公钥基础设施是提供公钥加密和数字签名服务的系统或平台,目的是为了管理密钥和证书。关于PKI

的详细介绍将在下一节博客中介绍。

生日攻击

生日攻击 百度百科

一个关于生日攻击故事:http://blog.renren.com/share/250153535/16381267487

http://me2xp.blog.51cto.com/6716920/1535027 以上文中所述图片以及部分文字描述皆来自于此博文

时间: 2024-11-06 09:29:24

安全和加密技术详解的相关文章

实现高性能纠删码引擎 | 纠删码技术详解(下)

作者介绍: 徐祥曦,七牛云工程师,独立开发了多套高性能纠删码/再生码编码引擎.柳青,华中科技大学博士,研究方向为基于纠删码的分布式存储系统. 前言: 在上篇<如何选择纠删码编码引擎>中,我们简单了解了 Reed-Solomon Codes(RS 码)的编/解码过程,以及编码引擎的评判标准.但并没有就具体实现进行展开,本篇作为<纠删码技术详解>的下篇,我们将主要探讨工程实现的问题. 这里先简单提炼一下实现高性能纠删码引擎的要点:首先,根据编码理论将矩阵以及有限域的运算工程化,接下来主

CDN技术详解及实现原理

CDN技术详解 一本好的入门书是带你进入陌生领域的明灯,<CDN技术详解>绝对是带你进入CDN行业的那盏最亮的明灯.因此,虽然只是纯粹的重点抄录,我也要把<CDN技术详解>的精华放上网.公诸同好. 第一章    引言    “第一公里”是指万维网流量向用户传送的第一个出口,是网站服务器接入互联网的链路所能提供的带宽.这个带宽决定了一个 网站能为用户提供的访问速度和并发访问量.如果业务繁忙,用户的访问数越多,拥塞越严重,网站会在最需要向用户提供服务时失去用户.(还有“中间一公里” 和

Protocol Buffer技术详解(Java实例)

Protocol Buffer技术详解(Java实例) 该篇Blog和上一篇(C++实例)基本相同,只是面向于我们团队中的Java工程师,毕竟我们项目的前端部分是基于Android开发的,而且我们研发团队中目前主要使用的开发语言就是C++.Java和Python,其中Python主要用于编写各种工具程序.然而为了保证该篇Blog的完整性和独立性,我仍然会将上一篇Blog中已经出现的内容再一次赘述,同时对于Java中特有的部分也会着重介绍.          一.生成目标语言代码.      下面

Linux磁盘阵列技术详解(二)--raid 1创建

我在Linux磁盘阵列技术详解(一)里已经详细介绍了几种RAID磁盘阵列方式,原理以及创建raid 0 的详细步骤.那么这篇文档就着重讲解如何创建raid 1的技术: 步骤如下: ① 分区 同样我们还是以一块硬盘的不同分区为例,实际工作中应该是不同的硬盘才对. 具体分区步骤不再赘述! 分区后结果如下图所示: ② 创建raid 1 mdadm -C -v /dev/md1 -l 1 -n 2 -x 1 /dev/sdc1 /dev/sdc2 /dev/sdc3 或者 mdadm -C -v /de

Protocol Buffer技术详解(语言规范)

Protocol Buffer技术详解(语言规范) 该系列Blog的内容主体主要源自于Protocol Buffer的官方文档,而代码示例则抽取于当前正在开发的一个公司内部项目的Demo.这样做的目的主要在于不仅可以保持Google文档的良好风格和系统性,同时再结合一些比较实用和通用的用例,这样就更加便于公司内部的培训,以及和广大网友的技术交流.需要说明的是,Blog的内容并非line by line的翻译,其中包含一些经验性总结,与此同时,对于一些不是非常常用的功能并未予以说明,有兴趣的开发者

红帽Linux故障定位技术详解与实例(2)

红帽Linux故障定位技术详解与实例(2) 2011-09-28 14:26 圈儿 BEAREYES.COM 我要评论(0) 字号:T | T 在线故障定位就是在故障发生时, 故障所处的操作系统环境仍然可以访问,故障处理人员可通过console, ssh等方式登录到操作系统上,在shell上执行各种操作命令或测试程序的方式对故障环境进行观察,分析,测试,以定位出故障发生的原因. AD:2014WOT全球软件技术峰会北京站 课程视频发布 3.内核故障情形及处理 (1)内核panic panic是内

红帽Linux故障定位技术详解与实例(1)

红帽Linux故障定位技术详解与实例(1) 2011-09-28 14:26 圈儿 BEAREYES.COM 我要评论(0) 字号:T | T 在线故障定位就是在故障发生时, 故障所处的操作系统环境仍然可以访问,故障处理人员可通过console, ssh等方式登录到操作系统上,在shell上执行各种操作命令或测试程序的方式对故障环境进行观察,分析,测试,以定位出故障发生的原因. AD:2014WOT全球软件技术峰会北京站 课程视频发布 红帽Linux故障定位技术详解与实例是本文要介绍的内容,主要

红帽Linux故障定位技术详解与实例(3)

红帽Linux故障定位技术详解与实例(3) 在线故障定位就是在故障发生时, 故障所处的操作系统环境仍然可以访问,故障处理人员可通过console, ssh等方式登录到操作系统上,在shell上执行各种操作命令或测试程序的方式对故障环境进行观察,分析,测试,以定位出故障发生的原因. AD:2014WOT全球软件技术峰会北京站 课程视频发布 5.用kdump工具内核故障定位实例 A) 部署Kdump 部署 kdump 收集故障信息的步骤如下: (1)设置好相关的内核启动参数 在 /boot/grub

红帽Linux故障定位技术详解与实例(4)

红帽Linux故障定位技术详解与实例(4) 在线故障定位就是在故障发生时, 故障所处的操作系统环境仍然可以访问,故障处理人员可通过console, ssh等方式登录到操作系统上,在shell上执行各种操作命令或测试程序的方式对故障环境进行观察,分析,测试,以定位出故障发生的原因. AD:2014WOT全球软件技术峰会北京站 课程视频发布 6.使用kprobe来观察内核函数的执行实例 kprobe是SystemTap对内核函数进行probing的功能在内核中的实现,由于内核中提供了正式的API来使