安全數據傳輸

安全數據傳輸是由易衛峰發明,適用於各種網路協定數據傳輸加密等。

通用方案

安全數據傳輸 安全數據傳輸

目的:

使數據安全保密傳輸,例如防止明文數據傳輸時,被黑客截獲,所帶來的安全隱患。

適應領域:

適合各種網路協定數據傳輸加密(如身份認證,交易接口,數據加密等)各種網路協定(如http, ftp, smtp等)。尤其適合使用在網際網路 用戶登錄認證交易接口

現階段常用的方案:

使用ssh加密

建立傳輸隧道

1.

使用ssh加密

2.

建立傳輸隧道

優點:

實現簡潔,基於當前傳輸協定,數據安全傳輸。不增加任何連線埠,所以也不要修改當前的防火牆規則。

缺點:

增加網路傳輸量,系統客戶端和服務端的開銷,但很幸運的是開銷很小,也是任何一種安全措施不可避免的問題。

身份認證實現機制

1. 客戶端請求動態密鑰(DynamicKey ), 客戶端向伺服器端請求 動態密鑰( DKey )。伺服器端生成動態密鑰傳送給客戶端。動態密鑰內容格式根據需要自己設計,例如雙方支持的加密算法(MD5)、 隨機碼和密鑰有效期等,並且 在伺服器保存該動態密鑰保持形式可以是Session(推薦)、資料庫或檔案等,例如動態密鑰格式為(MD5 + 123456 + 2010/9/23/12:00:00),最簡單的形式只有一個 隨機碼

2. 客戶端提交數據, 客戶端獲得動態密鑰後,用 動態密鑰中的加密算法 加密需要傳送到伺服器的數據(如:帳號和密碼)和 隨機碼客戶端把加密好的數據傳送給伺服器 :

3. 伺服器驗證應答, 伺服器把收到的 加密好的客戶端數據和伺服器端用動態密鑰中的加密算法對伺服器端數據(如保證在資料庫的密碼)和隨機碼進行加密,生成 加密好的伺服器端數據(Server encrypted data )進行比較,相等則認證成功, 伺服器刪除動態密鑰(DKey )。一個完整的數據安全傳輸結束。

套用實例

例如WEB用戶登錄認證步驟:客戶端瀏覽器用ajax向伺服器端WEB Server發生請求 動態密鑰( DKey , WEB Server 生成DKey(隨機碼)傳送給客戶端,客戶端用特殊的加密方法加密輸入的用戶名和隨機碼得到加密信息Client_enc_name,用MD5加密輸入的用戶密碼和隨機碼得到加密信息Client_enc_pwd,然後提交給伺服器驗證。 伺服器用特殊的解密方法解密出用戶名input_name與資料庫中的用戶名db_name比較;用MD5加密數碼資料庫中的用戶密碼db_password得到加密信息Server_enc_pwd 與客戶端提交的得到加密信息Client_enc_pwd比較,比較相等則登錄成功,同時刪除 動態密鑰( DKey

註:這裡用戶名也可以不加密直接明文傳輸,但最好在客戶端用特殊的加密方法加密,在伺服器端用特殊的解密方法解密; 而用戶密碼一定要加密而且最好用MD5之類不可逆轉加密方法。

偽代碼:

Client: Request Dynamic_key

Server: Reply and Save Dynamic_key (random_num )

Client

Client_enc_name = myencode (input_name + random_num)

Client_enc_pwd = md5 (input_password + random_num)

Server:

Input_name = mydecode (Client_enc_name + random_num)

Server_enc_pwd = md5 (db_password + random_num)

If (Input_name == db_name and Client_enc_pwd== Server_enc_pwd)

Returntrue

Else

Returnfalse

EndIf

Delete Dynamic_key

註: 每種方法都有各自的優缺點,有興趣可以參考其他方式,例如Kerberos, X.509. 本人從事多年WEB開發、Unix/Linux系統開發及用戶身份認證,希望能和大家交流探討。

相關詞條

熱門詞條

聯絡我們