1. 개요
二段階 認證 / Two-Factor Authentication
2단계 인증은 로그인이나 송금을 할 때 아이디와 암호 이외의 다른 방식으로 본인을 인증하는 방법이다. 주로 휴대전화나 OTP처럼 물리적으로 하나만 존재할 수 있거나 한정된 방법으로만 접근할 수 있는 수단으로 인증을 한다.
2. 역사
인터넷 초창기에는 로그인을 하거나 본인을 인증할 때 아이디와 암호만 입력하면 충분했다. 하지만 시간이 흘러 인터넷 상에서 점점 더 많은 일들이 가능해지면서, 아이디와 암호만으로 본인을 인증하는 방식에 많은 취약점이 있다는 사실이 알려지게 되었다.
실제로 아이디와 암호 방식은 해킹에 매우 취약하다. 인터넷의 성장기였던 2000년대~2010년대까지는 정말 셀 수 없이 많은 아이디 해킹 피해가 발생했고 그 피해액도 천문학적인 수준이었다. 아이디를 해킹당해 피해를 입어도 해킹당한 사람이 잘못이라는 답변만 돌아올 뿐 어떠한 구제나 보상도 받을 수 없었다. 해킹 프로그램을 이용하는 전문적인 해킹도 많았지만, 단순히 옆자리에서 키보드 타이핑을 훔쳐보기만 해도 해킹이 가능했기 때문에 정말 무법천지가 따로 없었다.
비밀번호를 길게 설정한다면 큰 문제는 없을지 몰라도 오랫동안 비밀번호를 변경하지 않으면 복호키가 유출되어 암호가 풀릴 수도 있으며, 사용자들이 아이디와 비밀번호를 외우는 것을 귀찮아해서 짧은 비밀번호를 선호하기 때문에 일부 기업에서는 2단계 인증을 거의 강제적으로 도입하고 있다.
결국 은행권을 중심으로 해킹이 불가능한 인증수단에 대한 논의가 시작되었고, 2001년에 공인인증서와 보안카드라는 새로운 인증수단을 선보였다. 그후 OTP, 문자메시지, 이메일, 인증앱 등 많은 2단계 인증 방법이 등장했고 인터넷 상에서 널리 쓰이게 되었다.
3. 상세
2단계 인증의 핵심은 아무나 인증수단에 접근할 수 없다는 점이다.
아이디와 암호는 알기만 하면 누구나 입력할 수 있지만, 2단계 인증은 그 정보에 접근할 수 있는 방법이 매우 한정적이다. 여기에서 강력한 보안성이 발생한다. 아이디와 암호를 해킹할 수 있는 방법은 많지만, 2단계 인증수단을 해킹한다는건 거의 불가능에 가깝기 때문에 해커 입장에서도 2단계 인증창이 뜨면 해킹 자체를 포기하게 된다.
그리고 2단계 인증이 있다해도 한 번 로그인한 기기는 2단계 인증을 안 해도 된다는 점.[1] 이게 무슨 문제냐면 pc방 같은 공공적으로 쓰는 장소에서 2단계 인증이 있다해도 해킹을 당할 수 있다는것이다.[2] 그렇기 때문에 공공기기를 이용했을 경우 등록된 기기를 꼭 해제해주어야 한다.
4. 종류[편집]4.1. 이메일
세계적으로 최초로 등장한 2단계 인증 방법이다.
원래는 아이디와 암호를 잊어버린 회원에게 암호를 찾을수 있는 방법을 제공하기 위해서 고안된 방법이다. 가장 대중적인 방식이기는 하지만 이메일도 해킹이 가능하다는 점에서 보안성이 떨어진다.
요즘은 이메일을 2단계 인증으로 삼는 사이트가 많아지면서 해커가 피해자의 계정을 해킹하기 전에 먼저 이메일을 해킹하는 경우가 많다. 그래서 회원가입을 할때 주로 등록하는 이메일은 반드시 2단계 인증으로 따로 보호해야 한다.
4.2. 문자메시지
한국에서 가장 많이 사용되는 인증방법이다. 특히 한국은 휴대전화 본인인증이라는 세계적으로도 발전된 본인인증 시스템을 가지고 있어서 휴대폰만 있으면 못하는게 없다.
요즘에는 한국 이외의 다른 나라들도 금융권을 중심으로 문자메시지 인증을 필수로 요구하는 경우가 많다.[3]
다만 이메일 보다 조금 나은 수준이지만 보안에 취약하다. 그래서 안드로이드는 외부 앱 연결 금지하는 정책으로 바꾸었다.
4.3. OTP
일회용 암호(One Time Password) 라는 뜻으로 일정 시간마다 암호가 계속 바뀌는 장치의 암호를 입력하는 방법이다. RFC 6238이라는 TOTP 공개 표준이 있으며, 많은 해외 사이트에서 이를 지원한다. 국내 사이트 중에는 나무위키, 디시인사이드 등에서 지원하고 있다.
이 표준을 지원하는 앱으로 Google Authenticator가 상당히 유명하다. 다만 구글 OTP는 자체백업 기능이 없기때문에 OTP를 등록하고 나서는 다른 기기에 계정을 내보내기[4]하여 저장해두는 것이 좋다. 만약에 휴대전화를 분실하거나 OTP 앱을 실수로 지워버리면 해당 아이디는 로그인 자체가 힘들어질 수 있다.[5] 그래서 구글 OTP를 지울 때에는 반드시 해당 사이트에 먼저 방문해서 OTP 인증을 해제한 후에 지워야 한다.
Microsoft Authenticator나 Twilio Authy는 계정 연동 백업 기능이 있다.
Apple 기기에서는 iCloud Keychain에서 비밀번호 저장과 함께 2FA를 지원하며, iCloud를 통해 백업 및 기기 간 연동도 된다. OTP 자동 완성을 지원하여 굳이 OTP 앱을 확인하지 않아도 되며, 직접 입력해야 할 경우 설정 > 비밀번호 로 들어가면 확인할 수 있다.
대부분의 TOTP 앱들은 설치된 휴대폰에 물리적으로 접근하거나 휴대폰을 해킹해서 원격접속을 하지 않는 이상 OTP 복제가 불가능하게끔 되어 있어 안전하다.
4.4. 보안 키
YubiKey 등의 물리적인 보안 키를 이용하는 방법이다. 로그인을 한 후 본인이 맞는지 확인하기 위해서 보안 키를 USB 포트에 꽂고 키 비밀번호를 입력해야 한다. 보안 키를 잃어버리지만 않는다면 보안 수준이 매우 높은 방법이다. 다만 보안 키를 잃어버린 경우 로그인이 불가능할 수 있기 때문에 보안 키 인증을 주 인증 방법으로 사용하고자 한다면 다른 방법을 한 가지 더 등록해 두는 것이 좋다. #
4.5. 전용 인증 앱
네이버 처럼 해당 기업의 전용 앱을 통해 실제 로그인 여부를 확인하는 방법이다. 사이트에서 인증요청이 오면 해당 앱에서 승인 버튼을 눌러 로그인을 완료하는 방식이다. 이러한 종류의 서비스가 늘어남으로써 사용자는 여러 종류의 인증앱을 설치해야만 하는 문제가 발생하고 있다.
자사앱이 없거나, 기능을 추가할 예산이 없는 소규모 서비스에서는 사용하지 않고, 다른 기업의 인증만을 목적으로 하는 전문OTP앱이 사용한다.
4.6. 백업코드
2단계 인증을 설정한 후 앱에서 발급받은 1회용 코드[6]로 로그인 하는 방식이며 휴대전화를 분실했거나 불가피하게 사용할 수 없는 경우 이 방법으로 로그인한다. 코드가 1회용이기 때문에 백업코드를 다 써버리면 재생성[7]해야 하는데 코드를 다 쓸 때마다 재생성해야하니 번거롭다는 단점이 있다.