CBC模式

2024-07-13

CBC模式(共3篇)

CBC模式 篇1

1 引言

随着全球信息高速公路建设的兴起和通信的网络化数字化,个人化,智能化,宽带化进程的不断加快,用户对信息的安全存贮,安全处理和安全传输的需求愈益迫切。伴随着Internet开放性扩展,以及个人通信,多媒体通言,力公室自动化,电子邮件,电子自动转帐支付系统,自动零售业务网的建设与实现,信息的安全保护问题就更显突出,解决这一问题的有效的手段是使用现代密码技术。

密码学新方向[1]的发表和美国数据加密标准DES的颁布实施标志着现代密码学的开端,从此揭开了商用民用密码研究的序幕。此后实用密码本制的研究基本上沿两个方向进行,即以RSA为代表的公开密钥密码体制和以DES为代表的秘密钥分组密码体制。分组密码具有高强度,高速率,便于计算机软硬件实现,易于标准化和灵活性等特点,通常是信息与网络安全中实现数据加密,数字签名,认证,密钥管理的核心体制,它在通信网络 (尤其是计算机通信) 和系统安全领域有着最广泛的应用。

由于Java在网络编程中的适用性, 以及Java安全体系结构的日益完善和目前Java开发网络安全软件的便利性, 用Java来实现信息的加密、解密会具有更好的安全性和应用性。

2 数据加密技术

数据加密技术[2]是实现信息保密性的一种重要手段, 是采用数学方法对原始信息 (通常称为“明文”) 进行重新组织, 使得加密后的信息 (称为“密文”) 在传输过程中, 即使被非法接收者获得也无法正确识别。信息的加密能保证交易信息的秘密性, 保证用户信息不被非法提取。使用加密技术实施数字签名, 进行身份认证, 对信息进行完整性校验, 能保证信息的真实性和完整性。

在所有的加密算法中, 最常用的是“置换表”算法。在该算法中, 每一个数据段对应着“置换表”中的一个偏移量, 偏移量所对应的值就输出成为加密后的文件。加密程序和解密程序都需要一个这样的“置换表”。这种加密算法比较简单, 加密解密速度快, 但是只要获得置换表, 加密方案容易被识破。

一种改进的算法是字/字节循环移位和XOR操作。如果把一个字或字节在一个数据流内做循环移位, 使用多个或变化的方向 (左移或右移) , 就可以迅速的产生一个加密的数据流。如果再使用XOR操作, 按位做异或操作, 那么破译密码就相当困难。CBC (Cipher Block Chaining)使用的就是这种思想。

3 CBC工作模式分析与应用

3.1 CBC工作模式

CBC和ECB、OFB、CFB是1980年NBS为DES推出的保密模式[3],随后,被包含在ISO的642比特的模式标准中。为了尽可能地利用以前的标准, 降低成本, NIST也将这4个模式列为AES的模式标准。下面是CBC保密模式的加密解密变换公式。

EK (X) :在密钥K作用下加密算法对明文块X的加密。

E-1K (Y) :在密钥K作用下解密算法对密文块Y的解密。

P1,…,Pi,表示明文, 每个Pi是n比特块, n是所用密码的分组长度。

C1,…,Ci,表示相应的密文。

加密变换:Ci=EK (Pi⊕Ci-1) 。

解密变换:Pi=E-1K (Ci) ⊕Ci-1, C0是初始向量。

3.2 对称密钥的生成

要使用CBC模式[4]进行加密解密,首先需要生成密钥文件。如果一个密码系统的加密密钥和解密密钥相同, 即收发双方使用相同密钥的密码, 即为对称密钥加密,通常称之为“Session Key”。对称密钥加密技术的经典算法是DES (Data Encryption Standard)算法。DES主要采用替换和移位的方法加密。其运算速度快, 密钥生成容易, 效率高, 具有极高的安全性, 适合加密大量的数据。对称密码的加解密过程如图1所示。

Java中对称密钥的生成如下:

3.3 使用CBC保密模式进行加密、解密

对密文分组[5,6]的不同形成了不同的加密方式,EBC (Electronic Code Book)加密方式对每个明文分组独立进行处理。所以,如果明文字节分组相同的话,加密后的密文也是相同的分组。

CBC (Cipher Block Chaining)加密方式在块加密法中增加反馈机制,保证即使输入中的明文块重复出现,这些明文块也会在加密后得到不同的密文块。在加密块链接模式(CBC)中,上一次的加密结果反馈到当前块的加密中,用每个块修改下一个块的加密。这样,每块密文与相应的当前输入明文块相关,与前面的所有明文块有关。所以,即使明文字节分组相同的话,加密后的密文也毫无规律。

加密过程如下:

1)接受两个输入:第一个明文块和初始向量,称为初始化向量(简称IV)。

2)第一个明文块和初始化向量用异或运算组合,然后用一个密钥加密,产生第一个密文块。第一个密文块作为下一个明文块的反馈。

3)将第三个明文块与第二个密文块用异或运算组合,然后用相同的密钥加密,产生第三个密文块。

4)依此类推,直至加密结束。

初始向量作用如下,因为如果两个密文的头8个字节相同,并且使用的密钥相同,则每条密文的开头8个字节也讲相同。对此,CBC使用一个8个字节的随机数作为初始向量来加密第一个分组,由于初始向量的随机性,这个问题迎刃而解。

以下是CBC加密方式的Java实现:

加密使用到的初始向量和加密后的密文保存在文件SEncCBC.dat中。

基于CBC模式的解密过程如下:

(1)通过文件输入流FileInputStream读取文件SEncCBC dat的开始8个字节,获取加密时所用的初始向量。

(2)通过对象输入流ObjectInputStream读取加密时使用的密钥,该密钥被序列化后保存在key.dat中。

(3)读取密文,首先通过available方法判断文件SEncCBC.da的剩余字节数,并创建相应大小的字节数组,然后使用文件输入流读取。

(4)使用Cipher.DECRYPTMODE模式初始化密码器,调用doFinal进行解密。

(5)将解密后的明文通过文件输出流FileOutputStream保存到文件中

4 实验结果与分析

以下是两组实验,均以字符串作为实验明文,第一组中的明文可分为4个相同单元,每个单元由8个字节组成;第二组中的明文也由4个单元组成,其中第一单元和第三单元相同,第二单元和第四单元相同,每个单元也由8个字节组成。

通过实验,我们可以清楚的看到ECB模式加密后的密文和明文一样,具有明显的规律性,而CBC模式加密的密文却无规律可循,完全隐蔽了明文的数据模式,从而使得破解难度大大增加。

5 结论

密码学和信息安全技术是信息科学与信息技术的重要分支,分组密码凭借其安全,高效,灵活的特点,已经成为数据加密,消息认证和电子签名等应用领域的首选体制。

基于CBC保密模式的加密解密应用引入了随机的初始向量,隐蔽了明文的数据模式,增强了实际信息安全保护系统中密文的加密效果,具有较广泛的应用前景。

参考文献

[1]张振宇, 于军, 奚海霞.数据加密方法及算法简析[C], 大庆职业学院, 2004.

[2]王勇, 易星, 杨建沾.SA公开密钥密码体制的密钥生成研究.计算机应用研究, 1998.

[3]卢开澄.计算机密码学——计算机网络中的数据保密和安全[M].北京:清华大学出版社, 1998.

[4]Bruce Schneier.吴世忠译.应用密码学[M].北京:机械工业出版社, 2000.

[5]潘晓中, 张薇, 徐晓军, 孙军, 数据加密技术分析[A], 系统工程与电子技术.

[6]张文政, 孟庆志.通信保密技术[J].计算机应用, 1998.

CBC模式 篇2

1 数据加密技术

数据加密技术[2]是实现信息保密性的一种重要手段。最常用的加密算法是“置换表”算法,本文研究的是一种改进的算法,即字字节循环移位和XOR操作。把一个字或字节在一个数据流内做循环移位,使用多个或变化的方向(左移或右移),就可以迅速的产生一个加密的数据流。如果再使用XOR操作,按位做异或操作,那么破译密码就相当困难。CBC(Cipher Block Chaining)使用的就是这种思想。

2 CBC工作模式分析与应用

2.1 CBC工作模式

CBC是1980年NBS为DES推出的保密模式[3],NIST也将这个模式列为AES的模式标准。下面是CBC保密模式的加密解密变换公式。

EK(X):基于密钥K加密明文块X

EK-1(Y):基于密钥K解密密文块Y

P1,…,Pi,明文,每个Pi是n比特块,n是密码的分组长度

C1,…,Ci,密文

加密变换:Ci=EK(Pi⊕Ci-1)

解密变换:Pi=EK-1(Ci)⊕Ci-1,C0是初始向量

2.2 对称密钥的生成

使用CBC模式[4]进行加密解密,首先需要生成密钥。如果加密和解密的密钥相同,即为对称密钥加密。对称密钥加密的经典算法是DES算法。DES主要采用替换和移位的方法加密。其运算速度快,安全性好,适合加密大量数据。

java中对称密钥的生成如下:

2.3 使用CBC保密模式进行加密、解密

对密文分组的不同形成了不同的加密方式,EBC模式对每个明文分组独立进行处理。所以,如果明文字节分组相同的话,加密后的密文也是相同的分组。

CBC模式在块加密法中增加反馈机制,保证即使输入的明文块重复出现,这些明文块也会在加密后得到不同的密文块。在CBC中,上一次的加密结果反馈到当前块的加密中,用每个块修改下一个块的加密。这样,每块密文与相应的当前输入明文块相关,与前面的所有明文块有关。所以,即使明文字节分组相同,加密后的密文也毫无规律。

加密过程如下:

1)接受两个输入:第一个明文块和初始向量,称为初始化向量

2)第一个明文块和初始化向量用异或运算组合,然后用一个密钥加密,产生第一个密文块,第一个密文块作为下一个明文块的反馈

3)将第三个明文块与第二个密文块用异或运算组合,然后用相同的密钥加密,产生第三个密文块

4)依此类推,直至加密结束

初始向量作用如下,因为如果两个密文的头8个字节相同,并且使用的密钥相同,则每条密文的开头8个字节也将相同。对此,CBC使用一个8个字节的随机数作为初始向量来加密第一个分组,由于初始向量的随机性,这个问题迎刃而解。

以下是CBC加密方式的java实现:

基于CBC模式的解密过程如下:

1)通过文件输入流InputStream读取文件SEncCBC.dat的开始8个字节,获取加密时所用的初始向量;

2)通过对象输入流ObjectInputStream读取加密时使用的密钥,该密钥被序列化后保存在key.dat中;

3)读取密文,首先判断文件SEncCBC.dat的剩余字节数,并创建相应的字节数组,然后使用文件输入流读取;

4)使用Cipher.DECRYPTMODE模式初始化密码器,调用doFinal进行解密;

5)将解密后的明文通过文件输出流OutputStream保存到文件中。

3 实验结果与分析

以下是实验结果,以字符串作为明文,该明文可分为4个相同单元,每个单元由8个字节组成。加密结果如表1所示:

通过实验,可以清楚的看到ECB模式加密后的密文和明文一样,具有明显的规律性,而CBC模式加密的密文却无规律可循,完全隐蔽了明文的数据模式,从而使得破解难度大大增加。

4 结论

该文研究的基于CBC保密模式的加密解密应用引入了随机的初始向量,隐蔽了明文的数据模式,增强了实际信息安全保护系统中密文的加密效果,具有较广泛的应用前景。

摘要:该文分析了CBC保密模式的原理并基于Java语言完成了相应实现,该模式的优点是引入随机初始向,避免了ECB的缺点,隐蔽了明文的数据模式,在很大程度上能防止数据篡改。

关键词:CBC,加密,解密,java

参考文献

[1]潘晓中.数据加密技术分析[J].系统工程与电子技术,2003(2).

[2]王勇.RSA公开密钥密码体制的密钥生成研究[J].计算机应用研究,1998(3).

[3]卢开澄.计算机密码学——计算机网络中的数据保密和安全[M].北京:清华大学出版社,1998.

CBC中国拳王争霸赛强势来袭 篇3

中国拳王争霸赛(China Boxing Champions,英文简称CBC)是国内官方打造的一档全新自主IP赛事,并且是中国拳击协会独家官方授权的唯一大型拳击赛事。CBC将于2016年10月28日、10月30日及11月1日在广东中山市体育馆鸣锣开战。赛事由国家体育总局拳击跆拳道运动管理中心、中国拳击协会以及国际拳联大中华区独家运营商上海博盟体育发展有限公司联合主办,广东省体育局、广东省中山市政府联合承办。

在三天的赛程里,10个级别20位国内拳坛最顶尖高手将捉对厮杀,争夺中国拳坛最高荣誉一“中国拳王”至尊钻戒。本次赛事参赛拳手阵容空前强大,包括8位里约奥运会中国国家队运动员及12位2016全国拳击锦标赛冠亚军拳手,汇集了当前国内拳击界最顶级的精英。奥运会、世锦赛双料季军胡建关、APB个人冠军吕斌、张家玮及国家队队长刘伟等超级明星都将披挂上阵,为国内拳迷奉上最精彩的拳击大餐。

对于“中国拳王”赛的未来,国家体育总局拳跆中心副主任李频充满了信心:“中国拳击的职业化改革和发展,需要‘中国拳王’这样的顶尖赛事平台来推动。我们拥有其他赛事无可比拟的资源优势,国内最顶级的精英拳手汇聚一堂,每场都将上演巅峰对决。中国拳协的独家授权也显示了赛事的权威性。我们要把这项赛事打造成高品质、高规格的顶级品牌赛事,助推中国拳击向新方向发展。未来我们还将成立中国拳击联盟,配合国际拳联的改革节奏,加快中国拳击的全面发展。在国内拳击人的共同努力下,中国拳击事业一定会迈向更新的高度!”

“中国拳王争霸赛”总奖金250万元,创造了中国拳击赛事奖金额度历史之最。高额奖金不仅彰显了赛事的高端大气,也体现了这项赛事对参赛拳手付出的一种尊重,更能刺激运动员打出激情四溢、精彩纷呈、火爆刺激的比赛,满足拳迷胃口。

比赛期间,中央电视台体育频道(CCTV5)、广东体育台、新浪体肓等国内顶级平台和门户网站将对赛事进行全程播出与报道,多家主流社交媒体和平面媒体也将联合打造全媒体平台,全面关注赛事进程。

“中国拳王争霸赛”争夺中国拳王的赛事均为6回合,每回合3分钟,拳手不戴头盔、不穿背心,采用10分制计分规则,全面向职业赛事靠拢。三天的比赛均为晚间19点30分开赛,共将决出10位不同级别的“中国拳王”。

上一篇:奥运火炬下一篇:框架结构施工