安全登陆认证

用户登陆是任何一个应用系统的基本功能,特别是对于网上银行系统来讲,用户登陆的安全性尤其重要。如何设计一个网站的安全登陆认证程序,是本文主要讨论的问题。html

  静态密码存在着比较多的安全隐患,攻击者有不少手段得到静态密码,管理密码也具备较高的成本,我在前文《中国网上银行系统安全性分析》中曾经论证过,使用硬件安全产品“动态密码锁”或者“USB Key”能够较好的解决这个问题,可是会带来加密锁的成本,在不增长硬件成本的状况下,咱们也能够经过一些设计上的技巧和措施在必定程度上来保证登陆者的身份。算法

  1、客户端和服务器端的安全数据库

  客户端的安全,主要是用户密码自己的安全性(密码长度和复杂性等)以及用户电脑的安全性,包括用户电脑没有安装黑客木马软件,登陆程序没有被第三方程序加载调试,用户录入框组织键盘Hook程序等等,经过一些代码便可解决。安全

  服务器端的安全,包括服务器自身的安全(系统漏洞等等)以及程序设计上的安全,我这里主要讲一下程序设计上的安全。最基本的问题是,用户的密码不该该直接保存在服务器的数据库上,也不该该将密码用单钥算法加密后保存,最基本的认证方式是经过单向散列函数对密码进行认证。在《软件加密技术和注册机制》一文中介绍了一些单向散列函数能够实现简单的认证。目前大多数网站都使用MD5函数进行登陆认证,不过我推荐使用安全性更高的SHA1散列函数来进行登陆认证。服务器

  2、网络传输上的安全网络

  目前的网络协议经过HTTP协议进行通信,存在很大的安全隐患,黑客能够经过SNIFFER工具进行抓包分析网络数据包,所以用户名和密码的传输应该使用非明文的方式传输,这里就用到了“公开密钥密码”的概念。函数

  学过基本的“密码学”的人都应该知道“公开密钥算法(也叫非对称算法、双钥算法)”这个概念,即用做加密的密钥不一样于用做解密的密钥,并且解密密钥不能根据加密密钥计算出来。工具

  加密的传输过程分为两部分,一部分为身份认证,用户鉴别这个用户的真伪;另一部分为数据加密,用于数据的保密。这两部分功能都须要用到非对称加密技术。网站

  首先是身份认证,通信的数据能够这样进行处理,将用户的信息(用户名、密码等)用该用户的私钥进行加密,而后再进行传输,而在服务器端会保存此用户的公钥,用此用户的公钥对传过来的信息进行解密,就能够获得正确的明文,这样就完成了一次安全的网络通信。加密

  通信过程的示例以下图所示,Alice用本身的私钥对明文进行加密后传输到服务器,服务器上的用户(例如Bob)拥有不少用户的公钥,所以使用Alice的公钥对密文进行解密,若是密钥正确的话,就能够解密出明文,也就完成了对Alice的身份认证。

公钥认证过程

  而后是数据加密,数据加密和数据认证正好相反,使用接收方的公钥对数据进行加密,传输的过程当中,即便数据被黑客截获,也没法使用这些密文,接收方收到密文后,用本身的私钥对密文进行解密,从而完成了一次数据的加密传输。

  通信过程的示例以下图所示,Alice须要发给Bob一段加密的信息,所以Alice就用Bob的公钥对明文进行加密后传输给Bob,Bob收到信息后,使用本身的私钥对密文进行解密,就能够解密出明文,也就完成了对Alice的发来密文的解密过程。

公钥加密的过程

  目前的公开密钥算法主要有RSA和ECC,RSA是比较老的算法,基于大质数分解,速度较慢,ECC(椭圆曲线)是最新的公钥加密算法,基于离散对数计算,速度比RSA快,安全性听说更高一些。

  固然,上面的所说的技术只是最为基本的身份认证技术,只是适合通常网站应用,对于电子商务和银行来讲须要更为复杂和权威的安全认证系统。目前比较流行的是PKI技术。PKI(Public Key Infrastructure)是一种新的安全技术,它由公开密钥密码技术、数字证书、证书发放机构(CA)和关于公开密钥的安全策略等基本成分共同组成的。PKI技术已经被普遍应用于电子政务和电子商务,被证实是保证基于互联网的电子政务和电子商务安全的最佳解决方案。完整的PKI建设须要大量的资金和人力才能完成,这里就很少介绍了。

相关文章
相关标签/搜索