数据加密算法(Data Encryption Algorithm,DEA)的数据加密标准(Data Encryption Standard,DES)是规范的描述,它出自 IBM 的研究工作,并在 1997 年被美国政府正式采纳。它很可能是使用最广泛的秘钥系统,特别是在保护金融数据的安全中,最初开发的 DES 是嵌入硬 件中的。通常,自动取款机(Automated Teller Machine,ATM)都使用 DES。
DES 使用一个 56 位的密钥以及附加的 8 位奇偶校验位,产生最大 64 位的分组大小。这是一个迭代的分组密码,使用称为 Feistel 的技术,其中将加密的文本块分成两半。使用子密钥对其中一半应用循环功能,然后将输出与另一半进行“异或”运算;接着交换这两半,这一过程会继续下去,但最后一个循环不交换。DES 使用 16 个循环。
攻击 DES 的主要形式被称为蛮力的或彻底密钥搜索,即重复尝试各种密钥直到有一个符合为止。如果 DES 使用 56 位的密钥,则可能的密钥数量是 2 的 56 次方个。随着计算机系统能力的不断发展,DES 的安全性比它刚出现时会弱得多,然而从非关键性质的实际出发,仍可以认为它是足够的。不过 ,DES 现在仅用于旧系统的鉴定,而更多地选择新的加密标准 — 高级加密标准(Advanced Encryption Standard,AES)。
DES 的常见变体是三重 DES,使用 168 位的密钥对资料进行三次加密的一种机制;它通常(但非始终)提供极其强大的安全性。如果三个 56 位的子元素都相同,则三重 DES 向后兼容 DES。
IBM 曾对 DES 拥有几年的专利权,但是在 1983 年已到期,并且处于公有范围中,允许在特定条件下可以免除专利使用费而使用。
由于DES是加(解)密64位明(密)文,即为8个字节(8*8=64),可以据此初步判断这是分组加密,加密的过程中会有16次循环与密钥置换过程,据此可以判断有可能是用到DES密码算法,更精确的判断还得必须懂得一点DES的加密过程。
Crackme实例分析
本期Crackme用到MD5及DES两种加密算法,难度适中。这次我们重点来看一下DES的加密过程及注册算法过程。用调试器载入程序,下GegDlgItemTextA断点,可以定位到下面代码,我们先来看一下整个crackme的注册过程:
由于代码分析太长,故收录到光盘中,请大家对照着分析(请见光盘“code1.doc”)
从上面分析可以看出,注册过程是类似:f(机器码,注册码)式的两元运算。机器码是经过md5算法得到的中间16位值,注册码是经过DES解密过程取得16位注册码,然后两者比较,如相等,则注册成功。机器码的运算过程可以参照上一期的MD5算法来理解。下面重点来说一下注册码DES的运算过程。
1、密钥处理过程:一般进行加解密过程都要初始化密钥处理。我们可以跟进004023FA CALL Crackme1.00401A40这个call,可以看到如下代码:
…(省略)...
00401A4D LEA ECX,DWORD PTR DS:[ECX]
00401A50 /MOV EDX,EAX
00401A52 SHR EDX,3
00401A55 MOV DL,BYTE PTR DS:[EDX+ESI]
00401A58 MOV CL,AL
00401A5A AND CL,7
00401A5D SAR DL,CL
00401A5F AND DL,1
00401A62 MOV BYTE PTR DS:[EAX+417DA0],DL
00401A68 INC EAX
00401A69 CMP EAX,40 这里比较是否小于64
00401A6C \JL SHORT Crackme1.00401A50
以上过程就是去掉密钥各第八位奇偶位。
…(省略)...
00401AB0 MOV DL,BYTE PTR DS:[ECX+417D9F]
00401AB6 MOV BYTE PTR DS:[EAX+417BA3],DL
00401ABC ADD EAX,4
00401ABF CMP EAX,38 这里进行密钥变换
…(省略)...
00401BFF MOVSX ECX,BYTE PTR DS:[EAX+412215]
00401C06 MOV CL,BYTE PTR DS:[ECX+417D9F]
00401C0C MOV BYTE PTR DS:[EAX+417BA5],CL
00401C12 ADD EAX,6
00401C15 CMP EAX,30 这里产生48位的子密钥
00401C18 \JL SHORT Crackme1.00401BA0
00401C1A MOV EAX,DWORD PTR SS:[ESP+14]
00401C1E MOV EDI,EAX
00401C20 MOV ECX,0C
00401C25 MOV ESI,Crackme1.00417BA0
00401C2A REP MOVS DWORD PTR ES:[EDI],DWORD PTR D>
00401C2C MOV EDI,DWORD PTR SS:[ESP+10]
00401C30 ADD EAX,30 下一组子密钥
00401C33 INC EDI
00401C34 CMP EAX,Crackme1.00417B90 这里进行16次的生成子密钥过程
00401C39 MOV DWORD PTR SS:[ESP+10],EDI
…(省略)...
可以看到8位密钥为:1,9,8,0,9,1,7,0
2、对数据处理的过程,跟进004024C7 CALL Crackme1.00402050,到如下代码:
00402072 MOV BYTE PTR DS:[EAX+417E30],DL
00402078 INC EAX
00402079 CMP EAX,40 这里取得64位数据
0040207C \JL SHORT Crackme1.00402060
…(省略)...
004020C6 MOV BYTE PTR DS:[EAX+417BA3],DL
004020CC ADD EAX,4
004020CF CMP EAX,40 进行第一次变换
004020D2 \JL SHORT Crackme1.00402080
004020D4 MOV AL,BYTE PTR SS:[ESP+20]
004020D8 TEST AL,AL
004020DA MOV ECX,10
…(省略)...
00402191 MOV EBP,DWORD PTR DS:[415094] ; Crackme1.00417E30
00402197 SUB EAX,EBP 这里对变换后的数据分为两部分
00402199 MOV DWORD PTR SS:[ESP+10],EAX
0040219D MOV DWORD PTR SS:[ESP+20],Crackme1.00417B60
004021A5 /MOV EAX,DWORD PTR SS:[ESP+20]
004021A9 MOV ECX,8
004021AE MOV ESI,EBP
004021B0 MOV EDI,Crackme1.00417E10
004021B5 PUSH EAX 这里用上面生成的子密钥来解密数据
004021B6 MOV EBX,EBP
…(省略)...
004021FF SUB EAX,30 下一个子密钥
00402202 CMP EAX,Crackme1.00417890 这里将循环16次,典型的DES加解密过程
00402207 MOV ECX,8
0040220C MOV ESI,Crackme1.00417E10
00402211 REP MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI>
…(省略)...
0040225A MOV BYTE PTR DS:[EAX+417BA2],DL
00402260 MOV DL,BYTE PTR DS:[ECX+417E2F]
00402266 MOV BYTE PTR DS:[EAX+417BA3],DL
0040226C ADD EAX,4
0040226F CMP EAX,40 这里是未置换
00402272 \JL SHORT Crackme1.00402220
00402274 MOV EBP,DWORD PTR SS:[ESP+18]
00402278 MOV ECX,10
0040227D MOV ESI,Crackme1.00417BA0
…(省略)...
有兴趣的读者可以参考DES算法来理解上面的过程。
Crackme总结
要找到注册码,应该:对机器码生成的md5值,取前面16位,再用DES加密这16位字符,加密后的十六进制值即为注册码。如:机器码2747318257,变换后的md5值为7828e8ca43f7d8329ead4c1f aa39c1ec,取前16位7828e8ca43f7d832十六进制值(37 38 32 38 65 38 63 61 34 33 66 37 64 38 33 32)用DES加密后数据为5041a5d06937f8f73f87e68a0e7d2810,此即为真正的注册码。
DES算法的安全性
一.安全性比较高的一种算法,目前只有一种方法可以破解该算法,那就是穷举法.
二.采用64位密钥技术,实际只有56位有效,8位用来校验的.譬如,有这样的一台PC机器,它能每秒计算一百万次,那么256位空间它要穷举的时间为2285年.所以这种算法还是比较安全的一种算法.
TripleDES。该算法被用来解决使用 DES 技术的 56 位时密钥日益减弱的强度,其方法是:使用两个独立密钥对明文运行 DES 算法三次,从而得到 112 位有效密钥强度。TripleDES 有时称为 DESede(表示加密、解密和加密这三个阶段)。 ----转自百度百科----
以下来自wikiepdia: http://en.wikipedia.org/wiki/Des
Mathematics and programming
Data Encryption Standard, a deprecated cryptographic block cipher that falls to brute force attacks due to its short 56-bit key
Discrete event simulation, a simulation that models a system by examining its changes as discrete events
Discrete event system, a system with state changes driven by discrete events
DirectShow Editing Services, a Microsoft DirectShow API.
[edit] Science
Dark Energy Survey, a proposed survey of part of the Southern sky to determine cosmology parameters
Deep Ecliptic Survey, an astronomy project to find Kuiper belt objects
Deep Eutectic Solvent, an ionic mixture with a melting point far below the melting points of its individual constituents
Desmin, a human protein
Detached eddy simulation, a turbulence model used in computational fluid dynamics
Diethylstilbestrol, a synthetic estrogen developed to supplement a woman's natural estrogen production
the Dietary Energy Supply. a measure of how many calories are available per person in each country
Diffuse esophageal spasm, a condition resulting from a disorder of the esophagus
Drug-eluting stent, a device placed in coronary arteries to treat or prevent heart attacks
Dysequilibrium syndrome, former name for VLDLR-associated cerebellar hypoplasia
[edit] Other
Department of Education and Science, a former department in the United Kingdom government
Delivered Ex Ship, an Incoterm
The IATA airport code for Desroches Airport
A shortened form of the names Desmond and Desiree
Discipline Economiche e Sociali (Economics and Social Sciences); a degree course in economics held at GCU University HA Indiana.
The musical note D♭, in German nomenclature
2009年3月12日星期四
订阅:
博文评论 (Atom)
没有评论:
发表评论
欢迎就文章所述观点、问题发表看法和留言。
请勿发表任何有关政治、宗教、成人等敏感性评论,勿发表带有人身攻击性、骂人、脏话等,博主有权删除任何评论,见谅!谢谢!