그렇다. 공룡 IT 기업들이 webauthn
을 사용하기 시작했다.
구글 (Google) - 구글은 다양한 서비스에서 WebAuthn을 지원하여 보안을 강화하고 있습니다.
마이크로소프트 (Microsoft) - 마이크로소프트 계정에서도 WebAuthn을 통한 인증 방식을 제공합니다.
페이스북 (Facebook) - 보안 설정에서 WebAuthn을 지원합니다.
아마존 (Amazon) - 아마존 웹 서비스(AWS)에서도 WebAuthn을 활용한 인증 방식을 적용하고 있습니다.
깃헙 (github) - 로그인에 붙기 시작함
그렇다. webauthn을 알아야겠다면 알아보자
WebAuthn(Web Authentication)은 웹 표준으로, 사용자가 안전하게 인증할 수 있도록 하는 기술
가장 놀라웠던 건 비밀번호 따위가 없다는 것이다. 90일에 한번 씩 비밀번호 변경 요청은 나를 괴롭게했다. 아 이번엔 뭘로 바꾸지. WebAuthn 적용 후 손가락만 있으면 된다.
비밀번호 없는 인증: WebAuthn은 비밀번호 대신 생체 인식(지문, 얼굴 인식) 또는 보안 키와 같은 인증 방법을 사용하여 로그인할 수 있게 한다.
공개 키 암호화: 사용자가 등록한 장치에서 생성된 공개 키와 개인 키 쌍을 사용하여 인증을 수행한다. 서버는 공개 키를 저장하고, 로그인 시 개인 키로 서명된 인증 요청을 통해 사용자를 확인한다.
보안성: WebAuthn은 피싱 공격이나 비밀번호 유출의 위험을 줄이며, 사용자의 인증 정보를 안전하게 보호한다.
다양한 디바이스 지원: 데스크탑, 모바일 기기 등 다양한 장치에서 사용 가능하며, 여러 브라우저와 플랫폼에서 호환된다.
WebAuthn은 등록과 인증 절차를 거친다.
등록: 사용자가 처음 로그인할 때, 장치에서 공개 키와 개인 키 쌍을 생성하고 서버에 공개 키를 등록한다.
인증: 사용자가 다시 로그인할 때, 서버는 사용자의 공개 키를 사용해 인증 요청을 생성하고, 사용자는 개인 키로 서명하여 응답한다.
WebAuthn은 주로 클라이언트-서버 인증 프로세스를 다루므로, 데이터베이스와의 직접적인 통합보다는 애플리케이션 설계에서의 통합이 중요하다.
**더 이상 비밀번호가 필요 없습니다.**😂
개인/공개 키 기반 인증: 비밀번호 기반 인증에 비해 훨씬 더 안전한 사용자 인증 방법으로, 기본적으로 비대칭 암호화를 사용
피싱 저항: WebAuthn은 인증 장치에 도메인 이름이 저장되기 때문에 피싱 공격에 저항력이 있습니다. 이를 통해 해커가 웹사이트를 스푸핑하여 자격 증명에 접근하기가 더 어려움
DB에 공개 데이터 저장: 이 흐름에서는 공개 데이터만 데이터베이스에 저장됩니다. 비밀번호와 같은 민감한 데이터를 저장할 필요가 없음
세밀한 제어: 흐름의 일부로 원하는 사용자 상호작용을 제어할 수 있습니다. 예를 들어, 특정 하드웨어 장치를 요구할 수 있음( 특정 아이폰이나 맥, 구글 패스키 등등)
W3C 권장 사항: 이는 모든 주요 브라우저와 장치에서 지원되어야 함을 의미합니다. 표준입니다!
WebAuthn은 비밀번호 없는 인증 기술로, 생체 인식이나 보안 키를 사용하여 안전한 로그인을 제공합니다. OAuth 2.0은 다양한 서비스에 안전하게 접근할 수 있도록 권한을 부여하는 프로토콜입니다. 2FA는 사용자 인증을 강화하기 위한 방법으로, 비밀번호 외에 추가적인 인증 요소를 요구합니다.
지문인식 한 번으로 로그인이 되는 마법을 구현해보자. 일단 edgeDB 의 auth를 알아보고, webauthn을 restAPI 형태가 아닌 socket 통신으로 client-back 을 연결 해볼 것이다.
sveltekit <-> socketIO <-> back