日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

移动客户端与服务器端安全通信方案

發布時間:2024/4/17 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 移动客户端与服务器端安全通信方案 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

公鑰加密私鑰解密是密送,保證消息即使公開也只有私鑰持有者能讀懂。

私鑰加密公鑰解密是簽名,保證消息來源是私鑰持有者。

數字簽名只能驗證數據的完整性,數據本身是否加密不屬于數字簽名的控制范圍

CS

C客戶端,S服務器端

在客戶端軟件發布前,客戶端保存一個公鑰,服務器保存一個私鑰;客服端and服務器都保存一個固態key : solid_key

步驟1:

客戶端隨機生成一個對稱密鑰,稱為動態key : dynamic_key,使用公鑰加密內容(dynamic_key+賬戶+密碼+其他需要的參數)。發送給服務器

步驟2:

服務器收到后使用私鑰解密,并驗證用戶和密碼是否正確,正確的話保存此dynamic_key在用戶的信息中(如果原先已經有了dynamic_key就替換掉舊的); 返回數據:包括客戶端登錄成功的信息,返回一個Token(令牌,以后見牌如見人)和其他需要返回的參數(傳輸過程中不攜帶uid,用token標識用戶唯一身份,更安全)。

步驟3:

使用本地保存的dynamic_key解密得到token和其他參數。 安全傳輸準備工作做完了。

步驟4:

每次傳輸數據對于加密的內容一律使用dynamic_key進行加密,按照協商好的簽名規則進行簽名signature(需要dynamic_key參與到簽名規則中,以保障安全),并附以明文參數token、明文參數signature、密文參數params這三部分,然后把此內容發送給服務器。

signature = sha1(rawData + dynamic_key),服務器利用用戶對應的 dynamic_key 使用相同的算法計算出簽名 signature2 ,比對 signature 與 signature2 即可校驗數據的完整性。 (貌似在數據全部加密的情況下,不需要簽名的)

步驟5:

根據token找到保存的dynamic_key,然后進行解密(dynamic_key僅僅用來解密,對于解密的內容無法驗證),然后根據簽名規則驗證簽名;查看token是否匹配,如果匹配的話那么此次請求就是有效的,否則無效,需要重新登錄;如果驗證簽名失敗,直接返回錯誤。

更新公鑰通知服務

服務器端首先需要用原來的私鑰簽名,客服端有原來的公鑰驗證簽名,如果簽名通過,客服端方可更新公鑰;簽名不通過,需要重新下載最新客戶端安裝包(包含新的公鑰);

如果被網絡截獲,還需要知道固態key,才能夠修改客戶端本地公鑰

優點:

安全性,除非入侵服務器拿到私鑰,或者破解久經考驗的非對稱加解密算法,沒有其他辦法大規模攻破,相比其他單純使用對稱加密和非對稱加密方法效果都要好。

缺點:

用戶第一次握手驗證時使用非對稱加密的內容,服務器非對稱解密消耗資源比較多,如果攻擊者發送大量此類信息,容易導致服務器DDoS攻擊。個人覺得暫時無法從根本上避免這個問題的發生,只能夠加上一些措施增加其難度,從而過濾掉一部分攻擊者,具體措施有很多種,比如自己軟件寫個加密算法,服務器會根據解密算法進行計算從而驗證是否有效,再比如android的話把這些算法寫在jni層,增加反編譯破解的難度。

其他

下表解決“根據token獲取對應用戶uid”在redis中如果做持久存儲的話,token失效無法被有效清除,導致占用內存的風險;

CREATE TABLE `lee_user_token` (`uid` int(11) NOT NULL DEFAULT '0' COMMENT '用戶UID',`token` char(36) NOT NULL COMMENT 'uuid 生產的36位字符串',PRIMARY KEY (`uid`),UNIQUE KEY `i_token` (`token`,`uid`) USING BTREE ) ENGINE=MEMORY DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='這里只是存儲 token 與 uid 的映射關系,不做登錄過期有效性判斷';

參考信息:

  • http://segmentfault.com/q/1010000000156701
  • http://baike.baidu.com/view/356572.htm
  • http://baike.baidu.com/view/1982056.htm#2
  • http://www.dewen.org/q/2005
  • https://mp.weixin.qq.com/debug/wxadoc/dev/api/signature.html

轉載于:https://my.oschina.net/leeyisoft/blog/1828736

總結

以上是生活随笔為你收集整理的移动客户端与服务器端安全通信方案的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。