2012-03-14 13 views
12

저는 잠시 동안 bcrypt 악단에서 일해 왔지만 간단한 잔소리에 대답하는 데 어려움을 겪고 있습니다.대형 웹 사이트에서 bcrypt를 사용할 수 있습니까?

미국에서 합법적으로 성공적인 웹 사이트가 있다고 가정 해보십시오. 일반적인 미국 영업일 기준 평균 2 ~ 3 회의 인증 시도가 필요한 활동 패턴을 가진 약 100,000 명의 활성 사용자 (시간대를 포함하는 경우 12 시간)). 하루에 250,000 건의 인증 요청 또는 초당 약 5.8 건의 인증 요청입니다.

bcrypt의 깔끔한 점 중 하나는 사용자가 조정할 때 하드웨어를 조정할 때 시간이 지남에 따라 크래커보다 앞서 있어야한다는 것입니다. 일반적인 튜닝은 해시 생성 당 1/10 초 이상 걸릴 수 있습니다. 해시 당 .173 초로 설정한다고 가정 해 봅시다. 그 숫자는 1 초당 .173 초가 약 5.8 초당 해시로 발생하기 때문에 그 숫자를 선택했습니다. 즉, 가상의 웹 서버는 문자 그대로 사용자를 인증하는 것 외에는 아무 것도하지 않고 시간을 보내고 있습니다. 실제로 아무런 도움이되지 않아도됩니다.

이 문제를 해결하려면 bcrypt 방법을 조정 (좋은 생각이 아님)하거나 전용 서버를 사용하여 인증을 수행해야합니다. 이제 사이트가 성장하고 또 다른 10 만 명의 사용자가 추가된다고 상상해보십시오. 갑자기 두 개의 서버가 필요합니다. 즉, 인증 외에 아무것도하지 않아도됩니다. 하루 종일 가볍고 바쁜 기간이 있기 때문에 부하 스파이크에 대해 생각하기 시작하지 마십시오.

지금까지 보았 듯이 이것은 좋은 문제 일뿐만 아니라 bcrypt는 여전히 문제의 가치가 있습니다. 하지만 내가 여기서 뭔가 분명한 것을 놓치고 있는지 알고 싶습니다. 뭔가 미묘한가? 아니면 실제로 누구나 사이트의 인증 부분에 대해서만 전체 서버 팜을 운영하는 잘 알려진 웹 사이트를 가리킬 수 있습니까?

+1

돈이 있다면 실용적입니다. 일부 사이트에서는 필요한 대역폭 및 처리 능력이 몇 퍼센트 증가했기 때문에 전체 HTTPS를 실행 가능한 것으로 간주하지 않습니다. 그러나 다른 대형 사이트는 HTTPS 전용 정책을 시행하는 데 아무런 문제가 없습니다. 예산 및 우선 순위에 따라 다릅니다. –

+0

그건 인증 전용 서버가 아닙니다. 핵심입니다. –

+0

@Peter - 단지 핵심 이상입니다. 그렇지 않으면 까만 모자는 다만 그래픽 카드에 문제에 평행선을 더 던질 수 있었다. –

답변

5

bcrypt를 1/1000 초로 조정하더라도 단순 해싱보다 상당히 느립니다. — 빠르며 더러운 Perl 벤치 마크는 내 컴퓨터가 약 30 만 가지라고 계산합니다. 초당 SHA-256 해시.

예, 1000에서 300000 사이의 차이는 약 8 비트이지만 여전히 8 비트의 보안 여유가 있습니다. 그렇지 않을 경우 차이가 증가하는 것은 CPU가 빨라짐에 따라 커질 것입니다.

또한 bcrypt 대신 scrypt을 사용하면 반복 횟수가 줄어들더라도 메모리 경도 등록 정보가 유지되며, 이는 여전히 짐마차로 병렬 처리를 어렵게 만듭니다.

+0

예, 1/10000 초도 더 좋을 것입니다. 목표는 초당 수백만 개의 값을 계산하지 못하게하는 것입니다. 물론 짧은 시간으로 시작하여 나중에이 값을 조정할 수 있습니다.이 값은 나중에 영향을 예측할 수 있습니다. – martinstoeckli

관련 문제