我們用服務每一個客戶

Our intention to service each customer

誠實 守信 專業 專注

意甲足球直播间:常見的幾種數據加密與應用場景

We will do our best to provide you with better service!

起因

 意甲冠军次数排行 www.pfseo.icu 
最近被一個同事問到,在網絡交互中,那部分數據需要被加密那一部分不需要被加密。我覺得這個問題有點太泛了,所以給他科普了一次常見的數據加密與應用場景的課。突然間覺得這個還挺有教育意義的。所以我還是吧這個記錄一下吧。

啊,年輕犯下的錯

當初我們給某個建站平臺做手機客戶端的時候就沒有考慮這些事情,現在想想被攻擊實在是太簡單了。我們當初做的內容其實根本就沒有數據加密的防護,所有的內容都是公開的。尷尬尷尬。

前一段時間的釣魚Wifi是怎么做的

我想講明白這件事情,你首先得了解一下DNS究竟是怎么工作的。作為一篇數據加密的文章呢,我就不做太多的DNS的介紹,這類介紹應該很多。簡單點說,就是通過URL轉換為IP的一個步驟。很多時候,連接網絡之后,如果你不特殊設置,會遵循路由給你的推薦設置。比如下圖,就是我電腦的截圖。

當我訪問網絡的時候,比如說www.taobao.com那么瀏覽器會首先查詢這個地址的IP是啥。中間的查詢過程就不描述了,一般會詢問道上圖中的10.8.8.8這個服務器中,然后返回淘寶的正確IP地址,然后發起協議,獲取網頁數據。然后展示出來網頁。當然這個是正常情況下,如果DNS告訴你的網址并不是正常的網址,比如說有人寫的跟淘寶一毛一樣的一個網站你也渾然不知道。如果你在他們網頁上輸入了賬號密碼,然后提交的話。實際上就把這個消息發送給了這個網站的制作者,達到了釣魚的目的。對付小白用戶這樣肯定是一來一個準,不過大部分人在進入這個系統之后就會發現貓膩了,比如說登陸了很多次,明明賬號密碼都是對的卻登陸不上,進入系統之后發現數據不對,比如說,我之前買的東西居然沒有之前訂單了。一般人就會警覺可能被釣魚了。然后修改密碼。這樣釣到賬號密碼就已經失效了。

怎么來做一個簡單高效,不容易被發現的釣魚Wifi

怎么叫做個簡單呢?就是我不用去架設各式各樣的假網站,我可以直接截獲真網站的各條網絡協議。當然了如果路由器支持這是非常方便的事情。不過我對于這種事情并沒有設么研究,咱是一個程序員。咱們考慮的當然是怎么用咱的程序解決這個問題。比如說通過反向代理某些網站,比如說反向代理淘寶。你訪問我的代理跟你直接訪問淘寶是一樣的結果。然后我在我的代理上綁定淘寶的域名。當然了,這樣做一般是沒有效果的,因為訪問淘寶的請求不會到我這邊來,因為DNS解析并不是指向我的。但是如果這個路由器是我的,那么,我就可以讓訪問淘寶的請求指向我。這樣一來,我就建設好了一個域名是淘寶內容也是淘寶的代理服務器,我就能拿到你所有的網絡請求。這只是一個架構設想,千萬別拿來做壞事,咱們只討論技術。其實就是網絡請求的截取,我們也只是簡單的討論這一種還有很多很多請求截獲手段,我們就不討論了。

怎么進行攻擊防御

這個命題就變成了

怎么讓攻擊者拿到你的網絡請求,卻沒有什么用

起因中也介紹了,這是一個跟一個同事討論引起的帖子,那么,我先貼上他當時回答。他說數據加密就可以了呀??墑鞘菁用芊趾芏嘀盅?,你覺得那種數據加密在這個場景下會奇效呢?他說MD5(不可逆加密)、對稱加密、非對稱加密。實際上這個地方只有一種數據加密是有效的。來,讓我們來分析一下哪個是有效的。

MD5

在用戶密碼的處理中這是一種非常常見的處理方式。但是在登陸場景下這種數據加密方式并不常用。如果使用MD5來進行登錄,一般情況需要將用戶密碼 + 當前時間分鐘戳,然后算出一個密文提交給服務器,服務器拿到信息之后,將密碼 + 當前時間和當前時間的前后各一分鐘算出三個結果。如果客戶端提交的數據在三個數據之中,那么就登陸成功,否則就登陸失敗。不過這種用法比較局限性。如果你想連用戶名都隱去,這種方式是做不到的。

對稱加密

首先得了解對稱加密是什么,對稱加密是加密解密用同一個密鑰。前端在加密的時候,你肯定要在前端輸出一邊明文密鑰。那么傳送的是什么。找到你的密鑰之后,你傳送的數據不論是什么都可以直接進行解密。

非對稱加密

這才是正規改用的方式,在服務器上公開公鑰??突Ф?、Web頁面拿到公鑰之后。將內容加密,然后傳送給服務器,服務器進行數據解密。這樣的話,就算是被人拿到你的信息,也不怕你的數據泄露了。因為沒有地方公開私鑰,只有服務器自己知道。這樣你的賬號密碼就可以得到有效的?;?。

那么加密的時候,我都需要怎么處理呢?

或許你會這么想,如果我數據都要加密那得多累?服務器能夠受的了嗎?如果只是登陸部分進行加密,那么其他的連接信息怎么保證用戶信息不背泄露呢?會不會存在特殊情況呢?這幾種加密方式都什么時候會用的到呢?

舉個例子

登陸

前面我們已經講過了,有兩種實現方式MD5+時間戳?;蛘叻嵌猿剖羌用芊絞?。

注冊

這個恐怕只能用非對稱加密算法了。因為你得讓服務器知道賬號密碼的原始內容,卻不能讓截獲者知道。

其他需要身份認證的協議

一般情況下,我們的身份認證是通過一個Token(其實這個東西不一定存在什么地方,有的時候是放到Body里邊的有的時候是放到Cookie的,有時候是放到Head里的,放到什么地方不重要,關鍵是他的意義)來做的。那么?;ず謎飧鯰oken就非常重要了,因為你的Token一旦被別人抓到了。那么你的消息也就泄露了。其實這個比用戶名、密碼來的還要更加麻煩一些。因為用戶名密碼你需要拿到原始明文才算數。但是Token不一樣。他直接使用密文也是一樣的,因為服務器解密之后會發現你上傳來的數據是對的。關于這個,有幾種方式來處理來讓Token失效,這個一會我們在講。

其實聊天中也比較常用

其實非對稱式加密,聊天的過程中用的更多。你想,你的聊天不希望其他人看到的吧。因為畢竟這個是你的隱私呀。所以一般是兩個客戶端互持對方公鑰,然后發送消息。不過如果傳送對象是一個群,你需要發送消息給每個人。如果這個群里邊有200個人,那么你需要將內容壓縮成200種密文然后發送嗎?那也忒費勁了。好在我們還有對稱加密,我們可以首先使用非對稱加密的方式,將對稱加密的密鑰發送給個個人,然后將內容通過對稱加密加密,然后發送給個個人,讓他們用之前的對稱加密的密鑰解密,就可以完美的解決這個問題。當然了,對于大點的內容也是一樣的。因為非對稱加密的性能是比不上對稱加密的。

日防夜防,家賊難防

其實很多時候,自己人是比較難搞的。比如說密碼的問題吧。早期的網站很多時候,賬號密碼就是明文的(安全意識不強,當然了早期嘛,誰都會犯錯)。這個時候運營打開自家數據庫。那么所有的賬號密碼那是一覽無余呀。這種時候只能靠運營的節操來保證數據不會被偷了。就算是運營不會自己偷這部分數據。但是你要知道,總有一些黑客能夠偷偷溜進服務器,偷了一塊數據庫。如果你有加密(不可逆加密)的話,就算拿到數據庫也是沒有什么用的,因為密碼那一欄被干掉了。這樣保證最起碼,賬號密碼不會同時被盜?;八滴業乃姓撕琶藶攵薊舊鮮且惶?,一套掉了,基本上全套都得換,這是意見非??植賴氖慮?。(因為場景用的多了,難免會有一些你想不到,沒有去改的,卻給你帶來比較嚴重的后果)

怎么讓Token失效

服務器端更換密鑰

因為密鑰更換了,所以所有的加密使用原來公鑰加密的數據都會失效。所以可以達到更換Token的目的。不過這樣的確定十分明顯,因為你是在同一個時間點上換的,所以所有數據都會失效,然后重新拉取憑證。這個時候服務器壓力應該會很大。再一個就是沒什么用,因為攻擊者可以在失敗之后直接獲取一個新的有效Token就可以了。

客戶端服務器數據協同

就是讓服務器跟客戶端數據保持時間上的一致性,一般情況下要求保持分鐘數據相同就可以了。這樣客戶端算出來自己的Token + 時間分鐘戳的密文,然后發送給服務器。服務器接收到密文不需要解密(因此這種是使用不可逆加密算法更為靠譜),直接算出三個結果 (Token + 當前時間和Token + 當前前后各一分鐘的時間)判定用戶上傳的數據是否屬于這三個之一,如果是屬于就通過,不屬于就不通過。

客戶端的每一個Token都是不一樣的

客戶端(或者Web網頁)用自己的Token + 當前的時間戳(假定不會再同一時間上有多個請求,時間戳可以定的單位更小一些或者進行排隊)生成一個密文,然后發送給服務器。服務器拿到密文之后解密,獲取并驗證Token如果Token通過了就看時間戳是不是在上一個時間戳之后。如果不是在上一個時間戳之后,那么就驗證失敗好了。

Copyright © 2009-2017 仙桃云科網絡科技有限公司 (意甲冠军次数排行 www.pfseo.icu) All Rights Reserved.
鄂ICP備12009831號-1
  • 在線咨詢

  • 在線咨詢:
  • 仙桃網站建設
  • 仙桃網站運營
  • 仙桃SEO推廣
  • 電話:

  • 13047143144
  • 13047143144
利赢棋牌游戏送10元 我玩龙虎输了100万 北京塞车全天计划精准版 北京时时骗局 11选5免费计划软件华军 幸运飞艇倍投靠谱吗 重庆时时官网开奖结果 七乐彩中奖图表 雷速体育比分直播 江西老时时开奖直播 有重庆时时彩预测龙虎 金殿国际棋牌 百人炸金花怎么赢 2018棋牌游戏二八杠 带你回血的导师是真的 最准的平特一肖图好跑狗图