a3密码算法
❶ 请教高手给我解释一下 GSM移动通信原理
1).频谱效率。由于采用了高效调制器、信道编码、交织、均衡和语音编码技术,使系统具有高频谱效率。
2).容量。由于每个信道传输带宽增加,使同频复用栽干比要求降低至9dB,故GSM系统的同频复用模式可以缩小到4/12或3/9甚至更小(模拟系统为7/21);加上半速率话音编码的引入和自动话务分配以减少越区切换的次数,使GSM系统的容量效率(每兆赫每小区的信道数)比TACS系统高3~5倍。
3).话音质量。鉴于数字传输技术的特点以及GSM规范中有关空中接口和话音编码的定义,在门限值以上时,话音质量总是达到相同的水平而与无线传输质量无关。
4).开放的接口。GSM标准所提供的开放性接口,不仅限于空中接口,而且报刊网络直接以及网络中个设备实体之间,例如A接口和Abis接口。
GSM MODEM5). 安全性。通过鉴权、加密和TMSI号码的使用,达到安全的目的。鉴权用来验证用户的入网权利。加密用于空中接口,由SIM卡和网络AUC的密钥决定。TMSI是一个由业务网络给用户指定的临时识别号,以防止有人跟踪而泄漏其地理位置。
6).与ISDN、PSTN等的互连。与其他网络的互连通常利用现有的接口,如ISUP或TUP等。
7).在SIM卡基础上实现漫游。漫游是移动通信的重要特征,它标志着用户可以从一个网络自动进入另一个网络。GSM系统可以提供全球漫游,当然也需要网络运营者之间的某些协议,例如计费。 GSM - 技术 2GSM系统的技术规范及其主要性能
GSM标准共有12章规范系列,即:01系列:概述 02系列:业务方面 03系列:网络方面 04系列:MS-BS接口和规约(空中接口第2、3层) 05系列:无线路径上的物理层(空中接口第1层) 06系列:话音编码规范 07系列:对移动台的终端适配 08系列:BS到MSC接口(A和Abis接口) 09系列:网络互连 10系列:暂缺 11系列:设备和型号批准规范 12系列:操作和维护
3GSM系统关键技术
工作频段的分配
1).工作频段
中国陆地公用蜂窝数字移动通信网GSM通信系统采用900MHz频段:
890~915(移动台发、基站收)
935~960(基站发、移动台收)
双工间隔为45MHz,工作带宽为25 MHz,载频间隔为200 kHz。
随着业务的发展,可视需要向下扩展,或向1.8GHz频段的GSM1800过渡,即1800MHz频段:
1710~1785(移动台发、基站收)
1805~1880(基站发、移动台收)
双工间隔为95MHz,工作带宽为75 MHz,载频间隔为200 kHz。
2).频道间隔
相邻两频道间隔为200kHz。 每个频道采用时分多址接入(TDMA)方式,分为8个时隙,即8个信道(全速率)。每信道占用带宽200 kHz/8=25 kHz。
将来GSM采用半速率话音编码后,每个频道可容纳16个半速率信道。
3)多址方案
GSM通信系统采用的多址技术:频分多址(FDMA)和时分多址(TDMA)结合,还加上跳频技术。
GSM在无线路径上传输的一个基本概念是:传输的单位是约一百个调制比特的序列,它称为一个“突发脉冲”。脉冲持续时间优先,在无线频谱中也占一有限部分。它们在时间窗和频率窗内发送,我们称之为间隙。精确地讲,间隙的中心频率在系统频带内间隔200 kHz安排(FDMA情况),它们每隔0.577ms(更精确地是15/26ms)出现一次(TDMA情况)。对应于相同间隙的时间间隔称为一个时隙,它的持续时间将作为一种时间单位,称为BP(突发脉冲周期)。
这样一个间隙可以在时间/频率图中用一个长15/26ms,宽200KHz的小矩形表示(见图)。统一地,我们将GSM中规定的200KHz带宽称为一个频隙。
4)在时域和频域中的间隙
在GSM系统中,每个载频被定义为一个TDMA帧,相当于FDMA系统的一个频道。每帧包括8个时隙(TS0-7)。每个TDMA帧有一个TDMA帧号。
TDMA帧号是以3小时28分53秒760毫秒(2048*51*26*8BP或者说2048*51*26个TDMA帧)为周期循环编号的。每2048*51*26个TDMA帧为一个超高帧,每一个超高帧又可分为2048个超帧,一个超帧是51*26个TDMA帧的序列(6.12秒),每个超帧又是由复帧组成。复帧分为两种类型。
26帧的复帧:它包括26个TDMA帧(26*8BP),持续时长120ms。51个这样的复帧组成一个超帧。这种复帧用于携带TCH(和SACCH加FACCH)。
51帧的复帧:它包括51个TDMA帧(51*8BP),持续时长3060/13ms。26个这样的复帧组成一个超帧。这种复帧用于携带BCH和CCCH。
5)无线接口管理
在GSM通信系统中,可用无线信道数远小于潜在用户数,双向通信的信道只能在需要时才分配。这与标准电话网有很大的区别,在电话网中无论有无呼叫,每个终端都与一个交换机相连。
在移动网中,需要根据用户的呼叫动态地分配和释放无线信道。不论是移动台发出的呼叫,还是发往移动台的呼叫,其建立过程都要求用专门方法使移动台接入系统,从而获得一条信道。在GSM中,这个接入过程是在一条专用的移动台--基站信道上实现的。这个信道与用于传送寻呼信息的基站――移动台信道一起称为GSM的公用信道,因为它同时携带发自/发往许多移动台的信息。相反地,在一定时间内分配给一单独移动台的信道称作专用信道。由于这种区别,可以定义移动台的两种宏状态:
空闲模式:移动台在侦听广播信道,此时它不占用任一信道。
专用模式:一条双向信道分配给需要通信的移动台,使它可以利用基础设施进行双向点对点通信。
接入过程使移动台从空闲模式转到专用模式。
4GSM信道
GSM中的信道分为物理信道和逻辑信道,一个物理信道就为一个时隙(TS),而逻辑信道是根据BTS与MS之间传递的信息种类的不同而定义的不同逻辑信道,这些逻辑信道映射到物理信道上传送。从BTS到MS的方向称为下行链路,相反的方向称为上行链路。
逻辑信道又分为两大类,业务信道和控制信道。
1). 业务信道(TCH):
用于传送编码后的话音或客户数据,在上行和下行信道上,点对点(BTS对一个MS,或反之)方式传播。
2). 控制信道:
用于传送信令或同步数据。根据所需完成的功能又把控制信道定义成广播、公共及专用三种控制信道,它们又可细分为:
a.保密措施
GSM系统在安全性方面有了显着的改进,GSM与保密相关的功能有两个目标:第一,包含网络以防止未授权的接入,(同时保护用户不受欺骗性的假冒);第二,保护用户的隐私权。
防止未授权的接入是通过鉴权(即插入的SIM卡与移动台提供的用户标识码是否一致的安全性检查)实现的。从运营者方面看,该功能是头等重要的,尤其在国际漫游情况下,被访问网络并不能控制用户的记录,也不能控制它的付费能力。
保护用户的隐私是通过不同手段实现时,对传输加密可以防止在无线信道上窃听通信。大多数的信令也可以用同样方法保护,以防止第三方了解被叫方是谁。另外,以一个临时代号替代用户标识是使第三方无法在无线信道上跟踪GSM用户的又一机制。GSMb.PIN码
这是一种简单的鉴权方法。
在GSM系统中,客户签约等信息均被记录在SIM卡中。SIM卡插到某个GSM终端设备中,便视作自己的电话机,通话的计费帐单便记录在此SIM卡名下。为防止盗打,帐单上产生讹误计费,在SIM卡上设置了PIN码操作(类似计算机上的Password功能)。PIN码是由4~8位数字组成,其位数由客户自己决定。如客户输入了一个错误的PIN码,它会给客户一个提示,重新输入,若连续3次输入错误,SIM卡就被闭锁,即使将SIM卡拔出或关掉手机电源也无济于事,必须向运营商申请,由运营商为用户解锁。
c.鉴权
鉴权的计算如下图所示。其中RAND是网络侧对用户的提问,只有合法的用户才能够给出正确的回答SRES。
RAND是由网络侧AUC的随机数发生器产生的,长度为128比特,它的值随机地在0~2128-1(成千上万亿)范围内抽取。
SRES称为符号响应,通过用户唯一的密码参数(Ki)的计算获取,长度为32比特。
Ki以相当保密的方式存储于SIM卡和AUC中,用户也不了解自己的Ki,Ki可以是任意格式和长度的。
A3算法为鉴权算法,由运营者决定,该算法是保密的。A3算法的唯一限制是输入参数的长度(RAND是128比特)和输出参数尺寸(SRES必须是32比特)。
d.加密
在GSM中,传输链路中加密和解密处理的位置允许所有专用模式下的发送数据都用一种方法保护。发送数据可以是用户信息(语音、数据……),与用户相关的信令(例如携带被呼号码的消息),甚至是与系统相关信令(例如携带着准备切换的无线测量结果的消息)。
加密和解密是对114个无线突发脉冲编码比特与一个由特殊算法产生的114比特加密序列进行异或运算(A5算法)完成的。为获得每个突发加密序列,A5对两个输入进行计算:一个是帧号码,另一个是移动台与网络之间同意的密钥(称为Kc),见图。上行链路和下行链路上使用两个不同的序列:对每一个突发,一个序列用于移动台内的加密,并作为BTS中的解密序列;而另一个序列用于BTS的加密,并作为移动台的解密序列。
d-1.帧号:
帧号编码成一连串的三个值,总共加起来22比特。
对于各种无线信道,每个突发的帧号都不同,所有同一方向上给定通信的每个突发使用不同的加密序列。
d-2.A5算法
A5算法必须在国际范围内规定,该算法可以描述成由22比特长的参数(帧号码)和64比特长参数(Kc)生成两个114比特长的序列的黑盒子。
d-3.密钥Kc
开始加密之前,密钥Kc必须是移动台和网络同意的。GSM中选择在鉴权期间计算密钥Kc;然后把密钥存贮于SIM卡的永久内存中。在网络一侧,这个“潜在”的密钥也存贮于拜访MSC/VLR中,以备加密开始时使用。
由RAND(与用于鉴权的相同)和Ki计算Kc的算法为A8算法。与A3算法(由RAND和Ki计算SRES的鉴权算法)类似,可由运营者选择决定。
d-4.用户身份保护
加密对于机密信息十分有效,但不能用来在无线路径上保护每一次信息交换。首先,加密不能应用于公共信道;其次,当移动台转到专用信道,网络还不知道用户身份时,也不能加密。第三方就有可能在这两种情况下帧听到用户身份,从而得知该用户此时漫游到的地点。这对于用户的隐私性来说是有害的,GSM中为确保这种机密性引入了一个特殊的功能。
在可能的情况下通过使用临时移动用户身份号TMSI替代用户身份IMSI,可以得到保护。TMSI由MSC/VLR分配,并不断地进行更换,更换周期由网络运营者设置。 GSM - 系统的组成移动交换子系统MSS完成信息交换、用户信息管理、呼叫接续、号码管理等功能。
基站子系统BSS
BSS系统是在一定的无线覆盖区中由MSC控制,与MS进行通信的系统设备,完成信道的分配、用户的接入和寻呼、信息的传送等功能。
移动台MS
MS是GSM系统的移动用户设备,它由两部分组成,移动终端和客户识别卡(SIM卡)。移动终端就是“机”,它可完成话音编码、信道编码、信息加密、信息的调制和解调、信息发射和接收。SIM卡就是“人”,它类似于我们现在所用的IC卡,因此也称作智能卡,存有认证客户身份所需的所有信息,并能执行一些与安全保密有关的重要信息,以防止非法客户进入网路。SIM卡还存储与网路和客户有关的管理数据,只有插入SIM卡后移动终端才能接入进网。
操作维护子系统
GSM子系统还包括操作维护子系统(OMC),对整个GSM网络进行管理和监控。通过它实现对GSM网内各种部件功能的监视、状态报告、故障诊断等功能。GSM GSM - 发展现状 20世纪80年代中期,当模拟蜂窝移动通信系统刚投放市场时,世界上的发达国家就在研制第二代移动通信系统。其中最有代表性和比较成熟的制式有泛欧GSM ,美国的ADC(D-AMPS)和日本的JDC(现在改名为PDC)等数字移动通信系统。在这些数字系统中,GSM的发展最引人注目。1991年GSM系统正式在欧洲问世,网络开通运行。GSM系列主要有GSM900、DCS1800和PCS1900三部分,三者之间的主要区别是工作频段的差异。蜂窝移动通信的出现可以说是移动通信的一次革命。其频率复用大大提高了频率利用率并增大系统容量,网络的智能化实现了越区转接和漫游功能,扩大了客户的服务范围,但上述模拟系统有四大缺点:各系统间没有公共接口;很难开展数据承载业务;频谱利用率低无法适应大容量的需求;安全保密性差,易被窃听,易做“假机”。尤其是在欧洲系统间没有公共接口,相互之间不能漫游,对客户造成很大的不便。GSM数字移动通信系统源于欧洲。早在1982年,欧洲已有几大模拟蜂窝移动系统在运营,例如北欧多国的NMT(北欧移动电话)和英国的TACS(全接入通信系统),西欧其它各国也提供移动业务。当时这些系统是国内系统,不可能在国外使用。为了方便全欧洲统一使用移动电话,需要一种公共的系统,1982年,北欧国家向CEPT(欧洲邮电行政大会)提交了一份建议书,要求制定900MHz频段的公共欧洲电信业务规范。在这次大会上就成立了一个在欧洲电信标准学会(ETSI)技术委员会下的“移动特别小组(Group Special Mobile)”,简称“GSM”,来制定有关的标准和建议书。中国自从1992年在嘉兴建立和开通第一个GSM演示系统,并于1993年9月正式开放业务以来,全国各地的移动通信系统中大多采用GSM系统,使得GSM系统成为目前中国最成熟和市场占有量最大得一种数字蜂窝系统。截至2002年11月,中国手机用户2亿,比2001年年底新增5509.2万。GSM系统有几项重要特点:防盗拷能力佳、网络容量大、手机号码资源丰富、通话清晰、稳定性强不易受干扰、信息灵敏、通话死角少、手机耗电量低。目前中国主要的两大GSM系统为GSM 900及GSM1800,由于采用了不同频率,因此适用的手机也不尽相同。不过目前大多数手机基本是双频手机,可以自由在这两个频段间切换。欧洲国家普遍采用的系统除GSM900和GSM1800另外加入了GSM1900,手机为三频手机。中国随着手机市场的进一步发展,现也已出现了三频手机,即可在GSM900\GSM1800\GSM1900三种频段内自由切换的手机,真正做到了一部手机可以畅游全世界。GSM早期来看,GSM900发展的时间较早,使用的较多,反之GSM1800发展的时间较晚。物理特性方面,前者频谱较低,波长较长,穿透力较差,但传送的距离较远,而手机发射功率较强,耗电量较大,因此待机时间较短;而后者的频谱较高,波长较短,穿透力佳。但传送的距离短,其手机的发射功率较小,待机时间则相应地较长。
紧急呼叫是GSM系统特有的一种话音业务功能。即使在GSM手机设置了限制呼出和没有插入用户识别卡(SIM)的情况下,只要在GSM网覆盖的区域内,用户仅需按一个键,便可将预先设定的特殊号码(如110、119、120等)发至相应的单位(警察局、消防队、急救中心等)。这一简化的拨号方式是为在紧急时刻来不及进行复杂操作而专门设计的。
❷ gsm手机有哪些常用的加密算法
a3
算法(a3
algorithm)是用于对全球移动通讯系统(gsm)蜂窝通信进行加密的一种算法。实际上,a3
和
a8
算法通常被同时执行(也叫做
a3/a8)。一个
a3/a8
算法在用户识别(sim)卡和在
gsm
网络认证中心中执行。它被用于鉴别用户和产生加密语音和数据通信的密钥,正如在
3gpp
ts
43.020(rel-4
前的
03.20)定义的一样。尽管实例执行是可行的,但
a3
和
a8
算法被认为是个人
gsm
网络操作者的事情。
❸ RSA加密算法简易演示
RSA算法安全性本质是三大数学困难问题之一也就是大数分解问题,因为目前尚没有一种有效的方法可以在短时间内分解两个大素数的乘积。验证步骤如上面所说的,原理书上有,具体程序实现简单讲一下
判断质数,这是基本水平,可以穷举也可以建表,按自己喜好
这一步是计算两个大素数乘积没什么好说的
判断两个数互质,一般采用欧几里得算法,辗转相除直到得到gcd(e1,m)=1。当然你也可以穷举公因数一直到sqrt(min{e1,m})
计算乘法逆元是依靠广义欧几里得算法,乘法逆元的意思是形如a*a1 ≡ 1(mod m)这样的(因为这里的群的乘法定义就是数学乘法),a和a1互为彼此模m的逆元,记作a1=a^-1 mod m,只有gcd(a,m)=1时才有唯一解否则无解。
计算方法是广义欧几里得除法,设r0=m,r1=a,s0=1,s1=0,t0=0,t1=1;
计算ai=[r(i-1)/ri],r(i+1)=r(i-1)-airi,s(i+1)=s(i-1)-aisi,t(i+1)=t(i-1)-aiti,直到ri=0
举例如a=7,m=13,计算a^-1 mod m:
a1=[13/7]=1,r2=r0-a1r1=6,s2=s0-a1s1=1,t2=t0-a1t1=-1;
a2=[7/6]=1,r3=r1-a2r2=1,s3=s1-a2s2=-1,t3=t1-a2t2=2;
a3=[6/1]=6,r4=r2-a3r3=0.
取s=s3=-1,t=t3=2,则有7*2-1*13=1,故a^-1mod m=t=2。
把上面的方法写成C++算法应该很简单
5和6都是计算同余没什么好说的,记得要用到a^e≡b^e(mod m)化简
要毕业了还搞不懂逆元有点拙计啊,回去好好看看离散数学吧
❹ 谁帮我介绍下加密对称算法
A.对称加密技术 a. 描述 对称算法(symmetric algorithm),有时又叫传统密码算法,就是加密密钥能够从解密密钥中推算出来,同时解密密钥也可以从加密密钥中推算出来。而在大多数的对称算法中,加密密钥和解密密钥是相同的。所以也称这种加密算法为秘密密钥算法或单密钥算法。它要求发送方和接收方在安全通信之前,商定一个密钥。对称算法的安全性依赖于密钥,泄漏密钥就意味着任何人都可以对他们发送或接收的消息解密,所以密钥的保密性对通信性至关重要。 b.特点分析 对称加密的优点在于算法实现后的效率高、速度快。 对称加密的缺点在于密钥的管理过于复杂。如果任何一对发送方和接收方都有他们各自商议的密钥的话,那么很明显,假设有N个用户进行对称加密通信,如果按照上述方法,则他们要产生N(N-1)把密钥,每一个用户要记住或保留N-1把密钥,当N很大时,记住是不可能的,而保留起来又会引起密钥泄漏可能性的增加。常用的对称加密算法有DES,DEA等。 B.非对称加密技术 a.描述 非对称加密(dissymmetrical encryption),有时又叫公开密钥算法(public key algorithm)。这种加密算法是这样设计的:用作加密的密钥不同于用作解密的密钥,而且解密密钥不能根据加密密钥计算出来(至少在合理假定的长时间内)。之所以又叫做公开密钥算法是由于加密密钥可以公开,即陌生人可以得到它并用来加密信息,但只有用相应的解密密钥才能解密信息。在这种加密算法中,加密密钥被叫做公开密钥(public key),而解密密钥被叫做私有密钥(private key)。 b.特点分析 非对称加密的缺点在于算法实现后的效率低、速度慢。 非对称加密的优点在于用户不必记忆大量的提前商定好的密钥,因为发送方和接收方事先根本不必商定密钥,发放方只要可以得到可靠的接收方的公开密钥就可以给他发送信息了,而且即使双方根本互不相识。但为了保证可靠性,非对称加密算法需要一种与之相配合使用的公开密钥管理机制,这种公开密钥管理机制还要解决其他一些公开密钥所带来的问题。常用的非对称加密算法有RSA等。 (3) 关于密码技术 密码技术包括加密技术和密码分析技术,也即加密和解密技术两个方面。在一个新的加密算法的研发需要有相应的数学理论证明,证明这个算法的安全性有多高,同时还要从密码分析的角度对这个算法进行安全证明,说明这个算法对于所知的分析方法来说是有防范作用的。 三、对称加密算法分析 对称加密算法的分类 对称加密算法可以分成两类:一类为序列算法(stream algorithm):一次只对明文中单个位(有时为字节)加密或解密运算。另一类为分组算法(block algorithm):一次明文的一组固定长度的字节加密或解密运算。 现代计算机密码算法一般采用的都是分组算法,而且一般分组的长度为64位,之所以如此是由于这个长度大到足以防止分析破译,但又小到足以方便使用。 1.DES加密算法 (Data Encryption Standard )
(1) 算法简介
1973 年 5 月 15 日,美国国家标准局 (NBS) 在“联邦注册”上发布了一条通知,征求密码算法,用于在传输和存储期间保护数据。IBM 提交了一个候选算法,它是 IBM 内部开发的,名为 LUCIFER。在美国国家安全局 (NSA) 的“指导”下完成了算法评估之后,在 1977 年 7 月 15 日,NBS 采纳了 LUCIFER 算法的修正版作为新的数据加密标准。
原先规定使用10年,但由于新的加密标准还没有完成,所以DES算法及其的变形算法一直广泛的应用于信息加密方面。 (2) 算法描述 (包括加密和解密)
Feistel结构(画图说明)。
DES 的工作方式:可怕的细节
DES 将消息分成 64 位(即 16 个十六进制数)一组进行加密。DES 使用“密钥”进行加密,从符号的角度来看,“密钥”的长度是 16 个十六进制数(或 64 位)。但是,由于某些原因(可能是因为 NSA 给 NBS 的“指引”),DES 算法中每逢第 8 位就被忽略。这造成密钥的实际大小变成 56 位。编码系统对“强行”或“野蛮”攻击的抵抗力与其密钥空间或者系统可能有多少密钥有直接关系。使用的位数越多转换出的密钥也越多。密钥越多,就意味着强行攻击中计算密钥空间中可能的密钥范围所需的时间就越长。从总长度中切除 8 位就会在很大程度上限制了密钥空间,这样系统就更容易受到破坏。
DES 是块加密算法。这表示它处理特定大小的纯文本块(通常是 64 位),然后返回相同大小的密码块。这样,64 位(每位不是 0 就是 1)有 264 种可能排列,DES 将生成其中的一种排列。每个 64 位的块都被分成 L、R 左右两块,每块 32 位。
DES 算法使用以下步骤:
1. 创建 16 个子密钥,每个长度是 48 位。根据指定的顺序或“表”置换 64 位的密钥。如果表中的第一项是 "27",这表示原始密钥 K 中的第 27 位将变成置换后的密钥 K+ 的第一位。如果表的第二项是 36,则这表示原始密钥中的第 36 位将变成置换后密钥的第二位,以此类推。这是一个线性替换方法,它创建了一种线性排列。置换后的密钥中只出现了原始密钥中的 56 位。
2. 接着,将这个密钥分成左右两半,C0 和 D0,每一半 28 位。定义了 C0 和 D0 之后,创建 16 个 Cn 和 Dn 块,其中 1<=n<=16。每一对 Cn 和 Dn 块都通过使用标识“左移位”的表分别从前一对 Cn-1 和 Dn-1 形成,n = 1, 2, ..., 16,而“左移位”表说明了要对哪一位进行操作。在所有情况下,单一左移位表示这些位轮流向左移动一个位置。在一次左移位之后,28 个位置中的这些位分别是以前的第 2、3……28 位。
通过将另一个置换表应用于每一个 CnDn 连接对,从而形成密钥 Kn,1<=n<=16。每一对有 56 位,而置换表只使用其中的 48 位,因为每逢第 8 位都将被忽略。
3. 编码每个 64 位的数据块。
64 位的消息数据 M 有一个初始置换 IP。这将根据置换表重新排列这些位,置换表中的项按这些位的初始顺序描述了它们新的排列。我们以前见过这种线性表结构。
使用函数 f 来生成一个 32 位的块,函数 f 对两个块进行操作,一个是 32 位的数据块,一个是 48 位的密钥 Kn,连续迭代 16 次,其中 1<=n<=16。用 + 表示 XOR 加法(逐位相加,模除 2)。然后,n 从 1 到 16,计算 Ln = Rn-1 Rn = Ln-1 + f(Rn-1,Kn)。即在每次迭代中,我们用前一结果的右边 32 位,并使它们成为当前步骤中的左边 32 位。对于当前步骤中的右边 32 位,我们用算法 f XOR 前一步骤中的左边 32 位。
要计算 f,首先将每一块 Rn-1 从 32 位扩展到 48 位。可以使用选择表来重复 Rn-1 中的一些位来完成这一操作。这个选择表的使用就成了函数 f。因此 f(Rn-1) 的输入块是 32 位,输出块是 48 位。f 的输出是 48 位,写成 8 块,每块 6 位,这是通过根据已知表按顺序选择输入中的位来实现的。
我们已经使用选择表将 Rn-1 从 32 位扩展成 48 位,并将结果 XOR 密钥 Kn。现在有 48 位,或者是 8 组,每组 6 位。每组中的 6 位现在将经历一次变换,该变换是算法的核心部分:在叫做“S 盒”的表中,我们将这些位当作地址使用。每组 6 位在不同的 S 盒中表示不同的地址。该地址中是一个 4 位数字,它将替换原来的 6 位。最终结果是 8 组,每组 6 位变换成 8 组,每组 4 位(S 盒的 4 位输出),总共 32 位。
f 计算的最后阶段是对 S 盒输出执行置换 P,以得到 f 的最终值。f 的形式是 f = P(S1(B1)S2(B2)...S8(B8))。置换 P 根据 32 位输入,在以上的过程中通过置换输入块中的位,生成 32 位输出。
解密只是加密的逆过程,使用以上相同的步骤,但要逆转应用子密钥的顺序。DES 算法是可逆的
(2) 算法的安全性分析
在知道一些明文和密文分组的条件下,从理论上讲很容易知道对DES进行一次穷举攻击的复杂程度:密钥的长度是56位,所以会有 种的可能的密钥。
在1993年的一年一度的世界密码大会上,加拿大北方电信公司贝尔实验室的 Michael Wiener 描述了如何构造一台专用的机器破译DES,该机器利用一种每秒能搜索5000万个密钥的专用芯片。而且此机器的扩展性很好,投入的经费越多则效率越高。用100万美元构造的机器平均3.5小时就可以破译密码。
如果不用专用的机器,破译DES也有其他的方法。在1994年的世界密码大会上,M.Matsui 提出一种攻克DES的新方法--"线性密码分析"法。它可使用平均 个明文及其密文,在12台HP9000/735工作站上用此方法的软件实现,花费50天时间完成对DES的攻击。
如前所述DES作为加密算法的标准已经二十多年了,可以说是一个很老的算法,而在新的加密算法的国际标准出现之前,许多DES的加固性改进算法仍有实用价值,在本文的3.4节详细的描述,同时考虑的以上所述DES的安全性已受到了威胁。
(4) 算法的变体 三重DES(TDEA),使用3个密钥,执行3次DES算法:
加密:C = Ek3[Dk2[Ek1[P]]] 解密:P = Dk1[Ek2[Dk3[C]]]
特点:安全性得到增强,但是速度变慢。
2.AES
自 20 世纪 70 年代以来一直广泛使用的“数据加密标准”(DES) 日益显出衰老的痕迹,而一种新的算法 -- Rijndael -- 正顺利地逐渐变成新标准。这里,Larry Loeb 详细说明了每一种算法,并提供了关于为什么会发生这种变化的内幕信息。
DES 算法是全世界最广泛使用的加密算法。最近,就在 2000 年 10 月,它在其初期就取得的硬件方面的优势已经阻碍了其发展,作为政府加密技术的基础,它已由“高级加密标准”(AES) 中包含的另一种加密算法代替了。AES 是指定的标准密码系统,未来将由政府和银行业用户使用。AES 用来实际编码数据的加密算法与以前的 DES 标准不同。我们将讨论这是如何发生的,以及 AES 中的 Rijndael 算法是如何取代 DES 的算法的。
“高级加密标准”成就
但直到 1997 年,美国国家标准技术局 (NIST) 才开始打着 AES 项目的旗帜征集其接任者。1997 年 4 月的一个 AES 研讨会宣布了以下 AES 成就的最初目标:
• 可供政府和商业使用的功能强大的加密算法
• 支持标准密码本方式
• 要明显比 DES 3 有效
• 密钥大小可变,这样就可在必要时增加安全性
• 以公正和公开的方式进行选择
• 可以公开定义
• 可以公开评估
AES 的草案中最低可接受要求和评估标准是:
A.1 AES 应该可以公开定义。
A.2 AES 应该是对称的块密码。
A.3 AES 应该设计成密钥长度可以根据需要增加。
A.4 AES 应该可以在硬件和软件中实现。
A.5 AES 应该 a) 可免费获得。
A.6 将根据以下要素评价符合上述要求的算法:
1. 安全性(密码分析所需的努力)
2. 计算效率
3. 内存需求
4. 硬件和软件可适用性
5. 简易性
6. 灵活性
7. 许可证需求(见上面的 A5)
Rijndael:AES 算法获胜者
1998年8月20日NIST召开了第一次AES侯选会议,并公布了15个AES侯选算法。经过一年的考察,MARS,RC6,Rijndael,Serpent,Twofish共5种算法通过了第二轮的选拔。2000 年 10 月,NIST 选择 Rijndael(发音为 "Rhine dale")作为 AES 算法。它目前还不会代替 DES 3 成为政府日常加密的方法,因为它还须通过测试过程,“使用者”将在该测试过程后发表他们的看法。但相信它可以顺利过关。
Rijndael 是带有可变块长和可变密钥长度的迭代块密码。块长和密钥长度可以分别指定成 128、192 或 256 位。
Rijndael 中的某些操作是在字节级上定义的,字节表示有限字段 GF(28) 中的元素,一个字节中有 8 位。其它操作都根据 4 字节字定义。
加法照例对应于字节级的简单逐位 EXOR。
在多项式表示中,GF(28) 的乘法对应于多项式乘法模除阶数为 8 的不可约分二进制多项式。(如果一个多项式除了 1 和它本身之外没有其它约数,则称它为不可约分的。)对于 Rijndael,这个多项式叫做 m(x),其中:m(x) = (x8 + x4 + x3 + x + 1) 或者十六进制表示为 '11B'。其结果是一个阶数低于 8 的二进制多项式。不像加法,它没有字节级的简单操作。
不使用 Feistel 结构!
在大多数加密算法中,轮回变换都使用着名的 Feistel 结构。在这个结构中,中间 State 的位部分通常不做更改调换到另一个位置。(这种线性结构的示例是我们在 DES 部分中讨论的那些表,即使用固定表的形式交换位。)Rijndael 的轮回变换不使用这个古老的 Feistel 结构。轮回变换由三个不同的可逆一致变换组成,叫做层。(“一致”在这里表示以类似方法处理 State 中的位。)
线性混合层保证了在多个轮回后的高度扩散。非线性层使用 S 盒的并行应用,该应用程序有期望的(因此是最佳的)最差非线性特性。S 盒是非线性的。依我看来,这就 DES 和 Rijndael 之间的密钥概念差异。密钥加法层是对中间 State 的轮回密钥 (Round Key) 的简单 EXOR,如以下所注。
Rijndael算法
加密算法
Rijndael算法是一个由可变数据块长和可变密钥长的迭代分组加密算法,数据块长和密钥长可分别为128,192或256比特。
数据块要经过多次数据变换操作,每一次变换操作产生一个中间结果,这个中间结果叫做状态。状态可表示为二维字节数组,它有4行,Nb列,且Nb等于数据块长除32。如表2-3所示。
a0,0 a0,1 a0,2 a0,3 a0,4 a0,5
a1,0 a1,1 a1,2 a1,3 a1,4 a1,5
a2,0 a2,1 a2,2 a2,3 a2,4 a2,5
a3,0 a3,1 a3,2 a3,3 a3,4 a3,5
数据块按a0,0 , a1,0 , a2,0 , a3,0 , a0,1 , a1,1 , a2,1 , a3,1 , a0,2…的顺序映射为状态中的字节。在加密操作结束时,密文按同样的顺序从状态中抽取。
密钥也可类似地表示为二维字节数组,它有4行,Nk列,且Nk等于密钥块长除32。算法变换的圈数Nr由Nb和Nk共同决定,具体值列在表2-4中。
表3-2 Nb和Nk决定的Nr的值
Nr Nb = 4 Nb = 6 Nb = 8
Nk = 4 10 12 14
Nk = 6 12 12 14
Nk = 8 14 14 14
3.2.1圈变换
加密算法的圈变换由4个不同的变换组成,定义成:
Round(State,RoundKey)
{
ByteSub(State);
ShiftRow(State);
MixColumn(State);
AddRoundKey(State,RoundKey); (EXORing a Round Key to the State)
}
加密算法的最后一圈变换与上面的略有不同,定义如下:
FinalRound(State,RoundKey)
{
ByteSub(State);
ShiftRow(State);
AddRoundKey(State,RoundKey);
}
ByteSub变换
ByteSub变换是作用在状态中每个字节上的一种非线形字节变换。这个S盒子是可逆的且由以下两部分组成:
把字节的值用它的乘法逆替代,其中‘00’的逆就是它自己。
经(1)处理后的字节值进行如下定义的仿射变换:
y0 1 1 1 1 1 0 0 0 x0 0
y1 0 1 1 1 1 1 0 0 x1 1
y2 0 0 1 1 1 1 1 0 x2 1
y3 0 0 0 1 1 1 1 1 x3 0
y4 = 1 0 0 0 1 1 1 1 x4 + 0
y5 1 1 0 0 0 1 1 1 x5 0
y6 1 1 1 0 0 0 1 1 x6 1
y7 1 1 1 1 0 0 0 1 x7 1
ShiftRow变换
在ShiftRow变换中,状态的后3行以不同的移位值循环右移,行1移C1字节,行2移C2字节,行3移C3字节。
移位值C1,C2和C3与加密块长Nb有关,具体列在表2-5中:
表3-3 不同块长的移位值
Nb C1 C2 C3
4 1 2 3
MixColumn变换
在MixColumn变换中,把状态中的每一列看作GF(28)上的多项式与一固定多项式c(x)相乘然后模多项式x4+1,其中c(x)为:
c(x) =‘03’x3 + ‘01’x2 + ‘01’x + ‘02’
圈密钥加法
在这个操作中,圈密钥被简单地使用异或操作按位应用到状态中。圈密钥通过密钥编制得到,圈密钥长等于数据块长Nb。
在这个表示法中,“函数”(Round, ByteSub, ShiftRow,...) 对那些被提供指针 (State, RoundKey) 的数组进行操作。ByteSub 变换是非线性字节交换,各自作用于每个 State 字节上。在 ShiftRow 中,State 的行按不同的偏移量循环移位。在 MixColumn 中,将 State 的列视为 GF(28) 多项式,然后乘以固定多项式 c( x ) 并模除 x4 + 1,其中 c( x ) = '03' x3 + '01' x2+ '01' x + '02'。这个多项式与 x4 + 1 互质,因此是可逆的。
轮回密钥通过密钥计划方式从密码密钥 (Cipher Key) 派生而出。它有两个组件:密钥扩展 (Key Expansion) 和轮回密钥选择 (Round Key Selection)。轮回密钥的总位数等于块长度乘以轮回次数加 1(例如,块长度等于 128 位,10 次轮回,那么就需要 1408 个轮回密钥位)。
密码密钥扩充成扩展密钥 (Expanded Key)。轮回密钥是通过以下方法从这个扩展密钥中派生的:第一个轮回密钥由前 Nb(Nb = 块长度)个字组成,第二个由接着的 Nb 个字组成,以此类推。
加密算法由以下部分组成:初始轮回密钥加法、Nr-1 个轮回和最后一个轮回。在伪 C 代码中:
Rijndael(State,CipherKey)
{
KeyExpansion(CipherKey,ExpandedKey);
AddRoundKey(State,ExpandedKey);
For( i=1 ; i<Nr ; i++ ) Round(State,ExpandedKey + Nb*i);
FinalRound(State,ExpandedKey + Nb*Nr).
}
如果已经预先执行了密钥扩展,则可以根据扩展密钥指定加密算法。
Rijndael(State,ExpandedKey)
{
AddRoundKey(State,ExpandedKey);
For( i=1 ; i<Nr ; i++ ) Round(State,ExpandedKey + Nb*i);
FinalRound(State,ExpandedKey + Nb*Nr);
}
由于 Rijndael 是可逆的,解密过程只是颠倒上述的步骤。
最后,开发者将仔细考虑如何集成这种安全性进展,使之成为继 Rijndael 之后又一个得到广泛使用的加密算法。AES 将很快应一般商业团体的要求取代 DES 成为标准,而该领域的发展进步无疑将追随其后。
3.IDEA加密算法 (1) 算法简介 IDEA算法是International Data Encryption Algorithmic 的缩写,意为国际数据加密算法。是由中国学者朱学嘉博士和着名密码学家James Massey 于1990年联合提出的,当时被叫作PES(Proposed Encryption Standard)算法,后为了加强抵抗差分密码分,经修改于1992年最后完成,并命名为IDEA算法。 (2) 算法描述 这个部分参见论文上的图 (3) 算法的安全性分析 安全性:IDEA的密钥长度是128位,比DES长了2倍多。所以如果用穷举强行攻击的话, 么,为了获得密钥需要 次搜索,如果可以设计一种每秒能搜索十亿把密钥的芯片,并且 采用十亿个芯片来并行处理的话,也要用上 年。而对于其他攻击方式来说,由于此算法 比较的新,在设计时已经考虑到了如差分攻击等密码分析的威胁,所以还未有关于有谁 发现了能比较成功的攻击IDEA方法的结果。从这点来看,IDEA还是很安全的。
4.总结
几种算法的性能对比
算法 密钥长度 分组长度 循环次数
DES 56 64 16
三重DES 112、168 64 48
AES 128、192、256 128 10、12、14
IDEA 128 64 8
速度:在200MHz的奔腾机上的对比。
C++ DJGP(++pgcc101)
AES 30.2Mbps 68.275Mbps
DES(RSAREF) 10.6Mbps 16.7Mbps
3DES 4.4Mbps 7.3Mbps
Celeron 1GHz的机器上AES的速度,加密内存中的数据
128bits密钥:
C/C++ (Mbps) 汇编(Mbps)
Linux 2.4.7 93 170
Windows2K 107 154
256bits密钥:
C/C++ (Mbps) 汇编(Mbps)
Linux 2.4.7 76 148
Windows2K 92 135
安全性
1990年以来,特制的"DES Cracker"的机器可在几个小时内找出一个DES密钥。换句话说,通过测试所有可能的密钥值,此硬件可以确定用于加密信息的是哪个密钥。假设一台一秒内可找出DES密钥的机器(如,每秒试255个密钥),如果用它来找出128-bit AES的密钥,大约需要149万亿年。
四、对称加密应用 在保密通信中的应用。(保密电话) 附加内容
安全哈希算法(SHA)
由NIST开发出来的。
此算法以最大长度不超过264位的消息为输入,生成160位的消息摘要输出。主要步骤:
1. 附加填充位
2. 附加长度
3. 初始化MD缓冲区,为160位的数据
A=67452301
B=EFCDAB89
C=89BADCFE
D=10325476
E=C3D2E1F0
4. 处理512位消息块,将缓冲虚数据和消息块共同计算出下一个输出
5. 输出160位摘要
此外还有其他哈希算法,如MD5(128位摘要),RIPEMD-160(160位摘要)等。
❺ GSM A3 加密算法的具体实现过程
GSM是全球移动通信的意思,MS移动台,信令,信道
❻ 什么是a3算法
A3算法是验证过程中使用的网络认证的移动用户请求服务。A3算法是一种数学方法结合了一种神秘的数称为基的文件存储在手机芯片和一个数字传输之间的基站和移动站。数值结果的3算法计算传送回基地站。这是当时相比以前的内部计算答案也使用3算法和相同的输入量在基站控制器或硕士。当同样的匹配结果都发生移动提供的信息与先前存储的信息用户授予访问。
❼ 祖冲之算法的加密算法EEA3完整性算法EIA3分别应用于什么场合
这么久没人答,我都弄懂了。
祖冲之算法分3个算法
ZUC是祖冲之算法的核心,仅产生密键流KS。供EEA3和EIA3调用。
EEA3是加密算法,用KS捆绑上用户的密钥,加密用户数据D,变成密文。相当于国际上的RSA、DES、AES算法。作用是对称的加密解密算法
EIA3是数据完整性算法,MAC的一种。捆绑上用户的密钥,结合KS,生成散列值。相当于国际上的HMAC结合MD5,SHA1的用法。用于密码授权值的生成和保存。
❽ 一、GSM中,A3、A5、A8算法的原理是什么
A3 Algorithm(A3 算法)
A3算法(A3 Algorithm)是用于对全球移动通讯系统(GSM)蜂窝通信进行加密的一种算法。实际上,A3 和 A8 算法通常被同时执行(也叫做 A3/A8)。一个 A3/A8 算法在用户识别(SIM)卡和在 GSM 网络认证中心中执行。它被用于鉴别用户和产生加密语音和数据通信的密钥,正如在 3GPP TS 43.020(Rel-4 前的 03.20)定义的一样。尽管实例执行是可行的,但 A3 和 A8 算法被认为是个人 GSM 网络操作者的事情。
A3/A8
A3/A8 是指两个算法,A3 和 A8,是用于对全球移动通信系统(GSM)蜂窝通信进行加密的算法。因为 A3 和 A8 算法通常同时执行,因此,它们通常被叫做 A3/A8,一个 A3/A8 算法在用户识别(SIM)卡和在 GSM 网络认证中心中被执行。正如在 3GPP TS 43.020(Rel-4 前的 03.20)中定义的一样,它通常用于认证这个用户和产生一个加密语音和数据通信的密码。尽管实例执行是可行的,但 A3 和 A8 算法被认为是个人 GSM 网络操作者的事情。
A5 Algorithm(A5 算法)
A5 算法(A5 Algorithm)被用于加密全球移动通信系统(GSM)蜂窝通信。一个 A5 加密算法在电话听筒和基站之间搅乱用户语音和数据传输来提供私密。一个 A5 算法被在电话听筒和基站子系统(BSS)两者中执行。
A8 Algorithm(A8 算法)
A8算法(A8 Algorithm)通常被用于全球信息系统(GSM) 蜂窝通信的加密。在实践中,A3 和A8 算法,也叫做 A3/A8,一般被同时执行。一个 A3/A8 算法在用户识别(SIM)卡和在 GSM 网络认证中心中被执行。它通常用于认证这个用户和产生一个加密语音和数据通信的密钥,正如在 3GPP TS 43.020(Rel-4 前的 03.20)中定义的一样。尽管实例执行是可行的,但 A3 和 A8 算法被认为是个人 GSM 网络操作者的事情。