주식회사 누리아이티

정보자산의 보안강화를 위한 다계층 인증SW (BaroPAM) 전문기업.

▶ BaroSolution/기술문서

오픈 소스 Google OTP 적용의 위험성

누리아이티 2021. 10. 31. 10:01


오픈 소스 Google OTP 또는 Google Authenticator는 시간 기반 일회용 비밀번호 알고리즘(TOTP)와 HMAC 기반
일회용 비밀번호 알고리즘(HOTP)를 사용하여 다중 인증(MFA, Multi Factor Authentication) 서비스를 구현하는 소프트웨어 토큰의 하나로, 구글의 모바일 애플리케이션 사용자들을 인증하기 위해 사용된다.
 
오픈소스 Google OTP는 제품화된 인증솔루션이 아니다.
 
이는 여러 보안취약점을 제거한 여타 유상 솔루션에 대비하여 많은 취약점을 가지고 있을 수밖에 없고, 구글에서도 Google OTP를 실제 서비스에 적용하는 것은 위험하다라고 인터뷰 한적이 있다.
 
하지만 무상이라는 이유로 암호화폐 거래소, 게임사 등에서 2차 인증(추가 인증) 수단으로 적용했고, 이미 여러 해킹 사례가 발생하여 피해를 입은 사용자들이 많다. 물론 Google에서는 어떠한 책임도 지지 않는다.
 
Open Source여서 누구나 무료로 사용할 수 있는데, 다음과 같은 위험성을 내포하고 있다.
 
1. 상용화된 인증 솔루션이 아님.
 
Open source로 이미 여러 해킹 사례가 발생하여 피해를 입은 사용자들이 많으며, Google에서는 어떠한 책임도 지지 않음.
 
2. OTP 등록 키 값(Secret 값) 노출
 
Secret 값의 유출 가능성으로, OTP 생성의 매개변수가 되는 Secret 값이 유출되면 제3자가 OTP를 알아내 2단계 인증이 무력화될 수 있다. 보통 OTP를 인증기에 등록할 때 QR코드를 스캔하거나 Secret 문자열을 입력하는데, 이것이 안전한 방법으로 전달되는 것이 아니라 보통은 웹 페이지에 그대로 출력하는 방식이기 때문에 유출의 위험이 있다고 볼 수 있다. 더군다나 이 값을 토대로 OTP를 생성하기 때문에 Secret 값을 암호화하여 제공하는 것은 불가능하다.

해당 Secret 문자열 내지는 QR코드를 가지고 있는 한 인증기에 무한정 등록할 수 있다는 것이다. 물론 RFC 6238 표준에서는 하나의 Secret은 하나의 기기에만 등록해야 한다고 하고 있지만, 그것을 강제할 방법이 없다는 것이 문제이다.

또한, 앱을 삭제할 경우 키 값을 어딘가에 보관하지 않으면 등록된 OTP 등록 키 값을 새로이 받아서 키 값을 변경해야 함.
 
3. 해킹에 대단히 취약
 
Open source 기반의 무상 서비스이기에 소스 공개로 알고리즘 유출, 앱 위변조 방지 등의 기본적인 보안장치들이 전혀 없음.
 
4. 구성원의 Google 계정 해킹 시 대비책 없음
 
계정이 해킹 당하면 Google OTP가 적용된 업무서비스를 일정기간 사용하지 못함.
 
5. 낮은 Hash 함수 사용
 
SHA-1을 사용하고 있음(국정원에서 최소 SHA-256 이상, 미국NSA에서는 VPN에 SHA-384 이상을 사용할 것을 권고)
 
6. Secure key(Seed key) 문제
 
Secure key가 암호화 및 난독화 되지 않고, Hex로만 변환되어 있음.
SHA 함수별 Seed key가 다름에 따라 업그레이드 시 혼선 예상(SHA-1, 224, 256: 20Byte, SHA-384: 32Byte, SHA-512: 64Byte)
 
7. 기술지원 문제(Technical support)
 
Open source이기 때문에 문제 발생 시 본인이 해결해야 함.
미국과 중국의 무역 전쟁으로 인하여 중국은 Android 업데이트에 액세스 할 수 없으며, Google Play store를 사용할 수 없음.
 
8. Google OTP가 SaaS 형태의 유료 버젼으로 전환됨.
 

Google OTP가 SaaS 형태의 유로 버젼으로 전환되어서 무료 버젼은 더 이상 버그 패치나 업그레이드 같은 지원을 하지 않는다.
 
특히, 폰이 고장나는 경우, 폰을 분실한 경우, 실수로 앱을 지운 경우 등 흔히 접할 수 있는 상황에서 기존 2FA 설정을 되돌릴 수 있는 방법이 아예 없기 때문이다.
 
2FA 사용이 불가능한 경우를 대비해 대부분 백업코드를 제공하지만 그냥 지나치거나 관리를 잘 하지 못하는 경우가 많다.
 
참고) SHA-256은 SHA 함수들 중 가장 많이 쓰이며, TLS, SSL, PGP, SSH, IPSec 등 보안 프로토콜과 프로그램에서 사용되고 있다.
 
하지만 최근 SHA-0과 SHA-1은 대한 분석 결과가 발표됨에 따라 SHA-2를 사용할 것을 미국 NSA 및 국정원에서 권장하고 있다.
 
미국 상무부 산하 기관인 NIST(National Institute of Standards and Technology)는 목요일 SHA-1 암호화 알고리즘을 공식적으로 폐기한다고 발표했다.

더해커뉴스에 따르면, 보안 해쉬 알고리즘(Secure Hash Algorithm) 1의 줄임말인 SHA-1은 암호화에 사용된지 27년 된 해시 함수로 충돌 공격(collision attack)의 위험으로 인해 손상된 것으로 간주되었다고 보도했다.

해시는 되돌릴 수 없도록 설계되었지만(즉, 고정 길이의 암호화된 텍스트에서 원래 메시지를 재구성하는 것이 불가능해야 함) SHA-1의 충돌 저항이 부족하여 두 개의 다른 입력에 대해 동일한 해시 값을 생성할 수 있다.

2017년 2월 CWI 암스테르담과 구글의 연구원 그룹은 SHA-1에서 충돌을 생성하여 알고리즘의 보안을 효과적으로 약화시키는 최초의 실용적인 기술을 공개했다.

연구원은 "예를 들어, 두 개의 충돌하는 PDF 파일을 임대료가 다른 두 개의 임대 계약서로 조작함으로써 누군가가 낮은 임대료 계약에 서명하도록 하여 높은 임대료 계약에 대한 유효한 서명을 생성하도록 속일 수 있다."라고 말했다.

SHA-1에 대한 암호 분석 공격으로 인해 NIST는 2015년에 미국의 연방 기관에 충돌 저항이 필요한 디지털 서명, 타임스탬프 및 기타 응용 프로그램을 생성하는 알고리즘 사용을 중단하도록 명령했다.

승인된 암호화 알고리즘 목록을 관리하는 NIST의 CAVP(Cryptographic Algorithm Validation Program)에 따르면 2018년 1월 이후 승인된 라이브러리가 2,272개나 여전히 SHA-1을 지원하는 것으로 조사됐다.

NIST는 알고리즘에 의존하는 사용자에게 전자 정보보안을 위해 SHA-2 또는 SHA-3로 마이그레이션할 것을 촉구하는 것 외에도 SHA-1을 2030년 12월 31일까지 완전히 단계적으로 중단할 것을 권장한다.

우리나라는 국정원에서 최소한 SHA-256이상 사용할 것을 규정하고 있으며, 2020년 6월 미국 NSA에서 안전한 VPN 사용을 위한 제안서를 발표 했는데, 최소 권장사항 중에 Hash함수는 SHA-384 Hash를 사용하라고 권장하고 있다.