mangos(二)认证登录基本流程

来源:互联网 发布:centos 软件选择 编辑:程序博客网 时间:2024/05/16 15:19

一、公钥基本概念

  1. 举个简单的例子就很清楚了,就好象例子中的任何人都知道用钱币(公钥)锁上存物箱,但仍然打不开存物箱。只有拥有钥匙或写有号码的纸条(私钥)的人才能打开存物箱。

    上面的例子还有点问题,实际中私匙一般只有通信的解密方才知道,加密的人都不知道。

    在举个例子:
    (2^3) mod 11 =8
    (8^7) mod 11= 2
    在这里2是明文8是密文。
    加密密钥是3解密钥匙是7,加密和减密钥匙不一样。

    这里2可以是用户密码,3为公钥,7是服务器端的保留的私钥(十分重要)。 这样
    假设是A,和B
    只要满足(A*B+1) mod 11 =0 就可以了。
    这是简单的例子。如果把11变的很大。
    知道B是算不出A来的。
    简单说,就是这个道理

  2. 公匙的应用不仅仅是加密,还可以是签名。需要签名的人先把自己个公司告诉别人,发信息的时候用自己的私匙加密(别人不知道,否则可以用你的名义发各种消息)。这条信息就有了你自己的“签名”。因为只有你的公匙能够解密该私匙,而你的公匙早就公布过了。

  3. 相对于对称加密,不对称加密往往需要运算量大。

二、mangos登录流程

  1. SRP算法
    登录验证使用了这算法,Secure Remote Password(安全远程密码),它是一个开放源代码认证协议。这个算法比较复杂,有点类似于公匙,服务器发送给客户端几个参数,有公匙,还有随机数(这个特别重要),和其他参数。有了随机数那么字典破解的方法难度就几何级别增长了。客户端根据发送过来的一堆参数,和自己发送的明文,运算出一个值,发送给服务器,服务器根据私匙,自己发的随机数和一些乱起八糟的参数和数据库中已经保存的明文(或明文的等价),也计算一个值,比较是否相等。如果相等就算验证成功。同时运算过程中双发都产生一个相等的值K。这个K后来用作认证后的对称加密。

  2. 大致看了下基本流程,分配了专门的认证登录服务器,登录服务器使用公钥算法验证client的合法性,计算sessionkey并保存在MySQL里,以备后面的逻辑服务器使用。验证通过后,把逻辑服务器列表发给client。然后client请求特定的逻辑服务器,服务器发送消息再次请求身份认证使用对称加密,计算sha1值。(带着一个随机数,一个第一次生成的SessionK,还一些其他算法参数)注意这里计算sha1加密结果没有直接使用明文的密码,而是用了上一次公匙验证过程中生成的一个K。然后后面的通信都是使用K进行对称加密通信。

    代码里主要都是加密的逻辑运算就没有在分析。

参考:

http://www.cnblogs.com/ychellboy/archive/2011/10/30/2229509.html
http://srp.stanford.edu/design.html

0 0
原创粉丝点击