什麼是認證 (Authentication, AuthN)?
認證 (Authentication, AuthN) 是一種內建於軟體中的機制,用於在授予資源存取權之前根據用戶的憑證識別用戶。例如,最常見的登入方法涉及電子郵件和密碼。系統使用這些憑證來驗證用戶是否具有正確的身份以存取它。
在 身分與存取管理 (Identity and access management, IAM) 的背景下,認證是關於驗證身份的所有權,而不是識別其背後的人或實體。例如,如果家庭成員使用你的憑證登入,他們不是你,但系統會將他們識別為相同的身份。
身份不僅可以代表用戶,還可以代表服務或設備。例如,一個服務可以使用 API 金鑰 (API key) 向另一個服務進行認證。
隨著技術的發展,認證方法變得更加先進和多學科。雖然這個術語聽起來可能很技術性,但它是網路安全中的關鍵概念,因為所有應用程式和軟體都依賴認證來確保用戶信息的安全及其對系統的存取。
認證 (Authentication, AuthN) 因素
認證 (Authentication, AuthN) 因素 是在認證過程中用於驗證用戶身份的證據類別。它們有助於確保只有授權用戶才能存取系統或資源。這些因素通常分為三個主要類型,通常稱為“認證的三個因素”。
- 知識因素:你知道的東西(例如,密碼、PIN 碼)
- 持有因素:你擁有的東西(例如,智能手機、安全令牌)
- 固有因素:你是什麼(例如,指紋、面部識別)
以下是兩個例子:
多因素認證 (Multi-factor authentication, MFA) 是一種常見的做法,結合多個因素以提高安全性。例如,當你登入銀行帳戶時,你可能需要提供密碼(知識因素)和來自身份驗證應用程式的一次性代碼(持有因素)。
通行密鑰 (Passkey) 是一種現代的認證因素,可以結合多個因素並且對釣魚攻擊具有抵抗力。
常見的認證 (Authentication, AuthN) 類型有哪些?
在介紹了關鍵組件和認證因素之後,讓我們繼續探討認證類型。系統和產品使用各種認證方法,這些方法在其定義和用戶理解上可能會重疊。在選擇認證方法時,專注於產品的需求,並努力在用戶體驗和安全性之間取得平衡。
密碼認證
密碼認證 是一種廣泛使用的方法,用於在存取系統或應用程式時驗證用戶的身份。它要求用戶提供電子郵件地址或其他類似的標識符,如用戶名和電話號碼,作為唯一標識符,以及密碼,這是一個只有用戶知道的秘密字串,以確認他們對電子郵件的所有權。
該過程始於用戶在登入表單中輸入其電子郵件和密碼。然後,系統將這些憑證與其註冊用戶的資料庫進行比對。如果憑證匹配,用戶將被授予存取權;如果不匹配,則拒絕存取。在成功認證後,系統可能會創建一個會話或發出一個令牌以維持用戶的登入狀態。
這種方法簡單且廣泛支持,使用戶易於理解和使用。然而,它也面臨挑戰。密碼可能會通過釣魚、暴力破解攻擊或數據洩露而被洩露。此外,用戶可能會發現記住不同服務的多個密碼不方便。為了解決這些問題,電子郵件和密碼認證通常會通過安全措施增強,例如雙因素認證 (2FA),這增加了一層額外的驗證,或鼓勵使用強大、獨特的密碼並安全地管理。
儘管面臨挑戰,電子郵件和密碼認證仍然是身份驗證的基礎方法,通常與其他措施結合以提高安全性。
無密碼認證
無密碼認證可以以不同的方式理解。廣義上,它指的是任何不依賴密碼的用戶認證方法。無密碼認證 是一種不需要傳統密碼即可驗證用戶身份的方法。相反,它依賴於替代技術和因素來安全地認證用戶。這些方法包括通過電子郵件或 SMS 發送的 一次性密碼 (One-time password, OTP) 或身份驗證應用程式、生物識別認證如指紋或面部識別、發送到用戶電子郵件的魔術鏈接、存儲在設備上的通行密鑰,或使用 Google 或 Facebook 等提供者的帳戶進行社交登入。
這種方法通過減少與密碼相關的風險(如釣魚、暴力破解攻擊和洩露)來提高安全性。它還通過消除記住和管理密碼的需求來增強用戶體驗,同時通過減少密碼重置請求來降低維護成本。
社交認證
社交認證 是一種通過允許用戶使用其現有的社交媒體或身份提供者平台(如 Google、Facebook、Twitter 或 LinkedIn)的憑證登入應用程式或網站來驗證用戶身份的方法。用戶可以使用他們已經信任的帳戶進行認證,而不是為每個應用程式創建新的用戶名和密碼。
當用戶選擇社交登入選項時,他們會被重定向到所選平台以確認其憑證。一旦認證成功,該平台會向應用程式提供令牌或用戶信息,如姓名、電子郵件地址或個人資料圖片,以驗證其身份。這個過程是安全的,通常簡化了用戶的登入體驗。
社交認證減少了用戶的摩擦,通過利用 身分提供者 (Identity provider, IdP) 的基礎設施提高了安全性,並允許應用程式快速收集經過驗證的用戶數據。它在優先考慮易於存取和與社交平台集成的應用程式中特別受歡迎。
多因素認證
多因素認證 (Multi-factor authentication, MFA) 是一種安全過程,要求用戶使用兩個或多個不同的認證因素來驗證其身份。這些因素通常分為三類,就像我們上面提到的認證因素一樣:你知道的東西、你擁有的東西和你是什麼。
通過結合多個因素,MFA 大大提高了安全性。即使一個因素(如密碼)被洩露,額外的驗證層使未經授權的用戶更難獲得存取權。
MFA 廣泛應用於需要更高安全級別的系統中,如網上銀行、企業網路、財務敏感產品和雲服務。它不是一種認證方法,更準確地說是一種認證的安全措施。
生物識別 認證
生物識別認證 是一種基於獨特的物理或行為特徵來驗證用戶身份的安全過程。這些特徵,如指紋、面部特徵或聲音模式,非常個人化且難以複製,使這種方法安全可靠。
該過程始於註冊,用戶的生物識別數據被捕獲並安全地存儲作為參考。在認證過程中,系統捕獲用戶的實時生物識別數據並將其與存儲的參考進行比對。如果數據匹配,則授予存取權;否則,拒絕存取。
這種方法方便用戶,因為用戶不需要記住密碼或攜帶實物令牌。它廣泛應用於智能手機、銀行應用程式、安全設施和醫療系統中,以提供快速、可靠和用戶友好的存取。
與身份提供者 (IdP) 的企業單一登入 (SSO)
Enterprise SSO 與 身分提供者 (Identity provider, IdP) 允許用戶只需登入一次即可存取多個應用程式或服務,而無需重新認證。IdP 是一個管理用戶身份並處理認證的受信任服務。
其工作原理如下:
- 用戶通過 IdP(例如,Google 或 Azure AD)登入。
- IdP 認證用戶並發出令牌或斷言。
- 該令牌與其他連接的應用程式或服務共享,以便在不需要額外登入的情況下授予存取權。
這種設置簡化了用戶存取,同時集中管理身份以提高安全性。
機器對機器認證
機器對機器 (Machine-to-machine) 認證是一個驗證設備、應用程式或服務之間相互通信的身份的過程,無需人工參與。它確保機器之間的安全互動,通常在 IoT(物聯網)環境、API 或基於雲的服務中。
在 M2M 認證中,與傳統用戶認證使用用戶名和密碼不同,機器依賴於安全憑證,如 API 密鑰、證書或令牌(例如, OAuth 2.0 )。這些憑證用於驗證機器或服務是否被授權存取另一台機器或資源。
例如,當移動應用程式與雲伺服器通信以檢索用戶數據時,伺服器使用 API 密鑰或令牌來認證應用程式,以確認它是合法的客戶端。同樣,在 IoT 中,像智能恆溫器或可穿戴設備這樣的設備使用證書或安全令牌與其控制系統或數據伺服器進行認證。
M2M 認證對於確保自動化系統中的數據安全和信任至關重要,特別是在交換敏感信息的環境中。
實施認證 (Authentication) 的最佳實踐和關鍵原則是什麼?
實施認證功能需要專注於關鍵原則。建議使用受信任的協議,如 OAuth 2.0 或 OpenID Connect,並加密敏感數據。此外,提供社交登入、無密碼方法(如通行密鑰)和支持各種認證方法(如用戶名/密碼、生物識別或 SSO)的選項,有助於系統滿足多樣化的用戶需求。
OIDC、SAML 和 OAuth 2.0 中的認證 (Authentication)
與其構建自家認證系統,建議使用已經過實戰測試並由安全專家審查的現有框架和協議。有各種認證框架和協議定義了應如何執行認證。兩個常見的例子是:
- OpenID Connect (OIDC) :一個構建在 OAuth 2.0 之上的身份層,增加了認證功能。它相對現代,廣泛用於新應用程式。
- 安全斷言標記語言 (Security Assertion Markup Language, SAML) :一種在各方之間交換認證和授權數據的協議。它通常用於企業環境。
框架的選擇取決於你的使用案例和需求。對於新應用程式,建議使用 OIDC,因為它的現代設計和對 JSON Web Token (JWT) 的支持。
然而,直接使用這些協議仍然可能很複雜且耗時。這兩個協議都有陡峭的學習曲線,需要仔細實施以確保安全。相反,使用支持或基於這些協議的 身分提供者 (Identity provider, IdP) 可以大大簡化認證過程。一個好的身份提供者還將為你的未來需求提供額外功能,如 多因素認證 (Multi-factor authentication, MFA) 和 單一登入 (Single sign-on, SSO) 。
AuthZ 和 AuthN 之間的區別是什麼?
在討論 AuthN 時,AuthZ 自然會進入話題。認證 (AuthN) 確認身份,通過憑證如密碼或生物識別回答“你是誰?”。授權 (AuthZ) 確定“你能做什麼?”,通過基於角色或策略授予或拒絕存取。AuthN 先驗證身份,然後由 AuthZ 管理權限。
這裡有一個例子,當你使用用戶名和密碼登入你的電子郵件帳戶時,這就是認證 (AuthN)——證明你是誰。一旦登入,系統根據你的角色決定你是否可以閱讀電子郵件、發送消息或存取管理設置。這就是授權 (AuthZ)——定義你被允許做什麼。