数据加密的基本概念

数据加密技术的发展

直至进入20世纪60年代,由于电子技术和计算机技术的迅速发展,以及结构代数、可计算性理论学科研究成果的出现,才使密码学的研究走出困境而进入了一个新的发展时期;特别是美国的数据加密标准DES和公开密钥密码体制的推出,又为密码学的广泛应用奠定了坚实的基础。

数据加密模型

(1) 明文(plain text)。 被加密的文本, 称为明文P。
(2) 密文(cipher text)。 加密后的文本, 称为密文Y。
(3) 加密(解密)算法E(D)。用于实现从明文(密文)到密文(明文)转换的公式、规则或程序。
(4) 密钥K。密钥是加密和解密算法中的关键参数。
加密过程可描述为:在发送端利用加密算法E和加密密钥Ke对明文P进行加密,得到密文Y=EKe§。密文Y被传送到接收端后应进行解密。 解密过程可描述为:接收端利用解密算法D和解密密钥Kd对密文Y进行解密,将密文恢复为明文P=DKd(Y)。
在密码学中,把设计密码的技术称为密码编码, 把破译密码的技术称为密码分析。密码编码和密码分析合起来称为密码学。在加密系统中,算法是相对稳定的。为了加密数据的安全性,应经常改变密钥, 例如, 在每加密一个新信息时改变密钥,或每天、甚至每个小时改变一次密钥。
加密算法的类型

  1. 按其对称性分类
    (1) 对称加密算法。在这种方式中,在加密算法和解密算法之间,存在着一定的相依关系,即加密和解密算法往往使用相同的密钥;或者在知道了加密密钥Ke后,就很容易推导出解密密钥Kd。在该算法中的安全性在于双方能否妥善地保护密钥。 因而把这种算法称为保密密钥算法。
    (2) 非对称加密算法。 这种方式的加密密钥Ke和解密密钥Kd不同,而且难以从Ke推导出Kd来。可以将其中的一个密钥公开而成为公开密钥,因而把该算法称为公开密钥算法。 用公开密钥加密后, 能用另一把专用密钥解密;反之亦然。
  2. 按所变换明文的单位分类
    (1) 序列加密算法。该算法是把明文P看作是连续的比特流或字符流P1、 P2、P3 …,在一个密钥序列K=K1、K2、K3…的控制下,逐个比特(或字符)地把明文转换成密文。可表达成:
    EK§=EK1(P1)EK2(P2)EK3(P3)…
    这种算法可用于对明文进行实时加密。
    (2) 分组加密算法。该算法是将明文P划分成多个固定长度的比特分组,然后,在加密密钥的控制下,每次变换一个明文分组。最著名的DES算法便是以64位为一个分组进行加密的。

基本加密方法

  1. 易位法
    易位法是按照一定的规则,重新安排明文中的比特或字符的顺序来形成密文,而字符本身保持不变。按易位单位的不同又可分成比特易位和字符易位两种易位方式。前者的实现方法简单易行,并可用硬件实现,主要用于数字通信中;而后者即字符易位法则是利用密钥对明文进行易位后形成密文,具体方法是:假定有一密钥MEGABUCK,其长度为8,则其明文是以8个字符为一组写在密文的下面,如图所示。

按密钥中字母在英文字母表中的顺序来确定明文排列后的列号。如密钥中的A所对应的列号为1, B为2, C为3, E为4等。然后再按照密钥所指示的列号,先读出第一列中的字符, 读完第1列后,再读出第2列中的字符, ……, 这样,即完成了将明文please transfer ……转换为密文AFLLSKSOSELAWAIA ……的加密过程。
2) 置换法
置换法是按照一定的规则,用一个字符去置换(替代)另一个字符来形成密文。最早由朱叶斯·凯撒(Julius caeser)提出的算法, 非常简单,它是将字母a、b、 c、 …、 x、 y、 z循环右移三位后,形成d、 e、 f、 …、 a、 b、 c字符序列, 再利用移位后的序列中的字母去分别置换未移位序列中对应位置的字母,即利用d置换a, 用e置换b等。 凯撒算法的推广是移动K位。单纯移动K位的置换算法很容易被破译,比较好的置换算法是进行映像。例如,将26个英文字母映像到另外26个特定字母中,见图 9 - 3 所示。 利用置换法可将attack加密, 变为QZZQEA。

对称加密算法与非对称加密算法

对称加密算法

现代加密技术所用的基本手段,仍然是易位法和置换法,但它与古典方法的重点不同。在古典法中通常采用的算法较简单,而密钥则较长;现代加密技术则采用十分复杂的算法,将易位法和置换法交替使用多次而形成乘积密码。最有代表性的对称加密算法是数据加密标准DES(Data Eneryption Standard)。该算法原来是IBM公司于1971~1972年研制成功的,它旨在保护本公司的机密产品,后被美国国家标准局选为数据加密标准,并于1977年颁布使用。 ISO现在已将DES作为数据加密标准。 随着VLSI的发展,现在可利用VLSI芯片来实现DES算法, 并用它做成数据加密处理器DEP。
在DES中所使用的密钥长度为64位,它由两部分组成,一部分是实际密钥,占56位;另一部分是8位奇偶校验码。 DES属于分组加密算法, 它将明文按64位一组分成若干个明文组,每次利用56位密钥对64位的二进制明文数据进行加密, 产生64位密文数据。DES算法的总框图如图(a)所示。 整个加密处理过程可分为四个阶段(共19步),见图(b)所示。

第一阶段:先将明文分出64位的明文段,然后对64位明文段做初始易位处理,得到X0,将其左移32位,记为L0,右移32位,记为R0。
第二阶段:对初始易位结果X0进行16次迭代处理(相应于第2-17步),每一次使用56位加密密钥Ki。第2~17步的迭代过程如图 9-4(b)所示。由图可以看出,输出的左32位Li是输入右32位Ri-1的拷贝;而输出的右32位Ri,则是在密钥Ki的控制下,对输入右32位Ri-1做函数f的变换后的结果,再与输入左32位Li-1进行异或运算而形成的,即

第三阶段:把经过16次迭代处理的结果(64位)的左32位与右32位互易位置。
第四阶段: 进行初始易位的逆变换。

非对称加密算法

DES加密算法属于对称加密算法。 加密和解密所使用的密钥是相同的。 DES的保密性主要取决于对密钥的保密程度。加密者必须用非常安全的方法(如通过个人信使)将密钥送给接收者(解密者)。如果通过计算机网络传送密钥,则必须先对密钥本身予以加密后再传送,通常把这种算法称为对称保密密钥算法。
1976年美国的Diffie和Hallman提出了一个新的非对称密码体制。 其最主要的特点是在对数据进行加密和解密时,使用不同的密钥。每个用户都保存着一对密钥, 每个人的公开密钥都对外公开。假如某用户要与另一用户通信, 他可用公开密钥对数据进行加密,而收信者则用自己的私用密钥进行解密。 这样就可以保证信息不会外泄。
公开密钥算法的特点如下:
(1) 设加密算法为E、加密密钥为Ke,可利用它们对明文P进行加密, 得到EKe§密文。设解密算法为D、解密密钥为Kd, 可利用它们将密文恢复为明文,即
DKd(EKe§)=P
(2) 要保证从Ke推出Kd是极为困难的, 或者说,从Ke推出Kd实际上是不可能的。
(3) 在计算机上很容易产生成对的Ke和Kd。
(4) 加密和解密运算可以对调,即利用DKd对明文进行加密形成密文,然后用EKe对密文进行解密,即

在此情况下,解密密钥或加密密钥公开也无妨。因而这种加密方法称为公开密钥法(Publie Key)。在公开密钥体制中, 最著名的是RSA体制, 它已被ISO推荐为公开密钥数据加密标准。
由于对称加密算法和非对称加密算法各有优缺点,即非对称加密算法要比对称加密算法处理速度慢,但密钥管理简单, 因而在当前新推出的许多新的安全协议中,都同时应用了这两种加密技术。一种常用的方法是利用公开密钥技术传递对称密码,而用对称密钥技术来对实际传输的数据进行加密和解密,例如,由发送者先产生一个随机数,此即对称密钥, 用它来对欲传送的数据进行加密;然后再由接收者的公开密钥对对称密钥进行加密。接收者收到数据后,先用私用密钥对对称密钥进行解密,然后再用对称密钥对所收到的数据进行解密。

数字签名和数字证明书

数字签名

在金融和商业等系统中,许多业务都要求在单据上加以签名或加盖印章,证实其真实性,以备日后查验。在利用计算机网络传送报文时,可将公开密钥法用于电子(数字)签名来代替传统的签名。为使数字签名能代替传统的签名,必须满足下述三个条件:
(1) 接收者能够核实发送者对报文的签名。
(2) 发送者事后不能抵赖其对报文的签名。
(3) 接收者无法伪造对报文的签名。

  1. 简单数字签名
    在这种数字签名方式中,发送者A可使用私用密钥Kda对明文P进行加密,形成DKda§后传送给接收者B。B可利用A的公开密钥Kea对DKda§进行解密,得到EKea(DKda§)=P,如图(a)所示。

我们按照对数字签名的三点基本要求进行分析后可得知: (1) 接收者能利用A的公开密钥Kea对DKda§进行解密,这便证实了发送者对报文的签名。
(2) 由于只有发送者A才能发送出DKda§密文,故不容A进行抵赖。
(3) 由于B没有A所拥有的私用密钥,故B无法伪造对报文的签名。
由此可见,图(a)所示的简单方法可以实现对传送的数据进行签名,但并不能达到保密的目的,因为任何人都能接收DKda§,且可用A的公开密钥Kea对DKda§进行解密。为使A所传送的数据只能为B所接收,必须采用保密数字签名。
2) 保密数字签名
为了实现在发送者A和接收者B之间的保密数字签名, 要求A和B都具有密钥,再按照图 (b)所示的方法进行加密和解密。
(1) 发送者A可用自己的私用密钥Kda对明文P加密,得到密文DKda§。
(2) A再用B的公开密钥Keb对DKda§进行加密,得到EKeb(DKda§)后送B。
(3) B收到后,先用私用密钥Kdb进行解密,即DKdb(EKeb(DKda§))=DKda§。
(4) B再用A的公开密钥Kea对DKda§进行解密,得到EKea(DKda§)=P。

数字证明书(Certificate)

(1) 用户A在使用数字证明书之前,应先向认证机构CA申请数字证明书,此时A应提供身份证明和希望使用的公开密钥A。
(2) CA在收到用户A发来的申请报告后,若决定接受其申请, 便发给A一份数字证明书,在证明书中包括公开密钥A和CA发证者的签名等信息,并对所有这些信息利用CA的私用密钥进行加密(即CA进行数字签名)。
(3) 用户A在向用户B发送报文信息时,由A用私用密钥对报文加密(数字签名),并连同已加密的数字证明书一起发送给B。
(4) 为了能对所收到的数字证明书进行解密,用户B须向CA机构申请获得CA的公开密钥B。CA收到用户B的申请后,可决定将公开密钥B发送给用户B。
(5) 用户B利用CA的公开密钥B对数字证明书加以解密,以确认该数字证明书确系原件,并从数字证明书中获得公开密钥A,并且也确认该公开密钥A确系用户A的。
(6) 用户B再利用公开密钥A对用户A发来的加密报文进行解密,得到用户A发来的报文的真实明文。

网络加密技术

链路加密(Link Encryption)

链路加密,是对在网络相邻结点之间通信线路上传输的数据进行加密。链路加密常采用序列加密算法,它能有效地防止搭线窃听所造成的威胁。两个数据加密设备分别置于通信线路的两端,它们使用相同的数据加密密钥。
如果在网络中只采用了链路加密,而未使用端—端加密,那么,报文从最高层(应用层)到数据链路层之间,都是以明文的形式出现的,只是从数据链路层进入物理层时,才对报文进行了加密,并把加密后的数据通过传输线路传送到对方结点上。为了防止攻击者对网络中的信息流进行分析, 在链路加密方式中,不仅对正文做了加密,而且对所有各层的控制信息也进行了加密。
接收结点在收到加密报文后,为了能对报文进行转发,必须知道报文的目标地址。为此,接收结点上的数据加密设备应对所接收到的加密报文进行解密,从中找出目标地址并进行转发。当该报文从数据链路层送入物理层(转发)时,须再次对报文进行加密。由上所述得知,在链路加密方式中,在相邻结点间的物理信道上传输的报文是密文,而在所有中间结点中的报文则是明文,这给攻击者造成了可乘之机,使其可从中间结点上对传输中的信息进行攻击。这就要求能对所有各中间结点进行有效的保护。
此外,在链路加密方式中,通常对每一条链路都分别采用不同的加密密钥。图示出了链路加密时的情况。在图中,结点2的DEE使用密钥Kd2将密文EKe1§解密为明文P后,又用密钥Ke2将P变换为密文EKe2§。可见,对于一个稍具规模的网络,将需要非常多的加密硬件,这是必要的。

端—端加密(End-to-End Encryption)

在单纯采用链路加密方式时,所传送的数据在中间结点将被恢复为明文,因此,链路加密方式尚不能保证通信的安全性;而端—端加密方式是在源主机或前端机FEP中的高层(从传输层到应用层)对所传输的数据进行加密。 在整个网络的传输过程中,不论是在物理信道上,还是在中间结点,报文的正文始终是密文,直至信息到达目标主机后,才被译成明文,因而这样可以保证在中间结点不会出现明文。

在端—端加密方式中,只要密钥没有泄漏, 数据在传输过程中就不怕被窃取,也无须对网络中间结点的操作人员提出特殊要求。但在这种加密方式中,不能对报头中的控制信息(如目标地址、路由信息等)进行加密,否则中间结点将无法得知目标地址和有关的控制信息。显然,报头不能加密, 也将会直接或间接地受到攻击,比如,攻击者可能根据报头中的源地址和目标地址,了解到某些部门的通信情况, 甚至还可以发起诸如篡改报文的目标地址和路由信息之类的主动攻击。
上述两种加密方式各有优缺点。 一种比较好的网络加密方式是,同时采用链路加密和端—端加密,以取长补短。如利用端—端加密方式来使用户数据以密文形式穿越各个中间结点,以保障用户数据的安全;而利用链路加密方式则可使报头中的控制信息以密文形式在通信信道中传输,使之不易受到攻击。
欢迎大家加我微信交流讨论(请备注csdn上添加)

系统安全性之数据加密技术相关推荐

  1. 系统安全性之认证技术

    基于口令的身份认证技术 口令 利用口令来确认用户的身份,是当前最常用的认证技术.通常,每当用户要上机时,系统中的登录程序都首先要求用户输入用户名,登录程序利用用户输入的名字去查找一张用户注册表或口令文 ...

  2. 系统安全性之防火墙技术

    用于实现防火墙功能的技术可分为两类: (1) 包过滤技术.基于该技术所构建的防火墙简单.价廉. (2) 代理服务技术.基于该技术所构建的防火墙安全可靠. 上述两者之间有很强的互补性,因而在Intran ...

  3. 计算机网络信息安全技术研究论文,v计算机网络信息安全的数据加密技术论文...

    v计算机网络信息安全的数据加密技术论文 摘要:21世纪是计算机飞速发展的黄金时代,计算机网络已经成为人们不可或缺的信息交流工具.由于计算机网络信息的开放性和互联性,导致了计算机网络信息存在着极大的安全 ...

  4. 数据加密技术在计算机网络安全中的应用实例,数据加密技术在计算机网络安全中的应用.doc...

    数据加密技术在计算机网络安全中的应用.doc 数据加密技术在计算机网络安全中的应用 摘 要:社会信息技术不断发展,随着计算机技术和网络的普及,网络生活成为了人们日常活动.网络的开放性使得人们获取信息的 ...

  5. 凌科芯安浅谈 数据加密技术及其应用

    伴随电子.计算机技术的发展与应用, 信息安全越来越受到高度的重视.数据加密技术就是用来保证信息安全的基本技术之一.数据加密技术实质是一种数据形式的变换, 发送方把数据和信息(称为明文)通过算法加密后变 ...

  6. 数据加密技术知识点大盘点

    一. 什么是数据加密? 信息化时代,信息化本身就是一把双刃剑,一方面它为我们的生产.生活带来好处,另一方面,信息泄露也会给我们带来极大的威胁.所以,客观上,必须有强有力的安全措施,防止机密数据被窃取或 ...

  7. 网络安全技术第二章——数据加密技术及应用(数据加密概述、密码体制、加密算法数字签名和报文鉴别身份认证)

    数据加密技术及应用 一.数据加密概述 1.数据加密技术 2.密码学 3.保密体制或保密系统 4.密码体制 5.数据加密 6.常见现代密码 7.数据加密标准DES概述 8.高级加密标准AES概述 非对称 ...

  8. 数据加密技术和数据加密算法

    转自:http://www.cnblogs.com/wxbjs/archive/2011/09/02/2163540.html 数据加密技术 现代社会对信息安全的需求大部分可以通过密码技术来实现.密码 ...

  9. 网络与系统安全笔记------密码技术及应用

    网络与系统安全笔记------密码技术及应用 密码学 密码学分支 密码编码 古典加密技术 现代加密技术 加密解密 密码分析 哈希函数 MD族算法 SHA族算法 完整性保护 认证 对称密码 国际标准 机 ...

最新文章

  1. [Java实现] 图片择优(选择最清楚的图片)
  2. SAP Spartacus里,点击checkbox右边的span文本,不会触发checkbox勾选的原因
  3. ArcGIS实验教程——实验八:矢量数据拼接
  4. 如何在苹果 M1 上安装使用 FL Studio
  5. 我的世界seus光影java版下载_我的世界seus光影mod
  6. WiRadius认证计费管理系统
  7. JAVA前后端分离项目实战
  8. 定时器控制一个ADC实现双通道采样(TIM+ADC+DMA)
  9. acm会议什么档次_国际顶级会议期刊级别介绍
  10. 解决mysql报Lock wait timeout exceeded; try restarting transaction的问题
  11. 2018ICPC焦作站网络赛 Transport Ship 多重背包
  12. 实验室计算机远程访问设置(Teamviewer+Frp)
  13. Quartus中jtagserver找不到指定文件的解决方法
  14. 洛谷每日三题之第一天
  15. Hadoop是干什么的?
  16. c# leetcode1079. 活字印刷(回溯算法)
  17. 甲虫之王怀旧服新开的服务器是否自动开门,魔兽世界怀旧服:不刷虫皮也能当甲虫之王,钻漏洞可量产黑虫子...
  18. 四级单词pdf_2018年12月大学英语四级真题及答案解析(完整三套可打印)
  19. 物理实验期末测试(一)
  20. 【机械臂算法】机械臂动力学参数辨识仿真

热门文章

  1. matlab图片大小剪切
  2. 【C语言】C语言成长之路之超易上手的傻瓜版三子棋教程₍ᐢ.ˬ.⑅ᐢ₎
  3. [BZOJ3242][Noi2013]快餐店 环套树+线段树
  4. 关于AndroidTv端的小白理解
  5. VMware Tools 选项灰色解决方法
  6. xampp php中文乱码,php页面中文乱码
  7. raptor阶乘相加流程图_从键盘输入正整数n的值,计算n的阶乘,例如:输入5,输出120。请据此画出程序流程图。 (上传Raptor软件流程图和运行结果的截图)_学小易找答案...
  8. LeetCode:无重复字符的最长子串
  9. 常用电子器件 —— 电阻
  10. python学完后做什么_python学完之后主要是做什么?