mangos(二)認證登錄基本流程

一、公鑰基本概念

  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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章