한국어
  • 인증
  • 비밀번호
  • oauth
  • oidc
  • 아이덴티티

비밀번호는 사라지지 않습니다

지난해에는 큰 기술 회사들이 비밀번호를 없애기 위해 힘을 모으고 있다는 소식을 보도하는 기사들이 인터넷에 돌았습니다. 일부 스타트업들은 비밀번호가 더 이상 유효하지 않고 구식이라고 선언하기도 했습니다.

Gao
Gao
Founder

서론

지난해에는 애플, 구글, 마이크로소프트가 비밀번호를 없애기 위해 힘을 모으고 있다고 주장하는 뉴스 기사들이 인터넷에 돌았습니다. 일부 스타트업들은 비밀번호가 더 이상 쓸모 없고 구식이라고 선언했습니다. 몇 개월 동안 신원 관리 분야에 몰두한 후, 이들 주장의 타당성과 실용성에 대해 의문을 가지게 되었습니다.

비밀번호의 역할은 무엇인가?

처음 보면 답은 명확해 보입니다: 비밀번호는 로그인하고 신원을 확인하는 데 사용됩니다. 그러나 비밀번호가 실제로 당신이 누구인지를 확인할 수 없다는 사실을 고려하면, 저는 다른 견해를 가지고 있습니다:

  • 사용자가 이메일과 비밀번호로 웹사이트에 로그인하면, 웹사이트는 그 자격 증명 뒤의 실제 사람을 확인하는 방법이 없습니다. 그것은 사람일 수도 있고 고양이일 수도 있습니다.
  • 올바른 PIN을 가진 사람이라면 누구나 아이폰을 잠금 해제할 수 있습니다.

실제로, 비밀번호의 목적은 무언가의 소유권을 익명으로 증명하는 것입니다: 사용자 계정, 디바이스, 혹은 문에 대한 접근 권한.

현재의 '비밀번호 킬러'

앞서 언급한 회사들은 여러 가지 '비밀번호 킬러'를 제안했습니다. 많은 사람들은 사용자가 인증 과정에서 복잡하고 정적인 비밀번호를 기억할 필요가 없는 더 안전한 대안이라고 주장합니다. 그러나 이들 대체 방안의 대부분은 완전히 비밀번호를 없애는 데는 실질적으로 무리가 있습니다.

FIDO 인증

FIDO (Fast Identity Online) 인증은 공식 문서에서 설명하는 바와 같이, 등록과 로그인에 공개 키 암호화 기법을 사용합니다(WebAuthn은 FIDO2 명세의 핵심 컴포넌트입니다). 표면적으로 보면 과정이 매우 매력적으로 보입니다:

간단하죠? 불행히도, 경계가 있다: 호환성. '식별자와 비밀번호'의 전통적인 조합에 비해 FIDO 인증은 다음을 필요로 합니다:

  • FIDO를 지원하는 웹사이트나 앱이 필요합니다.
  • FIDO를 지원하는 브라우저나 운영 체제가 필요합니다.
  • 사용자 친화적인 검증 메커니즘을 갖춘 사용자 디바이스가 필요합니다.

이 요구 사항 중 하나라도 충족되지 않으면 FIDO 인증을 사용할 수 없게 되어, 다른 방법으로 대체 해야 합니다.

게다가, 모든 조건이 충족되더라도, 디바이스에서 '사용자 친화적인 검증 메커니즘'에 해당하는 것이 무엇일까요? 현재로서는 지문 인식이나 얼굴 인식 같은 생체 인식 방법이 있을 수 있으며, 이것이 PIN 코드 즉, 비밀번호로 대체되는 옵션을 동반하게 됩니다. 결국에는 원점으로 돌아오게 됩니다.

기술적으로 보면, 이것은 '비밀번호 킬러'가 아니라 비밀번호로 보호되는 보다 안전하고 사용자 친화적인 인증 또는 검증 과정입니다.

일회용 비밀번호

이름에 '비밀번호'라는 용어가 포함되어 있지만, 일회용 비밀번호 (OTPs)는 동적이기 때문에 전통적인 비밀번호가 아닙니다. 일반적으로 두 가지 유형의 OTPs가 있습니다:

  • 시간 기반 일회용 비밀번호 (TOTP): 현재 시간을 고유성의 원천으로 사용하여 알고리즘에 의해 생성됩니다. 주로 다요인 인증 (MFA) 또는 2FA에 사용됩니다.
  • SMS/이메일 일회용 비밀번호: 무작위 알고리즘을 사용하여 서버에서 생성됩니다. 일부 국가에서는 주요 로그인 방법으로 널리 채택되어 있습니다.

TOTPs는 이름으로 잘 알려져 있지 않을 수 있습니다. 예를 들어, 웹사이트가 MFA를 설정하도록 요청하고 Google Authenticator나 Duo와 같은 앱을 사용하여 QR 코드를 스캔하라고 하면, 보통 TOTP를 사용하게 됩니다. 또한 웹사이트에서는 종종 긴 '복구 코드'를 표시하고, 이 코드는 한 번만 보여주므로 저장해 두어야 한다고 조언합니다. 일부 웹사이트에서는 사용자들이 이를 종이에 인쇄하도록 권장하기도 합니다. 본질적으로, 이 복구 코드는 긴 비밀번호와 같은 기능을 합니다.

SMS/이메일 OTP의 경우, 그것들은 비용이 많이 들며 신뢰할 수 없을 수 있습니다:

  • SMS 또는 이메일 발신기를 처음부터 구축하기 위해서는 설정이 필요합니다.

  • 이메일 발신기는 발신 가능성을 향상시키기 위해 좋은 "리퓨테이션"을 확립해야 하며, 그렇지 않으면 발신기가 스팸으로 표시 될 수 있습니다.

  • 각 국가마다 자신의 모바일 네트워크 운영자가 있어 SMS 전송 시간이 예측할 수 없고 특히 스타트업들에게는 비용이 많이 들 수 있습니다.

생체 인식

'생체 인식'이라는 용어는 온라인 인증에 생체 인식 방법만을 사용하는 것을 의미합니다. 실제로, 다른 방법들과 비교했을 때 근본적인 차이가 있습니다: 생체 인식 인증은 원래의 '무언가의 소유권을 증명하는' 작업을 '당신이 누구인지 증명하는' 것으로 전환합니다. 개인 정보 보호 문제 때문에, 생체 인식 방법들은 주로 로컬 인증에 사용됩니다.

하지만 비밀번호는 완벽하지 않습니다

우리가 볼 수 있듯이, '비밀번호 킬러'들은 본질적으로 비밀번호를 숨기거나 비밀번호를 대체 옵션으로 사용하고 있습니다. 이번 논의를 바탕으로 비밀번호의 장점을 요약해 보면 다음과 같습니다:

  • 접근성과 호환성: 비밀번호는 다양한 시스템에서 사용할 수 있으며, 다양한 사용자에게 접근 가능합니다.

  • 비용 효과성과 완전성: 비밀번호 기반 인증은 일반적으로 다른 방법보다 비용 효율적이며 다양한 상황에 적응할 수 있습니다.

  • 익명성과 개인 정보 보호: 비밀번호는 익명 사용을 가능하게 하며 사용자의 개인 정보를 보호합니다.

하지만 모든 동전에는 양면이 있습니다. 비밀번호에는 장점이 있지만, 인증에만 의존하게 되면 많은 취약점을 초래합니다. 그것들은 최종 사용자들이 관리하기 어려울 수 있고, 웹사이트 소유자들이 적절한 보안 관행을 따르지 않으면 비밀번호가 손상되기 쉽습니다. 위험한 보안 관행에는 다음과 같은 것들이 포함됩니다:

  • 약한 또는 유출된 비밀번호를 허용합니다.

  • 연결에 대해 HTTPS를 강제하지 않습니다.

  • 안전하지 않은 해싱 알고리즘을 사용합니다.

OAuth 또는 OpenID Connect (OIDC)와 같은 전투 검증된 표준을 엄격하게 준수하지 않습니다.

  • 데이터베이스를 공개합니다.

결론

저는 위에서 언급된 인증 방법들을 과소평가하려는 의도는 없습니다. 반대로, Logto를 구축하는 과정에서 그들이 만들어 놓은 놀라운 인증 방법들과 그 뒤에 있는 사람들에 대한 깊은 존경감을 가지게 되었습니다.

그럼에도 불구하고, 100% 보안을 달성하는 것은 불가능한 목표입니다. 우리가 추구할 수 있는 것은 공격 가능성을 줄이는 것입니다. 효과적인 접근 방법 중 하나는 현재의 디바이스나 환경에 기반한 일회용 비밀번호와 비밀번호 기반 인증을 결합하는 것입니다, 이는 보증을 추가하는 데 사용되며 널리 채택되어 왔습니다. 다양한 인증 기법의 장점을 활용함으로써, 우리는 더 강력한 보호를 제공하는 적층적 접근 방식을 만들 수 있습니다.

마지막으로, 실제로 제거되지 않은 상태에서 '비밀번호 킬러'와 같은 유행어에 집중하는 것보다는 보안과 사용자 경험 사이에 균형을 찾는 것에 중점을 두는 것이 더 가치있을 것입니다. 이를 위해 다양한 인증 방법의 장점과 한계를 이해하고 사용자 데이터의 보안 및 원활한 사용자 경험을 보장하는 방식으로 그것들을 구현하는 것이 중요합니다.