패스키를 사용한 비밀번호 없는 로그인

Support passwordless login with Passkeys 의 후속으로, 수 주간의 내부 테스트를 거쳐 이제 Discourse에 패스키(passkey) 지원이 추가되었음을 기쁘게 알려드립니다.

패스키란?

패스키는 인증에 비밀번호를 사용하는 것보다 더 안전하고 단순한 대안입니다. 패스키 생성과 사용은 이제 다양한 플랫폼과 브라우저에서 널리 지원되고 있습니다. 비밀번호와 비교할 때, 패스키는 플랫폼이 생성하는 강력한 자격 증명과 생체 정보 확인(예: Touch ID, Face ID, PIN 또는 기기 비밀번호) 덕분에 내장된 안전성이 더 뛰어납니다. 패스키는 서버 측 정보 유출(키의 비밀 부분은 절대 기기를 벗어나지 않음)이나 피싱(각 키는 하나의 웹사이트/서비스에만 연결됨)에도 안전합니다.

기능 배포

호스티드(Hosted) 고객인 경우, 패스키 지원이 향후 며칠 내에 인스턴스에 배포될 예정입니다. 지금 바로 활성화하고 싶으시다면, 메타(meta)에서 @team에게 연락하시거나 team@discourse.org로 이메일을 보내주세요.

Discourse를 셀프호스팅(Self-hosting) 중인 경우, 해당 기능이 곧 Discourse 코어에서 기본적으로 활성화될 것입니다 이 커밋 시점에 코어에서 기본적으로 활성화되었습니다. 비활성화하고 싶으시다면 Rails 콘솔을 통해 다음을 실행할 수 있습니다:

launcher enter app
rails c
SiteSetting.enable_passkeys = false

패스키는 로컬 로그인(local logins)이 활성화된 Discourse 인스턴스에서만 사용할 수 있습니다. 인스턴스가 로컬 로그인을 사용하지 않는 경우, 패스키 기능은 효과가 없습니다.


기능이 활성화되면, 사용자는 사용자 설정의 보안 탭으로 이동하여 계정에 패스키를 추가할 수 있습니다:

패스키가 등록되면, 사용자 이름 필드 아래에 있는 자동 입력 드롭다운(1)을 통해 또는 “패스키로 로그인” 버튼(2)을 클릭하여 로그인할 수 있습니다.

자세한 정보

패스키에 대한 수많은 자료와 가이드가 있습니다. 다음 자료가 가장 유용하다고 생각합니다:

향후 개선 사항

기능의 초기 배포가 완료된 후, 다음과 같은 개선 사항을 고려할 수 있습니다:

  • 계정 생성 시 패스키 설정 허용
  • 민감한 작업을 확인할 때 패스키 사용 허용 (현재는 사용자 설정의 보안 탭에서는 지원되지만 일부 관리자 전용 화면에서는 지원되지 않음)
  • 비밀번호를 완전히 제거할 수 있도록 허용 (사용자별 또는 인스턴스별 기준은?)
32개의 좋아요

훌륭한 추가 기능입니다! 하지만 비밀번호로 로그인하면 보안상의 이점을 쉽게 우회할 수 있습니다. 비밀번호를 입력한 후에도 패스키를 다시 입력하라는 프롬프트가 나올 것으로 기대했지만, 실제로는 비밀번호만으로 로그인됩니다. 이는 별도의 2FA 설정에서 보안 키를 다시 등록함으로써 방지할 수 있지만, 이 방법은 직관적이지 않고 번거롭습니다.

3개의 좋아요

고맙습니다 @Be0

현재 대부분의 구현 방식에서는 패스키가 아직 이러한 방식으로 배포되지 않고 있습니다. 패스키는 2FA(이중 인증)와 독립적으로 취급되고 있으며, YouTube의 접근 방식에 대한 이 보고서를 참고해 주세요. 저는 업계가 점차 이 부분에 적응해 나갈 것이라고 생각합니다.

기대하신 대로 작동하려면 두 가지 변경 사항이 필요합니다:

1단계: 패스키를 2FA로 사용할 수 있도록 허용 (현재는 언급하신 대로 보안 키를 독립적으로 등록해야 합니다)
2단계: 사용자가 패스키를 추가한 경우 비밀번호 로그인 시 2FA를 강제 적용

1단계는 타당하다고 생각하며, 사용자에게 큰 부담을 주지 않습니다. 2단계도 타당하지만, 사용자가 브라우저에서 패스키를 삭제하거나(또는 특정 장치에 패스키가 없는 경우) 접근이 차단되므로 다소 번거로울 수 있습니다.

그래도 이 부분을 살펴볼 가치가 있다고 생각합니다.

7개의 좋아요

안녕하세요, 모바일(파이어폭스)에서 제 Discourse 사이트를 방문할 때 패스키가 지원되지 않는데, 의도된 동작인가요?

4개의 좋아요

Firefox가 전반적으로 패스키(passkey) 지원을 추가하기 위해 적극적으로 작업하고 있다고 생각하지만, 이 차트를 올바르게 읽는다면 아직 100% 완료된 상태는 아닌 것 같습니다.

버전과 운영체제에 따라 아직 사용할 수 없을 수 있습니다. 저는 macOS와 iOS에서 간단한 테스트를 해봤는데, meta.discourse.org에서는 패스키 인증이 사용 가능했고 정상적으로 작동했습니다.

5개의 좋아요

게시물이 새 주제로 분리되었습니다: Issues using passkeys with vaultwarden

브라우저의 자동 완성 기능이 어떤 이유로든 패스키를 포함하지 않는 경우, “패스키로 로그인” 버튼을 클릭할 수 있습니다.

3개의 좋아요

여기서 @team에게 PM을 보내거나 team@discourse.org으로 이메일을 보내시면 이 기능을 비활성화해 드릴 수 있습니다. 다만, 웹상의 많은 서비스가 더 안전한 인증 수단으로 패스키를 채택하고 있으므로 이 기능의 비활성화는 권장하지 않습니다.

4개의 좋아요

결국 비밀번호를 완전히 비활성화할 수 있도록 할 계획이 있나요? (계정 설정 단위로 가능하면 좋겠습니다. 사이트 전체에 이를 강제하는 것은 좋은 결과로 이어지지 않을 것 같거든요.) 비밀번호와 패스키가 동시에 활성화되어 있으면 패스키의 유용성이 다소 제한되기 때문입니다. 매우 복잡한 비밀번호를 만들어 두고 절대 사용하지 않는 방식으로 어느 정도 해결할 수는 있지만, 이는 패스키의 본질을 우회하는 것에 불과합니다.

4개의 좋아요

네, 좋다고 생각합니다 (그리고 계정의 보안도 강화될 거예요). 이제 OP의 “가능한 향후 개선 사항” 섹션에 추가하겠습니다.

3개의 좋아요

이는 패스키의 안전성에 있어 매우 중요합니다. 비밀번호 로그인을 비활성화할 수 없다면, 패스키는 편의성 이상의 가치를 갖기 어렵습니다.

2개의 좋아요

패스키 메커니즘을 제가 이해한 바로는, 접근 키를 저장하기 위해 비밀번호 관리자 같은 신뢰할 수 있는 컨테이너를 설치해 두어야 합니다. 비밀번호를 없애는 것은 모든 사용자가 이러한 관리자를 설치해 두었다고 가정하기 때문에, 그렇지 않은 사용자는 어떻게 로그인해야 하나요?

1개의 좋아요

2FA를 사용하지 않는 사람들이 2FA가 필요한 사이트에 접근하는 방식과 똑같습니다 — 그냥 접근하지 않는 것이죠.

2024년 현재 비밀번호 관리 도구(어차피 이미 사용해야 합니다)의 대안으로 Chrome, Safari, Windows, iPhone, Android, Yubi 등이 모두 존재하며, 이 모든 것이 패스키와 함께 작동한다는 점을 고려하면, 이것이 실제 우려 사항은 아닙니다.

또한 모든 사용자에게 비밀번호를 없애도록 강제하자는 제안을 한 것도 아닙니다(그렇게 되는 것에 반대하지는 않지만). 하지만 패스키를 사용하는 당신(사용자)이 비밀번호를 비활성화할 수 없다면, 패스키의 목적은 훨씬 약해지고 여전히 피싱 공격에 완전히 취약한 상태가 됩니다.

1개의 좋아요

제가 디스커스에 패스키를 선택했다면 더 이상 비밀번호를 사용하지 않을 텐데, 그러면 어떻게 피싱 공격을 당할 수 있죠? 비밀번호 로그인에 대한 악성 공격이나 무차별 대입 공격(브루트포스)의 위험은 남을 것이라는 점은 이해합니다. 그리고 사용자별로 이를 비활성화하라는 여러분의 제안은 타당합니다. 하지만 피싱 공격을 통해서는 불가능한 것 아닌가요?

1개의 좋아요

패스키만 사용하여 비밀번호 없이 계정을 생성하는 기능을 지원할 계획에 대한 업데이트가 있나요? 어차피 비밀번호가 필수라면 패스키를 지원하는 것이 거의 무의미해 보입니다.

5개의 좋아요

이 기능을 사용하는 사람이 몇 명(또는 있는지)인지 파악할 수 있을까요?

일반적인 사이트 설정을 통해 비활성화할 수 있으면 좋겠습니다.

1개의 좋아요

다음 Rails 명령어를 사용하면 생성된 passkey의 수를 확인할 수 있습니다:

UserSecurityKey.where(factor_type: 1).count
1개의 좋아요

고맙습니다. 기초적인 질문이라 죄송하지만, 그건 다음 뒤에 입력하는 건가요?

launcher enter app
rails c
2개의 좋아요

개인적인 참고용으로 다음과 같이 사용했습니다:

  • cd /var/discourse
  • ./launcher enter app (./ 없이 입력하면 “launcher: command not found” 오류가 발생했습니다)
  • rails c (잠시 대기)
  • SiteSetting.enable_passkeys = false
  • Control-D로 Rails 콘솔 종료
  • Exit로 앱 종료

예상대로 패스키 사용 옵션이 사라졌습니다. 감사합니다.

1개의 좋아요

패스키를 생성한 사용자가 한 명 있었습니다.

UserSecurityKey.where(factor_type: 1)으로 user_id를, Data Explorer를 이용해 사용자 이름을 확인했습니다.

패스키 옵션을 제거했을 때 아무 문제가 발생하지 않도록 보장하기 위해 우리가 해야 할 일이 있을까요?

사용자가 로그아웃될까요, 아니면 로그아웃한 후 패스키를 이용해 로그인할 수만 없게 될까요?

사용자에게 이미 일반적인 비밀번호가 있을까요, 아니면 이제 비밀번호를 생성할 수 있게 될까요?

1개의 좋아요