본문 바로가기
서버 및 보안

Google Authenticator

by 다움위키 2023. 12. 24.

Google Authenticator는 소프트웨어 응용 프로그램의 사용자를 인증하기 위한 시간-기반 일회용 비밀번호 알고리듬 (TOTP; RFC 6238에 지정)과 HMAC-기반 일회용 비밀번호 알고리듬 (HOTP; RFC 4226에 지정)을 사용하여 이-단계 인증 서비스를 구현하는 구글에 의한 소프트웨어-기반 인증기입니다.

Authenticator (구글 서비스 포함)를 지원하는 사이트에 로그인하거나 비밀번호 관리자 또는 파일 호스팅 서비스와 같은 Authenticator-지원하는 타사 응용 프로그램을 사용할 때, Authenticator는 사용자가 추가로 그들의 일반적인 로그인 정보를 입력해야 하는 6자리에서 8자리의 일회용 비밀번호를 생성합니다.

구글은 Android, BlackBerry, 및 iOS 버전의 Authenticator를 제공합니다.

Android 앱의 공식 오픈 소스-포크는 GitHub에서 사용할 수 있습니다. 어쨌든, 이 포크는 2020년 이후로 업데이트되지 않고 았습니다. 마찬가지로, iOS와 BlackBerry에 대해 Google Authenticator 앱의 이전 버전에 대해, 소스 코드도 무료로 사용할 수 있습니다. 여전히 이 소스 코드도 몇 년 동안 업데이트되지 않고 있습니다.

소프트웨어의 현재 출시는 독점 프리웨어입니다.

Installation

데비안에서 사용할 이-단계 인증 방법입니다.

Install Google's PAM Package

Pluggable Authentication Module의 약자인 PAM은 리눅스 플랫폼에서 추가 인증 계층을 제공하는 메커니즘입니다.

  • sudo apt install libpam-google-authenticator

Install Google Authenticator App on Your Smartphone

사용하는 스마트폰에서 google anthenticator로 검색해서 설치합니다:

Configure Google PAM in Debian

이제 암호를 묻기 전에, 이-단계 인증을 받도록 /etc/pam.d/common-auth 파일을 수정해야 합니다. 보통 해당 파일의 # here are the ... 위 (16번째 줄)에 다음을 추가합니다:

auth required pam_google_authenticator.so

이제 아래 명령어를 실행하여 PAM을 초기화합니다.

  • google-authenticator
    • 첫 질문에서 y를 선택하면, QR 코드가 생성되고, secret key가 생성되고, Enter code from app (-1 to skip): 프롬프트가 생깁니다:
    • 스마트폰에서 해당 앱을 실행해서, QR 코드를 카메라로 찍으면, 6자리 코드가 생깁니다. 빈칸 없이 입력합니다.
    • 다음으로 emergency scratch codes가 생깁니다. 잃어버리지 않도록 잘 보관해 둡니다.
    • 다음으로 몇 개의 질문이 있는데, 잘 읽어보시고 답하시기 바랍니다. 2022년 6월 현재 yyny로 입력하실 수 있습니다.

Test

이제 로그아웃하면, Verification code를 먼저 입력해야 Password를 입력할 수 있습니다.

Disable two-factor authentication

그럽 화면이 올라오면, 일반적인 부팅 항목에서 e를 누릅니다.

그런-다음 커널 옵션에 다음을 덧붙입니다:

$vt_handoff systemd.unit=rescue.target

이제 부팅을 한 후에, 해당 사용자의 홈디렉토리에서 파일을 제거합니다:

  • rm /home/user_id/.google_authenticator

다음으로 PAM 파일, /etc/pam.d/common-auth에서 수정된 부분을 주석처리합니다:

#auth required pam_google_authenticator.so

이제 시스템을 다시 시작해서, 보통의 방법으로 부팅합니다.

Technical description

설정하는 동안, 서비스 공급자는 각 사용자에 대해 80-비트 비밀 키를 생성합니다 (RFC 4226 §4에서는 128비트를 요구하고 160비트를 권장합니다). 이것은 16, 26 또는 32 문자 base32 문자열, 또는 QR 코드로 Authenticator 앱에 전송됩니다.

이후, 사용자가 Authenticator 앱을 열 때, 이 비밀 키를 사용하여 HMAC-SHA1 해시 값을 계산합니다. 그 메시지는 다음일 수 있습니다:

  • 유닉스 에포크 (TOTP) 이후 30-초 기간의 숫자입니다; 또는
  • 각각의 새로운 코드 (HOTP)로 증가되는 카운터.

HMAC의 일부가 추출되고 사용자에게 6자리 코드로 표시됩니다.

Source code license

Android에 대해 Google Authenticator 앱은 원래 오픈 소스였지만, 나중에 독점이 되었습니다. 구글은 GitHub 저장소에서 Authenticator 앱의 이전 소스를 사용할 수 있도록 했습니다; 관련된 개발 페이지는 다음과 같이 명시했습니다:

"이 오픈 소스 프로젝트는 응용 프로그램의 버전 2.21을 구동하는 코드를 다운로드하는 것을 허용합니다. 후속 버전에는 프로젝트의 일부가 아닌 구글-특정 워크플로를 포함하고 있습니다."

최신 오픈-소스 출시는 2020년이었습니다.

Google Authenticator가 오픈 소스가 되지 않게 된 후, 자유-소프트웨어 클론이 생성되었으며, 주로 새로 다시 작성되었지만 원본에서 일부 코드를 포함합니다. 이 클론의 현재-유지 관리되는 포크는 FreeOTP+라고 합니다.

External links