[OAuth]
- 可在保護密碼的條件下,讓使用者自己控制另一個網站向本站查詢其個人資料。
- Consumer 可以透過 OAuth 從 Provider 取得 User 的使用偏好。 User 將被導引回 Provider 的頁面,確認他是否要讓 Consumer 取得他的使用偏好。 這個確認動作,可能做一次後就會被記住而不會再問,也可能每次都問。這由 Provider 的設計決定,讓 User 選擇。
- ex: Android AccountManager。
[OpenId]
- 可以用同一個帳號,就可以登入另一個網站(若其支援的話)。
- User 在登入 Consumer 網站時,使用者輸入的 OpenID 不一定長成什麼樣子(往往是 URL 形式)。 於是 Consumer 網站就會導引 User 回到 Provider 的登入頁面,完成輸入密碼的動作之後,再回到 Consumer 的使用頁面。
- Requester 使用 OpenID provider 並不需要特定簽約。
- 只要網站可以接受 Provider 的 OpenID,就可以使用 OpenID 登入,不需要簽約。
Summary
- 都不需要有 User 的帳號密碼。
- OAuth 是能向 Provider 取得 User 使用偏好; OpenId 是能透過 Provider 登入。
SSO
- 旗下的所有網路服務只需要一組帳號密碼就能通行無阻。
- 這樣的整合往往只能在同一家網路公司或是像企業內部的資訊系統才有機會作到。
- ex: Facebook。
* Reference
-
認識 OpenID
-
用案例解釋 OpenID 與 OAuth 的使用情境
[SSL]
- Secure Socket Layer (安全套接層)。
- 運行在TCP/IP層之上、應用層之下,與其繼任者傳輸層安全(TLS)是在網絡上為應用程序提供加密數據通道
- 是網頁伺服器和瀏覽器之間以加解密方式溝通的安全技術標準,這個溝通過程確保了所有在伺服器與瀏覽器之間通過資料的私密性與完整性。
- 採用了RC4、MD5以及RSA等加密算法。
Used for...
- 確保 client 和 server 間的認證(網站身份認證)。
- 因為 www 上充斥著假網站(釣魚網站)來騙取帳密,所以要驗證對方是真的。
- 加密傳送資料,以防中途被竊取。
- 維護數據的完整性,防範數據在傳送過程中被改變。
Process
- 當瀏覽器端與 WWW 伺服器端同時支援 SSL 的傳輸協定時,在連線階段 SSL 同步確認 client 和 server,瀏覽器與伺服器就會產生那把的金鑰。
- 產生金鑰後就能夠利用瀏覽器來傳送與接收加密過的重要資料啦。
- 要注意的是,在某些很舊的瀏覽器上面是不支援 SSL 的。
- Steps:
- Client request for server so start a new session. 告知伺服器端本身可實現的算法列表和其他一些需要的資訊。
- Server 根據 client 的訊息確定是否要生成新的主密鑰,如果需要則 server 在 response 中包含生成主密鑰所需的資訊(資訊內包含身分及公鑰)。
- client 根據收到的 response,產生一個密鑰,並用 server 的公鑰加密後傳給 server。(client 會自動的分析此證書,並根據不同版本的 browser,產生 40 位或 128 位的 session private key,用於加密傳送訊息。
- server 再用自己得私鑰解密得到 client 傳來的私鑰,並以私鑰加密要回傳的訊息,以讓 client 認證 server。
Problem
- 那把 Public key 是伺服器產生且任何人都能取得的! ex:
- 如果你不小心在釣魚網站輸入帳密,因為公鑰是誰都能拿到的,所以你的帳密還是被竊取,所以這時就需要第三方公正單位。
憑證
- 可分為兩種:
- 最低 40位和 128位 (private key 的長度,越長越不容破解)證書。
- 最低 40位 server 證書在建立 session 時,根據 browser 版本不同,兩種都可以產生;而最低 128位 server 證書不受 browser 版本限制可以產生 128位以上的 private key,無論是 IE 或 Netscape,需要十年才能破解。
- 一份 SSL 證書包含一個公鑰和一個私鑰。
CA
- Certification Authority,認證中心。
- 就是一個公認的公正單位,你可以自行產生一把金鑰且製作出必要的憑證資料並向 CA 單位註冊 (要錢的意思!),那麼當用戶端的瀏覽器在瀏覽時,該瀏覽器會主動的向 CA 單位確認該憑證是否為合法註冊過的:
- 如果是的話,那麼該次連線才會建立。
- 如果不是呢,那麼瀏覽器就會發出警告訊息, 告知使用者應避免建立連線啊。
Digital Signature
- 在網路上﹐我們還可以使用“數位簽章(Digital Signature)”來進行身份確認。
- 數位簽章可以說是一個獨一無二的數值﹐它由使用者的私有鍵值進行加密﹐然後利用公用鍵值進行確認:
- 若 public key 能通過驗證,那我們就肯定所對應的 private key 之正確性m
- 否則,則可排除簽章所用的 private key 。
- 換而言之,數位簽章兼具這兩種雙重屬性
[HTTPS]
- Secure Hyper Text Transfer Protocol (安全超文本傳輸協議)
- Netscape公司相應開發了HTTPS協議並內置於其瀏覽器中。
- 它是一個URI scheme(抽象識別字體系),https:URL表明它使用了HTTP,但HTTPS存在不同於HTTP的默認埠及一個加密/身份驗證層(在HTTP與TCP之間)。
- HTTPS是以安全為目標的 HTTP通道,簡單講是HTTP的安全版,即HTTP下加入SSL層(因此加密的詳細內容請看SSL),實際上就是SSL over HTTP。
HTTP vs. HTTPS
Advantages:
- 所傳送的數據不容易被網絡黑客截獲和解密
- 使用SSL在發送方把原始數據進行加密,然後在接受方進行解密,加密和解密需要發送方和接受方通過交換共知的密鑰來實現。
Disadvantages:
- 耗效能
- 加密和解密過程需要耗費系統大量的開銷,嚴重降低機器的性能,相關測試數據表明使用HTTPS協議傳輸數據的工作效率只有使用 HTTP協議傳輸的十分之一。
- 所以,我們只需對那些涉及機密數據如網上購物、交易付錢的交互處理、安全電子郵件等使用HTTPS協議,不需要用HTTPS 的地方,盡量不要用。
Overview
* Reference
-
小詞典: SSL和HTTPS
-
鳥哥的 Linux 私房菜 -- WWW 伺服器 Apache
-
加密網路封包鑑識設備
-
網路教學-資料加密
-
SSL证书_百度百科
-
https_百度百科
-
SSL和CA基礎知識
-
網站SSL加密原理簡介 ***