回覆列表
  • 1 # 不靠譜技術

    在上網獲取資訊的過程中,我們接觸最多的資訊加密傳輸方式也莫過於 HTTPS 了。每當訪問一個站點,瀏覽器的位址列中出現綠色圖示時,意味著該站點支援 HTTPS 資訊傳輸方式。HTTPS 是我們常見的 HTTP 協議與某個加密協議的混合體,也就是 HTTP+S。這個 S 可以是 TLS(安全傳輸層協議)、也可以是 SSL(安全套接層),不過我更認可另一個抽象概括的說法,HTTP+Security。

    首先,HTTPS並不是這種加密技術的正式名稱,HTTPS代表的是“在TLS/SSL上實現的HTTP協議”,因此實現加密的其實是位於HTTP下面的TLS/SSL層。

    我們看看TLS/SSL所實現的幾個主要機制:

    1. 證書:透過第三方權威證書頒發機構(如VeriSign)驗證和擔保網站的身份,防止他人偽造網站身份與不知情的使用者建立加密連線。

    2. 金鑰交換:透過公鑰(非對稱)加密在網站伺服器和使用者之間協商生成一個共同的會話金鑰。

    3. 會話加密:透過機制(2)協商的會話金鑰,用對稱加密演算法對會話的內容進行加密。

    4. 訊息校驗:透過訊息校驗演算法來防止加密資訊在傳輸過程中被篡改。

    透過上述機制,使用者與網站之間的傳輸內容受到了保護,因此能夠獲得很高的安全性。不過,任何密碼學手段都不是絕對安全的,上面幾個機制中其實都存在可能的風險:

    1. 證書:如果有人偽造證書,瀏覽器會發出警告,提示使用者該網站的證書可能是偽造的,應該停止訪問,但如果你無視瀏覽器的警告,你的會話資訊就有可能被偽造者竊取。此外,如果第三方證書頒發機構遭到攻擊,攻擊者竊取了已頒發的證書金鑰,就可以偽造相應的網站證書,完全騙過瀏覽器的安全機制,這樣的例子的確曾經發生過。

    2. 金鑰交換:RSA,這是一種最普遍使用的公鑰加密演算法,一般來說安全性很高。

    3. 會話加密:AES-256(CBC Mode),這是一種非常廣泛使用的加密演算法,採用256位金鑰代表其安全性很高,如果採用128位金鑰(AES-128)則安全性就差一些。

    4. 訊息校驗:SHA1,這是一種雜湊演算法,SHA1的安全性比MD5要好,但如果採用SHA256則安全性會更好一些。

    上面很抽象是不是,我們用“傳紙條”這個人人小時候都做過的事來形象的說明一下。

    HTTP

    假設你現在正坐在教室裡上課,現在你非常想和走道旁的迷人的 TA 說一些話,一般這個時候你會用“傳紙條”的方式來交流。而這個方式和 TCP/IP 協議基本的工作模式十分相像:

    透過小動作引起對方注意;

    對方以多種可能的方式(注視、肢體語言等)迴應於你;

    你確認對方感知到你後,將紙條傳給對方;

    對方閱讀紙條;

    對方給予你閱讀後的反應;

    怎麼樣,這個流程是不是很熟悉?

    如果你要傳遞紙條的 TA 距離你很遠怎麼辦?HTTP 協議就是指你在紙條上寫明你要傳給的 TA 是誰,或者 TA 的座位在哪,接著只需要途徑的同學拿到紙條後根據紙條上的指示依次將紙條傳過去就 OK 了。

    這個時候問題來了:途徑的同學完全可以觀看並知道你在紙條上寫了什麼。

    這就是 HTTP 傳輸所面臨的問題之一:中間人攻擊,指訊息傳遞的過程中,處在傳遞路徑上的攻擊者可以嗅探或者竊聽傳輸資料的內容。

    HTTPS

    HTTPS 針對這個問題,採用了“加密”的方式來解決。最著名原始的加密方法就是對稱加密演算法了,就是雙方約定一個暗號,用什麼字母替換什麼字母之類的。現在一般採用一種叫 AES(高階加密演算法)的對稱演算法。

    對稱加密演算法既指加密和解密需要使用的金鑰 key 是一樣的。

    AES 在數學上保證了,只要你使用的 key 足夠長,破解幾乎是不可能的(除非光子計算機造出來了)

    我們先假設在沒有金鑰 key 的情況下,密文是無法被破解的,然後再回到這個教室。你將用 AES 加密後的內容噌噌噌地寫在了紙條上,正要傳出去的時候你突然想到,TA 沒有 key 怎麼解密內容呀,或者說,應該怎麼把 key 給TA?

    如果把 key 也寫在紙條上,那麼中間人照樣可以破解竊聽紙條內容。也許在現實環境中你有其他辦法可以把 key 透過某種安全的渠道送到 TA 的手裡,但是網際網路上的實現難度就比較大了,畢竟不管怎樣,資料都要經過那些路由。

    於是聰明的人類發明了另一種加密演算法——非對稱加密演算法。這種加密演算法會生成兩個金鑰(key1 和 key2)。凡是 key1 加密的資料,key1 自身不能解密,需要 key2 才能解密;凡事 key2 加密的資料,key2 自身不能解密,只有 key1 才能解密。

    目前這種演算法有很多中,最常用的是 RSA。其基於的數學原理是:

    兩個大素數的乘積很容易算,但是用這個乘積去算出是哪兩個素數相乘就很複雜了。好在以目前的技術,分解大數的素因確實比較困難,尤其是當這個大數足夠大的時候(通常使用2的10次方個二進位制位那麼大),就算是超級計算機,解密也需要非常長的時間。

    現在就把這種非對稱加密的方法應用在我們教室傳紙條的場景裡。

    你在寫紙條內容之前先用 RSA 技術生成了一對金鑰 k1 和 k2。

    你把 k1 用明文傳了出去,路經也許有人會擷取,但是沒有用,k1 加密的資料需要 k2 才可以破解,而 k2 在你自己手中。

    k1 傳到了目的人,目的人會去準備一個接下來準備用於對稱加密(AES)的傳輸金鑰 key,然後用收到的 k1 把 key 加密,傳給你。

    你用手上的 k2 解出 key 後,全教室只有你和你的目的人擁有這個對稱加密的 key,你們倆就可以盡情聊天不怕竊聽啦~

    這裡也許你會有問題,為什麼不直接用非對稱加密來加密資訊,而是加密 AES 的 key 呢?因為非對稱加密和解密的平均消耗時間比較長,為了節省時間提高效率,我們通常只是用它來交換金鑰,而非直接傳輸資料。

    然而使用非對稱加密真的可以防範中間人攻擊嗎?雖然看上去很安全,但是實際上卻擋不住可惡的中間人攻擊。

    假設你是 A,你的目的地是 B,現在要途徑一個惡意同學M。中間人的惡意之處在於它會偽裝成你的目標。

    當你要和 B 完成第一次金鑰交換的時候,M 把紙條扣了下來,假裝自己是B並偽造了一個 key,然後用你發來的 k1 加密了 key 發還給你。

    你以為你和 B 完成了金鑰交換,實際上你是和 M 完成了金鑰交換。

    同事 M 和 B 完成一次金鑰交換,讓 B 以為和 A 你完成了金鑰交換。

    現在整體的加密流程變成了A(加密連結1)->M(明文)->B(加密連結2)的情況了,這時候 M 依然可以知道A和B傳輸的全部訊息。

    這個時候就是體現 HTTPS 和傳紙條的區別了。在教室裡,你是和一位與你身份幾乎對等的的物件來通訊;而在訪問網站時,對方往往是一個比較大(或者知名)的服務者,他們有充沛的資源,或許他們可以向你證明他們的合法性。

    此時我們需要引入一個非常權威的第三方,一個專門用來認證網站合法性的組織,可以叫做 CA(Certificate Authority)。各個網站服務商可以向 CA 申請證書,使得他們在建立安全連線時可以帶上 CA 的簽名。而 CA 得安全性是由作業系統或者瀏覽器來認證的。

    你的 Windows、Mac、Linux、Chrome、Safari 等會在安裝的時候帶上一個他們認為安全的 CA 證書列表,只有和你建立安全連線的網站帶有這些CA的簽名,作業系統和瀏覽器才會認為這個連結是安全的,否則就有可能遭到中間人攻擊。

    一旦某個 CA 頒發的證書被用於的非法途徑,那麼這個 CA 之前頒發過的所有證書都將被視為不安全的,這讓所有 CA 在頒發證書時都十分小心,所以 CA 證書在通常情況下是值得信任的。

    正如聲網agora.io Web SDK考慮資料安全問題,限制了http訪問getUserMedia介面,只能透過https方式訪問。所以會出現用http在Chrome瀏覽器(47以上版本)中訪問Agora服務失敗,我該怎麼辦?

    Agora Web解決方案基於WebRTC技術建立瀏覽器間的音影片通訊,在WebRTC協議中,瀏覽器透過getUserMedia介面獲取影片(透過攝像頭)和音訊(透過麥克風)資料,Google Chrome是支援WebRTC的主流瀏覽器之一,在v47及以上版本,考慮到資料安全問題,限制了http訪問getUserMedia介面,只能透過https方式訪問。除了chrome瀏覽器外,Opera瀏覽器在v34版本後也跟進了對http的限制,Firefox暫時沒有此更新。但是考慮到https是WebRTC協議推薦的安全訪問方式,建議客戶統一透過https來訪問Agora Web服務,也能相容各瀏覽器平臺。

  • 2 # 網路圈

    首先可以明確的告訴你,網站的加密與否和HTTPS無關!HTTPS不是用來給網站加密的,而是給傳輸中的資料加密的。

    所以我們要分清楚這兩者的區別,嚴格意義上說,沒有給網站加密的說法,因為網站本身是一種展現形式(基於資料),如果說加密,那隻能給網站上的資料加密。

    HTTP協議

    在HTTPS出來之前,我們訪問網站用的協議都是標準的HTTP協議。HTTP協議在資料傳輸過程中是明文傳輸的,比如說:

    使用者提交的POST請求資料是明文傳輸的;

    網頁內容傳輸也是明文的。

    這就會存在很大的安全問題,如果駭客在中間層攔截了請求,那我們提交的資料及伺服器響應的資料都是可以直接看到的,駭客也可以重新篡改資料然後重新提交。

    如上圖示,對於HTTP請求,我們看到響應資料都是明文顯示的。

    HTTPS協議

    我們再來看下HTTPS請求的響應資料是怎樣的,如下圖示:

    可以看到,HTTPS請求的響應資料是“亂碼”的,也就是加密顯示的,這樣別人是無法解密的。

    HTTPS協議其實就是在HTTP協議上加了一個SSL層用來對資料加密傳輸,所以我們透過抓包工具可以看到,請求HTTPS協議的網址,抓包工具標的協議還是HTTP,只不過請求的是443埠而不是80埠。

    HTTPS協議能最大程度保證資料在傳輸過程中不被篡改,所以說啟用了HTTPS後駭客發起“中間人”攻擊很難。

    是否啟用HTTPS給網站帶來的區別

    優點:使用HTTPS協議的網站要比使用HTTP協議的網站在資料安全上要好得多,HTTPS可以防止中間人攻擊,而且在安全策略上限制得較為嚴格(比如HTTPS網頁上不能引用HTTP協議的資源等)。

    缺點:HTTPS訪問起來比HTTP要慢一點,但對於使用者而言,這個“慢”是感知不出來的,但理論上會慢一些,因為涉及到資料的加解密操作帶來的開銷。

    HTTPS證書(SSL證書)

    國際SSL證書是很貴的,但現在國內有不少公司都提供了免費版的SSL證書,免費SSL在使用上問題不大,可以嘗試使用。

  • 3 # 互易中國007

    加密訪問更安全,不加密訪問部分瀏覽器會有不安全提醒,影響使用者體驗。

    ssl證書根據品牌不同,價格也不一樣的,幾百-幾萬都有,甚至還有免費的。可以根據需要來選擇哦。

  • 4 # 安信證書

    網站安全的最低標準是對網站資訊加密——對使用者資料加密,以保證使用者不被洩露。目前,HTTPS成為網站資訊加密的最佳實現。

    HTTPS是在HTTP協議上增加了“S”,“S”意思是加密。據悉,普通的HTTP協議採用的是資料明文傳輸,因此當用戶在傳輸個人私密資訊時,會存在資訊被截獲的風險。

    HTTPS協議在資料傳輸之前,適用SSL證書對資料包進行加密,加密後的密文再進行網路傳輸,這樣資料即使在傳輸的過程中被第三方所截獲,截獲者也無法破譯密文,使用者資料仍然安全。

  • 中秋節和大豐收的關聯?
  • oppoa32畫素多少?