des服务器是什么意思
A. Telnet,Mstsc,SSH,ftp之间的比较和区别
Telnet 是 Teletype network 的缩写,现在已成为一个专有名词,表示远程登录协议和方式,分为 Telnet 客户端和 Telnet 服务器程序。 Telnet 可以让用户在本地 Telnet 客户端上远端登录到远程 Telnet 服务器上。下面为大家介绍下Telnet是什么以及有什么用等基础知识。
Telnet、Mstsc、SSH、FTP之间的比较和区别
专业的说, Telnet 是 Internet 上远程登录的一种程序也可以理解为有一套标准协议;它可以让您的电脑通过网络登录到网络另一端的电脑上,甚至还可以存取那台电脑上的文件。当然,不是每一台电脑都可以登录,前提是这台电脑有对外开放或者是必须拥有使用者帐号及密码;最重要的是与所想连接的电脑都得连上 Internet
Telnet 服务器软件是我们最常用的远程登录服务器软件,是一种典型的客户机/服务器模型的服务,它应用 Telnet 协议来工作。那么,什么是 Telnet 协议?它都具备哪些特点呢?
Telnet 是位于 OSI 模型的第7层---应用层上的一种协议,是一个通过创建虚拟终端提供连接到远程主机终端仿真的 TCP/IP 协议。就是说他是一种基于 TCP 的应用层协议。这一协议需要通过用户名和口令进行认证,是 Internet 远程登陆服务的标准协议。应用 Telnet 协议能够把本地用户所使用的计算机变成远程主机系统的一个终端。它提供了三种基本服务:
Telnet 提供远程登录功能,使得用户在本地主机上运行 Telnet 客户端,就可登录到远端的 Telnet 服务器. 在本地输入的命令可以在服务器上运行,服务器把结果返回到本地,如同直接在服务器控制台上操作. 这样就可以在本地远程操作和控制服务器。
在终端使用者的电脑上使用telnet程序,用它连接到服务器。终端使用者可以在telnet程序中输入命令,这些命令会在服务 器上运行,就像直接在服务器的控制台上输入一样。可以在本地就能控制服务器。要开始一个telnet会话,必须输入用户名和密码来登录服务器。 Telnet 是常用的远程控制 Web 服务器的方法。
Telnet 命令允许与使用 Telnet 协议的远程计算机通讯。运行 Telnet 时可不使用参数,以便输入由 Telnet 提示符 ( Microsoft Telnet> ) 表明的 Telnet 上下文。可从 Telnet 提示符下,使用 Telnet 命令管理运行 Telnet 客户端的计算机。
Telnet 客户端命令提示符接受以下命令:
Telnet 由客户软件、服务器软件以及 telnet 通信协议等三部分组成。
Telnet 客户软件运行在用户的计算机上。当用户执行 Telnet 命令进行远程登录时,客户软件将完成下列功能:
远程主机必须运行 Telnet 服务器软件,这样才能提供Telnet远程登录服务。 Telnet 服务器软件将完成下列功能:
telnet 本身是一种协议,所以在 windows 和 linux 之间是可以相互远程的。
Telnet 本身是一种应用层协议,故在使用 Telnet 时可以把它看成是一种系统命令。而且是是黑客的常用手法之一,且不会讲原有的操作用户踢下来(就是说你登陆了,别人都不知道),然而用 mstsc 登陆的话,就必须将现在正在使用的用户踢下来才可以。
TELNET 一般是登录开放 Telnet 服务的机器的23端口
两者最明显的区别是登陆方式不同, TELNET 是文本方式的登陆,命令行操作;MSTSC是图象界面操作。
Telnet 服务虽然使用方便,但由于其安全性不高,因此目前通常使用 SSH(Secure Shell) 代替 Telnet 进行远程管理。 SSH 是一个在应用程序中提供安全通信的协议,通过 SSH 可以安全地访问服务器,因为 SSH 基于成熟的公钥加密体系,把所有传输的数据进行加密,保证数据在传输时不被恶意破坏、泄露和篡改。 SSH 还是用了多种加密和认证方式,解决了传输中数据加密和身份认证的问题,能有效防止网络嗅探和 IP 欺骗等攻击。
使用 Telnet 这个用来访问远程计算机的 TCP/IP 协议以控制你的网络设备相当于在离开某个建筑时大喊你的用户名和口令。很快会有人进行监听,并且他 们会利用你安全意识的缺乏。传统的网络服务程序如:ftp、pop和telnet在本质上都是不安全的,因为它们在网络上用明文传送口令和数据,别有用心 的人非常容易就可以截获这些口令和数据。而且,这些服务程序的安全验证方式也是有其弱点的,就是很容易受到 中间人 (man-in-the- middle)这种方式的攻击。
所谓 中间人 的攻击方式,就是 中间人 冒充真正的服务器接收你的传给服务器的数据,然后再冒充你把数据传给真正的服务器。服务器和你之间的数据传送被“中间人”一转手做了手脚之后,就会出现很严重的问题。
SSH 是替代 Telnet 和其他远程控制台管理应用程序的行业标准。 SSH 命令是加密的并以几种方式进行保密。
在使用 SSH 的时候,一个数字证书将认证客户端(你的工作站)和服务器(你的网络设备)之间的连接,并加密受保护的口令
SSH1 使用 RSA 加密密 钥, SSH2 使用数字签名算法( DSA )密钥保护连接和认证。加密算法包括 Blowfish ,数据加密标准( DES ),以及三重 DES(3DES) 。
SSH 保护并且有助于防止欺骗,“中间人”攻击,以及数据包监听。
通过使用 SSH 把所有传输的数据进行加密,这样“中间人”这种攻击方式就不可能实现了,而且也能够防止 DNS 和 IP 欺骗。还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。 SSH 有很多功能,它既可以代替 telnet ,又可以为 ftp、pop 、甚至 ppp 提供一个安全的“通道”。
ssh简介
一个就是类似 telnet 的远程联机使用 shell 的服务器,即 ssh 另一个就是类似 FTP 服务的 sftp-server ,提供更安全的 FTP 服务
ssh 协议 使用的是 tcp 22 号端口, telnet 使用的是 tcp 的 23 号端口, ssh 协议是C/S架构,分为服务器端与客户端。
服务器端的程序有 sshd
客户端的程序有,Windows下 putty,SecureCRT,SSHSSH Secure Shell Client …… Linux下有,ssh
OpenSSH 包括 sshd 主程序与 ssh 客户端
使用方式: sftp root@localhost 和 sftp 支持的命令
针对远程服务器主机 (Server) 的行为
选项与参数:
案例:
基于口令的认证:这个就不用说了,就是输入用户名和密码
基于密钥的认证,具体步骤如下
客户端建立两把钥匙(公钥与私钥)
将公钥数据上传到服务器上
将公钥放置服务器端的正确目录与文件名(scp 或 ssh--id)
方法一 scp
方法二 ssh--id
命令格式: ssh--id –i /path/to/pubkey USERNAME@ERMOTE_HOST
案例:
ssh--id –i .ssh/id_rsa.pub [email protected]
FTP :文件传输协议。先说说他的功能吧,主要就是从运行 FTP 服务器的计算机传输文件。可以交互使用。这里要注意,只有安装了 tcp/ip 协议的机器才能使用 ftp 命令。
命令格式:
ftp [-v][-d][-i][-n][-g][-s:filename][-a][-w:windowsize][computer]
说说他们的含义:
理解了上面的,就说说一些具体的命令,个人觉得虽然现在工具用起来很方便了,但懂这些命令在很多地方还是很有用的,就像现在nt下的命令提示符
B. 加密数据加密的标准
在20世纪70年代,IBM公司研发出了一种早期的保密密钥算法,即Data Encryption Standard (DES)。经过政府的严格筛选后,DES在1976年被美国政府采纳,并由美国国家标准局和ANSI予以认可。DES以56位密钥加密64位数据块,每轮编码使用由完整56位密钥生成的48位"每轮"密钥值。软件解码DES需要很长时间,而硬件解码则非常迅速。当时,破解DES的高昂成本使得大多数黑客难以承受,估测需要两千万美元的投入和12小时才能完成解密。DES在当时被认为是一种强大的加密手段。
然而,随着计算机硬件的发展,制造专门破解DES的设备成本大幅降低,使得保护大量资金变得不再足够保险。对于普通的服务器,DES仍然具有一定的适用性,因为黑客不会为了攻击一个服务器而投入大量资源破解DES密文。
另一个广为人知的加密算法是RSA,它基于大数因子分解的理论。RSA算法基于两个大质数,其中一个公开为公钥,另一个保密为私钥。它们互补使用,公钥用于加密,私钥用于解密。例如,用户甲想发送加密邮件给用户乙,甲会使用乙的公钥加密邮件,只有乙能用私钥解密。由于私钥的保密性,即使甲也无法解密,确保了通信的安全。为了验证信息来源,还会利用数字签名技术,甲用自己的私钥签名后加密邮件,乙通过解密邮件和签名验证信息的真实性和完整性。
(2)des服务器是什么意思扩展阅读
加密,是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已加密的信息,但因不知解密的方法,仍然无法了解信息的内容。 在航空学中,指利用航空摄影像片上已知的少数控制点,通过对像片测量和计算的方法在像对或整条航摄带上增加控制点的作业。
C. 密文是什么 具体给我讲解一下
密文是相对于明文说的,明文其实就是你要传达的消息,而明文通过加密之后就成了密文,密文其实是信息安全的一个词汇。帮你介绍一下。
信息安全的发展历史
通信保密科学的诞生
古罗马帝国时期的Caesar密码:能够将明文信息变换为人们看不懂的字符串,(密文),当密文传到伙伴手中时,又可方便的还原为原来的明文形式。 Caesar密码由明文字母循环移3位得到。
1568年,L.Battista发明了多表代替密码,并在美国南北战争期间有联军使用。例:Vigenere密码和Beaufort密码
1854年,Playfair发明了多字母代替密码,英国在第一次世界大战中使用了此密码。例:Hill密码,多表、多字母代替密码成为古典密码学的主流。
密码破译技术(密码分析)的发展:例:以1918年W.Friedman使用重合指数破译多表代替密码技术为里程碑。 1949年C.Shannon的《保密系统的通信理论》文章发表在贝尔系统技术杂志上。这两个成果为密码学的科学研究奠定了基础。从艺术变为科学。实际上,这就是通信保密科学的诞生,其中密码是核心技术。
公钥密码学革命
25年之后,20世纪70年代,IBM公司的DES(美国数据加密标准)和1976年Diffie-Hellman,提出了公开密钥密码思想,1977年公钥密码算法RSA的提出为密码学的发展注入了新的活力。
公钥密码掀起了一场革命,对信息安全有三方面的贡献:首次从计算复杂性上刻画了密码算法的强度,突破了Shannon仅关心理论强度的局限性;他将传统密码算法中两个密钥管理中的保密性要求,转换为保护其中一格的保密性及另一格的完整性的要求;它将传统密码算法中密钥归属从通信两方变为一个单独的用户,从而使密钥的管理复杂度有了较大下降。
公钥密码的提出,注意:一是密码学的研究逐步超越了数据的通信保密范围,开展了对数据的完整性、数字签名等技术的研究;二是随着计算机和网络的发展,密码学一逐步成为计算机安全、网络安全的重要支柱,使得数据安全成为信息安全的全新内容,超越了以往物理安全占据计算机安全的主导地位状态。
访问控制技术与可信计算机评估准则
1969年,B.Lampson提出了访问控制模型。
1973年,D.Bell 和L.Lapala,创立了一种模拟军事安全策略的计算机操作模型,这是最早也是最常用的一种计算机多级安全模型。
1985年,美国国防部在Bell-Lapala模型的基础上提出了可信计算机评估准则(通常称为橘皮书)。按照计算机系统的安全防护能力,分成8个等级。
1987年,Clark-Wilson模型针对完整性保护和商业应用提出的。
信息保障
1998年10月,美国国家安全局(NSA)颁布了信息保障技术框架1.1版,2003年2月6日,美国国防部(DOD)颁布了信息保障实施命令8500.2,从而信息保障成为美国国防组织实施信息化作战的既定指导思想。
信息保障(IA:information assurance):通过确保信息的可用性、完整性、可识别性、保密性和抵赖性来保护信息系统,同时引入保护、检测及响应能力,为信息系统提供恢复功能。这就是信息保障模型PDRR。
protect保护、detect检测、react响应、restore 恢复
美国信息保障技术框架的推进使人们意识到对信息安全的认识不要停留在保护的框架之下,同时还需要注意信息系统的检测和响应能力。
2003年,中国发布了《国家信息领导小组关于信息安全保障工作的意见》,这是国家将信息安全提到战略高度的指导性文件
信息保密技术的研究成果:
发展各种密码算法及其应用:
DES(数据加密标准)、RSA(公开密钥体制)、ECC(椭圆曲线离散对数密码体制)等。
计算机信息系统安全模型和安全评价准则:
访问监视器模型、多级安全模型等;TCSEC(可信计算机系统评价准则)、ITSEC(信息技术安全评价准则)等。
加密(Encryption)
加密是通过对信息的重新组合,使得只有收发双方才能解码并还原信息的一种手段。
传统的加密系统是以密钥为基础的,这是一种对称加密,也就是说,用户使用同一个密钥加密和解密。
目前,随着技术的进步,加密正逐步被集成到系统和网络中,如IETF正在发展的下一代网际协议IPv6。硬件方面,Intel公司也在研制用于PC机和服务器主板的加密协处理器。
身份认证(Authentication)
防火墙是系统的第一道防线,用以防止非法数据的侵入,而安全检查的作用则是阻止非法用户。有多种方法来鉴别一个用户的合法性,密码是最常用的,但由于有许多用户采用了很容易被猜到的单词或短语作为密码,使得该方法经常失效。其它方法包括对人体生理特征(如指纹)的识别,智能IC卡和USB盘。
数字签名(Digital Signature)
数字签名可以用来证明消息确实是由发送者签发的,而且,当数字签名用于存储的数据或程序时,可以用来验证数据或程序的完整性。
美国政府采用的数字签名标准(Digital Signature Standard,DSS)使用了安全哈希运算法则。用该算法对被处理信息进行计算,可得到一个160位(bit)的数字串,把这个数字串与信息的密钥以某种方式组合起来,从而得到数字签名。
内容检查(Content Inspection)
即使有了防火墙、身份认证和加密,人们仍担心遭到病毒的攻击。有些病毒通过E-mail或用户下载的ActiveX和Java小程序(Applet)进行传播,带病毒的Applet被激活后,又可能会自动下载别的Applet。现有的反病毒软件可以清除E-mail病毒,对付新型Java和ActiveX病毒也有一些办法,如完善防火墙,使之能监控Applet的运行,或者给Applet加上标签,让用户知道他们的来源。
介绍一些加密的知识
密钥加/解密系统模型
在1976年,Diffie及Hellman发表其论文“New Directions in Cryptography”[9]之前,所谓的密码学就是指对称密钥密码系统。因为加/解密用的是同一把密钥,所以也称为单一密钥密码系统。
这类算法可谓历史悠久,从最早的凯撒密码到目前使用最多的DES密码算法,都属于单一密钥密码系统。
通常,一个密钥加密系统包括以下几个部分:
① 消息空间M(Message)
② 密文空间C(Ciphertext)
③ 密钥空间K(Key)
④ 加密算法E(Encryption Algorithm)
⑤ 解密算法D(Decryption Algorithm)
消息空间中的消息M(称之为明文)通过由加密密钥K1控制的加密算法加密后得到密文C。密文C通过解密密钥K2控制的解密算法又可恢复出原始明文M。即:
EK1(M)=C
DK2(C)=M
DK2(EK1(M))=M
概念:
当算法的加密密钥能够从解密密钥中推算出来,或反之,解密密钥可以从加密密钥中推算出来时,称此算法为对称算法,也称秘密密钥算法或单密钥算法;
当加密密钥和解密密钥不同并且其中一个密钥不能通过另一个密钥推算出来时,称此算法为公开密钥算法。
1.凯撒密码变换
更一般化的移位替代密码变换为
加密:E(m)=(m+k) mod 26
解密:D(c)=(c-k) mod 26
2.置换密码
在置换密码中,明文和密文的字母保持相同,但顺序被打乱了。在简单的纵行置换密码中,明文以固定的宽度水平地写在一张图表纸上,密文按垂直方向读出;解密就是将密文按相同的宽度垂直地写在图表纸上,然后水平地读出明文。例如:
明文:encryption is the transformation of data into some unreadable form
密文:eiffob nsodml ctraee rhmtuf yeaano pttirr trinem iaota onnod nsosa
20世纪40年代,Shannon提出了一个常用的评估概念。特认为一个好的加密算法应具有模糊性和扩散性。
模糊性:加密算法应隐藏所有的局部模式,即,语言的任何识别字符都应变得模糊,加密法应将可能导致破解密钥的提示性语言特征进行隐藏;
扩散性:要求加密法将密文的不同部分进行混合,是任何字符都不在其原来的位置。
加密算法易破解的原因是未能满足这两个Shannon条件。
数据加密标准(DES)
DES算法把64位的明文输入块变为64位的密文输出块,它所使用的密钥也是64位,其功能是把输入的64位数据块按位重新组合,并把输出分为L0、R0两部分,每部分各长32位,经过16次迭代运算后。得到L16、R16,将此作为输入,进行逆置换,即得到密文输出。逆置换正好是初始置的逆运算.
具体方法 需要图 我放不上去对不起了
可以将DES算法归结如下:
子密钥生成:
C[0]D[0] = PC–1(K)
for 1 <= i <= 16
{C[i] = LS[i](C[i−1])
D[i] = LS[i](D[i−1])
K[i] = PC–2(C[i]D[i])}
加密过程:
L[0]R[0] = IP(x)
for 1 <= i <= 16
{L[i] = R[i−1]
R[i] = L[i−1] XOR f (R[i−1], K[i])}
c= IP−1(R[16]L[16])v
解密过程:
R[16]L[16] = IP(c)
for 1 <= i <= 16
{R[i−1] = L[i]
L[i−1] = R[i] XOR f (L[i], K[i])}
x= IP−1(L[0]R[0])
DES使用56位密钥对64位的数据块进行加密,并对64位的数据块进行16轮编码。与每轮编码时,一个48位的“每轮”密钥值由56位的完整密钥得出来。DES用软件进行解码需要用很长时间,而用硬件解码速度非常快,但幸运的是当时大多数黑客并没有足够的设备制造出这种硬件设备。
在1977年,人们估计要耗资两千万美元才能建成一个专门计算机用于DES的解密,而且需要12个小时的破解才能得到结果。所以,当时DES被认为是一种十分强壮的加密方法。 但是,当今的计算机速度越来越快了,制造一台这样特殊的机器的花费已经降到了十万美元左右,所以用它来保护十亿美元的银行间线缆时,就会仔细考虑了。另一个方面,如果只用它来保护一台服务器,那么DES确实是一种好的办法,因为黑客绝不会仅仅为入侵一个服务器而花那么多的钱破解DES密文。由于现在已经能用二十万美圆制造一台破译DES的特殊的计算机,所以现在再对要求“强壮”加密的场合已经不再适用了
DES算法的应用误区
DES算法具有极高安全性,到目前为止,除了用穷举搜索法对DES算法进行攻击外,还没有发现更有效的办法。而56位长的密钥的穷举空间为256,这意味着如果一台计算机的速度是每一秒种检测一百万个密钥,则它搜索完全部密钥就需要将近2285年的时间,可见,这是难以实现的,当然,随着科学技术的发展,当出现超高速计算机后,我们可考虑把DES密钥的长度再增长一些,以此来达到更高的保密程度。
由上述DES算法介绍我们可以看到:DES算法中只用到64位密钥中的其中56位,而第8、16、24、......64位8个位并未参与DES运算,这一点,向我们提出了一个应用上的要求,即DES的安全性是基于除了8,16,24,......64位外的其余56位的组合变化256才得以保证的。因此,在实际应用中,我们应避开使用第8,16,24,......64位作为有效数据位,而使用其它的56位作为有效数据位,才能保证DES算法安全可靠地发挥作用。如果不了解这一点,把密钥Key的8,16,24,..... .64位作为有效数据使用,将不能保证DES加密数据的安全性,对运用DES来达到保密作用的系统产生数据被破译的危险,这正是DES算法在应用上的误区,留下了被人攻击、被人破译的极大隐患。
A5 算 法
序列密码简介
序列密码又称流密码,它将明文划分成字符(如单个字母)或其编码的基本单元(如0、1),然后将其与密钥流作用以加密,解密时以同步产生的相同密钥流实现。
序列密码强度完全依赖于密钥流产生器所产生的序列的随机性和不可预测性,其核心问题是密钥流生成器的设计。而保持收发两端密钥流的精确同步是实现可靠解密的关键技术。
A5算法
A5算法是一种序列密码,它是欧洲GSM标准中规定的加密算法,用于数字蜂窝移动电话的加密,加密从用户设备到基站之间的链路。A5算法包括很多种,主要为A5/1和A5/2。其中,A5/1为强加密算法,适用于欧洲地区;A5/2为弱加密算法,适用于欧洲以外的地区。这里将详细讨论A5/1算法。
A5/1算法的主要组成部分是三个长度不同的线性反馈移位寄存器(LFSR)R1、R2和R3,其长度分别为19、22和23。三个移位寄存器在时钟的控制下进行左移,每次左移后,寄存器最低位由寄存器中的某些位异或后的位填充。各寄存器的反馈多项式为:
R1:x18+x17+x16+x13
R2:x21+x20
R3:x22+x21+x20+x7
A5算法的输入是64位的会话密钥Kc和22位的随机数(帧号)。
IDEA
IDEA即国际数据加密算法,它的原型是PES(Proposed Encryption Standard)。对PES改进后的新算法称为IPES,并于1992年改名为IDEA(International Data Encryption Algorithm)。
IDEA是一个分组长度为64位的分组密码算法,密钥长度为128位,同一个算法即可用于加密,也可用于解密。
IDEA的加密过程包括两部分:
(1) 输入的64位明文组分成四个16位子分组:X1、X2、X3和X4。四个子分组作为算法第一轮的输入,总共进行八轮的迭代运算,产生64位的密文输出。
(2) 输入的128位会话密钥产生八轮迭代所需的52个子密钥(八轮运算中每轮需要六个,还有四个用于输出变换)
子密钥产生:输入的128位密钥分成八个16位子密钥(作为第一轮运算的六个和第二轮运算的前两个密钥);将128位密钥循环左移25位后再得八个子密钥(前面四个用于第二轮,后面四个用于第三轮)。这一过程一直重复,直至产生所有密钥。
IDEA的解密过程和加密过程相同,只是对子密钥的要求不同。下表给出了加密子密钥和相应的解密子密钥。
密钥间满足:
Zi(r) ⊙ Zi(r) −1=1 mod (216+1)
−Zi(r) + Zi(r) =0 mod (216+1)
Blowfish算法
Blowfish是Bruce Schneier设计的,可以免费使用。
Blowfish是一个16轮的分组密码,明文分组长度为64位,使用变长密钥(从32位到448位)。Blowfish算法由两部分组成:密钥扩展和数据加密。
1. 数据加密
数据加密总共进行16轮的迭代,如图所示。具体描述为(将明文x分成32位的两部分:xL, xR)
for i = 1 to 16
{
xL = xL XOR Pi
xR = F(xL) XOR xR
if
{
交换xL和xR
}
}
xR = xR XOR P17
xL = xL XOR P18
合并xL 和xR
其中,P阵为18个32位子密钥P1,P2,…,P18。
解密过程和加密过程完全一样,只是密钥P1,P2,…,P18以逆序使用。
2. 函数F
把xL分成四个8位子分组:a, b, c 和d,分别送入四个S盒,每个S盒为8位输入,32位输出。四个S盒的输出经过一定的运算组合出32位输出,运算为
F(xL) =((S1,a + S2,b mod 232) XOR S3,c) + S4,d mod 232
其中,Si,x表示子分组x(x=a、b、c或d)经过Si (i=1、2、3或4)盒的输出。
没有太多地方写了,不把整个过程列上面了,就简单介绍一下好了。
GOST算法
GOST是前苏联设计的分组密码算法,为前苏联国家标准局所采用,标准号为:28147–89[5]。
GOST的消息分组为64位,密钥长度为256位,此外还有一些附加密钥,采用32轮迭代。
RC5算法
RC5是一种分组长度、密钥长度和加密迭代轮数都可变的分组密码体制。RC5算法包括三部分:密钥扩展、加密算法和解密算法。
PKZIP算法
PKZIP加密算法是一个一次加密一个字节的、密钥长度可变的序列密码算法,它被嵌入在PKZIP数据压缩程序中。
该算法使用了三个32位变量key0、key1、key2和一个从key2派生出来的8位变量key3。由密钥初始化key0、key1和key2并在加密过程中由明文更新这三个变量。PKZIP序列密码的主函数为updata_keys()。该函数根据输入字节(一般为明文),更新三个32位的变量并获得key3。
重点:单向散列函数
MD5 算 法
md5的全称是message-digestalgorithm5(信息-摘要算法),在90年代初由和rsadatasecurityinc的ronaldl.rivest开发出来,经md2、md3和md4发展而来。它的作用是让大容量信息在用数字签名软件签署私人密匙前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的大整数)。不管是md2、md4还是md5,它们都需要获得一个随机长度的信息并产生一个128位的信息摘要。虽然这些算法的结构或多或少有些相似,但md2的设计与md4和md5完全不同,那是因为md2是为8位机器做过设计优化的,而md4和md5却是面向32位的电脑。
rivest在1989年开发出md2算法。在这个算法中,首先对信息进行数据补位,使信息的字节长度是16的倍数。然后,以一个16位的检验和追加到信息末尾。并且根据这个新产生的信息计算出散列值。后来,rogier和chauvaud发现如果忽略了检验和将产生md2冲突。md2算法的加密后结果是唯一的--既没有重复。 为了加强算法的安全性,rivest在1990年又开发出md4算法。md4算法同样需要填补信息以确保信息的字节长度加上448后能被512整除(信息字节长度mod512=448)。然后,一个以64位二进制表示的信息的最初长度被添加进来。信息被处理成512位damg?rd/merkle迭代结构的区块,而且每个区块要通过三个不同步骤的处理。denboer和bosselaers以及其他人很快的发现了攻击md4版本中第一步和第三步的漏洞。dobbertin向大家演示了如何利用一部普通的个人电脑在几分钟内找到md4完整版本中的冲突(这个冲突实际上是一种漏洞,它将导致对不同的内容进行加密却可能得到相同的加密后结果)。毫无疑问,md4就此被淘汰掉了。 尽管md4算法在安全上有个这么大的漏洞,但它对在其后才被开发出来的好几种信息安全加密算法的出现却有着不可忽视的引导作用。除了md5以外,其中比较有名的还有sha-1、ripe-md以及haval等。
一年以后,即1991年,rivest开发出技术上更为趋近成熟的md5算法。它在md4的基础上增加了"安全-带子"(safety-belts)的概念。虽然md5比md4稍微慢一些,但却更为安全。这个算法很明显的由四个和md4设计有少许不同的步骤组成。在md5算法中,信息-摘要的大小和填充的必要条件与md4完全相同。denboer和bosselaers曾发现md5算法中的假冲突(pseudo-collisions),但除此之外就没有其他被发现的加密后结果了。 vanoorschot和wiener曾经考虑过一个在散列中暴力搜寻冲突的函数(brute-forcehashfunction),而且他们猜测一个被设计专门用来搜索md5冲突的机器(这台机器在1994年的制造成本大约是一百万美元)可以平均每24天就找到一个冲突。但单从1991年到2001年这10年间,竟没有出现替代md5算法的md6或被叫做其他什么名字的新算法这一点,我们就可以看出这个瑕疵并没有太多的影响md5的安全性。上面所有这些都不足以成为md5的在实际应用中的问题。并且,由于md5算法的使用不需要支付任何版权费用的,所以在一般的情况下(非绝密应用领域。但即便是应用在绝密领域内,md5也不失为一种非常优秀的中间技术),md5怎么都应该算得上是非常安全的了。
算法
MD表示消息摘要(Message Digest)。MD5是MD4的改进版,该算法对输入的任意长度消息产生128位散列值(或消息摘要。MD5算法可用图4-2表示。
对md5算法简要的叙述可以为:md5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。
1) 附加填充位
首先填充消息,使其长度为一个比512的倍数小64位的数。填充方法:在消息后面填充一位1,然后填充所需数量的0。填充位的位数从1~512。
2) 附加长度
将原消息长度的64位表示附加在填充后的消息后面。当原消息长度大于264时,用消息长度mod 264填充。这时,消息长度恰好是512的整数倍。令M[0 1…N−1]为填充后消息的各个字(每字为32位),N是16的倍数。
3) 初始化MD缓冲区
初始化用于计算消息摘要的128位缓冲区。这个缓冲区由四个32位寄存器A、B、C、D表示。寄存器的初始化值为(按低位字节在前的顺序存放):
A: 01 23 45 67
B: 89 ab cd ef
C: fe dc ba 98
D: 76 54 32 10
4) 按512位的分组处理输入消息
这一步为MD5的主循环,包括四轮,如图4-3所示。每个循环都以当前的正在处理的512比特分组Yq和128比特缓冲值ABCD为输入,然后更新缓冲内容。
四轮操作的不同之处在于每轮使用的非线性函数不同,在第一轮操作之前,首先把A、B、C、D复制到另外的变量a、b、c、d中。这四个非线性函数分别为(其输入/输出均为32位字):
F(X,Y,Z) = (XY)((~X) Z)
G(X,Y,Z) = (XZ)(Y(~Z))
H(X,Y,Z) = XYZ
I(X,Y,Z) = Y(X(~Z))
其中,表示按位与;表示按位或;~表示按位反;表示按位异或。
此外,由图4-4可知,这一步中还用到了一个有64个元素的表T[1..64],T[i]=232×abs(sin(i)),i的单位为弧度。
根据以上描述,将这一步骤的处理过程归纳如下:
for i = 0 to N/16−1 do
/* 每次循环处理16个字,即512字节的消息分组*/
/*把第i个字块(512位)分成16个32位子分组拷贝到X中*/
for j = 0 to 15 do
Set X[j] to M[i*16+j]
end /*j 循环*/
/*把A存为AA,B存为BB,C存为CC,D存为DD*/
AA = A
BB = B
CC = C
DD = D
/* 第一轮*/
/* 令[abcd k s i]表示操作
a = b + ((a + F(b,c,d) + X[k] + T[i]) <<< s)
其中,Y<<<s表示Y循环左移s位*/
/* 完成下列16个操作*/
[ABCD 0 7 1 ] [DABC 1 12 2 ] [CDAB 2 17 3 ] [BCDA 3 22 4 ]
[ABCD 4 7 5 ] [DABC 5 12 6 ] [CDAB 6 17 7 ] [BCDA 7 22 8 ]
[ABCD 8 7 9 ] [DABC 9 12 10] [CDAB 10 17 11] [BCDA 11 22 12]
[ABCD 12 7 13] [DABC 13 12 14] [CDAB 14 17 15] [BCDA 15 22 16]
/* 第二轮*/
/*令[abcd k s i]表示操作
a = b + ((a + G(b,c,d) + X[k] + T[i]) <<< s)*/
/*完成下列16个操作*/
[ABCD 1 5 17] [DABC 6 9 18] [CDAB 11 14 19] [BCDA 0 20 20]
[ABCD 5 5 21] [DABC 10 9 22] [CDAB 15 14 23] [BCDA 4 20 24]
[ABCD 9 5 25] [DABC 14 9 26] [CDAB 3 14 27] [BCDA 8 20 28]
[ABCD 13 5 29] [DABC 2 9 30] [CDAB 7 14 31] [BCDA 12 20 32]
/*第三轮*/
/*令[abcd k s t]表示操作
a = b + ((a + H(b,c,d) + X[k] + T[i]) <<< s)*/
/*完成以下16个操作*/
[ABCD 5 4 33] [DABC 8 11 34] [CDAB 11 16 35] [BCDA 14 23 36]
[ABCD 1 4 37] [DABC 4 11 38] [CDAB 7 16 39] [BCDA 10 23 40]
[ABCD 13 4 41] [DABC 0 11 42] [CDAB 3 16 43] [BCDA 6 23 44]
[ABCD 9 4 45] [DABC 12 11 46] [CDAB 15 16 47] [BCDA 2 23 48]
/*第四轮*/
/*令[abcd k s t]表示操作
a = b + ((a + I(b,c,d) + X[k] + T[i]) <<< s) */
/*完成以下16个操作*/
[ABCD 0 6 49] [DABC 7 10 50] [CDAB 14 15 51] [BCDA 5 21 52]
[ABCD 12 6 53] [DABC 3 10 54] [CDAB 10 15 55] [BCDA 1 21 56]
[ABCD 8 6 57] [DABC 15 10 58] [CDAB 6 15 59] [BCDA 13 21 60]
[ABCD 4 6 61] [DABC 11 10 62] [CDAB 2 15 63] [BCDA 9 21 64]
A = A + AA
B = B + BB
C = C + CC
D = D + DD
end /*i循环*/
5) 输出
由A、B、C、D四个寄存器的输出按低位字节在前的顺序(即以A的低字节开始、D的高字节结束)得到128位的消息摘要。
以上就是对MD5算法的描述。MD5算法的运算均为基本运算,比较容易实现且速度很快。
安全散列函数(SHA)
算法
SHA是美国NIST和NSA共同设计的安全散列算法(Secure Hash Algorithm),用于数字签名标准DSS(Digital Signature Standard)。SHA的修改版SHA–1于1995年作为美国联邦信息处理标准公告(FIPS PUB 180–1)发布[2]。
D. DES算法是属于对称加密算法吗
是的,
最着名的保密密钥或对称密钥加密算法DES(Data Encryption Standard)是由IBM公司在70年代发展起来的,并经过政府的加密标准筛选后,于1976年11月被美国政府采用,DES随后被美国国家标准局和美国国家标准协会(American National Standard Institute, ANSI) 承认。
DES使用56位密钥对64位的数据块进行加密,并对64位的数据块进行16轮编码。与每轮编码时,一个48位的“每轮”密钥值由56位的完整密钥得出来。DES用软件进行解码需要用很长时间,而用硬件解码速度非常快,但幸运的是当时大多数黑客并没有足够的设备制造出这种硬件设备。在1977年,人们估计要耗资两千万美元才能建成一个专门计算机用于DES的解密,而且需要12个小时的破解才能得到结果。所以,当时DES被认为是一种十分强壮的加密方法。
但是,当今的计算机速度越来越快了,制造一台这样特殊的机器的花费已经降到了十万美元左右,所以用它来保护十亿美元的银行间线缆时,就会仔细考虑了。另一个方面,如果只用它来保护一台服务器,那么DES确实是一种好的办法,因为黑客绝不会仅仅为入侵一个服务器而花那么多的钱破解DES密文。由于现在已经能用二十万美圆制造一台破译DES的特殊的计算机,所以现在再对要求“强壮”加密的场合已经不再适用了。
三重DES
因为确定一种新的加密法是否真的安全是极为困难的,而且DES的唯一密码学缺点,就是密钥长度相对比较短,所以人们并没有放弃使用DES,而是想出了一个解决其长度问题的方法,即采用三重DES。这种方法用两个密钥对明文进行三次加密,假设两个密钥是K1和K2,其算法的步骤如图5.9所示:
1. 用密钥K1进行DEA加密。
2. 用K2对步骤1的结果进行DES解密。
3. 用步骤2的结果使用密钥K1进行DES加密。
这种方法的缺点,是要花费原来三倍时间,从另一方面来看,三重DES的112位密钥长度是很“强壮”的加密方式了