Yahoo! Japan은 패스워드리스 ID 시스템을 구축했습니다.
Yahoo! JAPAN은 일본 최대의 미디어 회사 중 하나로 검색, 뉴스, 전자상거래, 이메일과 같은 서비스를 제공합니다. 5천만 명 이상의 사용자가 Yahoo! JAPAN 서비스를 이용할 수 있습니다.
수년 동안 사용자 계정에 대한 많은 공격과 계정 액세스 상실로 이어지는 문제가 있었습니다. 이러한 문제의 대부분은 인증을 위한 비밀번호 사용과 관련이 있었습니다.
최근의 인증 기술 발전으로 Yahoo! JAPAN은 비밀번호 기반 인증에서 비밀번호 없는 인증으로 전환하기로 결정했습니다.
패스워드리스를 사용해야 하는 이유
Yahoo! JAPAN은 전자상거래 및 기타 금융 관련 서비스를 제공하므로 무단 액세스 또는 계정 손실이 발생할 경우 사용자에게 심각한 피해를 입힐 위험이 있습니다.
비밀번호와 관련된 가장 일반적인 공격은 비밀번호 목록 공격과 피싱 사기였습니다. 비밀번호 목록 공격이 일반적이고 효과적인 이유 중 하나는 많은 사람들이 여러 애플리케이션과 웹사이트에 동일한 비밀번호를 사용하는 습관이 있기 때문입니다.
다음 수치는 Yahoo! 일본
50 %
6개 이상의 사이트에서 동일한 ID와 비밀번호 사용
60 %
여러 사이트에서 동일한 비밀번호 사용
70 %
기본 로그인 방법으로 비밀번호 사용
사용자가 비밀번호를 잊어버리는 경우가 많으며, 이로 인해 비밀번호 관련 문의가 대부분 발생했습니다. 또한 비밀번호 외에 로그인 ID를 잊어버린 사용자의 문의도 있었습니다. 최고점에 다다를 때 이러한 문의가 모든 계정 관련 문의의 3분의 1 이상을 차지했습니다.
Yahoo! JAPAN은 사용자에게 부담을 주지 않으면서 보안은 물론 사용성까지 개선하는 것을 목표로 했습니다.
보안 관점에서 사용자 인증 프로세스에서 비밀번호를 제거하면 목록 기반 공격으로 인한 피해가 줄어들고 사용성 측면에서도 비밀번호 기억에 의존하지 않는 인증 방법을 제공하면 사용자가 비밀번호를 잊어버려 로그인할 수 없는 상황을 방지할 수 있습니다.
Yahoo! JAPAN의 암호 없는 인증 이니셔티브
Yahoo! JAPAN은 비밀번호 없는 인증을 촉진하기 위해 다양한 조치를 취하고 있으며 크게 세 가지 카테고리로 나눌 수 있습니다.
- 비밀번호에 대한 대체 인증 수단을 제공합니다.
- 비밀번호 비활성화.
- 패스워드리스 계정 등록
처음 두 이니셔티브는 기존 사용자를 대상으로 하며, 비밀번호가 없는 등록은 신규 사용자를 대상으로 합니다.
1. 비밀번호에 대한 대체 인증 방법 제공
Yahoo! JAPAN에서는 비밀번호 대신 다음과 같은 대안을 제공합니다.
또한 이메일 인증, SMS OTP와 결합된 비밀번호 (일회용 비밀번호), 이메일 OTP와 결합된 비밀번호와 같은 인증 방법도 제공합니다.
SMS 인증
SMS 인증은 등록된 사용자가 SMS를 통해 6자리 인증 코드를 수신할 수 있게 해주는 시스템입니다. 사용자는 SMS를 수신하면 앱이나 웹사이트에 인증 코드를 입력할 수 있습니다.
![](https://web.dev/static/case-studies/yahoo-japan-identity/image/h08m9uzVJg9uNzM3LE5k.jpg?authuser=3&hl=ko)
Apple은 오랫동안 iOS가 SMS 메시지를 읽고 텍스트 본문에서 인증 코드를 제안할 수 있도록 허용해 왔습니다. 최근에는 입력 요소의 autocomplete
속성에 '일회성 코드'를 지정하여 추천을 사용할 수 있습니다. Android, Windows, Mac의 Chrome은 WebOTP API를 사용하여 동일한 환경을 제공할 수 있습니다.
예를 들면 다음과 같습니다.
<form>
<input type="text" id="code" autocomplete="one-time-code"/>
<button type="submit">sign in</button>
</form>
if ('OTPCredential' in window) {
const input = document.getElementById('code');
if (!input) return;
const ac = new AbortController();
const form = input.closest('form');
if (form) {
form.addEventListener('submit', e => {
ac.abort();
});
}
navigator.credentials.get({
otp: { transport:['sms'] },
signal: ac.signal
}).then(otp => {
input.value = otp.code;
}).catch(err => {
console.log(err);
});
}
두 접근 방식 모두 SMS 본문에 도메인을 포함하고 지정된 도메인에만 추천을 제공하여 피싱을 방지하도록 설계되었습니다.
WebOTP API 및 autocomplete="one-time-code"
에 관한 자세한 내용은 SMS OTP 양식 권장사항을 참고하세요.
![](https://web.dev/static/case-studies/yahoo-japan-identity/image/Szaf3C0hfjLNkTWAVf9B.png?authuser=3&hl=ko)
WebAuthn을 사용한 FIDO
WebAuthn을 사용하는 FIDO는 하드웨어 인증자를 사용하여 공개 키 암호화 쌍을 생성하고 소유 사실을 증명합니다. 스마트폰이 인증자로 사용되는 경우 생체 인식 인증 (예: 지문 센서 또는 얼굴 인식)과 결합하여 1단계 2단계 인증을 실행할 수 있습니다. 이 경우 생체 인식 인증의 서명과 성공 표시만 서버로 전송되므로 생체 인식 데이터 도용의 위험이 없습니다.
다음 다이어그램은 FIDO의 서버-클라이언트 구성을 보여줍니다. 클라이언트 인증자는 생체 인식으로 사용자를 인증하고 공개 키 암호화를 사용하여 결과에 서명합니다. 서명을 만드는 데 사용된 비공개 키는 TEE (신뢰할 수 있는 실행 환경) 또는 유사한 위치에 안전하게 저장됩니다. FIDO를 사용하는 서비스 제공업체를 RP(신뢰 당사자)라고 합니다.
![](https://web.dev/static/case-studies/yahoo-japan-identity/image/PkFYWnOZABjPu7Zc7rXN.png?authuser=3&hl=ko)
사용자가 인증 (일반적으로 생체 인식 스캔 또는 PIN 사용)을 수행하면 인증자는 비공개 키를 사용하여 서명된 인증 신호를 브라우저에 전송합니다. 그러면 브라우저가 이 신호를 RP의 웹사이트와 공유합니다.
그러면 RP 웹사이트에서 서명된 인증 신호를 RP의 서버로 전송하고 서버에서는 공개 키와 비교하여 서명을 확인하여 인증을 완료합니다.
자세한 내용은 FIDO Alliance의 인증 가이드라인을 참고하세요.
Yahoo! JAPAN은 Android (모바일 앱 및 웹), iOS (모바일 앱 및 웹), Windows (Edge, Chrome, Firefox), macOS (Safari, Chrome)에서 FIDO를 지원합니다. 소비자 서비스인 FIDO는 거의 모든 기기에서 사용할 수 있으므로 비밀번호 없는 인증을 촉진하는 데 좋은 옵션입니다.
![](https://web.dev/static/case-studies/yahoo-japan-identity/image/iq0dODcbp3WcPUGTwHkl.png?authuser=3&hl=ko)
Yahoo! JAPAN에서는 아직 다른 수단을 통해 인증되지 않은 사용자가 WebAuthn을 사용하여 FIDO에 등록하는 것이 좋습니다. 동일한 기기로 로그인해야 하는 사용자는 생체 인식 센서를 사용하여 빠르게 인증할 수 있습니다.
사용자는 Yahoo! 일본
비밀번호 없는 인증을 장려하고 비밀번호에서 벗어나는 사용자를 배려하기 위해 Google은 여러 인증 수단을 제공합니다. 즉, 사용자마다 인증 방법 설정이 다를 수 있으며 사용할 수 있는 인증 방법은 브라우저마다 다를 수 있습니다. 사용자가 매번 동일한 인증 방법을 사용하여 로그인하는 것이 더 좋습니다.
이러한 요구사항을 충족하려면 이전 인증 방법을 추적하고 이 정보를 쿠키 등의 형식으로 저장하여 클라이언트에 연결해야 합니다. 그런 다음 인증에 다양한 브라우저와 애플리케이션이 사용되는 방식을 분석할 수 있습니다. 사용자는 사용자의 설정, 이전에 사용한 인증 방법, 필요한 최소 인증 수준을 기반으로 적절한 인증을 제공하라는 요청을 받습니다.
2. 비밀번호 비활성화
Yahoo! JAPAN에서는 사용자에게 대체 인증 방법을 설정한 다음 비밀번호를 사용할 수 없도록 사용 중지하도록 요청합니다. 대체 인증을 설정하는 것 외에도 비밀번호 인증을 사용 중지하면 비밀번호만으로 로그인할 수 없게 되어 목록 기반 공격으로부터 사용자를 보호할 수 있습니다.
Google에서는 사용자에게 비밀번호를 사용 중지하도록 장려하기 위해 다음과 같은 조치를 취했습니다.
- 사용자가 비밀번호를 재설정한 경우의 대체 인증 방법을 홍보합니다.
- 사용하기 쉬운 인증 방법 (예: FIDO)을 설정하고 인증이 자주 필요한 상황에서 비밀번호를 사용 중지하도록 사용자에게 권장합니다.
- 전자상거래 결제와 같은 고위험 서비스를 사용하기 전에 비밀번호를 사용 중지하도록 사용자에게 권고
사용자가 비밀번호를 잊어버린 경우 계정 복구를 실행할 수 있습니다. 이전에는 비밀번호를 재설정했습니다. 이제 사용자는 다른 인증 방법을 설정할 수 있으므로 설정하는 것이 좋습니다.
3. 패스워드리스 계정 등록
새 사용자는 비밀번호 없이 Yahoo! JAPAN 계정에 적용됩니다. 사용자는 먼저 SMS 인증에 등록해야 합니다. 로그인한 후에는 사용자에게 FIDO 인증을 설정하는 것이 좋습니다.
FIDO는 기기별로 설정되므로 기기가 작동하지 않을 경우 계정을 복구하기 어려울 수 있습니다. 따라서 사용자는 추가 인증을 설정한 후에도 전화번호를 등록된 상태로 유지해야 합니다.
암호 없는 인증의 주요 과제
비밀번호는 인간의 기억에 의존하며 기기와 무관합니다. 반면 비밀번호 없는 이니셔티브에서 지금까지 도입된 인증 방법은 기기에 따라 다릅니다. 이로 인해 몇 가지 문제가 발생합니다.
여러 기기를 사용하는 경우 사용성과 관련된 몇 가지 문제가 있습니다.
- SMS 인증을 사용하여 PC에서 로그인할 때 사용자는 휴대전화에 수신 SMS 메시지가 있는지 확인해야 합니다. 이 경우 사용자의 휴대전화를 사용할 수 있어야 하고 언제든지 쉽게 액세스할 수 있어야 하므로 불편할 수 있습니다.
- 특히 플랫폼 인증자를 사용하는 FIDO를 사용하면 여러 기기를 보유한 사용자가 등록되지 않은 기기에서 인증할 수 없습니다. 사용하려는 기기마다 등록을 완료해야 합니다.
FIDO 인증은 특정 기기에 연결되어 있으므로 기기가 사용자의 소유 및 활성 상태를 유지해야 합니다.
- 서비스 계약이 취소되면 더 이상 등록된 전화번호로 SMS 메시지를 보낼 수 없습니다.
- FIDO는 특정 기기에 비공개 키를 저장합니다. 기기를 분실하면 키를 사용할 수 없습니다.
Yahoo! JAPAN은 이러한 문제를 해결하기 위해 다양한 조치를 취하고 있습니다.
가장 중요한 솔루션은 사용자가 여러 인증 방법을 설정하도록 유도하는 것입니다. 이렇게 하면 기기를 분실한 경우 대체 계정에 액세스할 수 있습니다. FIDO 키는 기기에 따라 다르므로 여러 기기에 FIDO 비공개 키를 등록하는 것이 좋습니다.
또는 사용자가 Android 휴대전화에서 PC의 Chrome으로 WebOTP API를 사용하여 SMS 인증 코드를 전달할 수도 있습니다.
비밀번호가 없는 인증이 확산됨에 따라 이러한 문제를 해결하는 것이 더욱 중요해질 것입니다.
암호 없는 인증 승격
Yahoo! JAPAN은 2015년부터 이러한 암호 없는 인증 이니셔티브를 위해 노력해 왔습니다. 2015년 5월 FIDO 서버 인증을 취득한 이후 SMS 인증, 비밀번호 비활성화 기능 및 각 기기의 FIDO 지원을 도입했습니다.
현재 3천만 명이 넘는 월간 활성 사용자가 이미 비밀번호를 사용 중지했으며 비밀번호가 아닌 인증 방법을 사용하고 있습니다. Yahoo! JAPAN의 FIDO 지원은 Android의 Chrome에서 시작되었으며 현재 1, 000만 명이 넘는 사용자가 FIDO 인증을 설정했습니다.
최근 Yahoo! JAPAN의 이니셔티브에 따라 로그인 ID 또는 비밀번호 분실과 관련된 문의 비율이 가장 높았던 시기에 비해 25% 감소했으며 비밀번호가 없는 계정 수 증가로 인해 무단 액세스가 줄어든 것을 확인할 수 있었습니다.
FIDO는 설정이 매우 쉬워서 특히 전환율이 높습니다. 실제로 Yahoo! JAPAN은 FIDO가 SMS 인증보다 CVR이 더 높다는 사실을 발견했습니다.
25 %
잊어버린 사용자 인증 정보에 대한 요청 감소
74 %
사용자의 FIDO 인증 성공
65 %
SMS 인증 완료
FIDO는 SMS 인증보다 성공률이 높고 평균 및 평균 인증 시간이 더 빠릅니다. 비밀번호의 경우 일부 그룹의 경우 인증 시간이 짧으며 브라우저의 autocomplete="current-password"
때문일 수 있습니다.
![비밀번호, SMS, FIDO의 인증 시간 비교 그래프](https://web.dev/static/case-studies/yahoo-japan-identity/image/graph-comparison-authent-4d76bf7a092f7.png?authuser=3&hl=ko)
비밀번호가 없는 계정을 제공하는 데 있어 가장 큰 어려움은 인증 방법을 추가하는 것이 아니라 인증자를 대중화하는 것입니다. 비밀번호 없는 서비스 사용 환경이 사용자 친화적이지 않으면 전환이 쉽지 않습니다.
보안을 강화하려면 먼저 사용성을 개선해야 하며 이를 위해 각 서비스에 고유한 혁신이 필요합니다.
결론
비밀번호 인증은 보안 측면에서 위험할 뿐만 아니라 사용성 측면에서도 문제가 됩니다. 이제 WebOTP API 및 FIDO와 같이 비밀번호가 아닌 인증을 지원하는 기술이 더 널리 사용 가능해졌으므로 이제 비밀번호 없는 인증을 사용해야 할 때입니다.
Yahoo! JAPAN에서 설립한 이 같은 접근 방식은 사용성과 보안 모두에 분명한 영향을 미쳤습니다. 그러나 많은 사용자가 여전히 비밀번호를 사용하고 있으므로 더 많은 사용자가 비밀번호 없는 인증 방법으로 전환하도록 계속 권장할 것입니다. 또한 Google은 비밀번호 없는 인증 방법의 사용자 환경을 최적화하기 위해 제품을 지속적으로 개선할 것입니다.
사진 제공: olieman.eth(Unsplash)