it-swarm-korea.com

세 번의 비밀번호 시도 실패 후에 사이트가 잠금을 구현하는 이유는 무엇입니까?

나는 무한한 암호 시도를 허용하지 않는 이유를 알고 있습니다-무차별 대입 시도는 meatspace 약점이 아니라 컴퓨터 보안의 문제입니다.

쉽게 활성화되는 잠금 정책을 구현할 때 서비스 거부가 문제가되지 않습니까?

실제 보안 위협과 유용성의 균형을 이루는 계정을 잠그기 전에 선택할 수있는 최적의 수 또는 범위를 보여주는 어려운 연구가 있습니까?

그것을 생각할 때, 오늘날 일반적으로 사용되는 암호 복잡성으로 세 번의 시도와 20 번의 시도 사이에 측정 가능한 보안 차이가 보이지 않습니다.

(이것이 주관적이라는 것을 알고 있지만 측정 기반 의견을 찾고 있습니다)

107
Bradley Kreider

최근 오렌지 카운티에서 열린 OWASP AppSec 2010 컨퍼런스에서 AT & T의 Bill Cheswick이이 문제에 대해 긴 시간 동안 이야기했습니다.

간단히 말해 연구가 충분하지 않습니다.

결국, 덜 고통스러운 계정 잠금에 대한 그의 아이디어는 다음과 같습니다.

  • 중복 된 비밀번호 시도를 세지 마십시오 (잘못 입력 한 것으로 생각 될 수 있음)
  • 기본 비밀번호에 대한 비밀번호 힌트를 작성하고 보조 (약한) 보조 비밀번호는 없습니다.
  • 신뢰할 수있는 당사자가 사용자를 보증하도록하여 비밀번호를 변경할 수 있습니다.
  • 시간 단위로 계정을 잠그십시오.
  • 비밀번호 규칙을 사용자에게 상기시킵니다.
75
Zian Choy

PCI Data Security Standards를 준수하는 모든 웹 사이트는 섹션을 준수해야합니다.

  • 8.5.13 (6 회 이상 시도한 후 사용자 ID를 잠그면 반복 된 액세스 시도를 제한 함)
  • 8.5.14 (잠금 시간을 30 분으로 설정하거나 관리자가 사용자 ID를 활성화 할 때까지).

불행히도 신용 카드를 수락하는 많은 사이트가 디자이너가 반드시 구현 한 내용에 동의하지 않아도 드라코 니안 잠금 정책을 사용하는 이유는 무엇입니까?.

편집 : 이러한 요구 사항은 "소비자 이외의 사용자"시스템에만 적용되므로 카드를받는 고객 사이트에는 영향을 미치지 않습니다.

37
realworldcoder

내 경험은 잠금 메커니즘이 인기가 떨어지고 있다는 것입니다 (적어도 웹 응용 프로그램의 경우). 일련의 실패한 시도 후에 계정을 잠그는 대신 성공적인 인증을 위해 추가 정보를 요청하기 시작합니다.

22
Tate Hansen

그것이 야구의 "세 번의 파업"규칙에서 나온 것이라면 놀랄 일이 아닙니다.

영숫자 암호의 경우 한 가지 정당성은 다음과 같습니다.

일반적으로 실패한 시도는 잘못된 유형이거나 CAPS 켜기/끄기 문제입니다. 따라서 로그온을 시도하고 거부합니다 (1). 잘못 입력했다고 생각하기 때문에 (2) 다시 시도한 다음 CAPS 키가 켜져 있다는 사실을 알고 세 번째 시도에 들어갑니다.

일반적으로 숫자 코드를 입력 할 때 네트워크에서 휴대폰 잠금을 해제하지는 않습니다.

더 나은 제안은 로그인 시도가 연속적으로 실패하는 사이에 계속 증가하는 지연입니다. 먼저 즉시 재 시도를 허용 한 다음 1 초, 2, 4, 8을 허용하십시오. 모든 무차별 대입 공격을 무시하기에 충분한 시도 사이에 1 분 동안 빠르게 대기하고 있습니다.

18
Gary

OP에 동의합니다. 잠금 장치가 당신을 보호하는 것에 대해 생각하면 3 번 또는 20 번 시도 (또는 그 문제에 대해 100 번) 사이에 차이가 없습니다. 잊어 버린 사용자를 처벌하는 것 외에도 이러한 잠금으로 달성하는 것은 무차별 대입 공격을 방지하는 것입니다. 또한 사용자는 공격이 진행 중이라는 경고를 트리거 할 수 있지만 이것이 주된 목적은 아닙니다 (그렇다면 사용자가 자신의 모니터링 작업을 더 쉽게하기 위해 의도적으로 사용자를 DoSing한다는 의미입니다). 아주 좋은 연습).

누군가 비밀번호 데이터베이스를 가지고 있고 오프라인으로 해킹 할 수있는 경우 무제한으로 시도 할 수 있습니다. 당신의 20 추측 한계는 좋지 않습니다.

누군가가 온라인 무차별 대입을 시도하는 경우 "충분히 오래"견딜 수있는 암호 만 있으면됩니다. IRT가 응답 할 수있을 정도로 길거나 공격자가 포기할 수있을 정도로 길기 때문입니다.

Conficker 암호 데이터베이스는 IIRC 200 암호보다 약간 낮으며 지구상에서 가장 멍청한 암호로 채워져 있습니다. 이제 비밀번호가이 목록에 없다고 가정 해 봅시다. 잠금없이 15 분마다 20 번의 암호 시도를 허용하면 공격자가 해당 목록을 통과하는 데 2 ​​시간 이상이 걸립니다.

실제로 추측 목록을 kidsname02, birthday99 등과 같은 해당 사용자에 대한 관련 정보로 만든 비밀번호로 좁히더라도 적어도 수십 개의 비밀번호로 끝나서 사전 공격을 한 시간 또는 더. 시간이 지남에 따라 지속적이고 잘못된 추측은 몇 분 안에 소수의 잘못된 암호가 아니라 경보를 발생시키는 것입니다.

따라서 사용자에게 가장 기본적인 암호 함정을 피할 수 있다면 많은 잘못된 암호 시도를 기꺼이 받아 들일 수 있습니다.

개인적으로, 나는 15 세에 선을 그립니다. 전적으로 임의적이고 실질적인 것 : 실제 사용자는 이보다 오래 전에 포기한 것을 발견했습니다. 일반적으로 시도 횟수가 많으면 오래된 자격 증명이있는 프로세스 또는 세션입니다. 그렇지 않은 경우 공격을 찾는 것에 대해 이야기 할 수 있습니다.

15
itinsecurity

이상한 DDOS 공격의 위험이 따르는 어리석은 임의의 규칙입니다. Marv가 웹 사이트 X를 싫어하고 웹 사이트 X에 Y 횟수의 시도 잠금 정책이 있다고 가정합니다. Marv는 스크립트가 가짜 암호로 임의의 이름을 Y 번 자동 시도하도록함으로써 심각한 지옥을 일으킬 수 있습니다. 암호가 작동하더라도 Marv는 신경 쓰지 않고 무시할 것입니다. 이것은 웹 사이트 X에 대한 많은 사용자를 효과적으로 잠그고 많은 사용자 좌절을 유발하며, 암호를 재설정하기 위해 전화 해야하는 은행 인 경우 신의 도움을받습니다. 아무도 이것을 시도하지 않은 것에 놀랐습니다.

11
AmaDaden

이 토론에 늦었다 고 생각하지만 여기에 추가 할만한 유용한 정보가 있기를 바랍니다.

계정 잠금 정책 (대부분의 조직에서 일반적으로 한 자릿수 범위의 연속적인 유효하지 않은 시도 횟수)은 자동 무차별 대입 공격에 대해서만 고안된 것은 아닙니다.

사람 공격자, 특히 암호의 일부를 이미 알고있는 개인이 암호를 추측하는 것을 방지합니다. 공격자는 다음과 같은 방법으로 암호 조각을 얻을 수 있습니다.

  • 어깨 서핑
  • 암호를 선택하기 위해 개인이 사용한 패턴을 추측하여 결국, password # 01 , password #와 같이 순서대로 요소와 함께 암호를 사용한 횟수는 몇 번입니까? 02 등.

물론 단점은 임계 값이 낮 으면 서비스 거부와 관련 비용이 발생한다는 것입니다. Microsoft에서 발행 한 계정 잠금 모범 사례 백서 는 권장 값 10을 제공합니다. 또한 Windows 계정 잠금 정책의 매개 변수를 사용하여 성공적인 공격 가능성을 추정하는 방법을 설명합니다.

예를 들어, LockoutDuration 레지스트리 값이 0 인 계정이 잠길 때 관리자가 암호를 재설정한다고 가정합니다. LockoutDuration 레지스트리 값이 0으로 설정되고 LockoutThreshold 레지스트리 값이 20으로 설정되면 악의적 인 사용자는이 암호에 대해 20 번 추측 할 수 있습니다. 암호. 잠금 기간이 30 분인 경우 악의적 인 사용자는 비밀번호가 변경 될 때까지 30 분마다 20 개의 추측을합니다. 이는 악의적 인 사용자가 사용할 수있는 총 추측 횟수의 매우 큰 차이입니다.

이에 비해 관리자가 최대 암호 사용 기간을 42 일로 설정하면 첫 번째 악의적 인 사용자는 주어진 암호에 대해 20 번만 추측 할 수 있고 두 번째 악의적 인 사용자는 40,320 번의 추측 (20 번의 잠금 시도 횟수, 매일 48 개의 잠금 횟수, 사용자가 비밀번호를 변경하기 전에 42 일을 곱한 값). 기본 비밀번호 설정을 사용하면 약 10 ^ 12 개의 가능한 비밀번호가 있습니다. 이는 악의적 인 사용자가 암호를 추측 할 확률이 대략 000004 % (%)임을 의미합니다. 최적화 된 추측 체계를 사용하면이 비율이 더 큰 비율 일 것입니다.

물론 어떤 평신도라도 적절한 수를 선택하는 것은 쉽지 않으므로 그러한 결정은 신중하게 고려해야합니다. 따라서 일부 조직에서는 계정 잠금 정책의 금전적 영향을 계산하려는 노력을 기울이지 않았으며, 제공되는 보안 이점을 유지하면서 정책을 완화하는 데 따른 이점을 얻지 못했습니다.

10
Vineet Reynolds

여기에는 두 가지 측면이 있습니다. 첫 번째로 언급했듯이 무차별 대입 공격을 방지합니다.

이를 위해, 실제로 시도 할 수있는 충분한 수의 키 공간을 제공하는 적절한 암호 정책 (길이 + 복잡성 + ...)을 사용하여 2000 년 3, 5, 20, 2000 번에 시도해야합니다. any 일종의 조절 (시간당 X 회 시도 횟수)은 전체 공간을 강제로 처리하는 데 수십 년이 걸릴 것입니다. (수학).

잠금이 일시적 일 뿐이며 짧은 시간이 지나면 자동으로 잠금 해제됩니다.

따라서 잠금 시도 횟수는 임의적입니다.

그러나 여기에는 또 다른 미묘하고 수학적인 문제가 있습니다.

단일 사용자가 2000 회 연속으로 잘못된 암호를 반복해서 입력하는 것은 의미가 없습니다.

즉, 임의로 2000을 선택하면 long 그 전에는 합법적 인 사용자가 아닙니다. 따라서 비즈니스의 의미와 비즈니스 중심의 위험 분석 트레이드 오프로 이어집니다.

역사적으로 트레이드 오프는 위험 측면으로 더 기울어졌습니다. 암호가 짧고 복잡하지 않기 때문에 3 또는 10의 차이가 더 컸습니다. 또한 사람들은 fewer 암호를 가지고 있었기 때문에 기억하기 쉬웠습니다 ... 그리고 사용자들은 일반적으로 기술적으로 더 정통했습니다.

요즘에는 비즈니스 영향을 고려할 때 세 가지가 실제로 의미가 없습니다. 그것은 실제로 your 앱에 어떤 의미가 있는지, 어떤 유형의 사용자, 얼마나 자주 로그인하는지 등에 대한 질문입니다. 일반적으로 실패한, 합법적 인 시도가 몇 번이고 가능한지 두 번 알아내는 것이 좋습니다. 그것.

( @ realworldcoder가 언급했듯이 PCI는 임의로 6 개를 선택했으며 PCI의 영향을받는 경우에는 많은 결정이 필요하지 않습니다. 그렇지 않으면 적합한 숫자를 선택하십시오.)

8
AviD

연속적인 실패한 시도를 지연시키고 무차별 강제 실행을 방지하기 위해 시간을 늘리는 '잠금'제안과 관련하여 대상 사용자 공격에 대해서만 작동합니다.

침입자가 시스템에 침입하는 것만 신경 쓰면 광범위한 첫 번째 공격을 수행 할 수 있습니다 (다음 암호로 순환하기 전에 알려진 모든/추측 된 사용자 이름을 순환시킵니다). 제대로 수행되면 분산 된 시스템 네트워크에서 나올 수 있으며 지연 시스템도 작동하지 않는다는 것을 쉽게 알 수 있습니다.

다른 사람들이 언급했듯이, 공격을 조기에 발견하기위한 실패한 시도를 정확하게 모니터링하는 것이 중요합니다.

예, 3 번의 시도는 매우 임의적이며 DoS 위험을 초래합니다. 사람들이 공개 시스템에 사용을 중단하길 바랍니다. 제발!

다른 해결책 : 2 요인 식별. RSA 토큰. 'ID 번호'가있는 단일 RSA 토큰을 개인적으로 소유 할 수있는 방법 만 있다면 그런 다음이 'ID 번호'를 모든 시스템에 등록 할 수 있으며, 로그인하려면 비밀번호와 함께 토큰의 현재 값이 필요합니다.

그러나 그것은 구현과 신뢰에 대한 다른 많은 문제를 제기합니다 ...

7
Dan McGrath

공개 기업 (증권 거래소에서 주식을 매도)은 Sarbanes-Oxley Act에 따라 규제를받으며 1 년에 여러 차례 감사를받습니다. 중요한 소프트웨어 응용 프로그램은 암호 시도에 실패한 후 계정을 잠그는 기능 중 하나 인 특정 보안 기능을 준수해야합니다.

이러한 응용 프로그램의 대부분은 이미 기능이 활성화 된 회사 Active Directory에 통합하는 것입니다.

3
Jose

Here 's 당신이 찾고 있다고 생각하는 것을 넘어서는 정말 멋진 책입니다. 그들은 3 개의 공격 정책, 10 개의 공격 정책 및 무한의 공격 정책을 사용하여 학부생들로부터 데이터를 가져 와서 우리는 3에서 10으로 숫자를 늘릴 것을 제안했습니다 (로그인 성공의 약 3 배이므로).

여기서 주관적인 관점으로 돌아 가기 ...

대부분의 장소는 왜 삼진 정책을 사용합니까? 시간이 지남에 따라 개발 된 것은 휴리스틱 일뿐입니다. 세 번의 시도만으로도 충분하다는 점에서 세 번의 시도는 관리자와 사용자에게 거의 중간 단계입니다.

암호의 기본 개념은 암호를 아는 것이 supposed 입니다. 실제로 두 번 이상 필요하지 않아야합니다 . 실수는했지만 전쟁 중에는 ... 당신이 동맹임을 증명할 수있는 기회는 한 번 밖에 없습니다.

3
user124863

그들은 3을 무작위로 선택했을 것입니다. 이것은 매우 낮습니다. 아마도 그들은 과거에 보안 문제가 있었으며 문제를 올바르게 해결하거나 수정하기보다는 낮은 잠금 번호를 선택했을 것입니다.

시간을 늘리면서 사용자를 잠그는 방법을 선호합니다. 그래도 사용자 이름으로 키를 입력하지는 않을 것입니다. 그 대신 사람이 여러 사용자 이름을 시도 할 수 있기 때문에 개인의 IP 주소를 사용하십시오. 사용자가 5 번의 잘못된 시도에 도달하면 잠금 시간을 (잘못된 로그인 시도 횟수) ^ 2 초로 설정했습니다. 사용자가 비교적 적은 횟수의 암호를 모르는 경우 사이트에서 암호 복구 도구를 제공 할 경우 대부분 암호 복구 도구를 사용합니다. 그것이 진정한 해킹 시도라면 해커에게 너무 좌절되어 결국 포기할 것입니다. 봇은 몇 번이나 로그인을 거의 시도하지 않을 것입니다. 1001 번째 비밀번호를 사용해보십시오. 승수를 ^ 3으로 늘려서 억제 능력을 쉽게 높일 수 있습니다. 위의 모든 것이 유효한 사용자에게는 너무 높아질 수 있습니다.

2
Rush Frisby

얼마 전 나는 다음과 같은 기본 규칙을 따르는 로그인 보안 체계를 구현했습니다.

  1. 첫 번째 실패 시도는 즉시 피드백을 제공합니다. 아마도 뚱뚱해 졌어요
  2. 두 번째에서 다섯 번째 실패한 시도로 인해 실패한 시도당 1 초씩 응답이 지연되었습니다. 예 : 2 초, 3 초, 4 초 ...
  3. 다섯 번째 시도가 실패하면 세션이 종료되고 브라우저를 닫고 다시 시도해야한다는 메시지가 표시됩니다.

나에게 이것은 무차별 대입 공격을 막기에 충분했다. 최종 사용자에게는 불편을 주며 지원을위한 추가 작업을 만들지 않았습니다.

2
Josh