三方接口簽名驗(yàn)簽簡(jiǎn)易設(shè)計(jì)與實(shí)現(xiàn)

本人水平有限,對(duì)密碼學(xué)的理解相當(dāng)淺顯冯袍。錯(cuò)誤與疏漏,歡迎各位指正碾牌。

〇康愤、寫在前面

  1. 接口安全防護(hù)是個(gè)永恒的話題,提供給前端的接口需要登錄舶吗,提供給服務(wù)的接口(下文簡(jiǎn)稱"三方接口")也需要鑒權(quán)征冷;
  2. 當(dāng)前大環(huán)境下,http restful(甚至不restful)盛行,因?yàn)楹?jiǎn)單誓琼。性能上检激,額...至少比soap webservice好;
  3. 對(duì)于三方接口鑒權(quán)腹侣,規(guī)范的協(xié)議有不少呵扛,比如OAUTH2, 但完整的OAUTH2協(xié)議對(duì)客戶端有著苛刻的要求,閹割的OAUTH2協(xié)議看起來好像沒啥用(我個(gè)人這么覺得);
  4. 除了鑒權(quán)筐带,還有一個(gè)難點(diǎn)是防劫持。如果被劫持了缤灵,包括鑒權(quán)在內(nèi)的所有請(qǐng)求都不再可信伦籍;
  5. 防劫持的唯一可靠措施似乎是https蓝晒,然而總有一些網(wǎng)站沒有https,包括一些從來不會(huì)被攻擊帖鸦,但是天天報(bào)漏洞需要修復(fù)的頭疼系統(tǒng)芝薇;
  6. 即使如此,也不能破罐子破摔作儿,多加點(diǎn)防護(hù)洛二,提升點(diǎn)攻擊成本,至少一眼看起來沒啥問題攻锰。這樣就差不多了晾嘶。

一、整體設(shè)計(jì)

1.1 大體思路

  1. 服務(wù)端維護(hù)客戶服務(wù)列表娶吞,僅提供服務(wù)給已知的客戶端垒迂;
  2. 客戶端持有兩個(gè)密鑰, 一個(gè)是對(duì)稱加密的密鑰,一個(gè)是非對(duì)稱加密的公鑰妒蛇,兩個(gè)密鑰同時(shí)泄露請(qǐng)打110. 客戶端發(fā)出請(qǐng)求前机断,使用公鑰加密少量信息(例如客戶端標(biāo)識(shí)等),使用對(duì)稱密鑰加密請(qǐng)求體绣夺,最后使用加密后的請(qǐng)求體加鹽(例如兩個(gè)密鑰組合起來)生成摘要吏奸,簽名由非對(duì)稱加密后的字符串拼接摘要組成
  3. 服務(wù)端接收到請(qǐng)求后陶耍,查詢客戶服務(wù)列表獲取密鑰等信息奋蔚,對(duì)比摘要后,私鑰解密對(duì)比簽名的剩余部分物臂,最后對(duì)稱解密旺拉。

1.2 詳細(xì)設(shè)計(jì)

1.2.1 服務(wù)屬性
屬性名稱 中文釋義 備注
clientId 服務(wù)唯一標(biāo)識(shí)
clientSecret 對(duì)稱密鑰
privateKeyServer 服務(wù)端私鑰 僅服務(wù)端持有
publicKeyServer 服務(wù)端公鑰
1.2.2 客戶端處理流程

程序參與方:

  • Invoker: 調(diào)用者,即程序引用方;
  • RpcEncrypt: 程序入口棵磷;
  • Signature: 簽名接口蛾狗,客戶端簽名和服務(wù)端驗(yàn)簽等邏輯在這里實(shí)現(xiàn);
  • Digest: 摘要接口,默認(rèn)實(shí)現(xiàn)為HMAC;
  • Asymmetric: 非對(duì)稱加密接口仪媒,默認(rèn)實(shí)現(xiàn)為RSA沉桌;
  • Symmetric: 對(duì)稱加密接口,默認(rèn)實(shí)現(xiàn)為AES;
  • Storage: 存儲(chǔ)接口算吩,默認(rèn)實(shí)現(xiàn)為內(nèi)存留凭。
client_sign.png
1.2.3 服務(wù)端端處理流程
server_validate.png
1.2.4 程序設(shè)計(jì)
UML.png

二、代碼實(shí)現(xiàn)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末偎巢,一起剝皮案震驚了整個(gè)濱河市蔼夜,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌压昼,老刑警劉巖求冷,帶你破解...
    沈念sama閱讀 218,858評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件瘤运,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡匠题,警方通過查閱死者的電腦和手機(jī)拯坟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來韭山,“玉大人郁季,你說我怎么就攤上這事∏酰” “怎么了梦裂?”我有些...
    開封第一講書人閱讀 165,282評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)续搀。 經(jīng)常有香客問我塞琼,道長(zhǎng),這世上最難降的妖魔是什么禁舷? 我笑而不...
    開封第一講書人閱讀 58,842評(píng)論 1 295
  • 正文 為了忘掉前任彪杉,我火速辦了婚禮,結(jié)果婚禮上牵咙,老公的妹妹穿的比我還像新娘派近。我一直安慰自己,他們只是感情好洁桌,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,857評(píng)論 6 392
  • 文/花漫 我一把揭開白布渴丸。 她就那樣靜靜地躺著,像睡著了一般另凌。 火紅的嫁衣襯著肌膚如雪谱轨。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,679評(píng)論 1 305
  • 那天吠谢,我揣著相機(jī)與錄音土童,去河邊找鬼。 笑死工坊,一個(gè)胖子當(dāng)著我的面吹牛献汗,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播王污,決...
    沈念sama閱讀 40,406評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼罢吃,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了昭齐?” 一聲冷哼從身側(cè)響起尿招,我...
    開封第一講書人閱讀 39,311評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后泊业,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體把沼,經(jīng)...
    沈念sama閱讀 45,767評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年吁伺,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片租谈。...
    茶點(diǎn)故事閱讀 40,090評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡篮奄,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出割去,到底是詐尸還是另有隱情窟却,我是刑警寧澤,帶...
    沈念sama閱讀 35,785評(píng)論 5 346
  • 正文 年R本政府宣布呻逆,位于F島的核電站夸赫,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏咖城。R本人自食惡果不足惜茬腿,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,420評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望宜雀。 院中可真熱鬧切平,春花似錦、人聲如沸辐董。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽简烘。三九已至苔严,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間孤澎,已是汗流浹背届氢。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評(píng)論 1 271
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留亥至,地道東北人悼沈。 一個(gè)月前我還...
    沈念sama閱讀 48,298評(píng)論 3 372
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像姐扮,于是被迫代替她去往敵國(guó)和親絮供。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,033評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容