完整版SSH加密技术研究及实现本科毕业设计.docx
- 文档编号:20312081
- 上传时间:2023-04-25
- 格式:DOCX
- 页数:22
- 大小:31.78KB
完整版SSH加密技术研究及实现本科毕业设计.docx
《完整版SSH加密技术研究及实现本科毕业设计.docx》由会员分享,可在线阅读,更多相关《完整版SSH加密技术研究及实现本科毕业设计.docx(22页珍藏版)》请在冰豆网上搜索。
完整版SSH加密技术研究及实现本科毕业设计
毕业论文
论文题目:
SSH加密技术研究及实现
内容摘要
本论文通过对当前一些SSH加密技术研究的分析,以及对SSH的考察,对网络数据传输过程的一些技术问题提出一些实用性的建议及实现。
论文首先从SSH的整个发展现况与前景进行分析,提出了SSH加密技术需面对以及注意的几个问题,在客观地分析当前大多数的加密技术的优点以及缺点的过程中,提出了一些个人对于SSH加密技术的设想与建议。
[关键词]SSH加密技术网络数据传输安全程序设计
Abstract
ThispaperthroughtheanalysisofthecurrentsomeSSHencryption—technologyresearch,andontheinvestigationtotheSSH,forsometechnicalproblemintheprocessofnetworkdatatransmissionputforwardsomepracticalSuggestionsandimplement.PaperfirstfromSSH'swholedevelopmentpresentsituationandprospectanalysis,putforwardSSHencryptiontechnologymustfaceandpayattentiontoseveralproblems,theobjectiveanalysisofthecurrentmostoftheencryptionprocess,theadvantagesanddisadvantagesofputforwardsomepersonalideastoSSHencryptionandthesuggestion
Keywords:
SSHEncryptiontechnologyNetworkdatatransmissionsecurityTheprogramdesign
1.绪论1
1.1.研究背景和意义1
1.2研究目标和主要内容1
1.2.1研究目标1
1.2.2主要内容1
1.2.对称密钥密码体质:
2
1.3.非对称密钥密码体制2
1.3.1.RSA算法2
1.3.2.DSA算法3
2.安全SSH的工作原理4
2.1.SSH的应用范围4
2.1.1.特点及适用范围4
2.2.SSH的认证和加密方式:
4
2.2.1.SSH的体系结构:
4
2.2.2.SSH的工作模型(ClientServer):
4
2.2.3.服务器端认证用户5
2.2.4.SSH的数据完整性5
3.SSH的安装和使用6
3.1.SSH的安装:
6
3.2.服务器端SSHD的使用和配置:
6
3.2.1.安全Shell守护程序的使用6
3.3.客户程序SSH.SCP的使用和配置15
3.3.1.安全shell客户程序的使用15
总结28
注释29
参考文献30
致谢31
1.绪论
1.1.研究背景和意义
随着计算机网络技术特别是Intennet技术的发展,网络安全问题日益受到人们的重视。
21世纪全世界的计算机都通过Intennet连到一起,信息安全的内涵也就发生了根本的变化,它不仅从一般性的防卫变成了一种非常普通的防范,而且还从一种专门的领域变成了无处不在,当人类步入21世纪这一信息社会,网络社会的时候,网络数据传输加密技术受到各方面的重视及研究发展。
传统的网络协议,如FTP˴POP˴和Telnet在传输机制和实现原理是没有考虑到安全机制的,基本质上都是不安全的;因为他们在网络上用文明来传数据˴用账户和口令,别有用心的有人通过窃听˴数据载流等网络攻击手段非常容易地就可以截获这些数据˴用账户和口。
而且,这些网络服务程序的简单安全验证方式也有其弱点,那就是很容易受到别人的攻击。
服务器和登陆者之间的数据传送就被窃取和篡改就会出现很严重的问题。
目前我国信息化建设大潮如火,我国政府机关˴企业单位的内部网络结构。
已由最初简单的办公电脑星状拓扑联接CS˴BS结构并向更高级的多层次分布式结构发展。
SSH技术是近几年所出现的一种开源的安全协议,具有相当出色的可靠性。
很多国有大中型企业˴银行˴金融机构均采用基于该技术手段加强网络服务器的安全。
SSH的广泛应用使各种服务应用免受攻击,网络数据传输有了更高的保证。
1.2研究目标和主要内容
1.2.1研究目标
通过对网络数据传输的安全性的研究和分析,对SSH加密技术的工作原理研究及实现解决网络数据传输过程中一些不安全因素,便于使数据传输更加安全不被被窃取
1.2.2主要内容
本文主要的目的是对SSH如何进行加密进行研究。
首先通过研究SSH的工作原理及安装和使用以及研究的密钥学
`为了更好地了解SSH协议,这一章将介绍协议的算法知识、对称密钥体质、非对称密钥体质,HASH算法等基本概念。
并对SSH协议中采用的算法,诸如:
RSA、DSA、DES3等进行介绍
1.2.对称密钥密码体质:
对称密钥密码体质是一种比较传统的加密方式。
他的特点是加密运算和解密运算使用的是同一个密钥,而且这个密钥是合法使用者秘密拥有的。
因此对称密钥密码体制又可称为单密钥密码体制、秘密密钥密码体制。
对称密钥密码体制算法一般对外是公开的起安全性主要依赖于密钥的秘密性。
它在设计过程中加大了算法双核机的复杂度,并且设计长密钥进行加解密
1.3.非对称密钥密码体制
非对称密钥密码体制,与对称密钥密码体制最大的不同是非对称密钥密码体制使用的是有两个密钥组成的一对密钥。
这对密钥分为公钥,私钥两个部分。
公钥部分对外公开,而私钥部分则由秘密所有人自己保管。
因此,非对称密钥密码体制又可称为公开密钥密码体制。
非对称密钥密码体制的产生是密码学史上的一次根本性的变革与飞跃,大大地丰富了密码学的内容。
非对称密钥密码体制的两个密钥分开管理的特点,解决了对称密钥密的通信环境中,密码体制中密钥分发和管理的问题。
对于非对称密钥密码体制,早拥有n个用户的,n对密钥就能够满足所有用户之间的保密通信.弱有m供热用户加入到此通信环境中,则只需要增加m对新密钥即可满足需求而不会带来密钥管理的大变动。
非对称密钥密码体制简单的密钥管理促进了密码学在现实生活中的应用。
1.3.1.RSA算法
RSA是目前应用最为广泛的一种非对称加密算法。
由RonRivest、AdiShamir以及LeonardAdelman三位美国人共同的研究设计,RSA的工作原理主要是依据大整数因子分解问题。
它的安全性由把一个大整数分解成两个大小差不多的素数的乘积的难度产生。
有研究表明,对于一个常规512位密钥进行因式分解至少需要7个月的时间。
这也就在说经由RSA公钥加密的消息,要通过已知公钥来破解私钥获得明文,一般情况下再消息的有效时间内是很难成功的,毕竟对于研究条件具备各种技术情况下,破解512位的的公钥都需要7个月时间,更何况RSA的公钥通常都是1024位,如果消息的保密性还高的话可以使用2048位,或者更多,这样RSA就利用了一个难以解决的数学问题。
构建了一个安全性极高的公钥加密体制。
首先,RSA是这样进行设计公钥与私钥:
1、找到两个足够大的质数p和q:
2、球的z=p*q;
3、求得ƒ=(p-1)*(q-1);
4、寻找一个整数n,使得gcd(n,ƒ)=1;
5、寻找一个整数s,0
(n,s)是公钥,他用来对消息进行加密;s是私钥,用来对加密消息进行解密。
如果我们要对整数a进行RSA加密解密,其加密解密过程如下;
(1)利用公钥(n,z)对a进行加密,得到c=an(modz),然后对c进行传输。
(2)利用公钥s对接受到的消息c进行解密,得到d=cs(modz)。
那么d就是消息a,即d=a。
由于此过程之中私钥的保密性和对于大整数z的因式分解是困难的,这就保证了罅隙传递过程中的安全性。
相比较对称密码算法,RSA算法效率较低,速度较慢。
因此RSA算法不适合在硬件实现,同时也不适合加密大量数据信息。
另外,随着大数分解算法的不断改进和高性能计算机以及Intennet分布式计算机的不断提高,RSA的安全性已受到严重的挑战。
为了提高RSA算法的安全性,通常的办法就是使用更长的密钥。
从而增加大整数分解的难度,延长破解RSA私钥的时间。
但是长密钥的使用会进一步降低它的加密效率和减慢其运算速度,应用范围将受到影响。
因此RSA算法一般用于较少的加密和数字签名。
1.3.2.DSA算法
数字签名算法是由美国安全局开发并有美国国家标准技术研究所作为数字签名标准的有一个部分进行发布烦人DSA是Schnor和Gamal算法的变形。
密钥长度是512~1024位。
密钥长度越长,签名速度越慢,制约运算速度的主要因素是大数的模指数运算。
DSA签名中的参数描述:
p位512~1024位的大素数(可以在一组用户中共享);q位160位长,并与(p-1)互素的因子(可以在一组用户中共享);g=_grale_time#与sshd1一样,它设置安全shell守护中的“警报”机制。
它给客户程序一个确定的时间,每到相应的时间间隔,客户将和服务器确认一次。
隐含的时间为600秒(10分钟)。
如果客户程序不确认,服务器进程将断开socket连接。
你可以将它设置为0,这意味着对确认时间没有限制。
如果你将安全守护设为调试模式,该选项将自动地设为零。
-#你可以指定用在配置文件中的选项,但命令行中的选项不能在这儿被指定。
-pport#与sshd1类似。
你可以指定服务器侦听socket的端口。
隐含值为端口22,它为安全shell所保留。
记住这也是在etcservices中定义的端口号,除非你已经改变了它。
如果端口22已经被其他的应用程序使用或以非超级用户身份启动安全shell你可能希望定义一个替代的端口。
-q#指定哑模式,这意味着系统日志接受不到任何信息。
这同样与sshd1类似。
通常情况下被发送的内容为连接的起始,用户的认证及连接的终止。
除非你的系统日志总是很快就被填满,你最好不要打开这种模式。
因为这样你可以检查是否有人非法地进入系统。
-v#将安全shell守护置于详尽模式。
这和将选项-d2给sshd效果是一样的。
这同样意味着你不可能真正使sshd2的详尽模式运行,因为没有产生任何子进程。
注:
sshd2中没有-kkey_generation_time选项。
服务器密钥每小时重新产生一次
(1)在同一台主机上运行SSH1和SSH2守护程序
出于兼容性的考虑,你可能想让系统与SSH1兼容。
要做到这一点,你需要具备SSH1的最新版本(目前为1.2.27)以及SSH2的一份拷贝。
必须同时运行两种守护程序从而能接受和发送这两种版本的安全shell客户的连接请求。
如果没有这样做,你就不能发送或接受安全shell客户的连接请求。
至于真正的兼容性,SSH1与SSH2之间并不存在。
然而,你可以同时使用SSH1的最新版本与SSH2。
如果连接请求来自SSH1客户,SSH2守护将会把连接转寄到SSH1守护。
但你不能连接SSH1客户与SSH2服务器,反之亦然。
同样,如果你发现一个声称包长度有误的信息,检查一下,看看是否运行了一个SSH1的早期版本,要是这样,你就需要升级了。
(2)一些例子
这些选项并没有隐含地设置。
安全shell守护的隐含设置是使用768-bit的服务器密钥,它每小时重新产生一次,认证超时限度则为10分钟,在端口22上侦听连接,在etcssh2目录下寻找配置文件等。
隐含情况下,安全shell守护以如下方式运行:
#sshd
下面的例子与第三章类似。
你可以发现,在使用方法上它们仅有很小的差别。
你也可以将这些选项赋上隐含值,这和隐含地执行命令有同样的效果。
#sshd–b768–fetcssh2sshd_config–g600–message。
当连接被建立以后,你的日志文件看上去像下面的内容:
你也可以打开详尽日志或使用项关闭记录。
你同样可以用-DPARANOID选项使用TCP外包程序来记录每一个socket。
这有可能会复制安全shell守护程序的一些工作,也可以通过配置,使其能提供更为详尽的信息。
记住你的记录存放位置与操作系统有关。
Linux将信息存放于系统日志中,一般位于varadmsyslog,HP-UX或AIX则有可能将信息存放于完全不同的地方。
查阅你的操作系统使用手册以寻找记录文件的位置。
(5)配置安全Shell
安全shell有一个你可以定义选项的配置文件。
有一些选项是不能在命令行中被设置的,但可以在配置文件中设置它们以使其工作。
与大多数配置文件和shell程序脚本一样,空行和以“#”开头的行不会被系统读入。
安全shell的隐含配置文件是etcsshd2sshd_config。
下面列出了你可以在sshd_config配置文件中为安全shell设置的选项。
在etcsshd2sshd_config文件中,定义这些选项的格式如下:
OptionTypeArgument
如果你有多个参数,用空白行隔开它们。
这种格式对下面列出的选项都通用
1.允许的用户名与主机名
可以通过安全shell2过滤用户名与主机名。
这没有提供与SSH1一样多的过滤选项,但有一些还是很有用的,例如忽视rhosts文件和允许或禁止超级用户登录的权力。
IgnoreRhosts#这是一个与sshd1同样的配置选项。
它定义了.rhosts和.shosts是否被允许用来认证。
该选项对系统端的文件etc#可以通过该选项决定是否利用口令以经过安全shell进入帐户。
它和sshd1配置选项一样。
隐含值为“yes”,口令被用来保护公共密钥而不是帐户自身。
你可能选择关闭口令认证,但是最好在使用PubKeyAuthentication时使用。
PermitEmptyPasswords#这个选项决定你是否想使用口令来帮助认证。
它和sshd1的配置选项一样。
可以允许空口令,然而,我们建议你最好不要这样做。
如果某人进入你的主机,最起码还需要提供口令以进入系统。
隐含值为“yes”。
通常情况下应将它们设为“no”。
RHostsAuthentication#该选项设置基于.rhosts或etc#在安全shell2的最新版本中并没有安装这个选项。
它设置基于.rhosts或etc#可以使用任意多种类型的认证,或正如所见,也可以单独使用一种类型的认证。
比如说你就可以仅允许公共密钥认证工作。
这和sshd1的RSAAuthentication选项一致。
它并不需要rhosts或口令来协助认证。
隐含值为“yes”,你最好将选项保持在该状态。
3.服务器选项
这些选项用来定义安全shell守护的功能,包括TCP转寄,对特殊地址与端口的侦听,发送存活信息及服务器密钥的设置等。
Ciphers#可以指定准备用来加密的算法。
目前系统支持的算法有DES,3DES,Blowfish,Twofish,IDEA和Arcfour。
不可以为该选项指定其他的值:
any,anystd和anycipher,在你调试和测试时,将选项置为none。
Sshd1Path#如果你准备与SSH1兼容,就需要指定SSH1路径,尤其是当你将sshd1安装在一个非公共目录下时。
ForwardAgent#这个选项确定你是否能将安全shell认证代理(ssh-agent2)转寄到远程主机上。
你既可以打开又可以关闭这个选项。
KeepAlive#安全shell守护能通过设置来决定是否发生存活(Keepalive)信息。
存活信息能让远程的服务器知道连接是否已经中断,并在确定连接中断的情况下杀掉活动进程。
这和sshd1的配置文件中选项一致。
当然,如果程序只是暂时地挂起,它会发出如下的令人沮丧的信息:
Connectiondown:
disconnecting
这当然是令人厌烦的信息。
但如果你不发送存活信息,会留下一些能够消耗掉资源的幽灵一般的程序。
如果你要关闭存活信息发送选项,必须同时修改服务器端与客户端的配置文件。
使用方法:
KeepAliveYes
ListenAddress#如果你正在运行一个多地址主机,可以指定你希望服务器侦听的地址。
这和sshd1配置文件中的选项一致。
如果你没有多个主IP接口的话,隐含值是你的主IP接口。
使用方法:
ListenAddress1.2.3.4
Port#可以通过该选项指定一个安全shell守护侦听的端口,隐含值为22。
但在端口22已经被使用的情况下你可能会指定一个其他的端口。
这和sshd1的配置选项一致,与-p选项也一样。
使用方法:
Port21
StrictModes#可以使服务器在建立登录连接之前检查用户主目录的文件模式和属主。
这与sshd1所拥有的选项一致,这是一个很好的选项,因为用户可能会意外地将目录与文件的选项置为可写。
如果的确是这样,一定要将它们改正过来。
隐含设置为“yes”。
使用方法:
StrictModesyes
ForwardX11#这个选项确定是否允许X转寄通过安全shell守护。
这和sshd1的X11Forwarding选项一致。
与其它的TCP传输一样,这个选项在用户指定转寄时会被覆盖掉。
这取决于你是否允许X传输通过。
然而,如果你打算让X传输能传送到远端,最好让它们转寄到安全shell。
隐含设置为“yes”。
使用方法:
ForwardX11yes
4.文件位置选项:
这些选项定义安全shell守护密钥文件的存放位置。
这包括密钥文件,进程标识文件等。
AuthorizationFile#这个选项指定用户授权文件的名字。
隐含值为~.ssh2authorization,它提供了一个安全shell服务器识别用户的私有密钥列表。
使用方法:
HostKey$HOME.ssh2ssh2_identity
HostKeyFile#这个选项指定用来做私有主机密钥的文件,与sshd1的HostKey选项一致。
如果你不是以超级用户的身份运行安全shell守护,你必须使用这个文件。
正常情况下,除了对超级用户主机密钥文件是不可读的。
隐含值为etcssh2”。
但可以设置为任何字符成控制字符。
这也和ssh的选项相同。
你也可以定义为“none”,这使用会话透明,但你可能想在连接悬挂起来时让它作为缺省值。
为了能使用转义字符。
键入转义字符,随后键入字点号,这就终止连接。
如果你键入转义字符,随后键入control+z,则把连接暂时挂起。
-f#把ssh连接发送到后台。
这和ssh1的选项相同。
在认证完成并且TCPIP转寄建立之后发生。
在远程主机上启动X程序是不简单的。
用户被提示输入口令(假设认证代理没有运行),接着连接被发送到后台。
-Fconfiguration_file#该选项指定使用哪个用户配置文件。
缺省的配置文件为~.ssh2ssh2_config。
然而,你可以拥有自己的缺省配置文件和其它的配置文件。
首先读入可选的文件,然后再加入缺省文件选项。
-_name#该选项指定你在远程主机上登录的用户名。
这个选项和ssh1的相同。
缺省的用户名和本地主机的用户名相同,也可以在配置文件中按每台主机定义。
这是很有用的选项,因为今天有些人通过不同的帐号使用着不同主机。
-Lport:
#该选项和-f选项的工作类似;然而,如果你需要键入口令时它将不起作用。
这是ssh1具有的相同选项。
标准输入被devnull重定向,在安全shell客户程序被发到后台时必须使用该选项。
这通常用于脚本以及发送正在在远程主机上运行的X传输。
和认证代理一起时使用该选项是很好的。
-ooption#该选项用于当没有定义命令行选项时,在配置文件中传送选项。
这和ssh1中的选项相同。
这包括StrictHostKeyCheckingUseRsh,在命令行中没有这些选项。
这些选项和其它选项在后面的章节中阐述。
该选项的格式和配置文件中的格式相同。
-pport#可以指定客户连接到服务器的哪个端口,这和ssh1的选项相同。
缺省端口22,是为安全shell保留的端口。
记住除非另外指定在文件etcservices中定义的端口是给服务器的。
这可以在配置文件中以每台主机的方式指定端口。
-p#指定使用大于1023的端口,这是一个非特权端口。
这和ssh1的选项相同。
你不能使用它来进行远程主机(rhost)认证(无论是和公共密钥一起或它自身)。
然而,这对通过不具有该选项配置的防火墙进行的连接很有用。
-q#这是一个静态方式,指它不显示任何信息。
这和ssh1使用的选项一样,通常适合于警告和诊断信息。
如果使用该选项,在运行碰到认证或连接问题时,你将关闭该选项。
-Rport:
#预览scp2所做的事,但是它不能拷贝任何文件,这是一种在进行正式拷贝之前确定你把正确文件拷贝到正确位置的很好方法。
-p#保留从源主机拷贝过来文件的属性。
这包括文件的更改时间,读取时间和从原始文件过来的模式。
该选项直接从rcp移植过来并和scp1中使用的选项相同。
如果你工作在文件备份并想保证文件的完整性,你会发现该选项很有用。
-pport#可以指定客户机连接到哪个端口上的服务器。
这与scp1的命令行选项相同。
缺省端口为端口22,该端口是为安全Shell保留的端口。
记住除非另外指定该端口用于服务器的定义在etcservices文件中。
这是和ssh2不同的,因为rcp使用-p来保留文件属性。
-r#递归拷贝全部目录和其中的文件。
这将拷贝目录中的所有文件和子目录。
这和scp1使用的选项相同,该选项直到版本2.0.13才被支持。
-Spath_ro_ssh2#该选项指定到ssh2的路径。
这和scp1中用到的选项相类似。
如果你把ssh安装在一个非标准目录中时,就要使用该选项。
-u#该选项使用scp2更象使用安全的mv功能。
在把源文件(和目录)拷贝到目的后,该选项将删除这些原文件(和目录)而不是保留住它们。
要小心使用该选项。
-v#冗余模式。
产生scp2打印有关scp2进程的调试信息。
它打印出第2级上的调试信息。
这在调试连接,验证和配置问题时很有用。
这和scp1中使用的选项相类似。
(1)命令行选项
如果需要在设置密码,定义端口和设置ssh2路径之间切换,这些选项将会有用。
它也有两个调试选项,但只有在运行到出现问题时才会用到它们。
由于sftp2是安全Shell的一个新的应用程序,所以现在并没有很多的选项。
-ccipher#这是和ssh中定义的选项相同的选项,是因为它直接被传送到ssh。
此外,这和scp1使用的选项相同。
你可以选择想用哪种对称钥匙密码来加密网络传输,不影响使用DSA或RSA公共密钥的认证。
可选择的密码有IDEA,DES,3DES,Blowfish,Arcfour和Twofish。
你也可以选择“none”,但是这将不允许任何加密从而导致安全Shell客户不安全。
该“none”选项应该用于调试和测试目的,而不用于实际使用。
DES和Arcfour是已知的两种不安全的密码,因此不要使用它们。
你最好是使用3DES,IDEA或Blowfish。
Blowfish和Twofish是支持ssh2最快的算法。
为要获得最佳的安全特性,使用IDEA。
如果IDEA不被双方的安全Shell服务器支持,则使用3DES。
-ddebug_level_spe
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 完整版 SSH 加密 技术研究 实现 本科 毕业设计