Google OTP를 어떻게 백업합니까?


130

지금은 점점 더 많은 일에 Google OTP를 사용하기 시작했지만 휴대 전화를 잃어 버리거나 새 펌웨어를 설치하기 위해 휴대 전화를 지우고 복원해야하는 경우 모든 코드가 손실된다는 것을 알게되었습니다.

어쨌든 그들을 백업 할 수 있습니까? 아니면 어떤 종류의 폴백으로 인해 새로운 장치로 복원 할 수 있습니까?

감사


2
이해가 안됩니다 ... 코드는 한 번만 사용되며 휴대 전화의 어느 곳에도 저장되지 않습니다. 사이트에 코드를 입력 해야하는 경우 이미 코드를 작성하더라도 새 코드를 사용해야합니다 얼마 전에이 사이트에 하나 넣습니다.
Matthieu Harlé

1
감사합니다. 이해하지만 지금 휴대 전화를 분실하면 사이트에 로그인 할 수 없으며 새로운 Google 인증 자 코드를 설정하지 않아도됩니다.
Nick

5
휴대 전화를 분실 한 상태에서 로그인 코드가 필요한 경우 백업 방법 (SMS, 통화, 인쇄 코드 ...) 중 하나를 사용할 수 있습니다. 매우 이러한 대체 방법 중 하나 이상이 :) 이런 상황을 극복하기 위해 설치를 권장합니다
마티유 Harlé

3
이 기능을 추가 하기 위해 항상 Google OTP포크하고 싶었 습니다 . 나는 시간이 있기 전에 누군가가 그것을하기를 바라고있다.
Michael Kropat

5
@Shywim Google OTP는 Google 계정만을위한 것이 아닙니다. 백업 코드 및 SMS 등이없는 다른 많은 서비스가 있습니다.
Chris Harrison

답변:


84

다음 방법은 루팅 된 Android 기기에서만 작동합니다.

리눅스 :

adb pull /data/data/com.google.android.apps.authenticator2/databases/databases /AFolderOnPC

윈도우 :

adb pull /data/data/com.google.android.apps.authenticator2/databases/databases C:\AFolderOnPC

PC의 폴더는 이미 존재해야합니다.

그러면 일회용 암호가 생성 된 기본 키가있는 인증 자 데이터베이스 파일이 PC로 복사됩니다. 그런 다음 파일을 Android 디바이스에서 동일한 위치로 복원하거나 sqlite 데이터베이스 뷰어로 읽고 키를 추출 할 수 있습니다.


10
새 장치로 복사 할 때 databases폴더와 databases파일에 모두 755 권한이 있는지 확인하십시오 . 700을 시도했는데 GA가 계속 충돌했습니다. 전체 권한이 필요하다는 것에 관한 종류. 아마도 그것은 NSA의 요구 사항 일 것입니다.
eduncan911

12
이렇게하기 adb root전에해야합니다. 그렇지 않으면remote object '/data/data/com.google.android.apps.authenticator2/databases' does not exist
Simon Woodside

3
SELinux를 사용하는 경우 올바른 권한 비트를 사용하더라도 인증 자 앱이 중단 될 수 있습니다. 이 문제를 해결하려면 restorecon -F /data/data/com.google.android.apps.authenticator2/databases/databases데이터베이스 파일을 되 돌린 후 실행 하십시오. ( 소스 )
하이 장

@ eduncan911 660 나를 위해 작동
deed02392

장치를 응원하면 덜 안전 합니다. 2FA를 사용하고 있다면 아마도 더 많은 보안을 원할 것입니다. 위험 : owasp.org/index.php/Projects/…
Simon Woodside

26

2 단계 인증을 구성 하는 동일한 페이지 에서 인증 코드를 요구하지 않고 로그인하는 데 사용할 수있는 '백업 코드'목록을 만들 수 있으므로 Google OTP 앱 / 데이터를 백업 할 필요가 없습니다 .

백업 코드를 인쇄 또는 다운로드해야하는 이유는 무엇입니까?

백업 코드는 여행 중이거나 SMS 또는 음성 전화 수신에 문제가 있거나 Google OTP 모바일 앱을 사용할 수없는 사용자에게 특히 유용합니다.

권장 사항 : 백업 코드를 인쇄하거나 다운로드해야합니다

안전한 곳에 보관하거나 인쇄하십시오. 휴대 전화를 분실 한 경우이 코드 중 하나를 사용하여 계정에 로그인하고 Authenticator 앱으로 새 장치를 설정할 수 있습니다.

이것은 Google의 2 단계 인증에 적용되지만 Google OTP 앱을 사용하도록 구성한 다른 사이트는 유사한 옵션 또는 코드를 수신하는 다른 방법을 제공해야합니다 (예 : Facebook은 Google OTP를 지원하는 방법, 자체 앱 및 SMS를 코드 수신).


3
그것을 제공하지 않는 사이트의 경우 유일한 옵션은 2 단계 인증없이 강력한 고유 암호를 사용하는 것입니다. 관심이 없다면 어떤 사이트에서 백업 옵션을 제공하지 않습니까? Dropbox, Facebook, LastPass, Wordpress는 모두 2 단계 인증을 사용하는 다른 사이트입니다.
bmdixon

18
@Nick : 구글이나 다른 사이트에서 제공하는 QR 코드를 저장하고 다른 장치에 인증 자에 다시를 추가하면 않는 일을. 나는 이것을 몇 번이나 스스로했다. 그러나 두 장치 모두에서 시간이 정확하고 지속적으로 최신 상태인지 확인해야합니다 (두 장치를 계속 사용하려는 경우). 그렇지 않으면 인증이 실패 할 수 있습니다.
Andris

7
2 단계 인증 "일회성"비밀번호는 현재 시간과 초기화 중에 서버와 앱간에 공유되는 비밀이라는 두 가지로 생성됩니다. 귀하의 경우 비밀은 QR 코드입니다. 인증 자 앱의 다른 인스턴스가 동일한 비밀과 동일한 시간 (동일한 30 초 프레임)을 공유하는 한 두 앱 모두 동일한 비밀번호를 생성 합니다.
Marc Plano-Lesay

2
휴대 전화를 재설정 할 때도 백업을 원할 수 있으므로 인증기를 사용하는 모든 사이트에 백업 시간을 입력하고 인증 자 설정을 재설정하는 데 한 시간을 소비하지 않아도됩니다.
pupeno

4
이는 Google의 2 단계 인증에만 해당됩니다. Google 인증자는 다른 많은 사이트와 함께 작동하며 일부는 백업 코드 목록을 만들 수있는 방법이 없습니다. 일부는 SMS를 사용하고 일부는 단일 일회용 백업 코드를 제공하며 일부는 전혀 백업 옵션이 없습니다. 모든 사이트에 백업 옵션이 있더라도 새 전화를받을 때 많은 키를 모두 복원해야하는 것은 큰 번거 로움입니다.
Laurence Gonsalves

21

티타늄 백업 (Google Play 스토어 링크) 은 Google OTP를 포함한 모든 Android 앱을 백업합니다. 그러나 이것이 가능한 옵션이 되려면 전화기를 루팅해야합니다.

Google 백업 코드도 인쇄하는 것이 좋습니다. 이것은 Google OTP 앱을 백업하지는 않지만 필요한 경우 인증자를 재설정 할 수 있습니다. 그래도 Google 계정에 다시 액세스하는 데 도움이됩니다.

Titanium Backup으로 앱을 백업하는 것이 가장 완벽한 옵션이라고 생각합니다. 그것은 여러 번 나를 구해주었습니다.


데이터베이스 디렉토리를 가져올 수 없으며 / sdcard에 복사하여 가져올 수 없기 때문에 이것을 해결해야했습니다. chmod 777은 아무것도하지 않았습니다.
Lauri Elias

"Google OTP에서 가져 오기"-판매! 매우 중요한 마이그레이션 기능.
Adambean

새 전화를 다시 뿌리지 않기 위해 언급 할 가치가 있습니다. 백업 후 backup/restore탭을 클릭 -> Authenticatorspecial features선택 Explore-> 탭 오른쪽으로 이동 -> 선택 -> accounts아래에서 선택하십시오 [DATABASE]. 그런 다음 앱의 모든 계정을 .csv 파일로 가져옵니다. secret열을 사용하여 계정을 새 전화로 복원하십시오.

19

나는 똑같은 문제가 있었다.

원래 토큰 (보통 qrcodes로 사용자에게 표시됨)은 /data/data/com.google.android.apps.authenticator2/databases 폴더 내의 sqlite 데이터베이스에 저장되며 장치에서 추출 할 수 있습니다.

https://github.com/dchapkine/extract-google-authenticator-credentials 에서 복구 프로세스를 자동화하고 설명했습니다.

이 프로젝트는 원본 토큰을 추출한 다음 새 장치에서 다시 스캔 할 수있는 qrcodes가 포함 된 웹 페이지를 생성합니다.

부담없이 참여하십시오.


1
이로 인해 모든 2FA 계정에 로그인하고 전화를 수동으로 전환했습니다. 많은 감사합니다!
Kovah 2016 년

이것이 바로 내가 찾던 것입니다. 모든 QR 코드를 빠르고 쉽게 다시 스캔 할 수 있습니다.
Harvey

이것에 감사하지만 내 장치는 루팅되지 않았습니다. 기기를 루팅하면 기기를 깨끗하게 닦을 수있는 '캐치 22'상황이 올바르다는 것을 올바르게 이해하고 있습니까?
urig

단순히 훌륭합니다. 그래도 Windows 10 Bash에서는 작동하지 않았습니다.
TranslucentCloud

@urig, 아니요, 일부 휴대 전화의 루팅으로 인해 앱 데이터가 반드시 지워지는 것은 아닙니다.
TranslucentCloud

16

이를 처리하는 가장 쉬운 방법은 사이트에 새 인증기를 설정할 때마다 QR 코드의 스크린 샷을 찍어 암호화 된 위치에 저장하는 것입니다.

해당 사이트의 OTP를 다시 설치하거나 다른 전화기에 추가해야하는 경우 새 사이트를 설정하는 것처럼 스크린 샷의 QR 코드를 스캔하여 OTP에서 계정을 추가하면됩니다.

부정 행위자들이 이것이 효과가 없다고 말하기 전에는 그렇습니다. 여러 장치에서 동일한 인증자를 가질 수 있습니다.


2
왜 이것이 작동하는지 설명하고 싶습니다. 웹 사이트와 장치 모두 QR 코드에 설정된 간단한 코드 문자열 "코드"를 공유하며,이 코드를 기반으로 새로운 6 자리 코드를 생성하는 데 끊임없이 사용합니다 현재 날짜와 시간 따라서 새 코드를 생성하려면이 코드 만 있으면됩니다. 웹 사이트는 6 자리 코드를 생성 한 사람 또는 대상을 확인할 수있는 방법이 없으며 정확해야합니다.
Arie

15

보십시오 인증 자 플러스 기기에서 동기화와 기능을 복원 /이 백업을 지원합니다, 당신은 전화 / 태블릿이있는 경우,이 응용 프로그램은 심지어 안드로이드 마모를 지원, 완벽하게 그 사이의 모든 계정을 동기화합니다.

로고도 지원합니다 인증 자 플러스 스크린 샷


13
또는 무료 Authy ( authy.com )를 사용할 수도 있습니다 .
lid

6
Authy는 굉장해 보인다 ! 오픈 소스가 아닌 것을 제외하고 는 Google보다 훨씬 낫습니다 . 나는 그것으로 살 수 있습니다.
cregox

17
이것은 나쁜 생각처럼 들리지 않습니까? 시간 기반 일회용 패드 프로토콜 (TOTP, 일명 rfc6238, authy / google 인증 자 등이 구현하는 것)의 요점은 사용자 만이 코드를 생성 할 수 있다는 것입니다. 일부 제 3자가 해당 코드를 저장하게하면이 코드가 공격 대상이되므로이 서비스를 위해 일하는 모든 사람과 코드를 어떻게 구현했는지 모두 신경 쓰지 않아도됩니다.
antiduh

1
@antiduh 물론 보안과 유용성의 문제는 보안에 더 관심이 없다면 당신에게 이상적이지 않으며 실제로 소프트웨어 솔루션에서 벗어나 yubikey와 같은 하드웨어 솔루션을 사용해야합니다.
Riyaz Mohammed Ibrahim

7

2FA를 설정하거나 갱신 할 때 QR 코드를 저장할 수 있습니다. 스크린 샷을 만들어 QR을 저장할 수 있습니다. 또는 상황에 맞는 메뉴 '다른 이름으로 이미지 저장'을 사용하지만 항상 사용 가능한 것은 아닙니다. (이미지에 계정 이름과 해당 이름을 지정하고 안전한 위치에 백업하십시오). 복원하려면 Google OTP에서 QR 코드를 다시 스캔하십시오.


4

서문으로서 이것은 기존 코드를 복구하거나 백업하지 않고 항상 백업되도록 MFA를 미리 구성하는 방법입니다.

Nexus 6P가 데이터 연결을 중단 한 후이 과정을 밟아 픽셀에서 모든 MFA를 다시 설정해야했습니다. 전화를 잃어 버리거나 공장 초기화를하면 완전히 질식했다는 것을 깨달았습니다.

내가 찾은 가장 간단한 해결책은 QR 코드 기반 설정을 무시하고 토큰 기반 설정 자체를 사용하는 것입니다 (대부분의 인증 자 앱에서 "수동"옵션 임). 지금까지 사용한 모든 서비스를 통해 QR 대신 토큰 기반 설정을 선택할 수 있습니다.

QR 코드의 스크린 샷을 찍는 데 어려움을 겪지 말고 적절하게 레이블을 붙인 다음 GPG를 암호화하고 어딘가에 안전하게 저장하십시오. 토큰을 암호화 된 볼트에 저장하고 수동으로 MFA를 설정합니다.

동시에 실행되는 독립 장치에서 동일한 키를 사용하여 인증 자의 복제본을 설정할 수 있음을 확인했습니다. 따라서 토큰을 안전하게 제어하는 ​​한 모든 장치에서 MFA를 구성 할 수 있습니다.

MFA를 재구성하는 것 (어쨌든이 상황 에서이 작업을 수행해야 함) 이상을 수행 할 필요가 없으며 모든 토큰을 lastpass에 추가하기 만하면이 결과에 만족합니다. 이제 전화가 손실되는 경우를 다루고 필요한 경우 다른 장치를 구성 할 수 있습니다.


2

루팅 된 전화에는 많은 조언이 있습니다. 그러나 장치를 취약하게 만들지 않으려면 장치를 루팅하지 않는 것이 좋습니다. 2 단계 인증은 추가 보호 계층을 제공하며, 다른 바이러스가 보호 된 메모리 영역에 액세스 할 수 있기 때문에 루팅하면이를 보호 할 수 있습니다.

소량의 서비스 만 백업 코드 (특히 Google)를 제공합니다. 이러한 서비스의 경우 백업 코드를 저장해야합니다.

가장 좋은 해결책은 토큰 등록시 QR 코드 (또는 비밀 키)를 저장하고 안전한 장소에 보관하는 것입니다. 그런 다음 휴대 전화를 분실하면 새 기기의 Google OTP에서 토큰을 복원 할 수 있습니다.

또한 하드웨어 토큰을 사용할 수 있습니다. 열쇠 고리 또는 신용 카드 형태 일 수 있습니다. Google OTP 를 백업하는 방법 : Google OTP 를 백업하거나 새 전화로 전송 하는 방법에 대한 자세한 내용은 Protectimus (내 회사)의 블로그에서이 기사를 참조하십시오 .

* 공개 : 위에 링크 된 웹 사이트에서 일합니다.


2
Android 애호가를 환영합니다 . 언급 된 링크와 관련이있는 것으로 나타났습니다. 당신이 당신의 프로필에 제휴를 언급했다하더라도, 제발 또한 당신의 대답에 개시되어있다. 추가 자료 : 스팸 발송자가되지 않는 방법 .
Andrew T.

@AndrewT. 끝난.
iBug

1

다음 방법은 루팅 된 Android 기기에서만 작동합니다. 이 방법은 adb 명령을 실행하기 위해 처음부터 Android SDK + JDK를 설치하는 데 시간을 낭비하고 싶지 않은 기술에 정통하지 않은 사람이나 나와 같은 사람들에게 더 유용합니다.

그래서 여기 있습니다 :

  1. Google Play 스토어에서 "루트 탐색기"앱을 다운로드하여 설치하십시오. 무료 FX 루트 액세스 애드온과 함께 인기 있고 무료 FX 파일 탐색기를 사용합니다. 다른 사람도 사용할 수 있습니다. 이 앱을 사용하면 루트 사용자로 Android 시스템에 액세스 할 수 있습니다.

  2. 시스템 루트에서 파일 탐색기를 열고> "데이터"폴더 클릭> "데이터"폴더 클릭 (다른 데이터 폴더 내부)> 이름이 지정된 폴더 복사 com.google.android.apps.authenticator2> 시스템 루트 폴더 종료> 일반 주 저장 장치 / SD 저장 공간 열기 및 붙여 넣기 여기 폴더

  3. 안드로이드 장치를 PC에 연결하고 폴더를 안전한 USB / 외장 HDD에 백업하십시오.

그게 다야. 이제 펌웨어를 다시 설치하거나 새 휴대 전화를 구입해야 할 때마다 위 단계를 따라 Google Authenticator 앱을 설치 한 후 해당 폴더를 정확히 동일한 디렉토리에 복사하십시오.

또는 "SQLite Database Browser Portable"과 같은 무료 오픈 소스 SQLite GUI 편집기를 사용하여 "com.google.android.apps.authenticator2"폴더에서 "databases"파일을 열 수 있습니다. '데이터 찾아보기'탭에서 키에 해당하는 키와 이름을 볼 수 있으므로 Google OTP 앱에 키를 수동으로 입력 할 수 있습니다.


@Izzy 주관적인 부분을 편집하고 도움을 주셔서 감사합니다 :) 방법은 크게 보이지만 안드로이드 개발자가 아닌 평범한 사람들에게는 가장 많은 시간을 절약합니다. 실제로 솔루션을 찾기 전에이 스레드를 살펴 보았습니다. 백업 코드-대부분의 서비스에서 사용할 수 없습니다 (Google에서만 작동). Authenticator Plus는 유료 앱입니다. 티타늄 백업에는 호환성 문제가있을 수 있습니다. ADB pull 명령을 사용하려면 Android SDK + JDK를 설치해야합니다. 내 방법은 폴더를 복사하여 붙여 넣는 것처럼 "쉬운"방법입니다.
Pavin Joseph

편집 해 주셔서 감사합니다, Pavin! 귀하의 의견에 따르면, 부분적으로 동의하지 않습니다. SDK + JDK를 설치 한 적이 없지만 여전히 많은 ADB 기능을 사용합니다 (특히 장치 설명서, 백업 / 복원 스크립트 등을 위해 내 도구 " Adebar " 와 함께) ). Linux에서는 adb실행 .dll파일이 필요 합니다 (Windows에서는 두 개의 파일이 추가로 필요합니다). 자세한 내용 은 ADB의 최소 설치가 있습니까?를
Izzy

추신 : 허가 문제가 있었습니까? 앱의 데이터 디렉토리를 수동으로 다른 장치에 복사하면 그러한 장치가 나타날 수 있습니다. 파일에 올바르게 액세스하려면 권한과 소유권이 일치해야합니다. 설치시 각 앱에는 고유 한 UID / GID 쌍이 할당됩니다. 파일 권한에는 소유자 / 그룹 / 기타에 대한 플래그가 있습니다. 일반적으로 앱 데이터는 최대 값 -rw-rw--(소유자 및 그룹 읽기 / 쓰기, 기타는 없음)을 갖습니다 . 따라서 소유권이 일치하지 않으면 문제가있을 수 있습니다 (앱 잘못 작동 할 수 있음 ).
Izzy

예, 대부분 작동합니다. 그러나 그렇지 않은 경우 SQLite 편집기를 사용하여 데이터베이스 파일에서 비밀 키를 열고 볼 수는 없습니다. 그런 다음 키를 사용하여 Google OTP에서 계정을 추가하십시오.
Pavin Joseph

아 더 나은 솔루션 : 작동하지 않으면 권한을 확인하고 조정하십시오. 덮어 쓰기 전에 /data/data/com.google.android.apps.authenticator2,을 ls -l그것과 소유권 / 권한을 확인하십시오. 복사 한 후, 사용 chown하고 chmod다시 그것을 해결하기 위해.
Izzy

1

루팅 된 휴대 전화에서는 'Amaze'파일 관리자 ( https://play.google.com/store/apps/details?id=com.amaze.filemanager&hl=ko )를 사용할 수 있습니다 . 루트 /data/data/com.google.android.apps.authenticator2/database 디렉토리로 이동하십시오. 데이터베이스 파일을 데이터베이스로여십시오. 계정을 선택하십시오. _id, email 및 secret 3 개의 열이 있습니다. "비밀"값을 복사하십시오. 추가로 복원해야 할 경우 "제공된 키 입력"을 선택하고 이름을 지정한 후 값을 붙여 넣으십시오.


0

얼마 전에 같은 경험을했습니다. 계정에 로그인하면 6 자리 코드를 입력 할 수있는 페이지가 나타납니다. 이 위치에서 이미 확인 된 번호가 있으면 두 번째 키를 변경하고 전화 번호를 가져올 수 있습니다. 그리고 더 많은 백업을 위해 다른 컴퓨터를 신뢰할 수있는 것으로 선택할 수 있습니다. 따라서 해당 컴퓨터에서 2 단계 코드를 요구하지 않습니다.


0

내 웹 사이트의 간단한 Python 스크립트에 대한 링크는 다음과 같습니다. http://usefree.com.ua/google-authenticator-backup/

코드를 붙여넣고 Python 환경에서 실행하면됩니다.

작동 방식 :

Google OTP를 사용하여 2 단계 인증을 설정 및 구성하는 동안 QR 코드를 스캔 할 수있을뿐만 아니라 Google Mail과 같은 코드를 얻을 수 csnji4rfndisoh323fdsioah3u2iodso있습니다. Python IDLE을 사용하여 컴퓨터에서 TOTP를 생성하려면 다음 기능을 정의 할 수 있습니다.

def totpgen ():
    import time
    import hmac
    import hashlib
    import base64

    ### TOTP-key for Google
    #secret = base64.b32decode("csnji4rfndisoh323fdsioah3u2iodso", True)
    #totp for btc-e
    #secret = base64.b32decode("DHSJHDW89E8DFUS98RIO23J390EFU234IR90WEUIF903DMSKAKDS====")
    ### Calc counter from UNIX time (see RFC6238) 
    counter = long(time.time() / 30)

    ### Use counter as 8 byte array
    bytes=bytearray()
    for i in reversed(range(0, 8)):
      bytes.insert(0, counter & 0xff)
      counter >>= 8

    ### Calculate HMAC-SHA1(secret, counter)
    hs = bytearray(hmac.new(secret, bytes, hashlib.sha1).digest())

    ### Truncate result (see RFC4226)
    n = hs[-1] & 0xF
    result = (hs[n] << 24 | hs[n+1] << 16 | hs[n+2] << 8 | hs[n+3]) & 0x7fffffff

    ### Print last 6 digits
    return str(result)[-6:]

라인에 삽입

secret = base64.b32decode("csnji4rfndisoh323fdsioah3u2iodso", True)

대신에 당신의 코드 "csnji4rfndisoh323fdsioah3u2iodso"

주석을 해제하고 유휴 상태에서 전화

totpgen ()

당신은 당신의 TOTP를 얻을 것이다!) 서비스 btc-e 라인을 사용하려고

secret = base64.b32decode("DHSJHDW89E8DFUS98RIO23J390EFU234IR90WEUIF903DMSKAKDS====")

다른 서비스의 경우-위에서 설명한 것과 같습니다.


2
관련 코드를 포함시키고 사용 방법을 설명해 주시겠습니까? (예 :이 코드의 기능은 무엇입니까? "무엇"코드를 붙여넣고 어디서부터? 모두가 러시아어를 이해하지는 않습니다). 링크가 썩 으면 유용한 정보가 없기 때문에 링크 전용 답변은 사용하지 않는 것이 좋습니다. 또한 블로그를 홍보하려는 경우 공개가 필요합니다. 그렇지 않으면 순수 홍보 일명 스팸으로 간주 될 수 있습니다.
Andrew T.

1
제발 스패머하지 말라 하고, 링크 자체의 옆에 당신의 위치를의 명확한, 분명한 언급을 포함한다.
Nic Hartley
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.