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 해시 값을 계산합니다. 그 메시지는 다음일 수 있습니다:
HMAC의 일부가 추출되고 사용자에게 6자리 코드로 표시됩니다.
Source code license
Android에 대해 Google Authenticator 앱은 원래 오픈 소스였지만, 나중에 독점이 되었습니다. 구글은 GitHub 저장소에서 Authenticator 앱의 이전 소스를 사용할 수 있도록 했습니다; 관련된 개발 페이지는 다음과 같이 명시했습니다:
"이 오픈 소스 프로젝트는 응용 프로그램의 버전 2.21을 구동하는 코드를 다운로드하는 것을 허용합니다. 후속 버전에는 프로젝트의 일부가 아닌 구글-특정 워크플로를 포함하고 있습니다."
최신 오픈-소스 출시는 2020년이었습니다.
Google Authenticator가 오픈 소스가 되지 않게 된 후, 자유-소프트웨어 클론이 생성되었으며, 주로 새로 다시 작성되었지만 원본에서 일부 코드를 포함합니다. 이 클론의 현재-유지 관리되는 포크는 FreeOTP+라고 합니다.
External links
- 설치와 설정 참조 문서
- Google Authenticator on Google Help
- Google Authenticator (Android) and Google Authenticator (other) legacy source code on GitHub
- Google Authenticator PAM module source code on GitHub
- Google Authenticator implementation in Python on Stack Overflow
- Authenticator on F-Droid
- Django-MFA Implementation Using Google Authenticator - Django-mfa is a simple package to add extra layer of security to your django web application. It gives web app a randomly changing password as an extra protection.
- Source code of version 1.02 on GitHub