韶关学院毕业论文题目:谷歌身份验证器原理与应用学生姓名:邱志光学号:10110031026系(院):数学与信息科学学院专业:信息与计算科学班级:2010级指导教师姓名及职称:杨玉锋讲师起止时间:2013年9月——2014年4月谷歌身份验证器原理与应用摘要:随着信息科技时代的到来,互联网储存信息已经相当普及,然而安全隐患等问题也随之而层出不穷,使得Web登录安全被广泛关注。许许多多的用户都在寻求更为保障的安全防护系统,欲使机密信息不被盗取、修改和破坏等。运用动态验证码的身份验证技术,可以大大降低用户信息被攻击的几率,使信息安全得到保障。本文将深入了解如何将Google身份验证器客户端应用在个人网站登录系统中,通过测试实现Google两步验证。关键词:登录安全;Google两步验证;Google身份验证器GoogleAuthenticatorPrinciplesandApplicationsAbstract:Withtheadventoftheeraofinformationtechnology,theInternetstoreinformationisquitepopular,however,securityandotherissuesalsosubsequentlyandemergeinendlessly,maketheWebloginsecurityhasbeenwidelyconcerned.Manyusersarelookingformoreprotectionsafetyprotectionsystem,tomaketheconfidentialinformationisbeingstolen,modify,anddestruction,etc.Usingdynamiccaptchaauthenticationtechnology,cangreatlyreducethechancethatitwillattacktheuserinformation,makeinformationsecurityprotection.ThisarticlewillfurtherunderstandhowGoogleauthenticatorclientapplicationsinpersonalwebsiteloginsystem,Googletwo-stepverificationwasachievedbytest.Keywords:Loginsecurity;Googletwo-stepverification;Googleauthenticator目录1引言……………………………………………………………………………(1)2Web系统登录安全……………………………………………………………(1)2.1密码技术……………………………………………………………………(1)2.2认证技术……………………………………………………………………(1)2.3短信动态密码验证…………………………………………………………(2)3Google身份验证器……………………………………………………………(2)3.1什么是动态身份验证?……………………………………………………(3)3.2为什么要使用该功能?……………………………………………………(3)3.3谷歌身份验证的实现原理…………………………………………………(3)3.4谷歌账户两步验证的工作原理……………………………………………(3)3.5谷歌身份验证器的安全性和优越性………………………………………(3)4谷歌身份验证器在用户网站上的应用………………………………………(4)4.1将两步验证功能移植进入登录系统的想法………………………………(5)4.2个人登录系统代码…………………………………………………………(5)4.3谷歌TOTP双重认证的PHP………………………………………………(8)4.4两步验证的代码……………………………………………………………(8)4.5Google身份验证器移植进入个人网站进行测试…………………………(16)5结论……………………………………………………………………………(19)致谢………………………………………………………………………………(20)参考文献…………………………………………………………………………(20)1谷歌身份验证器原理与应用10级信息与计算科学本科班邱志光指导教师:杨玉锋讲师1引言随着信息化的高速发展,人们对网络安全问题越来越重视,各种信息安全问题层出不穷,使得密码学被广泛的关注。人们对信息安全的需求接踵而至,就人才竞争、市场竞争、金融危机、敌特机构等都给企事业单位的发展带来巨大风险,内部窃密、黑客攻击、无意识泄密等窃密手段成为了人与人之间、企业与企业之间、国与国之间的安全隐患,都迫切希望能够得到解决的办法。目前信息安全行业中的主流技术[1]有:病毒检测与清除技术,安全防护技术,安全审计技术,安全检测与监控技术,解密、加密技术和身份认证等技术。而身份验证技术是用来确定访问或介入信息系统用户或者设备身份的合法性的技术,其典型的手段有用户名口令、身份识别、PKI证书和生物认证等。2Web系统登录安全当前,Web的应用非常广泛,面临的安全威胁也日益严重,加强对Web应用系统安全技术的研究,对提高网络的整体安全性、促进网络的快速健康发展有着重大意义。所谓网络安全,就是网络上的信息安全,即保护网络系统的硬件、软件、数据不被偶然或者故意的泄露、更改和破坏。广义来说凡是涉及到网络上信息的保密性、完整性、可用性、真实性、确认性和可控制性的相关技术和理论都属于网络安全领域。2.1密码技术密码技术是对信息进行伪装,对机密信息进行变换,得到另一种看起来似乎与原信息不相关的表示,非法用户要从这种表示中分析出原有信息变得困难。使用密码技术不仅可以保证信息的机密性。而且可以保证信息的完整性和正确性,防止信息被篡改、仿造或假冒。2.2认证技术认证技术是信息安全的一项重要内容,很多情况下,用户并不要求信息保密,2只要确认用户身份不是假冒或交互的信息是否已被第三方伪造修改。认证技术分为消息认证与身份认证。消息认证用于保证信息的完整性与抗否认性,身份认证则用于鉴别用户身份。除了上述技术,Web安全技术还有访问控制技术、防火墙技术、入侵检测技术、防病毒技术和数据备份与恢复技术、物理安全技术、虚拟网络技术等等。但是,没有一种安全技术可以完美解决Web上的所有安全问题,各种安全技术必须相互关联,相互补充,形成Web安全的立体纵深、多层防御体系。2.3短信动态密码验证短信动态密码也称短信密码,是以手机短信形式发送的6位随机数的动态密码,也是一种手机动态口令形式,身份认证系统以短信形式发送随机的6/8位密码到客户的手机上,客户在登录或者交易认证时候输入此动态密码,从而确保系统身份认证的安全性。2.3.1短信动态密码能做什么(1)可以作为登录或者交易密码(如网上银行登录或者支付,作为登录密码或支付密码认证、企业内部登录),增强身份认证的安全强度,减少盗号给用户带来的损失。(2)企业使用短信密码解决方案,无需密码因定期修改各种应用系统登录密码给IT管理和员工带来的麻烦。2.3.2短信动态密码的优缺点(1)使用简单:只要会发送短信就能使用,大大增强这项技术的普及性。(2)与应用无关:与需要登录的业务系统无关。(3)其他:如果用户更换了手机号码或信号等问题,将无法验证。3Google身份验证器Google身份验证器[2]是谷歌官方出品的账户保护程序,用户可以借助Google身份验证器在移动设备上生成动态验证码,比如手机等。为了个人信息的安全,避免账户信息非法入侵或盗用,用户可以开启两步验证,为自己的账户加一道防线。因为用户开启了两步验证之后,除了输入个人账户和密码,还需要另外再输入移动设备上的动态验证码才能完成登录。当然除了可以在移动设备上产生验证码,还可以以信息的方式发到用户的手机或者以e-mail方式发到用户指3定的邮箱。Google身份验证器支持多种语言,支持多个账户应用,并且在设备飞行的模式下也能正常使用,所以运用起来就更加方便了。3.1什么是动态身份验证?[3]动态验证是将用户的移动设备与网站账号绑定。每次登陆用户网站,不仅需要输入登陆密码,还需输入移动设备生成的一次性动态验证码。这样,即使登陆密码泄露,攻击者由于没有用户的移动设备,仍然无法登陆用户网站,保证用户的数据安全。目前,很多云储存的网站也采用了这样的身份验证技术,都是为了同样的目的,那就是保证信息的安全。3.2为什么要使用该功能?为什么要是用这种功能?因为在现实生活中,大多数互联网用户为了方便记忆,喜欢在不同网站使用相同的账号密码。这些做法看似方便了自己,但却给不法分子有了可趁之机,一旦他们通过某个渠道获取了用户的账号密码,就可以窃取用户所有网站的个人信息。用户最为隐私的数据,一旦泄露后果不堪设想。使用动态身份验证可以比较有效防止此类事故的发生,让用户的信息变得更加安全可靠。3.3谷歌身份验证的实现原理[4]服务器端通过特定算法随机生成一个密钥,并且把这个密钥保存在数据库中。根据生成的密钥在页面上生成一个二维码,内容是一个URI地址。用户通过扫描二维码,把密钥保存在客户端。客户端每30秒使用密钥和时间戳通过一种算法生成一个6位数字的一次性密码。服务器端使用保存在数据库中的密钥和时间戳通过同一种算法生成一个6位数字的一次性密码,用户登陆时输入一次性密码与服务器端进行验证,如果一样,就登录成功了。3.4谷歌账户两步验证的工作原理[5]Google的两步验证算法源自另一种名为HMAC-BasedOne-TimePassword的算法,简称HOTP。HOTP的工作原理如下:客户端和服务器事先协商好一个密钥K,用于一次性密码的生成过程,此密钥不被任何第三方所知道。此外客户端和服务器端各有一个计数器C,并且事先将计数值同步。进行验证时,客户端对密钥和计数器的组合(K,C)使用HMAC4(Hash-basedMessageAuthenticationCode)算法计算一次性密码,公式如下:HOTP(K,C)=Truncate(HMAC-SHA-1(K,C))上面采用了HMAC-SHA-1,当然也可以使用HMAC-MD5等。HMAC算法得出的值位数比较多,不方便用户输入,因此需要截断(Truncate)成为一组不太长十进制数(例如6位)。计算完成之后客户端计数器C计数值加1。用户将这一组十进制数输入并且提交之后,服务器端同样的计算,并且与用户提交的数值比较,如果相同,则验证通过,服务器端将计数值C增加1。如果不相同,则验证失败。3.5谷歌身份验证器的安全性和优越性[6]对有些人来说,盗取用户密码比想象的更简单,以下任意一种常见操作都可能让用户面临密码被盗的风险,比如在多个网站上使用同一密码或是从互联网上下载软件或是点击电子邮件中的链接等。想像一下无法访问自己的帐户,这将是多么可怕的事情。当被别有用心的人盗取密码后,他们能让用户无法访问自己的帐户,还可以执行以下操作:翻看(甚至删除)用户所有的电子邮件、联系人、照片或冒充用户本人给用户的联系人发送垃圾邮件或有害的电子邮件或使用用户的帐户重置其他帐户(银行帐户、购物帐户等)的密码,这些都是非常危险的情况,应该想办法解决的。两步验证可以将别有用心的人阻挡在外,即使他们知道密码也无可奈何。每当登录Google时,都需要照常输入密码。然后,系统会要求输入通过手机短信、语音电话或移动应用获得的验证码。在登录过程中,用户可以指示系统在“该计算机”上不再要求输入验证码。从这时起,当用户在该计算机上登录时,系统只会要求输入密码。即便如此,用户仍将得到保护,因为当用户或其他人从其他计算机登录用户帐户时,仍然需要输入验证码。大多数用户的帐户只有密码这一道安全防线。有了两步验证,即使别有用心的人通过黑客手段攻破用户的密码防线,也还需要拿到用户的移动设备才能进入帐户。借助两步验证,用户可以通过用户知道的信息(密