如何建立安全的傳輸通道

0x00 完整思路

大家都知道,在客戶端與服務(wù)器數(shù)據(jù)傳輸?shù)倪^程中,采用明文進行傳輸集峦,是不安全的。那么如何建立安全的傳輸通道進行傳輸數(shù)據(jù)呢抠刺?

1.添加時間戳 => 防止重放 √
2.用對稱加密傳輸數(shù)據(jù)內(nèi)容 => 通道加密 √
3.用非對稱加密傳輸對稱加密的密鑰 => 加密傳輸密鑰 √
4.用數(shù)字證書傳輸非對稱加密的公鑰 => 防偽造 √


0x01 時間戳:防止重放攻擊

重放攻擊是計算機世界黑客常用的攻擊方式之一塔淤,所謂重放攻擊就是攻擊者發(fā)送一個目的主機已接收過的包,來達到欺騙系統(tǒng)的目的速妖,主要用于身份認證過程高蜂。為了確保每次請求都是一次性的,可采用timestamp + nonce的模式罕容。

實現(xiàn)方法

  • timestamp:一次正常的請求备恤,從發(fā)出到接收一般不會超過30秒。通過將時間戳與明文加密后一起傳輸锦秒,接收方解出時間戳后判斷是否超過30秒露泊,超過則認為非法。

    • 優(yōu)點:無需儲存旅择;
    • 缺點:無法抵御短時間內(nèi)的重放攻擊惭笑,即無法確保短時間內(nèi)的每次請求都是一次性的。
  • nonce:一次有效的隨機字符串生真,要求每次請求時沉噩,將時間戳+ip地址+mac地址等信息生成哈希值,作為nonce參數(shù)柱蟀。接收方會存儲每次的nonce參數(shù)川蒙,若識別到nonce參數(shù)已存在,則認為非法长已。

    • 優(yōu)點:真正實現(xiàn)每次請求都是一次性的派歌;
    • 缺點:存儲空間會越來越大弯囊,即無法確保長時間的一次性校驗。
  • nonce+timestamp:nonce可以解決timestamp短時間內(nèi)的一次性問題胶果,timestamp可以解決nonce的存儲越來越大的問題(即只存儲短時間內(nèi)的nonce參數(shù))匾嘱。

    • nonce存儲的清理:
      • 每次校驗前判斷nonce存儲最后修改時間,超過閾值則清理早抠。(適用低并發(fā))
      • 每隔固定時間霎烙,清理一次。
      • 若接口每秒最多并發(fā)1000次蕊连,時間限制30秒悬垃,則可在校驗后判斷nonce數(shù)量是否超過1000*30=30000個,超過則清理甘苍。(適用高并發(fā))
    • 優(yōu)點:短時間由nonce確保一次性尝蠕,長時間由timestamp確保一次性

安全風(fēng)險:傳輸?shù)膬?nèi)容易被竊取或篡改。


0x02 對稱加密:加密傳輸?shù)臄?shù)據(jù)

通過對傳輸?shù)臄?shù)據(jù)內(nèi)容進行加密载庭,使得中間人無法解析數(shù)據(jù)內(nèi)容看彼,就可以提升數(shù)據(jù)傳輸?shù)陌踩浴?/p>

加密的方法

  • DES:一種對稱密鑰加密塊密碼算法,以64位為分組對數(shù)據(jù)加密囚聚,它的密鑰長度是56位靖榕,加密解密用同一算法;DES現(xiàn)在已經(jīng)不是一種安全的加密方法顽铸,主要因為它使用的56位密鑰過短茁计。

  • AES:高級加密標準,是美國聯(lián)邦政府采用的一種區(qū)塊加密標準谓松。AES的區(qū)塊長度固定為128比特星压,密鑰長度則可以是128,192或256比特鬼譬。AES是一種分組加密算法租幕,其模式又分為:

    • ECB(ElectronicCodebook,電子密碼本)
      方法:將整個明文分成若干段相同的小段拧簸,然后對每一小段進行加密劲绪。
      優(yōu)點:簡單、可并行計算盆赤、誤差不傳遞
      缺點:不能隱藏明文模式(比如圖像加密輪廓仍在)贾富、可能對明文進行主動攻擊(改明文,后續(xù)內(nèi)容不影響)
      風(fēng)險:ECB不需要初始向量(IV)牺六,因此在于輸入和輸出存在非常明顯的關(guān)聯(lián)颤枪,攻擊者可以從輸出輕松地猜出輸入數(shù)據(jù)。

    • CBC(Cipher Block Chaining淑际,密碼分組鏈接)
      方法:先將明文切分成若干小段畏纲,然后每一小段與初始塊或者上一段的密文段進行異或運算后扇住,再與密鑰進行加密。
      優(yōu)點:不容易主動攻擊(誤差傳遞)盗胀、適合長報文傳輸
      缺點:無法并行艘蹋、誤差傳遞、初始化向量IV的選取比較復(fù)雜
      初始化IV的選取方式:固定IV票灰,計數(shù)器IV女阀,隨機IV(只能得到偽隨機數(shù),用的最多)屑迂,瞬時IV(難以得到瞬時值)
      用途:長報文傳輸浸策,是SSL、IPSec標準

    • CFB(CipherFeedback惹盼,密碼反饋)
      方法:首先通過加密器加密iv生成密鑰流(key stream)庸汗;然后將密鑰流和明文異或得到密文。第二次手报,將第一次得到的密文通過加密器加密得到新的密鑰流蚯舱,然后把第二次要加密的明文和密鑰流進行異或生成密文......如此類推,最終得到密文昧诱。
      優(yōu)點:不容易主動攻擊(誤差傳遞),隱藏了明文模式所袁,分組轉(zhuǎn)變?yōu)榱髂J秸档担杉用苄∮诜纸M數(shù)據(jù)
      缺點:無法并行、誤差傳遞燥爷,唯一的IV

    • OFB(OutputFeedback蜈亩,輸出反饋)
      方法:先用塊加密器生成密鑰流(Keystream)斑芜,然后再將密鑰流與明文流異或得到密文流铸敏;解密是先用塊加密器生成密鑰流,再將密鑰流與密文流異或得到明文柏副。由于異或操作的對稱性所以加密和解密的流程是完全一樣的港华。
      優(yōu)點:隱藏了明文模式道川,分組轉(zhuǎn)為流模式、可加密小于分組數(shù)據(jù)
      缺點:無法并行立宜,可能對明文進行主動攻擊
      用途:通信信道質(zhì)量不高時使用冒萄,比如衛(wèi)星通信

    • CTR(Counter,計數(shù)器模式)
      方法:完全的流模式橙数。將瞬時值與計數(shù)器連接起來尊流,然后對此進行加密產(chǎn)生密鑰流的一個密鑰塊,再進行XOR操作 灯帮。
      優(yōu)點:不泄露明文崖技,并行逻住、一次一密、僅需實現(xiàn)加密函數(shù)迎献,無需填充
      缺點:可能對明文進行主動攻擊瞎访,使用重復(fù)瞬時值會泄露所有信息。

安全風(fēng)險:初次交互需要交換密鑰忿晕,若交換過程中無保護措施装诡,可能會泄露密鑰。


0x03 非對稱加密:傳輸對稱加密的密鑰

非對稱加密存在公鑰和密鑰践盼,用公鑰加密的數(shù)據(jù)鸦采,只有對應(yīng)的私鑰才能解密;用私鑰加密的數(shù)據(jù)咕幻,只有對應(yīng)的公鑰才能解密渔伯。因此,A傳輸密鑰給B的過程中肄程,A先用B的公鑰加密密鑰锣吼,B收到后再用自己的私鑰解密得到密鑰。反之亦然蓝厌,這樣雙方可安全地傳輸密鑰玄叠。

加密方法

  • RSA:RSA算法基于一個十分簡單的數(shù)論事實:將兩個大質(zhì)數(shù)相乘十分容易,但是想要對其乘積進行因式分解卻極其困難拓提,因此可以將乘積公開作為加密密鑰读恃。RSA是目前最有影響力和最常用的公鑰加密算法,它能夠抵抗到目前為止已知的絕大多數(shù)密碼攻擊代态,已被ISO推薦為公鑰數(shù)據(jù)加密標準寺惫。RSA算法理論可以參考:RSA算法理論

為何不用RSA直接傳輸數(shù)據(jù):RSA的解密速度太慢

  • AES加密1M數(shù)據(jù),需要0.16秒蹦疑;密文體積是明文的2倍西雀;解密時間是加密時間的兩倍0.33秒;
  • RSA加密1M數(shù)據(jù)歉摧,需要5秒艇肴;密文體積與明文相同;解密時間需要325秒叁温;
  • AES加密1G數(shù)據(jù)豆挽,需要4分鐘;密文體積是明文的2倍券盅;解密時間是加密時間的兩倍帮哈;
  • RSA加密1G數(shù)據(jù),需要1分鐘锰镀;密文體積與明文相同娘侍;解密時間需要65小時咖刃;

安全風(fēng)險:公鑰不可信,無法保證公鑰就是對方發(fā)送的憾筏。


0x04 數(shù)字證書:傳輸可信公鑰

數(shù)字證書是一個經(jīng)證書授權(quán)中心數(shù)字簽名的包含公開密鑰擁有者信息以及公開密鑰的文件嚎杨。

加密方法
1.把公鑰和識別信息用Hash算法生成消息摘要;
2.為防止冒充氧腰,用認證中心(CA)提供的私鑰加密消息摘要枫浙,生成數(shù)字簽名;
3.將公鑰古拴、識別信息箩帚、數(shù)字簽名合在一起形成數(shù)字證書;

驗證方法
1.用認證中心(CA)提供的公鑰解密數(shù)字證書中的數(shù)字簽名黄痪,得到消息摘要A紧帕;
2.用Hash算法,生成數(shù)字證書中公鑰和識別信息的消息摘要B桅打;
3.校驗消息摘要A和消息摘要B是否一致是嗜;

流程圖如下

數(shù)字證書

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市挺尾,隨后出現(xiàn)的幾起案子鹅搪,更是在濱河造成了極大的恐慌,老刑警劉巖遭铺,帶你破解...
    沈念sama閱讀 221,548評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件丽柿,死亡現(xiàn)場離奇詭異,居然都是意外死亡掂僵,警方通過查閱死者的電腦和手機航厚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評論 3 399
  • 文/潘曉璐 我一進店門顷歌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來锰蓬,“玉大人,你說我怎么就攤上這事眯漩∏叟ぃ” “怎么了?”我有些...
    開封第一講書人閱讀 167,990評論 0 360
  • 文/不壞的土叔 我叫張陵赦抖,是天一觀的道長舱卡。 經(jīng)常有香客問我,道長队萤,這世上最難降的妖魔是什么轮锥? 我笑而不...
    開封第一講書人閱讀 59,618評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮要尔,結(jié)果婚禮上舍杜,老公的妹妹穿的比我還像新娘新娜。我一直安慰自己,他們只是感情好既绩,可當我...
    茶點故事閱讀 68,618評論 6 397
  • 文/花漫 我一把揭開白布概龄。 她就那樣靜靜地躺著,像睡著了一般饲握。 火紅的嫁衣襯著肌膚如雪私杜。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,246評論 1 308
  • 那天救欧,我揣著相機與錄音衰粹,去河邊找鬼。 笑死颜矿,一個胖子當著我的面吹牛寄猩,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播骑疆,決...
    沈念sama閱讀 40,819評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼田篇,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了箍铭?” 一聲冷哼從身側(cè)響起泊柬,我...
    開封第一講書人閱讀 39,725評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎诈火,沒想到半個月后兽赁,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,268評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡冷守,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,356評論 3 340
  • 正文 我和宋清朗相戀三年刀崖,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片拍摇。...
    茶點故事閱讀 40,488評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡亮钦,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出充活,到底是詐尸還是另有隱情蜂莉,我是刑警寧澤,帶...
    沈念sama閱讀 36,181評論 5 350
  • 正文 年R本政府宣布混卵,位于F島的核電站映穗,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏幕随。R本人自食惡果不足惜蚁滋,卻給世界環(huán)境...
    茶點故事閱讀 41,862評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧辕录,春花似錦澄阳、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,331評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至速梗,卻和暖如春肮塞,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背姻锁。 一陣腳步聲響...
    開封第一講書人閱讀 33,445評論 1 272
  • 我被黑心中介騙來泰國打工枕赵, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人位隶。 一個月前我還...
    沈念sama閱讀 48,897評論 3 376
  • 正文 我出身青樓拷窜,卻偏偏與公主長得像,于是被迫代替她去往敵國和親涧黄。 傳聞我的和親對象是個殘疾皇子篮昧,可洞房花燭夜當晚...
    茶點故事閱讀 45,500評論 2 359