스마트폰 카메라 사용이 불가능한 환경에서 TOTP QR코드 옮기기

변규홍 / combacsa @combacsa@hackers.pub

상황

  • 2차 인증 수단으로 TOTP를 등록해야만 합니다.
  • 화면에는 TOTP 등록용 QR 코드만 떠 있고, 다른 대안은 없습니다.
    • TOTP QR 코드 등록을 한 뒤 6자리 숫자를 입력하라고만 나와 있습니다.
  • 보안상의 이유로 스마트폰을 비롯한 카메라 사용이 불가능합니다.
  • 아쉽지만 QR 코드를 눈으로 보고 직접 해독할 능력은 없습니다.
  • TOTP를 등록하지 않으면 더 이상 아무런 작업도 수행할 수 없습니다.
  • 화면이 떠 있는 PC의 OS는 Windows 이고, 파일 반출은 금지됩니다.
  • 특별한 보안 문제가 없다면 프로그램의 설치 정도는 할 수 있습니다.
  • Python 사용은 가능하고, Python 패키지도 설치할 수 있습니다.
  • 화면을 캡처(스크린샷)하여 그림 파일로 저장할 수는 있습니다.

이런 상황에서 어떻게 하면 TOTP등록을 마칠 수 있을까요?

추가 정보

  • 아마도 이 화면은 Keycloak을 사용해 만든 것처럼 보입니다.
  • 아마도 보편적인 TOTP 설정(SHA-1, 30초, 6자리)을 따른 것으로 짐작됩니다.

해결

  • 적당한 Python QR Code Reader(qreader) 패키지를 설치합니다.
  • 적당한 Python 코드를 작성하여, 캡처한 QR 코드를 해독합니다.
    • 최소한 메모장같은 텍스트 편집기에 적어둘 수는 있게 되었습니다.
  • 이제 KeePassXC를 설치하고 적당한 DB를 생성합니다.
  • 이제 KeePass DB에 새로운 항목을 추가하고, 거기에 TOTP 비밀 키를 추가합니다.
    • 앞서 해독한 QR 코드에서 RFC6238에 따른 비밀 키를 붙여넣어봅시다.
  • 이제 KeePassXC 에서 TOTP 6자리가 생성된 것을 확인하고 입력합니다.
  • 성공!

이후의 진행

  • 사용중이던 Google Authenticator App 에도 같은 비밀 키를 입력했습니다.
    • QR 코드를 해독하는 것보단, 메모장 등에서 알파벳+숫자 조합의 비밀 키를 보는 건 무척 쉬운 일이죠.

남은 궁금증

  • 좀더 편한 방법은 없었을까요?
    • 굳이 KeePassXC 를 거치지 않고 PyOTP만으로도 충분했을까요?
6

No comments

If you have a fediverse account, you can comment on this article from your own instance. Search https://hackers.pub/ap/articles/01974e1f-d7d6-75cf-ba82-27bacabe9869 on your instance and reply to it.