1、前言
基本上系統都會涉及與外部系統的交互,不論數據、或者業務上,這就涉及到
SDK
接口開發,假設接口由您來設計並開發,那麼如何保證整個流程的對接、安全性又如何保證呢?ok,開始今天的學習。算法
(一)SDK 介紹
SDK
即「軟體開發工具包」,通常是一些被軟件工程師用於爲特定的軟件包、軟件框架、硬件平臺、操做系統等創建應用軟件的開發工具的集合。通俗點是指由第三方服務商提供的實現軟件產品某項功能的工具包。安全
攤牌了,不裝了,直接上設計的模擬詳細的對接流程圖框架
(二)SDK 對接流程圖
看完以後,您是否基本上對 SDK
的整個兩端流程已經有了大體的瞭解了呢?工具
2、SDK 接口安全
接口安全,這是 SDK
開發者最擔憂的問題了,畢竟 SDK
平臺若是是暴露互聯網,安全不考慮,平臺坐着等着癱瘓吧,做爲 SDK
設計及開發者,你們確定會問:學習
- 您的接口安全嗎?
- 您的接口數據傳輸安全,會不會數據泄露?業務數據會不會篡改?
- 您的接口時效性如何保證?
基於以上的靈魂拷問,我們就來好好設計下 SDK
,廢話不說往下走。開發工具
- 接口安全採用非對稱的加密算法
RSA
進行簽名,保證接口的完整性安全。- 接口數據安全採用對稱加密算法
AES
對業務數據進行加密,密文傳輸。- 時效性採用每次請求時間戳保證接口的有效請求。
(一)簽名算法
簽名流程:
1.對參與AES加密的業務參數數據序列化爲JSON字符串,而後對其進行AES加密。獲得data參數。
【AES加密模式:CBC 填充:PKCS7 數據塊:128位 輸出:base64 字符集:UTF-8】
2.而後對非code、msg、sign、可空字段空值之外的全部參數字母ASCII碼排序「&」鏈接,進行RSA簽名,獲得sign參數。
編碼注:data、sign須要url編碼後傳輸。加密
在返回結構的狀態屬於200時,再進行驗籤流程。
驗籤流程:
先對返回結果進行RSA驗籤,獲得AES密文,先根據接口版本號,時間戳驗證接口有效性、時效性,再對AES密文進行解密,獲得返回明文業務數據JSON字符串。
url注:data、sign須要url解碼spa
3、工具
工欲善其事,必先利其器
站在巨人的肩膀上作事。
RSA
公私鑰生成工具。- 採用
OpenSsl
工具生成RSA
公私鑰。 - 【推薦】螞蟻金服也基於
OpenSsl
二次封裝好的RSA
公私鑰生成工具,下載地址:https://docs.open.alipay.com/291/106097/。
- 採用