流密码与分组密码
- 格式:doc
- 大小:329.70 KB
- 文档页数:3
流密码的应用方案1. 简介流密码(Stream cipher)是一种加密算法,它基于根据密钥生成的伪随机比特流对明文逐比特加密。
相对于分组密码,流密码具有高加密速度和低处理延迟的特点。
流密码的应用广泛,包括终端设备加密通信、无线通信、互联网通信等领域。
本文将介绍流密码的应用方案,并分析它在以下三个方面的具体应用:网络通信加密、无线传感器网络和物联网设备。
2. 网络通信加密流密码在网络通信加密方面有着重要的应用。
流密码可以通过在发送方和接收方使用相同的密钥和伪随机比特流,将明文流转化为密文流。
这种加密方式保证了高效且安全的通信过程。
在网络通信加密中,流密码常用于数据包加密、安全连接建立等方面。
2.1 数据包加密数据包加密是一种常见的网络通信加密方式,通过对每个数据包进行加密,可以阻止未经授权的用户访问和篡改数据包。
流密码可以实现对数据包的实时加密,确保数据的机密性和完整性。
对于每个数据包,发送方使用密钥和伪随机序列对明文进行加密,而接收方则使用相同的密钥和伪随机序列进行解密。
通过流密码的加密机制,数据包在传输过程中得到保护。
2.2 安全连接建立在网络通信中,安全连接建立是一项关键任务。
通过建立安全连接,能够保证通信双方之间的机密性和完整性。
流密码可以用于生成加密密钥,确保建立的连接具有高强度的加密保护。
一种常见的安全连接建立方法是使用流密码生成所需的初始向量和会话密钥,进而生成安全连接所需的密钥材料。
通过流密码的应用,可以有效地建立安全且可靠的网络连接。
3. 无线传感器网络无线传感器网络是由大量分布在广域范围内的传感器节点组成的网络。
流密码在无线传感器网络中的应用有助于提供数据的安全传输,并减少能耗。
3.1 数据传输安全无线传感器网络中,传感器节点负责采集环境数据并将其传输到汇聚节点或基站。
传感器节点之间的通信涉及到敏感数据,如温度、湿度等。
为了保障数据的机密性,流密码可以被应用于无线传感器网络中的数据传输过程。
对称密钥密码体制对称密钥密码体制是指加密和解密过程中使用相同的密钥。
这种体制也叫做单密钥密码体制,因为加密和解密使用的密钥相同,能在保持安全的前提下对数据进行快速处理。
对称密钥密码体制通常分为分组密码和流密码两种。
分组密码是将明文分成固定长度的块,再和密钥一起通过一系列算法进行加密。
这种方法处理速度非常快,因为加密和解密算法是对数据块进行分组处理的,同时相同密钥的使用也降低了密钥管理的复杂性。
然而,分组密码存在的一个问题是,对数据块的分组可能会导致重复的数据,这些数据可以被攻击者用来破解密钥。
流密码是将明文和密钥通过一个伪随机数生成器计算出一个流式密钥,然后将流式密钥和明文一起进行异或运算来加密数据。
这种方法加密和解密速度也非常快,而且每个数据块都有独立的流式密钥,增强了数据的安全性。
然而,流密码也存在一些问题,例如在密钥被泄露时,加密数据就变得不安全了。
对称密钥密码体制的优点包括:1. 处理速度快:加密和解密使用的密钥相同,从而能快速处理数据。
2. 加密方式简单:对称密钥密码体制通常采用分组密码或流密码,在数据加密和解密过程中使用块或流式加密,处理速度快,同时也方便计算机的硬件或软件实现。
3. 密钥管理相对简单:使用相同的密钥进行加密和解密,可以使加密和解密的过程更加简单,从而降低了密钥管理的复杂度。
4. 对称密钥密码体制广泛应用于大多数数据通信应用中,如数据存储、数据传输等。
对称密钥密码体制的缺点包括:1. 密钥管理不安全:对称密钥密码体制存在一个主要问题,即密钥的安全性。
如果密钥被泄露或者失窃,那么加密数据就暴露了,导致数据不安全。
2. 非法用户可以访问数据:一旦非法用户获取了密钥,他们便可以访问数据而不会受到限制,这可能会导致重大的安全问题。
3. 可能存在重放攻击:由于每个数据块都使用相同的密钥进行加密,数据可能被攻击者截获并用于重放攻击,从而使数据的安全性大大降低。
4. 算法的安全性不能得到保证:对称密钥密码体制的安全性取决于加密算法本身的安全性。
密码学基础(一)常见密码算法分类对称算法是指一种加密密钥和解密密钥相同的密码算法,也称为密钥算法或单密钥算法。
该算法又分为分组密码算法(Block cipher)和流密码算法(Stream cipher)。
•分组密码算法o又称块加密算法o加密步骤一:将明文拆分为 N 个固定长度的明文块o加密步骤二:用相同的秘钥和算法对每个明文块加密得到 N 个等长的密文块o加密步骤三:然后将 N 个密文块按照顺序组合起来得到密文•流密码算法o又称序列密码算法o加密:每次只加密一位或一字节明文o解密:每次只解密一位或一字节密文常见的分组密码算法包括 AES、SM1(国密)、SM4(国密)、DES、3DES、IDEA、RC2 等;常见的流密码算法包括 RC4 等。
•AES:目前安全强度较高、应用范围较广的对称加密算法•SM1:国密,采用硬件实现•SM4:国密,可使用软件实现•DES/3DES:已被淘汰或逐步淘汰的常用对称加密算法二、非对称密码算法(Asymmetric-key Algorithm)非对称算法是指一种加密密钥和解密密钥不同的密码算法,也称为公开密码算法或公钥算法。
该算法使用一个密钥进行加密,另一个密钥进行解密。
•加密秘钥可以公开,又称为公钥•解密秘钥必须保密,又称为私钥常见非对称算法包括 RSA、SM2(国密)、DH、DSA、ECDSA、ECC 等。
三、摘要算法(Digest Algorithm)算法是指将任意长度的输入消息数据转换成固定长度的输出数据的密码算法,也称为哈希函数、哈希函数、哈希函数、单向函数等。
算法生成的定长输出数据称为摘要值、哈希值或哈希值,摘要算法没有密钥。
算法通常用于判断数据的完整性,即对数据进行哈希处理,然后比较汇总值是否一致。
摘要算法主要分为三大类:MD(Message Digest,消息摘要算法)、SHA-1(Secure Hash Algorithm,安全散列算法)和MAC(Message Authentication Code,消息认证码算法);另国密标准 SM3 也属于摘要算法。
作业二、分析比较分组密码AES-CFB 或 OFB与流密码RC4的特点一、RC4算法介绍RC4是一种对称密码算法,它属于对称密码算法中的序列密码(streamcipher,也称为流密码),它是可变密钥长度,面向字节操作的流密码。
RC4是流密码streamcipher中的一种,为序列密码。
RC4加密算法是Ron Rivest在1987年设计出的密钥长度可变的加密算法簇。
起初该算法是商业,直到1994年,它才公诸于众。
由于RC4具有算法简单,运算速度快,软硬件实现都十分容易等优点,使其在一些协议和标准里得到了广泛应用。
流密码也属于对称密码,但与分组加密算法不同的是,流密码不对明文数据进行分组,而是用密钥生成与明文一样长短的密码流对明文进行加密,加解密使用相同的密钥。
RC4算法特点:(1)、算法简洁易于软件实现,加密速度快,安全性比较高;(2)、密钥长度可变,一般用256个字节。
对称密码的工作方式有四种:电子密码本(ECB, electronic codebook)方式、密码分组(CBC, cipherblock chaining)方式、密文反馈(CFB, cipher-feedback)方式、输出反馈(OFB, output-feedback)方式。
RC4算法采用的是输出反馈工作方式,所以可以用一个短的密钥产生一个相对较长的密钥序列。
OFB方式的最大的优点是消息如果发生错误(这里指的是消息的某一位发生了改变,而不是消息的某一位丢失),错误不会传递到产生的密钥序列上;缺点是对插入攻击很敏感,并且对同步的要求比较高。
RC4的执行速度相当快,它大约是分块密码算法DES的5倍,是3DES的15倍,且比高级加密算法AES也快很多。
RC4算法简单,实现容易。
RC4的安全保证主要在于输入密钥的产生途径,只要在这方面不出现漏洞,采用128bit的密钥是非常安全的。
RC4算法加密流程:包括密钥调度算法KSA和伪随机子密码生成算法PRGA两大部分(以密钥长度为256个字节为例)。
分组密码算法和流密码算法的安全性分析当今是一个网络时代,人们的生活方式与过去相比发生了很大的变化,足不出户就可以通过网络解决衣食住行中的绝大多数需求,例如,用淘宝网购买所需、用支付宝进行日常支付、用电子银行转账等等。
生活变得快捷而又方便。
然而,事物都有两面性,伴随着生活的便捷而来的是财产安全和个人隐私的保障问题。
这时,密码的使用就是在网络上对我们进行保护的一个关键技术点。
它是类似防火墙似的存在,是一切网络活动的基石。
在网络传输时一般使用的是对称加密算法来进行加密操作,如流密码算法和分组密码算法。
因此,对现有的被广泛重视和使用的分组密码算法和流密码算法的安全性进行研究和分析是非常有必要的。
在本文中,首先,我们针对分组密码算法建立统计积分区分器和多结构体统计积分区分器新模型,并将模型应用于实际算法中;其次,基于MILP方法首次将S盒的差分特征和线性特征考虑进不可能差分路线和零相关路线的自动化搜索中,首次给出ARX算法通用的不可能差分路线和零相关路线的自动化搜索方法,并将该方法应用于实际算法中;最后,在相关密钥场景下利用不可能差分方法给出流密码算法Lizard的安全性分析结果。
具体结果如下。
提出分组密码算法统计积分区分模型,并利用该模型理论破解Skipjack变种算法、给出CAST-256的最优攻击结果和IDEA的最优积分攻击结果:积分攻击是对称密码领域最强大的分析方法之一,被广泛的应用于分组密码算法的安全性分析中。
它是基于概率为1的平衡特性来构建区分器。
攻击者可以通过固定输入的一部分比特而遍历剩下的所有比特的可能取值,观察相应的输出值在某些比特上是否为均匀分布来区分真实算法和随机置换。
为了增加积分区分器的覆盖轮数,攻击者通常会在整个明文空间的限制条件下以特定的结构来遍历更多的明文比特以使得平衡特性依然成立。
然而这一要求限制了积分攻击在很多算法分析中的应用。
在本文中,为降低积分分析中使用的数据复杂度,我们基于超几何分布和多项分布为算法和随机置换构造不同的概率分布来进行区分,从而构建了统计积分这一新模型。
密码模块的24个分类
密码模块的分类方式有很多,以下是其中一些常见的分类:
古典密码与现代密码:古典密码以字符为基本加密单元,现代密码则以信息块为基本加密单元。
算法保密与密钥保密:算法保密应用于军事领域,而密钥保密则应用于现代加密领域。
对称密码与非对称密码:对称密码采用单钥密码(私钥密码),加密和解密使用相同的秘钥;非对称密码采用双钥密码(公钥密码),加密和解密使用不同的秘钥。
分组密码与流密码:分组密码对明文分为固定长度的组,用同一秘钥、算法对各个组进行加密;流密码则指加密时每次只加密一位或一个字节明文。
散列函数:用于验证数据的完整性。
数字签名:主要针对以数字的形式存储消息进行处理。
硬件模块、软件模块、固件模块、混合软件模块、混合固件模块等:根据实现方式的不同进行分类。
以上信息仅供参考,如有需要,建议咨询专业人士。
密码编码与分类在当今数字化的时代,密码已经成为了保护我们信息安全的重要防线。
无论是个人的隐私、企业的商业机密,还是国家的安全,都离不开密码的保护。
那么,什么是密码编码?密码又有哪些分类呢?让我们一起来探索一下这个神秘而又重要的领域。
密码编码,简单来说,就是将明文(也就是我们想要保护的原始信息)通过一定的规则和算法转化为密文的过程。
这个过程就像是给我们的信息穿上了一层“隐身衣”,只有知道“脱衣”方法(即解密算法)的人才能读懂其中的内容。
密码编码的目的主要有两个。
一是确保信息的保密性,只有授权的人员能够读取和理解信息。
二是保证信息的完整性,确保信息在传输或存储过程中没有被篡改。
接下来,让我们看看密码的分类。
从不同的角度出发,密码可以有多种分类方式。
按照加密和解密使用的密钥是否相同,密码可以分为对称密码和非对称密码。
对称密码,也称为秘密密钥密码,加密和解密使用相同的密钥。
这就好比一把钥匙既能锁门又能开门。
常见的对称密码算法有 AES(高级加密标准)、DES(数据加密标准)等。
对称密码的优点是加密和解密速度快,效率高,适用于大量数据的加密。
但它也有一个明显的缺点,那就是密钥的分发和管理比较困难。
因为通信双方都需要知道这个密钥,如果密钥在分发过程中被窃取,那么整个加密系统就会被攻破。
非对称密码,也称为公开密钥密码,加密和解密使用不同的密钥,分别称为公钥和私钥。
公钥可以公开,任何人都可以用它来加密信息,但只有对应的私钥才能解密。
这就像是一个邮箱,任何人都可以把信投进去(加密),但只有拥有钥匙的人才能打开邮箱取出信件(解密)。
常见的非对称密码算法有 RSA 算法等。
非对称密码解决了对称密码中密钥分发的难题,但它的加密和解密速度相对较慢,通常用于加密少量的关键信息,如对称密钥的交换。
从密码的应用场景来看,密码又可以分为通信密码和存储密码。
通信密码主要用于保护信息在网络通信中的安全。
例如,当我们在网上购物时,输入的信用卡信息会通过通信密码进行加密,然后传输到商家的服务器,以防止信息被窃取。
分组密码与流密码第一节什么是分组密码分组密码是将明文消息编码表示后的数字(简称明文数字)序列,划分成长度为n的组(可看成长度为n的矢量),每组分别在密钥的控制下变换成等长的输出数字(简称密文数字)序列。
现代分组密码的研究始于20世纪70年代中期,至今已有20余年历史,这期间人们在这一研究领域已经取得了丰硕的研究成果。
大体上,分组密码的研究包括三方面:分组密码的设计原理,分组密码的安全性分析和分组密码的统计性能测试。
第二节分组密码的设计原则Claude Shannon在1949年提出了代替—置换(S-P)网络的想法,成为当代分组加密法的基础,而代替和置换就是两种基本的密码学运算。
Shannon又提出扩散(diffusion)和扰乱(confusion)是影响密码安全的主要因素。
扩散的目的是让明文中的单个数字影响密文中的多个数字,从而使明文的统计特征在密文中消失,相当于明文的统计结构被扩散。
例如,最简单的方法让明文中的一个数字影响密文中的k个数字,可以用:扰乱是指让密钥与密文的统计信息之间的关系变得复杂,从而增加通过统计方法进行攻击的难度。
扰乱可以通过各种代换算法实现。
设计安全的分组加密算法,需要考虑对现有密码分析方法的抵抗,如差分分析、线性分析等,还需要考虑密码安全强度的稳定性。
此外,用软件实现的分组加密要保证每个组的长度适合软件编程(如8、16、32……),尽量避免位置换操作,以及使用加法、乘法、移位等处理器提供的标准指令;从硬件实现的角度,加密和解密要在同一个器件上都可以实现,即加密解密硬件实现的相似性。
第三节Feistel加密结构如今许多对称式分组密码都是以Horst Feistel提出的“Feistel加密法”的结构为基础。
Feistel加密法以不可逆的混合式加密为基础,将输入的区段分为两半,分多个回合来处理,每回合左半部资料会执行一次替换运算,替换运算会将右半部回合函式F的结果,以XOR运算方式与左半部资料结合起来,然后交换左右两半资料。
分组密码模式分组密码模式分组密码与流密码分组密码:每次只能处理特定长度的⼀块数据的⼀类算法,“⼀块”就称为分组(block )。
⼀个分组的⽐特数就称为分组长度(block length)。
流密码: 对数据流进⾏连续的处理的⼀类密码。
只有⼀次性密码本属于流密码,⽽DES 、三重DES 、AES 等⼤多数对称密码算法都属千分组密码。
模式分组密码算法只能加密固定产固定的分组,若加密的铭⽂的长度超过分组密码的长度,需要对分组密码算法进⾏迭代,以便将所有的密码全部加密。
明⽂分组和密⽂分组主动攻击者Mallory窃听者Eve 只能被动地进⾏窃听,⽽主动攻击者则可以主动介⼊发送者和接收者之间的通信过程,进⾏阻碍通信或者是篡改密⽂等活动。
这样的攻击者⼀般称为Mallory 。
ECB模式使⽤ECB 模式加密时,相同的明⽂分组会被转换为相同的密⽂分组,也就是说,我们可以将其理解为是⼀个巨⼤的“明⽂分组⼀密⽂分组”的对应表,因此ECB 模式也称为电⼦密码本模式。
当最后⼀个明⽂分组的内容⼩于分组长度时,需要⽤⼀些特定的数据进⾏填充( padding )。
CBC 模式在CBC 模式中,⾸先将明⽂分组与前⼀个密⽂分组进⾏XOR 运算,然后再进⾏加密。
ECB 和 CBC 的区别初始化向量当加密第⼀个明⽂分组时,由于不存在“前⼀个密⽂分组”,因此需要事先准备⼀个长度为⼀个分组的⽐特序列来代替“前⼀个密⽂分组”,这个⽐特序列称为初始化向量(Initialization Vector) ,通常缩写为IV 。
⼀般来说,每次加密时都会随机产⽣⼀个不同的⽐特序列来作为初始化向量。
CBC模式的特点明⽂分组在加密之前⼀定会与“前⼀个密⽂分组”进⾏XOR 运算,因此即便明⽂分组 1和 2 的值是相等的,密⽂分组1 和 2 的值也不⼀定是相等的。
这样⼀来,ECB 模式的缺陷在CBC模式中就不存在了。
在CBC 模式中,我们⽆法单独对⼀个中间的明⽂分组进⾏加密。
上机一:流密码与分组密码编程【上机目的】熟悉流密码和分组密码加密/解密算法的基本原理,通过编程/开源代码分析分别了解一种标准流密码算法和一种标准分组密码算法的运行原理。
【上机环境】1、硬件PC机一台。
2、系统配置:操作系统windows XP以上。
3、编程语言:C/C++/C#/Java/Python【上机内容及要求】1、分别利用RC4算法(或其它任一种标准流密码算法)和DES算法(或AES算法等其它任一种标准分组密码算法)对数据进行加解密操作2、代码分析及注释3、代码调试4、代码修改及测试(选做)备注:可借鉴网上相关算法的开源代码进行编程实现,编程语言不限。
【上机报告】1、提交关键功能有注释的源码。
2、提交运行测试结果(运行截图及说明)。
3、运行测试结果分析。
4、上机总结(任务完成情况、出现或待解决的问题、收获、体会等)。
流密码流密码就是使用较短的一串数字(叫它密钥吧),来生成无限长的伪随机密码流,当然事实上只需要生成和明文长度一样的密码流就够了。
一个非常简单的流密码算法是,用6个比特位101100做密钥,将它不断重复得到密码流101100101100101100. ...直到和明文长度相等,然后将密码流和明文“相加”就得到密文了,解密就是将这个密码流和密文“相加”。
流密码算法有个特殊的名称——维吉尼亚密码,当然这里密钥长度可以不是6。
用较短的密钥产生无限长的密码流的方法非常多,其中有一种就叫做RC4。
把明文的信息限制在ascii码字符集内(它已经能表示所有的英文资料了哈哈),每个字符是一个比特,占8位。
假设明文是abc,a、b、c的ascii值分别为97、98、99。
二进制形式为01100001、01100010、01100011。
密钥流和明文长度一样,假设是sdf,同样可以得到二进制流01110011、01100100、01100110,让他们在对应位做异或运算就可以得到密文了,c语言有^运算符来实现“相加”的操作。
分组密码与流密码的分析设计与比较1引言随着科技的发展,信息安全在现代电子通信等方面发挥着越来越重要的作用密码编码学是应对各种信息安全威胁的最有效的方法。
所谓密码编码学,是指生成高强度、有效的加密或认证算法。
欲传送的原始信息叫做明文,对其进行可逆的数字变换后的信息称为密文。
发送者通过加密算法对明文进行加密,得到密文,这个过程称为加密。
接收者收到经过处理的密文后,通过解密算法,还原成明文,这一过程称为解密。
密码系统所采取的基本工作模式叫做密码体制,主要分为两大类:对称密钥密码体制与非对称密钥密码体制。
对称密钥密码体制中的加密密钥与解密密钥相同,需要安全可靠的密钥传递信道,通信双方需保管好密钥。
非对称密钥密码体制中加密与解密分别有一个对应的密钥,发送者查询接收者公开的公钥对明文进行加密,接收者收到密文后再利用只有自己知道的私钥进行解密。
对称密钥密码体制又分为两大类,分别是分组密码与流密码。
所谓分组密码,就是按照算法设计者预先设定的长度把明文分割成块,再对每一分组进行加密解密的算法。
而对比特进行运算、采用"一次一密"的算法,则称为流密码。
2分组密码2.1 概论所谓分组密码,其明文分为若干个数据块,加密后得到的密文仅与给定的密钥算法和密钥有关,与被处理的明文数据块在整个明文中所处的位置无关。
较典型的分组密码算法有DES算法、IDEA算法、AES算法等。
算法设计者事先设定好分块的长度,算法将明文按照该长度进行分组,再在这些定长的分组上进行运算。
在分组密码的设计中,加密与解密的处理是建立在块的基础上。
算法把明文分成设定的大小,通常为64 bit或128 bit,再对每个块单独编码。
2.2 设计原则创立了经典信息论的数学家C.E.Shannon在1949年时发表了一篇名为"《保密系统的通信理论》的论文。
在这篇论文中,Shannon提出了如何设计分组加密的组合密码系统。
其中,设计分组密码需要依据两个一般原则,分别是混淆原则和扩散原则。
简述流密码
流密码(Stream Cipher)是一种加密算法,是对称加密的一种形式。
它是通过一次一个比特地将明文转换为密文的方式来进行加密。
与分组密码不同,流密码不需要将明文分成固定长度的块,而是逐比特地加密数据。
流密码通过生成一系列称为“密钥流”(keystream)的伪随机比特序列来完成加密和解密过程。
这个密钥流与明文内容进行“异或”操作,从而生成密文。
与分组密码相比,流密码具有以下优势:
1. 快速:由于逐比特进行,流密码算法通常比分组密码快得多。
2. 可实时性:适用于实时传输或通信场景,可以立即对数据进行加密和解密。
3. 灵活性:流密码可以加密任意长度的数据,不需要将明文分割成固定大小的块。
然而,流密码也存在一些限制和安全性方面的考虑:
1. 依赖于随机性:密钥流必须具备足够的随机性,否则可能会出现重放攻击等安全问题。
2. 安全强度:密钥流生成算法必须足够复杂和安全,以抵御各种攻击手段,如线性和差分密码分析等。
需要注意的是,流密码的安全性不仅取决于算法本身,还取决于密钥管理和实施的安全措施。
为了保证流密码的安全性,关键是选择安全的密钥生成算法、使用足够长且随机的密钥以及采取适当的密钥管理措施。
流密码和分组密码的概念和区别
流密码和分组密码都是对称加密算法,它们的主要区别在于加密方式不同。
流密码是将明文逐位与密钥进行异或运算得到密文,其加密过程是连续的、逐位进行的。
通常使用伪随机数生成器来产生密钥流,生成的密钥流长度和明文长度相等。
由于流密码可以实现高速加密和解密,因此广泛应用于网络通信、无线电通信等领域。
分组密码是将明文按照固定长度分组,每个分组经过一系列变换后得到密文。
通常采用分组加密标准(如DES、AES等)来实现,它们通过多轮迭代的置换和代换操作将明文分组转换为密文分组。
分组密码具有更强的安全性,可以防止被攻击者通过分析单个字节来推断出明文信息。
因此,流密码和分组密码在加密方式上存在本质区别,根据应用场景和安全需求的不同,需要选择合适的加密算法。
流密码和分组密码
按照密钥的特征不同,密码体制分为对称密码体制和非对称密码体制。
按照对明文消息加密方式的不同,密码体制分为流密码(Stream Cipher )和分组密码(Block Cipher )[1]。
非对称密码体制均为分组密码[2]。
1 流密码
流密码也称为序列密码。
在流密码中,明文以序列的方式表示,称为明文流。
在对明文流进行加密时,先由种子密钥生成一个密钥流。
然后,利用加密算法把明文流和密钥流加密,产生密文流。
流密码每次只对明文中的单个bit 位进行加密变换,加密过程所需的密钥流由种子密钥通过密钥流生成器产生。
流密码的主要原理是通过随机数发生器产生性能优良的伪随机序列(密钥流),使用该序列加密明文流(逐bit 位加密),得到密文流。
由于每一个明文都对应一个随机的加密密钥,因此流密码在理论上属于无条件安全的密码体制(一次一密密码)
[3]。
流密码的基本加密过程,如图1所示。
图1 流密码的加密过程
设明文流为:12i m m m m = ,密钥流由密钥流发生器f 产生:(,)i i z f k σ=,这里i σ是加密器中的存储器在时刻i 的状态,f 是由种子密钥k 和i σ产生的函数。
设最终得到的密钥流为:
12i k k k k = ,加密结果为:121212()()()i i k k k i c c c c E m E m E m == ,解密结果为:
121212()()()i k k k i i m D c D c D c m m m == 。
用流密码进行保密通信的模型,如图2所示:
图2 流密码保密通信图
2 分组密码
分组密码也称为块密码。
当加密一条长消息(明文)时,首先,将明文编码表示为二进制序列;然后,将其分成若干个固定长度的组(最后一组长度不够时还得进行填充,如补0);
最后,再对逐个分组依次进行加密操作。
分组长短决定着密码的强度。
从算法的安全性考虑,分组长度不能太短,应该保证加密算法能够应付密码分析;从实用性考虑,分组长度又不能太长,要便于操作和运算。
近年来,随着计算机计算能力的不断提高,分组长度为64位的分组密码的安全性越来越不能满足实际需要,为提高加密的安全性,很多的分组密码开始选择128位作为算法的分组长度[4]。
在相同密钥下,分组密码对长为t 的输人明文组所实施的变换是等同的,所以只须研究对任一组明文数字的变换规则。
这种密码实质上是字长为t 的数字序列的代换密码[3]。
分组密码是将明文经编码表示后的二进制序列12i m m m 划分成若干固定长度t 为的组12t m m m m = ,各组分别在密钥12r k k k k = 的控制下转换成长度为l 的二进制密文分组
12l c c c c = 。
若t l >,则称为带数据压缩的分组密码,易增加密文解密的难度;若t l <,则称
为带数据扩展的分组密码,必然要增加密文存储和传输的代价。
通常的分组密码算法大多取
t l =[2]。
其本质是一个从明文空间(t 的比特串的集合)M 到密文空间(l 长的比特串的集合)C 的映射,该映射由密钥和加密算法确定。
采用分组密码,对一个明文分组进行加解密的过程,如图3所示。
其中,明文分组长度为t ,密文分组长度为l ,密钥长度为r 。
这些参数是分组密码的重要参数,对算法的安全性能有重要的影响(密钥空间有2r 个元素)。
在不同的分组密码算法中,它们的取值往往不同。
图3 分组密码保密通信图
3 二者联系
(1)流密码:令M 代表明文。
流密码是把M 拆分成相连的比特12,,,,i M M M ,并用密钥流12i K K K K = 中的第i 个成分i K 对明文流中的第i 个成分i M 进行加密,即11()()K K E M E M = 22()()i K K i E M E M 。
如果在T (固定值)个比特后密钥序列重复,则流密码是周期序列密码。
否则,就是非周期序列密码。
(2)分组密码:分组密码是把M 拆分成相连的分组12,,,,i M M M ,并用同一个密钥K 对每个分组i M 进行加密,即12()()()()K K K K i E M E M E M E M =。
分组的长度视具体方案而定。
(3)二者的联系:对于周期为T 的流密码,令12T K K K K = ,也可把这类密码看作是分组密码,这
里每个i M 都是具有T 个比特的一个分组。
当T 较小时,这类密码更像是分组密码。
随着T 的增加,这类密码变得更像流密码。
4 二者区别
(1)分组密码的特征是每次处理一个固定长度的数据组(如DES 的分组长度64bit )。
一个长度小于密码分组尺寸的明文,只有当它被填补足够的位数能构成标准尺寸时,才能进行加密。
在分组密码中,明文被分为多个比特的分组,逐组进行加密。
对于某一消息M ',分组密码体制一般首先将M '进行填充得到消息M ,使其长度为固定分组长度L 的整数倍,密码算法把M 划分为一系列长度为L 的分组,再对分组进行加密。
在流密码中,明文M 被分成连续的比特12i M M M M = ,用密钥流12i K K K K = 的i K 进行加密。
其中,密钥流K 是密钥流生成器得到的。
(2)对于流密码,在一个固定密钥作用下,对相同的明文进行加密,并不一定得到相同的密文。
因为明文的重复部分是用密钥流的不同部分加密的。
对于分组密码,在一个固定密钥作用下,对相同的明文进行加密,一定得到相同的密文。
参考文献
[1] 卢铁城. 信息加密技术. 四川科学技术出版社,1989.10.
[2] 张福泰 等. 密码学教程 . 武汉大学出版社,2006.9.
[3] 杨波. 现代密码学(第2版). 清华大学出版社,2007.4.
[4] 范九伦 等. 密码学基础. 西安电子科技大学出版社,2008.8.。