Sunny's Study/Studying Research

That Was Then, This Is Now: A Security Evaluation of Password Generation, Storage, and Autofill in Browser-Based Password Managers

AhnSunnyYoung 2023. 3. 14. 21:48

Abstract

비밀번호 관리자는 사용자가 비밀번호를 보다 효과적으로 관리하고 비밀번호 기반 인증확인과 관련된 많은 문제를 해결하는 데 도움이 될 수 있습니다. 그러나 이전 연구에서는 기존 암호 관리자, 특히 본 논문의 초점인 브라우저 기반 암호 관리자에서 상당한 취약성을 확인했습니다. 그 이후로 5년이 경과하여 암호 관리자가 취약한 상태로 남아 있는지, 알려진 보안 문제를 해결했는지 여부가 불분명합니다. 이 질문에 답하기 위해 인기 있는 13개의 암호 관리자를 평가하고 암호 관리자 라이프사이클의 세 가지 단계인 암호 생성, 스토리지 및 자동 채우기를 모두 고려합니다. 우리의 평가는 암호 관리자의 암호 생성을 최초로 분석하여 여러 비랜덤 문자 분포를 찾고 생성된 암호가 온라인 및 오프라인 추측 공격에 취약한 인스턴스를 식별하는 것입니다. 암호 저장 및 자동 채우기의 경우, 이전 평가 이후 5년 동안 암호 관리자가 개선되었지만, 이러한 문제에는 암호화되지 않은 메타데이터, 안전하지 않은 기본값, 클릭재킹 공격에 대한 취약성이 포함되어 여전히 중요한 문제가 있음을 보여줍니다. 결과를 바탕으로 피해야 할 암호 관리자를 식별하고, 기존 암호 관리자를 개선하는 방법에 대한 권장 사항을 제공하며, 향후 연구 영역을 파악합니다.

 

Introduction

암호 기반 인증에 직면한 잘 확립된 문제에도 불구하고, 웹에서 사용되는 인증의 지배적인 형태는 계속되고 있습니다 [4]. 공격자가 추측하기 어려운 비밀번호도 사용자가 기억하기 어렵기 때문에, 사용자는 종종 더 약한 비밀번호를 만들어 그 비밀번호를 불러내야 하는 인지적 부담을 피합니다 [12, 26]. 실제로 사용자가 저장해야 하는 암호의 수가 증가함에 따라 웹 사이트 전체에서 암호를 재사용하는 경우가 많습니다 [11, 15, 25, 33]. Herley는 위반에 의해 영향을 받는 사용자의 비율이 낮은 것이 필요한 노력과 대조되는 경우, 사용자의 이러한 보안 조언 거부는 합리적이라고 지적합니다 [18]. 그러나 데이터 침해의 수가 증가하고 있으며 [28], 이러한 상황으로 인해 많은 사용자가 악용될 위험에 처해 있습니다. (비밀번호 관리자가 필요한 이유)

 

비밀번호 관리자는 사용자가 비밀번호를 보다 효과적으로 관리할 수 있도록 도와줍니다. 강력한 암호를 생성하고 암호를 저장한 다음 사이트를 방문할 때 적절한 암호를 입력하여 사용자의 인지 부담을 줄입니다. 사용자는 이제 자신에게 높은 인지 부담을 주지 않고 비밀번호와 관련된 최신 보안 조언을 따를 수 있습니다. 그러나 암호 관리자는 공격에 영향을 받지 않습니다. Li 외는 [19] 이전에 LastPass 및 RoboForm과 같은 주요 암호 관리자에서 중요한 취약성을 발견했습니다. Siver 외의 연구와 [29] Stock and Johns 연구에서도 [31]는 암호 자동 채우기 기능으로 인해 LastPass 및 1Password를 비롯한 브라우저 기반 암호 관리자가 사이트 간 스크립팅 공격(XSS) 및 네트워크 주입 공격에 취약하다는 것을 입증했습니다.

 

이러한 연구가 5년 이상 경과했기 때문에 암호 관리자가 취약한 상태로 남아 있는지 또는 이제 광범위하게 채택할 준비가 되었는지는 불분명합니다. 이 질문에 답하기 위해, 우리는 이러한 이전 결과를 업데이트하고 확장하며 인기 있는 13가지의 암호 관리자에 대한 철저한 최신 보안 평가를 제시합니다. 5개의 브라우저 확장 기능과 6개의 브라우저에 직접 통합된 6개의 암호 관리자를 포함하여 브라우저 기반 암호 관리자에 대한 포괄적인 평가를 제공합니다. 비교를 위해 2개의 데스크톱 클라이언트도 포함되어 있습니다.

 

평가에서는 암호 생성(섹션 4), 스토리지(섹션 5) 및 자동 채우기(섹션 6)와 같은 전체 암호 관리자 라이프사이클[8]을 고려합니다. 암호 생성을 위해 연구된 암호 관리자가 생성한 1억4700만 개의 암호 코퍼스를 평가하여 공격자가 활용할 수 있는 비랜덤성을 나타내는지 여부를 결정합니다. 우리의 결과는 생성된 암호에서 몇 가지 문제를 발견하는데, 가장 심각한 것은 생성된 짧은 암호 중 적은 비율이 온라인 및 오프라인 공격(각각 10자 및 18자 미만)에 취약하다는 것입니다. 또한 암호 저장소[17] 및 자동 채우기[19, 29, 31]의 보안을 검사하는 이전 작업을 복제합니다.

 

우리의 결과는 지난 5년 동안 암호 관리자가 개선되었지만 여전히 상당한 보안 문제가 있다는 것을 발견했습니다. 우리는 기존 암호 관리자를 개선하는 방법과 일반적으로 암호 관리자의 보안 및 사용성을 크게 높일 수 있는 향후 작업을 식별하는 방법에 대한 몇 가지 권장 사항으로 논문을 마무리합니다(섹션 7). 우리의 기여는 다음과 같습니다:

 

  1. 우리의 조사에 따르면 앱 기반 및 확장 기반 암호 관리자는 5년 전에 비해 보안이 향상되었습니다. 그러나 여전히 해결해야 할 취약성이 남아 있습니다. 예를 들어, 여러 도구가 사용자 상호 작용 없이 자동으로 암호를 손상된 도메인에 채우고 사용자 상호 작용이 필요한 다른 도구는 사용자가 암호를 사용하지 않도록 허용합니다. 따라서 많은 사용자가 암호 관리자를 신중하게 선택하고 암호 관리자를 적절하게 구성하는 것이 중요합니다.
  2. 우리가 아는 한, 이 논문은 비밀번호 관리자의 비밀번호 생성에 대한 첫 번째 평가입니다. 이 평가의 일환으로 다양한 암호 관리자, 문자 구성 정책 및 길이를 나타내는 1억 4천 7백만 개의 암호를 생성했습니다. 생성된 암호에서 이상과 패턴을 찾기 위해 다양한 방법(Shannon 엔트로피, § 2 테스트, zxcvbn 및 반복 신경망)을 사용하여 이 말뭉치를 평가했습니다. 생성된 암호에서 몇 가지 사소한 문제뿐만 아니라 생성된 암호 중 일부가 온라인 및 오프라인 공격에 취약한 더 심각한 문제를 발견했습니다.
  3. 우리의 작업은 현재까지 암호 관리자 보안에 대한 가장 포괄적인 평가입니다. 가장 많은 수의 암호 관리자(Gasti 및 Rasmussen [17])를 연구하며, 암호 관리자 수명 주기[8]의 세 가지 단계인 암호 생성, 저장 및 자동 채우기를 동시에 고려하는 유일한 연구입니다(스토리지 또는 자동 채우기로 간주된 이전 연구).
  4. 문헌에서 비밀번호 관리자에 대한 이전의 보안 평가는 현재 5년 이상 되었습니다. 이 기간 동안 암호 관리자가 크게 개선되었습니다. 본 연구에서는 이러한 과거 연구[17, 19, 29, 31]를 부분적으로 또는 완전히 복제하고 이러한 연구에서 식별된 많은 문제가 해결되었지만 암호화되지 않은 메타데이터, 안전하지 않은 기본값, 클릭재킹 공격에 대한 취약성과 같은 문제가 여전히 있음을 보여줍니다.

Password Managers

가장 기본적인 의미에서, 비밀번호 관리자는 사용자의 비밀번호(즉, 사용자 이름 및 비밀번호)를 저장하여 사용자가 고유한 많은 로그인 비밀번호를 기억하는 것과 관련된 인지 부담을 완화하는 도구입니다 [19]. 이 암호 저장소를 일반적으로 암호 볼트라고 합니다. 볼트 자체는 일반적으로 마스터 암호라고 하는 사용자가 선택한 암호에서 파생된 암호화 키를 사용하여 암호화된 형식으로 저장하는 것이 이상적입니다. 선택적으로 암호 볼트를 온라인으로 저장하여 여러 장치에서 동기화할 수 있습니다. 

 

사용자가 선택한 암호를 저장할 뿐만 아니라 대부분의 최신 암호 관리자는 사용자가 암호를 생성하는 데 도움을 줄 수 있습니다. 암호 생성은 원하는 암호의 길이, 원하는 문자 집합 및 암호가 표시해야 하는 특수 속성(예: 최소 하나의 숫자와 하나의 기호, 문자를 인식하기 어렵지 않음)을 입력으로 사용합니다. 암호 생성기는 입력 기준을 충족하는 임의로 생성된 암호를 출력합니다. 

 

또한 많은 암호 관리자는 사용자가 적절한 사용자 이름과 암호를 자동으로 선택하고 입력(즉, 자동 입력)하여 웹 사이트에 대한 인증을 지원합니다. 사용자가 웹 사이트에 여러 계정을 가지고 있는 경우 암호 관리자를 사용하여 자동 채우기에 사용할 계정을 선택할 수 있습니다. 

 

암호 관리자를 적절하게 구현하고 사용할 경우 사용자에게 몇 가지 실질적인 이점이 있습니다. 

 

  1. 그것은 사용자 이름과 비밀번호를 기억하는 것에 대한 인지 부담을 줄여줍니다.
  2. 비밀번호 재사용 문제를 해결하기 위해 모든 웹사이트에 다른 비밀번호를 쉽게 할당할 수 있습니다.
  3. 온라인 및 오프라인 추측 공격에 탄력적인 암호를 쉽게 생성할 수 있습니다.

Related Work

여러 연구에서 암호 관리자 보안의 다양한 측면을 살펴 보았습니다. 

 

Web Security

 Li 등은[19] 확장 기반 암호 관리자 5가지의 보안을 분석하여 도구와 사용자의 암호 볼트를 호스팅하는 웹 사이트에서 상당한 취약성을 발견했습니다. 이러한 취약성에는 논리 및 권한 부여 오류, 웹 보안 모델에 대한 오해 및 CSRF/XSS 공격이 포함되었습니다. 또한 북마크릿을 사용하여 배포된 암호 관리자가 iframe을 제대로 사용하지 않아 도구가 악의적인 웹 사이트에 취약하다는 것을 발견했습니다. Google의 Project Zero는 LastPass에서 마지막으로 방문한 사이트의 자격 증명이 현재 방문한 사이트로 유출될 수 있는 버그를 발견했습니다. 이 버그는 이후 수정되었습니다.

Autofill

Siver 등은 [29] 암호 관리자 10가지의 자동 채우기 기능을 연구했습니다. 암호 관리자가 사용자 개입 없이 암호를 자동으로 채우면 네트워크 주입 공격에 취약하거나 웹 사이트의 어느 페이지에서나 XSS 취약성이 있는 모든 웹 사이트의 사용자 자격 증명을 도용할 수 있음을 입증했습니다. 또한 사용자 상호 작용이 필요한 경우에도 iframe 내에서 자동 채우기가 허용되면 공격자가 클릭잭킹을 활용하여 사용자가 자격 증명 릴리스를 승인하는지 모르게 사용자 상호 작용을 수행할 수 있음을 보여주었습니다. Stock and Johns [31] 또한 6개의 브라우저 기반 암호 관리자에서 자동 채우기 관련 취약성을 연구했으며 Silver 등과 유사한 결과를 얻었습니다.

Storage

Gasti와 Rasmussen[17]은 13가지의 암호 관리자가 사용하는 암호 볼트의 보안을 분석하여 수동 및 능동 공격자 모두에게 중요한 정보를 유출할 수 있는 다양한 취약성을 발견했습니다. 이러한 취약성은 암호화되지 않은 메타데이터뿐만 아니라 암호화된 데이터에서 사이드 채널 정보가 유출되는 것과 관련이 있습니다. Chatterjee 등은 [6] 보이노프 외에도요. [2] 오프라인 공격에 더욱 탄력적인 대체 암호 볼트 체계를 제안했지만 암호 관리자는 이러한 체계를 채택하지 않았습니다. Independent Security Evaluators[13]의 최근 연구에 따르면 암호 관리자가 메모리에 기록한 암호를 암호화하지 않아 암호 볼트가 사용되지 않는 경우에도 일부 암호를 추출하는 것이 중요하지 않은 것으로 나타났습니다. 

Usability

2006년에, Chiasson 등이 있습니다. [7] 두 개의 암호 관리자를 대상으로 사용적합성 연구를 수행하여 이러한 암호 관리자의 작동 방식에 대한 사용자의 불완전한 정신 모델로 인한 심각한 취약성을 발견했습니다. 최근 Fagan 등[14]은 사람들이 비밀번호 관리자를 채택한 이유를 더 잘 이해하기 위해 비밀번호 관리자의 사용자와 비사용자를 조사했습니다. 그들은 사용자들이 주로 보안상의 이점이 아닌 유용성 때문에 비밀번호 관리자를 채택했다는 것을 발견했습니다. 대조적으로, 비사용자들은 일반적으로 유용성 문제가 아닌 보안 때문에 비밀번호 관리자를 피합니다. Lyastani 등입니다. [20] 암호 관리자를 채택하는 것이 사용자의 암호 강도를 높이는 데 도움이 되는지 연구하여 암호 관리자 사용자가 일반 사용자보다 평균적으로 더 강력한 암호를 가지고 있지만 모든 웹 사이트에 대해 고유하고 무차별적인 강제 방지 암호를 가지고 있는 경우는 거의 없다는 것을 발견했습니다. Zhang 등은[36] 사용자를 인터뷰하여 암호 관리자를 어떻게 사용하는지 조사한 결과, 브라우저 기반 관리자의 사용자가 앱 기반 또는 확장자 기반 암호 관리자의 사용자보다 암호를 재사용할 가능성이 더 높았습니다. 

Relation to This Work

우리가 아는 한, 우리의 작업은 암호 관리자의 암호 생성기의 장점을 처음으로 연구하고 전체 암호 관리자 수명 주기[8](즉, 생성, 저장 및 자동 채우기)를 동시에 고려한 첫 번째 작업입니다. 암호 관리자 자동 채우기 및 스토리지의 보안을 검사하는 작업의 대부분이 현재 5년 이상 경과되었습니다[17, 19, 29, 31]. 그 당시 암호 관리자에 대한 중요한 업데이트가 있었기 때문에, 우리는 이 초기 작업을 반복하여 연구한 암호 관리자가 이전 작업에서 드러난 핵심 문제를 해결했는지 아니면 취약성으로 남아 있는지 확인했습니다.

 

이 작업에서는 13개의 서로 다른 암호 관리자를 분석했습니다. 이러한 암호 관리자는 브라우저와의 통합 수준(앱, 확장명 및 브라우저)에 따라 분류할 수 있습니다. 브라우저의 암호 관리자에 중점을 두었지만 비교를 위해 두 개의 데스크톱 클라이언트를 포함했습니다. 앱은 브라우저와 통합되지 않은 데스크톱 클라이언트입니다. 확장 기반 암호 관리자는 브라우저 확장으로 배포되며 데스크톱 응용 프로그램에 의존하지 않습니다. 브라우저 기반 암호 관리자는 브라우저의 일부로 구현된 기본 구성 요소입니다. 우리는 이러한 각 범주에서 가장 인기 있는 시스템 중에서 선택했습니다. 

 

분석된 암호 관리자를 이러한 범주로 분류하면 표 1에 나와 있습니다. 또한 이 표에서는 유틸리티 및 유용성과 관련된 기능(암호 생성 및 자동 채우기 지원, 클라우드를 사용한 확장 설정 및 암호 볼트 동기화 지원, 명령줄 인터페이스에서 암호 관리자를 사용할 수 있는 기능, 도구가 MFA(다요소 인증)를 지원하는지 여부 등을 보고합니다er 볼트의 마스터 암호를 자체 탭 또는 응용 프로그램에 입력해야 하는지 여부(이 대화 상자의 스푸핑을 방지하려면 [5]), 암호 관리자가 저장된 계정 및 암호의 보안을 평가하는 도구를 제공하는지 여부, 관리자가 암호를 복사한 후 클립보드에서 암호를 지우는지 여부d 도구가 오픈 소스인지 여부를 나타냅니다. 이 섹션의 나머지 부분에서는 분석된 각 암호 관리자에 대해 설명하고 평가한 암호 관리자 버전을 나타냅니다. 암호 생성, 자동 채우기 및 저장에 대한 자세한 내용은 각 섹션에서 확인할 수 있습니다.

 

App

앱 기반 암호 관리자는 보안을 강화하기 위해 수동 동기화를 위해 볼트 및 설정의 클라우드 동기화를 회피했습니다. 

KeePassXC(v2.0.3) KeePassXC는 원래 .NET 플랫폼을 사용하고 Windows에서 사용하도록 설계된 앱 기반 암호 관리자입니다. KeePassX는 KeePass의 크로스 플랫폼 포트로, QT 프레임워크가 포함된 NET 플랫폼을 대체합니다.

KeePassXC(v2.3.4) KeePassXC는 KeePass 또는 KeePassX에서 볼 수 없는 보다 빈번한 업데이트와 추가 기능(예: 암호 생성을 위한 추가 옵션, 명령줄 인터페이스)을 제공하기 위한 KeePassX의 포크입니다. KeePassXC는 앱과 인터페이스하여 브라우저의 암호를 자동으로 채우는 브라우저 확장 기능도 제공합니다. 전체적으로 KeePass 애플리케이션 제품군의 사용자 수는 2천만 명으로 추산됩니다[13]. 

Extension

확장 프로그램에는 클립보드를 지울 수 있는 권한이 없으므로 이 기능을 지원하는 확장 기반 암호 관리자가 없으므로 사용자 암호는 클립보드 액세스 권한이 있는 모든 응용 프로그램에 무한히 취약합니다. 분석한 어떤 확장도 확장 자체에 대한 동기화 설정을 지원하지 않으므로 사용자가 설정한 각 새 장치의 보안 기본 설정에 맞게 이러한 설정을 올바르게 업데이트해야 합니다. 이러한 확장 설정에는 브라우저가 닫힐 때 로그아웃할지 여부, 자동 채우기를 사용할지 여부, 안전하지 않은 양식을 채우기 전에 경고할지 여부와 같은 보안에 중요한 옵션이 포함됩니다. 각 확장 기반 암호 관리자의 사용자 경험은 거의 비슷합니다.

1Password X(v1.14.1). 1Password에는 1500만 명의 사용자가 있을 것으로 추정됩니다. [13]. 1Password는 앱 기반 클라이언트(1Password)와 확장 기반 클라이언트(1Password X)를 모두 제공합니다. 본 논문에서는 확장 기반 클라이언트를 권장하기 때문에 확장 기반 클라이언트를 평가했습니다브라우저와의 통합이 필요한 경우(대부분의 사용자가 원할 것으로 예상되는 것) ed 도구를 사용합니다. 두 시스템의 보안은 비슷하지만 앱의 클립보드에서는 암호가 지워지지만 확장은 지워지지 않는 등 몇 가지 작은 차이가 있습니다. 1Password에 고유한 기능으로, 처음에 클라우드에서 암호 볼트를 다운로드하려면 사용자가 계정을 생성할 때 표시된 128비트 개인 키를 입력하여 클라우드 기반 암호 볼트에 추가 보안 계층을 제공해야 합니다.

Bitwarden(v1.38.0) Bitwarden은 비급여 계정에서 모든 기능을 사용할 수 있다는 점에서 분석한 확장 기반 암호 관리자 내에서 고유한 기능인 반면, 다른 암호 관리자는 일부 기능에 액세스하기 위해 구독을 필요로 했습니다.

Dashlane(v6.1908.3) Dashlane은 1,000만 명의 사용자가 있는 것으로 추정됩니다[13]. Dashlane은 각 웹 사이트의 사용자 이름과 암호를 저장하는 것 외에도 사이트별로 다음 세 가지 설정을 추적하고 동기화합니다: "항상 로그인", "항상 [마스터 암호] 필요" 및 "이 하위 도메인에만 [암호] 사용"을 선택합니다 이 기능은 확장 설정을 동기화하지 않는 다른 확장 기반 암호 관리자와 비교할 때 약간의 이점을 제공합니다.

LastPass(v4.24.0) LastPass에는 상용 암호 관리자 중 가장 많은 1,650만 명의 사용자가 있는 것으로 추정됩니다[13].

RoboForm(v8.5.6.6) RoboForm은 1Password와 마찬가지로 앱 기반 클라이언트와 확장 기반 클라이언트를 모두 제공합니다. 본 논문에서는 1Password X에서 이러한 접근 방식을 취한 것과 동일한 이유로 확장 기반 클라이언트를 평가했습니다.

Browser

앱 기반 및 확장 기반 암호 관리자와 비교할 때 브라우저 기반 암호 관리자에는 많은 기능이 없습니다. 모든 브라우저 기반 암호 관리자는 다중 인증을 사용하여 암호 볼트를 저장하는 클라우드 계정을 보호할 수 있지만 Firefox를 제외하고는 브라우저에서 계정을 제거하기 전에 이 볼트를 잠글 수 없습니다. Firefox는 마스터 암호를 사용하여 암호 볼트에 대한 액세스를 제한하는 옵션을 제공합니다. 이러한 암호 관리자에는 동기화할 설정이 없으며 암호를 클립보드에 복사하지 않으므로 이러한 기능은 적용되지 않습니다.

Chrome(v71.0) Chrome은 암호 생성을 지원합니다. 사용자가 암호를 필요로 할 수 있는 경우를 탐지하고 사용자를 위한 암호를 생성합니다. 다른 암호 관리자와 달리 Chrome에는 암호 정책을 탐지하는 기본 기능이 있습니다.

Edge(v42.17134) Firefox(v64.0) Internet Explorer(v11.523) Opera(v58.0.3135) 이러한 암호 관리자는 고급 기능에서 모두 유사합니다.

Safari(v12.0) Safari는 iCloud Keychain과 통합될 때 암호를 생성할 수 있지만 이러한 암호는 항상 "xx-xx-xx-xxx" 형식입니다

Table 1: Analyzed Password Managers

Password Generation

암호 생성은 암호 관리자 수명 주기의 첫 번째 단계입니다. 평가에 참여한 13명의 암호 관리자 중 KeePassX, KeePassXC, 1PasswordX, Bitwarden, Dashlane, LastPass, Roboform 등 7명이 암호 생성을 완전히 지원하고 있으며, Chrome과 Safari 등 2명은 부분적으로 지원합니다. 암호 관리자를 비교하는 기준을 제공하기 위해 /dev/random을 사용하여 암호를 생성하는 파이썬 스크립트와 Google에서 "암호 생성기"를 검색할 때 첫 번째 검색 결과인 온라인 SPG(Secure Password Generator 4)를 작성했습니다.

Settings and Features

표 2에는 테스트한 각 도구에 대한 구성 옵션, 기본 설정 및 기능이 요약되어 있습니다. 모든 암호 관리자는 KeePassX, KeePassXC 및 LastPass에서 해제할 수 있지만 선택한 각 문자 집합에서 하나 이상의 문자가 생성된 암호에 포함되도록 지원합니다. 브라우저 기반 암호 관리자를 제외한 모든 암호 관리자는 제거된 정확한 문자가 암호 관리자 간에 일치하지 않지만 사용자가 읽고/또는 기억하기 어려울 수 있는 문자(예: 발음하기 어렵고 다른 문자와 유사하게 보임)가 포함된 암호를 생성하지 않도록 하는 옵션도 있습니다. 

 

모든 암호 관리자는 동일한 문자 및 숫자 집합([A-Za-z0-9])을 지원하지만 각각 기호 집합이 다릅니다. KeePassXC는 확장 ASCII 심볼 세트를 지원할 뿐만 아니라 모든 표준 ASCII 심볼(공간 제외)을 지원하는 가장 큰 심볼 세트를 가지고 있었습니다. KeePassX 및 Dashlane은 표준 ASCII 기호(공백 제외)도 지원하지만 확장 ASCII 기호 집합은 지원하지 않습니다. 암호는 ASCII 기호(19개 기호)의 절반 이상만 지원하고 다른 시스템은 8개 이하의 기호를 지원합니다. 예상대로 기호 집합을 제한하면 생성된 암호의 강도에 상당한 영향을 미치며, 암호의 의미는 이 문서의 뒷부분에서 설명합니다.

 

대부분의 암호 관리자에서 공통적으로 발생하는 문제 중 하나는 마지막으로 사용한 설정을 새 기본 설정으로 저장한다는 것입니다. 이 기능은 사용성을 목표로 하는 기능처럼 보일 수 있지만 사용자가 암호를 생성할 때 최적의 설정보다 적게 사용할 수 있습니다. 일반적으로 사용자가 비밀번호 생성 설정을 변경해야 하는 이유는 (1) 안전한 기본 설정을 설정하는 것, (2) 기본 설정보다 약한 정책을 준수하는 비밀번호를 생성하는 것 등 두 가지입니다. 후자의 경우 더 새롭고 약한 설정이 더 오래되고 강력한 설정을 새 기본값으로 대체합니다. 사용자가 안전한 설정을 수동으로 복원할 수는 있지만 반드시 복원해야 한다는 보장은 없습니다. Dashlane은 최신 설정을 자동으로 저장하지 않고 사용자에게 현재 기본값을 재정의할 수 있는 옵션을 제공함으로써 최적의 접근 방식을 취합니다. KeePassX는 중도적인 접근 방식을 취하여 응용 프로그램을 닫았다가 다시 열 때까지 생성되는 이후 암호에 대한 새로운 설정을 저장합니다.

Table 2: Overview of Password Generation Features

Password Collection and Analysis

암호 관리자가 생성한 암호의 품질을 평가하기 위해 먼저 각 암호 관리자로부터 생성된 암호의 대규모 말뭉치를 수집했습니다. 기존 명령줄 인터페이스(비트워든, 파이썬 도구), 소스 코드를 수정하여 명령줄 인터페이스(Chrome, KeePassX, KeyPassXC)를 추가하거나 셀레늄(1PasswordX, Dashlane, LastPass, RoboForm)을 사용하여 암호를 생성하는 다양한 방법을 사용합니다. Safari의 비밀번호는 스크립팅 비밀번호 생성을 위한 메커니즘이 없기 때문에 분석할 수 없었지만, 명백한 문제가 있는지 확인하기 위해 100개의 비밀번호를 수동으로 생성하고 분석했지만 아무것도 감지하지 못했습니다. 

 

생성은 문자 클래스(문자(l), 문자 및 숫자(ld), 문자 및 기호(ls), 기호 및 숫자(sd) 및 4개 클래스(모두)로 매개 변수화되었으며, 암호 길이(8, 12, 20자)가 생성된 암호의 랜덤성에 영향을 미치는지 확인했습니다. 생성된 암호에 각 문자 집합에서 하나의 문자가 포함되어야 하는 기본 도구는 대부분 Chrome, KeePassX, KeePassXC 및 파이썬 도구만 이 옵션을 사용하도록 설정되어 있지 않습니다. 각 암호 관리자, 문자 클래스 및 암호 길이에 대해 기호와 숫자만 있는 암호를 생성할 수 없는 1Password X를 제외하고 100만 개의 암호를 생성했습니다. 이로 인해 1억 4천 7백만 개의 암호(10x5x3-3)가 사용되었습니다. 

 

이 데이터 세트를 수집한 후, 우리는 무작위성과 추측성 측면에서 품질을 분석을 했습니다. 의사 무작위 생성기가 무작위 생성기와 구별할 수 없다는 것을 증명하는 알려진 방법은 없기 때문에 대신 우리는 다양한 분석 기술을 활용하여 각각 비랜덤 동작의 증거를 찾으려고 시도했습니다: 섀넌 엔트로피, 무작위성에 대한 테스트, zxcbvn 암호 분석 도구 [34] 및 반복 신경망 기반 암호 추측기[22]입니다.

 

Shannon entropy는 각 생성기에서 생성된 문자(암호가 아님)의 빈도에 이상이 있는지 확인하는 데 사용됩니다. 집합의 Shannon entropy는 발생 빈도를 기준으로 기호 문자열을 인코딩하는 데 필요한 평균 최소 비트 수를 측정한 것입니다. 이 값은 -sigi pi logb(pi)로 계산됩니다. Shannon 엔트로피는 사용자가 선택한 암호에 대한 잘못된 측정이지만 [3] 임의 암호의 상대적 강도를 평가하는 데 유용합니다. 섀넌 엔트로피는 문자열에 존재할 수 있는 구별되는 문자의 수와 말뭉치 내의 상대 빈도에만 영향을 받지 않습니다.

 

랜덤성에 대한 검정은 두 분포 간의 차이를 랜덤 우연으로 설명할 수 있는지 여부를 확인하기 위한 간단한 통계 검정입니다. 우리는 각각의 비밀번호 세트를 독립적으로 평가하기 위해 테스트를 사용했고, 같은 계열의 여러 통계 테스트를 설명하기 위해 Bonferonni 보정 5를 사용하여 p-값을 수정했습니다.

 

Daniel Wheeler[34]가 만든 zxcbvn 도구는 암호에 존재할 수 있는 사전 단어와 간단한 패턴을 탐지하는 데 사용됩니다. 두 가지 모두 비랜덤성의 잠재적인 예입니다. zxcbvn은 또한 암호 크래커가 암호를 해독하는 데 필요한 추측 수를 추정합니다. 암호가 온라인 및 오프라인에 탄력적인지 이해하는 데 사용합니다추측입니다.

 

생성된 암호가 zxcvn이 탐지할 수 있는 것보다 더 미묘한 패턴을 가지고 있는지 여부를 탐지하기 위해 Melicher 등이 구축한 신경망 암호 분석기를 사용했습니다. [22] 이 분석기는 LSTM(Long Short-Term Memory) 반복 신경망(RNN) 아키텍처를 사용하여 훈련 세트를 기반으로 암호 추측기를 구축합니다. 출력으로, 훈련된 암호 추측자가 테스트 세트에서 암호를 추측하는 데 걸리는 시간에 대한 몬테카를로 추정을 생성합니다. 교육 및 테스트에 사용한 구성 파일은 부록 A의 목록 1에 나와 있습니다. 각 암호 코퍼스에 대해, 우리는 신경망을 훈련시키기 위해 암호의 80%를 사용했고 암호의 20%에 대해 테스트했습니다. 분석기의 문제로 인해 길이가 8과 12인 암호만 테스트할 수 있었습니다. 사용된 설정에 관계없이 길이가 20인 암호가 메모리 부족 예외와 함께 충돌하기 때문입니다.

 

zxbcvn과 반복 신경망은 모두 생성된 암호의 무작위성 품질을 평가하는 데 사용되지만, 온라인 또는 오프라인 추측 공격이 해당 암호를 시도하는 데 얼마나 많은 추측이 필요한지에 대한 근사치를 제공하는 역할도 했습니다. 10의 6승 개 이상의 추측이 필요한 암호는 온라인 공격에 대해 복원력이 있는 것으로 간주되고 10의 14승 개 이상의 추측이 필요한 암호는 오프라인 추측에 대해 복원력이 있는 것으로 간주됩니다 [16]. 이 추측 카운트를 사용하여 암호 관리자가 이러한 공격에 취약한 암호를 생성하고 있는지 분석할 수 있었습니다.

 

Password Storage

암호 저장은 암호 관리자 수명 주기의 두 번째 단계입니다. 암호 저장소의 보안을 평가하기 위해 각 암호 관리자가 만든 로컬 암호 데이터베이스를 수동으로 검사하여 암호화되지 않은 정보가 무엇인지 확인하고 마스터 암호의 변경 사항이 데이터 암호화에 어떤 영향을 미치는지 조사했습니다. 우리는 암호 관리자의 관리자, 클라이언트에서 사용 가능한 옵션 및 암호 텍스트 형식의 클레임 조합을 통해 암호화가 어떻게 발생했는지 확인했습니다. 클라우드 데이터베이스를 직접 평가할 수 없기 때문에 로컬 시스템에 암호 볼트를 저장하는 데 중점을 둡니다. 이 정보의 개요는 표 6에 나와 있습니다.

Password Vault Encryption

앱 기반 및 확장 기반 암호 관리자는 모두 AES-256을 사용하여 데이터베이스를 암호화합니다. 이러한 시스템은 모두 키 파생 함수(KDF)를 사용하여 마스터 암호(MP)를 암호화에 사용할 수 있는 암호 키로 변환합니다. KeePassX와 KeePassXC는 AES-KDF를 100,000발 사용합니다. Dashlane을 제외한 모든 확장 기반 암호 관리자는 PBKDF2를 사용하며 RoboForm만 라운드를 100,000회 미만으로 사용합니다. Dashlane은 메모리 하드 KDF인 Argon2D를 3라운드로 사용하는 유일한 암호 관리자입니다. 기본적으로 사용되지는 않지만, KeePassXC는 PBKDF2 대신 Argon2D를 사용하는 옵션을 지원합니다. 

 

이러한 각 암호 관리자는 마스터 암호 구성에 대한 요구 사항이 다릅니다. KeePass와 KeePassX는 마스터 암호를 전혀 사용하지 않는 것을 포함하여 마스터 암호에 대한 모든 구성을 허용합니다. 확장 기반 암호 관리자는 모두 마스터 암호를 필요로 하지만 구성 요구 사항이 다릅니다. LastPass, RoboForm 및 Bitwarden은 마스터 암호가 8자 이상이어야 하지만 다른 제한은 없습니다. 1Password X는 최소 길이를 10자로 늘렸지만, 그렇지 않으면 다른 세 문자와 동일합니다. Dashlane에만 8자 이상의 길이와 각 문자 클래스(소문자, 대문자, 숫자, 기호)에서 하나의 문자가 필요한 구성 요구 사항이 있습니다. 

 

브라우저 기반 암호 관리자 중 Firefox만 암호 볼트 자체의 암호화를 처리합니다. 3DES를 사용하여 암호 데이터를 암호화하고 SHA-1을 한 라운드 사용하여 암호 키를 얻습니다. 마스터 암호에 정책을 적용하지 않습니다. 자체 암호화를 처리하는 다른 암호 관리자와 비교하면 파이어폭스가 단연 약점입니다. 나머지 브라우저 기반 시스템은 운영 체제에 의존하여 암호 볼트를 암호화합니다. Edge, Internet Explorer 및 Safari는 모두 운영 체제 키링을 사용하여 자격 증명을 저장합니다. Edge 및 Internet Explorer의 경우 Windows Vault이고 Safari의 경우 macOS 키 체인을 사용합니다. 

 

Chrome과 Opera도 운영 체제에 의존하여 암호를 암호화하지만 운영 체제에 따라 암호화 방법이 다릅니다. Windows(윈도우)에서는 CryptProtectData 기능을 사용하여 Windows(윈도우)에서 현재 사용자 계정에 연결된 키로 암호를 암호화하도록 합니다. 리눅스에서 이러한 시스템은 먼저 GNOME 키링 또는 KWallet 4에 암호를 기록하려고 시도하며, 이러한 키 체인을 사용할 수 없는 경우 암호를 일반 텍스트로 저장합니다. macOS에서 암호는 macOS 키체인에서 파생된 키로 암호화되지만 웹 사이트 암호 자체는 키체인이 아닌 로컬로 저장됩니다. 

 

Firefox 이외의 브라우저 기반 암호 관리자는 운영 체제에서 암호를 암호화하므로 사용자가 마스터 암호를 설정할 수 없습니다. 따라서 계정 잠금과 별도로 암호 볼트를 잠글 수 있는 방법은 없습니다. 본 논문의 범위를 벗어나는 한편, OS가 제공하는 암호화 기능 및 키 체인의 보안을 검토하는 더 많은 연구가 필요하다는 점에 주목합니다.

Table 6: Overview of Password Vault Encryption

 

Password Autofill

우리가 평가한 암호 관리자 중 KeePassX만 브라우저6에서 자동 채우기를 지원하지 않았으며 비트워든은 자동 채우기 기능이 실험적이라고 경고합니다. 이러한 도구를 평가하기 위해 Li 등이 식별한 공격을 활용하는 웹 사이트를 개발했습니다. [19], Silver 등입니다. [29], Stock and Johns [31]입니다. 또한 공격이 처음 설명된 이후 브라우저 및 암호 관리자가 추가한 보호를 해결하기 위해 이러한 공격을 업데이트했습니다. 표 7에는 몇 가지 결과가 나와 있습니다.

User Interaction Requirements

공격자가 네트워크 주입 또는 XSS 공격을 사용하여 웹 페이지를 손상시킬 수 있는 경우 사용자의 암호를 입력할 때 도용하는 악의적인 JavaScript를 삽입할 수 있습니다. 암호 관리자가 사용자에게 먼저 메시지를 표시하지 않고 암호를 자동으로 입력하면 사용자의 암호가 손상된 웹 사이트를 방문하는 것만으로 몰래 도난당합니다. 따라서 자동 채우기가 발생하기 전에 이상적으로 사용자 상호 작용이 필요합니다. 테스트한 암호 관리자 중 1Password X와 Safari만 자격 증명을 입력하기 전에 항상 사용자 상호 작용이 필요합니다. 나머지 암호 관리자는 웹 사이트가 제공되는 프로토콜(예: HTTPS 또는 HTTP)과 HTTPS 인증서가 유효한지 여부에 따라 다른 동작을 보였습니다. 

 

유효한 인증서가 있는 HTTPS를 통해 서비스되는 웹 사이트의 경우 KeePassXC, Bitwarden 및 RoboForm은 기본적으로 사용자 상호 작용을 필요로 하지만 사용자 상호 작용을 사용하지 않도록 허용합니다. Dashlane, Lastpass 및 Firefox는 기본적으로 사용자 상호 작용 없이 암호를 자동으로 채웁니다. 단, 사용자 상호 작용이 필요한 옵션도 있습니다. Chrome, Edge, Internet Explorer 및 Opera는 항상 사용자 자격 증명을 자동으로 채웁니다. 사용자 상호 작용이 필요한 옵션(Dashlane, LastPass, Firefox)이 없는 것보다 선호되지만, 실제로는 대부분의 사용자(기본 옵션을 변경할 가능성이 거의 없음)가 결과는 동일합니다. 

 

HTTPS를 사용하는 사이트에서는 네트워크 주입 공격(즉, TLS 중간자 공격[24])이 여전히 가능하지만, 이러한 공격은 훨씬 더 쉽게 수행할 수 있으며 HTTPS 인증서가 잘못된 경우 더 가능성이 높습니다. 잘못된 HTTPS 인증서의 원인은 양성(예: 일 만료)에서 악성(예: 잘못된 서명, 해지)에 이르기까지 다양합니다. 두 경우 모두 암호 관리자는 암호 입력을 모두 거부하거나 암호를 자동으로 채우기 전에 최소한 사용자 상호 작용을 요구해야 합니다. 인증서가 잘못된 경우 KeePassXC, Bitwarden, RoboForm, Dashlane, Lastpass, Firefox는 모두 유효한 인증서와 동일하게 작동합니다. Edge 및 Internet Explorer는 모두 동작을 변경하고 항상 잘못된 인증서에 대해 사용자 상호 작용을 요구합니다. 또한 Chrome과 Opera는 암호를 자동으로 채우는 기능을 완전히 비활성화하여 동작을 변경합니다. 

 

또한 웹 사이트가 보안되지 않은 연결(예: HTTP)을 사용하여 서비스될 때 네트워크 주입 공격이 수행될 가능성이 높고 더 쉽습니다. 잘못된 인증서와 마찬가지로 암호 관리자는 암호를 입력하기 전에 암호 자동 입력을 거부하거나 사용자 작업을 요구해야 합니다. KeePassXC, Bitwarden 및 RoboForm은 기본적으로 계속 사용자 상호 작용을 요구하지만 사용자가 이 요구 사항을 사용하지 않도록 허용합니다. Dashlane, LastPass, Edge 및 Internet Explorer는 모두 HTTP 웹 사이트에서 암호를 자동으로 채우기 전에 항상 사용자 상호 작용이 필요하도록 동작을 변경합니다.

 

Table 7: Overview of Password Autofill Features

Conclusion

우리의 연구는 앱 기반 및 확장 기반 암호 관리자가 이전 연구에서 이러한 유형의 도구가 수행된 방식에 비해 향상되었음을 보여줍니다 [17, 19, 29, 31]. 일반적으로 이들은 암호 볼트에 저장된 메타데이터의 보호 개선, (보안되지 않은) 책갈피 제거, iframe 자동 채우기 기능 제한(암호 수집 공격 방지), 온라인 암호 볼트의 웹 보안 문제 해결 등 특정 취약성을 잘 해결했습니다. 반면, 특정 취약성이 없는 영역에 대한 암호 처리 방식, 즉 암호가 저장된 양식과 양식 간의 불일치 또는 XSS 완화 구현에 대해 사용자에게 경고하는 이전 작업과는 거의 변화가 없습니다. 마찬가지로 브라우저 기반 암호 관리자는 보안 및 기능 측면에서 앱 기반 및 확장 기반 암호 관리자에 비해 지속적으로 크게 뒤처집니다. 

 

조사 결과에 따르면 사용자는 Firefox에 내장된 암호 관리자를 사용하지 않는 것이 좋습니다. 특히, 자동 채우기 기능은 극도로 안전하지 않으며, 암호 수집 공격에 취약합니다 [29, 31]. 공격자가 사용자에 대한 네트워크 주입 공격(예: WiFi 액세스 지점 제어)을 마운트할 수 있는 경우 공격자가 사용자의 Firefox 암호 볼트에 저장된 모든 자격 증명을 도용하는 것은 사소한 일입니다. Firefox가 Firefox Lockbox 암호 관리자로 전환할 때 이러한 문제가 해결되기를 바랍니다. 또한 KeePassXC의 브라우저 확장 사용자는 자동 채우기 전에 사용자 상호 작용 요구 사항을 비활성화하지 않아야 합니다. 이렇게 하면 클라이언트가 동일한 암호 수집 공격에 취약해질 수 있습니다. 

 

또한 앱 기반 및 확장 기반 암호 관리자를 선호하는 브라우저 기반 암호 관리자를 피하는 것이 좋습니다. 후자가 일반적으로 기능이 더 풍부하고 암호를 더 안전하게 저장하며 교차 오리진 프레임에서 암호 입력을 거부하기 때문입니다. 이에 대한 한 가지 예외는 Safari의 암호 관리자입니다. 이 관리자는 적절한 암호 생성기가 없지만 암호를 저장하고 자동 채우기 오류를 방지합니다. 

 

앱 및 확장 기반 암호 관리자를 사용하는 경우에도 사용자가 올바르게 구성되었는지 확인해야 합다. Dashlane 및 LastPass 모두 웹 사이트에 암호를 자동으로 입력하기 전에 사용자 상호 작용이 필요하지 않으며, Bitwarden 및 Roboform은 이 상호 작용을 사용하지 않도록 허용합니다. 사용자 상호 작용이 비활성화된 경우 공격자가 XSS 취약성을 악용한 것과 같이 손상된 웹 사이트를 방문하는 사용자는 이러한 사실을 알지 못한 채 해당 사이트에 대한 암호를 도용할 수 있습니다. 이는 암호 수집 공격[29, 31](현재 확장 기반 암호 관리자에 의해 차단됨)만큼 나쁘지는 않지만, 여전히 사용자가 알거나 걱정할 필요가 없는 취약성입니다. 우리가 연구한 확장 기반 암호 관리자 중 오직 1개의 암호 X만이 암호 자동 입력을 거부합니다.

 

이 섹션의 나머지 부분에서는 기존 암호 관리자의 기능을 개선하기 위한 권장 사항에 대해 설명합니다. 또한 암호 관리자의 유용성과 보안을 크게 향상시킬 수 있는 잠재력이 있는 향후 연구를 위한 몇 가지 영역을 식별합니다.