주식회사 누리아이티

정보자산의 보안강화를 위한 3단계 인증 보안SW(BaroPAM) 전문기업인 누리아이티

▶ BaroSolution/기술문서

Google OTP 적용의 위험성

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

Google OTP 또는 Google Authenticator는 시간 기반 일회용 비밀번호 알고리즘(TOTP)와 HMAC 기반 일회용 비밀번호 알고리즘(HOTP)를 사용하여 다중 인증 서비스를 구현하는 소프트웨어 토큰의 하나로, 구글의 모바일 애플리케이션 사용자들을 인증하기 위해 사용된다.
 
Google OTP는 제품화된 인증솔루션이 아니다. 이는 여러 보안취약점을 제거한 여타 유상 솔루션에 대비하여 많은 취약점을 가지고 있을 수밖에 없고, 구글에서도 Google OTP를 실제 서비스에 적용하는 것은 위험하다라고 인터뷰 한적이 있다. 하지만 무상이라는 이유로 암호화폐 거래소, 게임사 등에서 2차 인증 수단으로 적용했고, 이미 여러 해킹 사례가 발생하여 피해를 입은 사용자들이 많다. 물론 Google에서는 어떠한 책임도 지지 않는다.
 

 
Open Source여서 누구나 무료로 사용할 수 있는데, 다음과 같은 위험성을 내포하고 있다.
 
1. 상용화된 인증 솔루션이 아님.
 
Open source로 이미 여러 해킹 사례가 발생하여 피해를 입은 사용자들이 많으며, Google에서는 어떠한 책임도 지지 않음.
 
2. OTP 등록 키 값(Secure key) 노출
 
안드로이드 멀웨어 등에 구글 MFA 인증 코드 유출
등록 키값이 노출되기도 쉬우며 중복등록이 가능
QR코드의 경우 리더기로 읽으면 키 값이 평문으로 그대로 노출되어, 타인이 너무도 쉽게 나의 OTP 등록 키 값을 알 수 있음.
앱을 삭제할 경우 키 값을 어딘가에 보관하지 않으면 등록된 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의 무료 서비스가 언젠가는 유료로 전환 될 것으로 예상함.
 
Google OTP는 무료기 때문에 소규모 Linux나 애플리케이션에 적합할지는 모르나 대규모 Linux나 특히나 애플리케이션에는 부적합하다.
 
특히, 폰이 고장나는 경우, 폰을 분실한 경우, 실수로 앱을 지운 경우 등 흔히 접할 수 있는 상황에서 기존 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를 사용하라고 권장하고 있다.