SHA-1은 암호 저장에 안전합니까?


148

결론 : SHA-1은 사전 이미지 공격에 대비하여 안전하지만 계산하기가 쉬우므로 무차별 대입 또는 사전 공격을보다 쉽게 ​​수행 할 수 있습니다. (SHA-256과 같은 후속 작업에서도 마찬가지입니다.) 상황에 따라 계산 비용이 많이 드는 (예 : bcrypt) 해시 함수가 더 나은 선택 일 수 있습니다.


어떤 사람들은 "SHA-1이 고장났습니다"와 같은 말을 많이 던지므로 정확히 그 의미를 이해하려고합니다. SHA-1 암호 해시 데이터베이스가 있고 공격자가 최신 SHA-1 차단 알고리즘을 사용하고 100,000 대의 컴퓨터가있는 봇넷에 액세스한다고 가정 해 봅시다. (100k 가정용 컴퓨터를 제어 할 수 있다는 것은 초당 약 10 ^ 15 작업을 수행 할 수 있음을 의미합니다.)

  1. 한 사용자의 비밀번호를 찾으십니까?
  2. 주어진 사용자의 비밀번호를 찾으십니까?
  3. 모든 사용자의 비밀번호를 찾으십니까?
  4. 사용자 중 하나로 로그인하는 방법을 찾으십니까?
  5. 특정 사용자로 로그인하는 방법을 찾으십니까?

암호가 소금에 절인 경우 어떻게 변경됩니까? 염장 방법 (접두사, 접미사, 둘 다 또는 xoring과 같이 더 복잡한 것)이 중요합니까?

인터넷 검색 후 내 현재 이해가 있습니다. 내가 잘못 이해 한 경우 답변을 수정하십시오.

  • 소금이 없으면 무지개 공격은 즉시 모든 암호를 찾습니다 (매우 긴 암호는 제외).
  • 임의의 소금이 충분히 길면 암호를 찾는 가장 효과적인 방법은 무차별 대입 또는 사전 공격입니다. 충돌이나 사전 이미지 공격은 실제 암호를 찾는 데 도움이되지 않으므로 SHA-1에 대한 암호화 공격은 도움이되지 않습니다. 어떤 알고리즘을 사용하든 중요하지 않습니다. MD5 또는 MD4를 사용할 수도 있고 암호도 안전합니다 (SHA-1 해시 계산 속도가 느리기 때문에 약간의 차이가 있습니다).
  • "안전한"안전성을 평가하기 위해 단일 sha1 실행에는 1000 회의 작업이 수행되고 비밀번호에는 대문자, 소문자 및 숫자 (즉, 60 자)가 포함되어 있다고 가정합니다. 이는 공격자 가 하루에 10 15 * 60 * 60 * 24 / 1000 ~ = 10 17 잠재적 암호를 테스트 할 수 있음을 의미합니다 . 무차별 대입 공격의 경우, 3 시간 동안 최대 9 자, 일주일에 최대 10 자, 1 년에 최대 11 자까지 모든 암호를 테스트해야합니다. (추가 문자마다 60 배가 걸립니다.) 사전 공격은 훨씬 빠르며 (단일 컴퓨터를 보유한 공격자는 몇 시간 내에 해체 할 수 있음), 약한 암호 만 찾습니다.
  • 사용자로 로그인하기 위해 공격자는 정확한 암호를 찾을 필요가 없습니다. 동일한 해시를 일으키는 문자열을 찾는 것으로 충분합니다. 이것을 첫 번째 사전 이미지 공격이라고합니다. 내가 아는 한 SHA-1에 대한 사전 이미지 공격은 없습니다. (A bruteforce 공격이 걸릴 것이다 (160) 이론적 공격자가 열 필요가 의미하는 작업을 30 그것을 해내 년. 이론적 가능성의 한계는 약 2 명이다 (60) 작업, 공격이 몇 년이 걸릴 것이다에있다.)가 있습니다 프리 이미지 공격 무시할만한 효과가있는 SHA-1의 축소 된 버전에 대비 (80 대신 44 단계를 사용하는 SHA-1이 감소 된 경우 공격 시간이 2160 작업에서 2157으로 감소 함)). SHA-1에 대한 충돌 공격은 이론상 가능한 범위 내에 있습니다 (내가 찾은 최선 의 시간이 2 80 에서 2 52 로 줄어 들었습니다 ).하지만 소금이 없어도 암호 해시에는 쓸모가 없습니다.

요컨대 SHA-1로 암호를 저장하면 완벽하게 안전 해 보입니다. 내가 뭐 놓친 거 없니?

업데이트 : 마르셀로 언급 기사 지적 이의 두 번째 프리 이미지 공격 (106) 작업을 . ( 편집 : Thomas가 설명 했듯이 ,이 공격은 실제 시나리오에는 적용되지 않는 가설적인 구성입니다.) 그래도 SHA-1을 주요 파생 함수로 사용하는 데 위험을 초래하는 방법을 여전히 알지 못합니다. 충돌 공격 또는 두 번째 사전 이미지 공격이 결국 첫 번째 사전 이미지 공격으로 전환 될 수 있다고 생각할만한 충분한 이유가 있습니까?


지금은 7 살이며 마지막으로 편집 한 이후 많은 일이 일어났습니다. SHA-1은 더 이상 암호 해싱에 대해 충분히 안전한 것으로 간주되지 않습니다
GordonM

@GordonM 무슨 일이야? 컴퓨팅 성능이 발전함에 따라 SHA-1 충돌 공격이 점점 실용화되고 있지만 실제로는 관련이 없습니다. SHA-1은 암호 해싱에 대해 실제로 안전하지는 않았지만 (일반적으로 빠른 해시는 그렇지 않음), AFAIK입니다.
Tgr

SHA-1은 처음부터 암호를 보호 할 의도가 없었기 때문에 암호 해싱에 대해 안전하지 않았습니다 ...
Azxdreuwa

답변:


209

귀하의 질문에 대한 짧은 대답은 다음과 같습니다. SHA-1은 가능한 한 안전합니다. MD5도, 심지어 MD4도 괜찮을 것입니다. 그러나 그것은 일부 투자자들을 불안하게 만들 수 있습니다. 대한 홍보 ,은, 예를 들어, SHA-256, 당신은 160 또는 128 비트 출력을 절단하는 경우에도 (스토리지 비용을 절감하는)는 "더 나은"해시 함수를 사용하는 것이 가장 좋습니다. SHA-3 라운드 -2 후보 중 일부는 SHA-1보다 빠르지 만 논란의 여지가없는 것으로 보인다. 그러나 그들은 여전히 ​​조금 새롭기 때문에 지금 SHA-256 또는 SHA-512를 고수하는 것이 더 안전한 경로입니다. 그것은 당신을 전문적이고 신중하게 보이게 할 것입니다.

"당신이 얻을 수있는만큼 안전한"은 "완벽하게 안전한"과는 다릅니다. 다소 긴 설명은 아래를 참조하십시오.

알려진 공격 정보 :

MD4, MD5 및 SHA-1에 대한 알려진 공격은 충돌에 대한 것으로 사전 이미지 저항에 영향을 미치지 않습니다. MD4에는 HMAC / MD4를 중단하려고 시도 할 때 이론적으로 만 악용 될 수있는 몇 가지 약점이 있지만 문제에는 적용되지 않습니다. 2 개의 106 Kesley과 슈나이어에 의한 종이의 두 번째 프리 이미지 공격은 매우 긴 입력 (2에 적용되는 일반적인 트레이드 오프입니다 60 바이트, 백만 테라 바이트의 - 통지 (106) + (60)가 160을 초과하는 방법, 당신은 볼 어디 그 트레이드 오프에는 마법이 없습니다).

이 메시지의 나머지 부분에서는 사용자가 사용하는 해시 함수 (예 : SHA-1)가 공격자가 사용할 수있는 특별한 속성이없는 "블랙 박스"인 것으로 가정합니다. 이것이 바로 "파손 된"해시 함수 MD5 및 SHA-1에서도 가능합니다.

레인보우 테이블 정보 :

"무지개 공격"은 실제로 사전 또는 무차별 대입 공격의 비용 분담입니다. 이것은 1980 년에 Hellman에 의해 처음 설명 된 시간 메모리 상충 관계 에서 파생 된 것 입니다. N 개의 가능한 암호 (사전의 크기이거나 2 의 출력으로 해시 함수를 강요하는 경우 2n 이라고 가정) n 비트), N- 해시 암호 를 미리 계산하여 큰 테이블에 저장 하는 시간 공유 공격이 있습니다 . 해시 출력을 정렬하면 단일 조회로 비밀번호를 얻을 수 있습니다. 무지개 테이블은 훨씬 감소 된 공간이 테이블을 저장하는 현명한 방법입니다. N / t 해시 비밀번호 만 저장 하고 O (t 2 ) 조회. 레인보우 테이블을 사용하면 실제로 계산할 수있는 것보다 훨씬 더 큰 사전 계산 테이블을 사실상 처리 할 수 ​​있습니다.

그러나 레인보우 여부에 관계없이 공격자는 여전히 전체 공격을 한 번 이상 실행해야합니다. 이것은 몇 가지 연속적인 최적화 계층으로 볼 수 있습니다.

  1. 무차별 대입 / 사전 공격에는 각 암호를 해독하는 데 N의 비용 이 발생합니다.
  2. 미리 계산 된 테이블을 사용하면 공격자는 해당 비용 N을 한 번 지불 후 암호 당 매우 적은 추가 비용으로 많은 암호를 공격 할 수 있습니다 .
  3. 사전 계산 된 테이블이 레인보우 테이블 인 경우 스토리지 비용이 줄어들 기 때문에 N 이 다소 클 수 있습니다 . N 의 병목 현상 은 공격자의 하드 디스크 크기가 아니라 공격자가 소집 할 수있는 CPU 성능이됩니다.

경우 N이 해시의 CPU 선정 된 것을 큰 충분 N의 암호가 미친 짓이, 그러한 공격에 관계없이 무지개 테이블 사용 여부에 가능하지 않습니다. 즉, 80 비트 이상의 출력을 가진 (사전 이미지 방지) 해시 함수로 무차별 대입 공격을 실행하기에 충분하지 않습니다.

소금에 관하여 :

소금은 사전 계산을 물리 치는 방법입니다. 위의 설명에서 솔트는 공격자를 1 단계로 되돌립니다. 솔팅은 공격자 가 여러 개의 공격 된 비밀번호간에 O ( N ) 비용 을 공유하지 못하게 합니다. 선조 무지개 테이블 인 미리 계산 된 테이블 은 더 이상 사용할 수 없습니다.

해시 된 데이터가 암호 로 구성되어있을 때 ( 예 : 임의의 인간의 두뇌에 맞는 것) N 이 매우 낮을 수 있기 때문에 소금이 필요하다 . 이것은 "사전 공격"에 관한 것입니다. 많은 사용자 암호가 특별히 선택된 공간에있을 것이라는 가정하에 잠재적 인 암호 공간 ( "사전")을 줄입니다.

따라서 솔트 닝은 최소한 공격자가 사전 계산 된 테이블, 특히 사전 계산 된 레인보우 테이블을 사용하지 못하게합니다. 이것은 공격자 하나 또는 두 개의 암호를 깰 수 있다고 가정합니다 . 우리는 그가 약간의 추가 오버 헤드로 1000 개의 다른 암호를 깨뜨리기를 원하지 않습니다.

또한, 소금은 홍보에 좋습니다.

SHA-1 비용 정보 :

SHA-1의 기본 비용은 64 바이트 블록을 해싱하는 것입니다. SHA-1의 작동 방식은 다음과 같습니다. 데이터가 채워지고 64 바이트 블록으로 분할됩니다. 단일 블록을 처리하는 비용은 Intel Core2 시스템에서 약 500 클럭 사이클이며 이는 단일 코어에 해당합니다. MD5와 MD4는 더 빠르며 각각 약 400과 250 주기로 계산됩니다. 대부분의 최신 CPU에는 여러 개의 코어가 있으므로 그에 따라 곱하는 것을 잊지 마십시오.

일부 염장 체계는 거대한 소금을 처방합니다. 예를 들어, 해시 함수에 들어가는 것은 실제로 단일 128 비트 솔트의 40000 연속 사본과 암호 자체입니다. 이것은 합법적 인 사용자와 공격자 모두에게 암호 해싱을 더 비싸게 만듭니다 (예를 들어 10000 배). 이것이 좋은 아이디어인지 여부는 설정에 따라 다릅니다. 데스크탑 시스템에 로그인하는 경우이 방법이 좋습니다. 사용자는 1µs 대신 10ms가 암호를 해시하는 것을 알지 못합니다. 그러나 공격자의 비용은 매우 눈에 띄는 요소 10000만큼 증가했습니다. 초당 수천 개의 클라이언트가있는 공유 서버에서는 총 비용이 엄청날 수 있습니다. 개념적으로 합법적 인 사용자와 공격자에 대해 동일한 요소로 막대를 높이는 것이 궁극적으로 좋은 보안은 아닙니다. 그러나 특정 상황에서는 가치있는 아이디어가 될 수 있습니다.

온라인 공격 정보 :

위의 모든 것은 오프라인 공격을 물리 치는 것에 관한 것 입니다. 오프라인 공격은 공격자가 암호를 "테스트"하는 데 필요한 모든 데이터를 가지고있는 공격입니다. 예를 들어 공격자는 해시 된 암호를 보유한 데이터베이스의 복사본을 얻을 수 있습니다. 오프라인 공격에서 공격자는 계산 리소스에 의해서만 제한됩니다. 반대로 온라인 공격은 공격자가 추측 할 때마다 정직한 검증자를 통과해야하는 공격입니다 (예 : 공격자가 단순히 공격 한 시스템에 로그인하려고 시도 함). 온라인 공격은 초당 시도 할 수있는 암호 수를 제한하여 막습니다. 극단적 인 예는 세 개의 잘못된 PIN 후에 종료되는 스마트 카드입니다.

일반적으로 암호 보안의 경우 공격자가 오프라인 공격을하지 않도록 시스템을 구성하는 데 훨씬 많은 비용이 듭니다. 이것이 바로 유닉스 시스템이하는 일입니다. 세계가 읽을 수있는 /etc/password파일 에 있던 해시 된 암호 는 이제 /etc/shadow권한있는 응용 프로그램을 제외하고는 읽기 액세스로부터 보호되는 파일에 있습니다. 여기서 가정하면 공격자가 읽을 수 있다면 /etc/shadow시스템에 대한 충분한 제어 권한을 가지고 더 이상 암호가 필요하지 않을 것입니다.


5
훌륭한 답변입니다. 내가 동의하지 않는 유일한 부분은 "결론적으로 합법적 인 사용자에 대해 동일한 요소로 막대를 높이면 공격자는 궁극적으로 좋은 보안이 아닙니다"입니다. 공격자는 사용자가 수행해야하는 여러 작업을 수행해야합니다. 사용자 로그인에 하나의 클록주기를 추가하면 공격자에게 수백만이 추가됩니다.
닉 존슨

1
@Thomas 이것은 여전히 ​​정확하며 아마도 무기한 예측할 수없는 미래에도 정확할 것입니다. 해커는 일반적인 암호 품질이 좋지 않기 때문에 모든 종류의 해싱을 통해 실제 암호를 추측 할 수 있습니다 . "123456"을 추측하면 항상 몇 안타를 얻을 수 있습니다. 어떤 비밀번호 저장 영역을 사용하든 관계없이이 상태가 유지됩니다.
tylerl

1
단지 내 견해이지만 더 강력한 암호 암호화가 이미 널리 사용되는 경우 왜 SHA1을 고수하겠습니까? 1 년 전, MD5는 "안전한"것으로 여겨졌지만 지금은 그렇지 않습니다. 이제 우리가 알고있는 모든 것이 SHA1에도 동일하게 발생할 수 있습니다. 개인적으로, 나는이 시점부터 Blowfish에 내기를 할 것입니다-그것은 암호 커뮤니티에서 더 나은 담당자와 더 적은 관련 전문가를 가지고있는 것처럼 보이며 거의 모든 곳에서 사용할 수 있으므로 SHA1과 도박 할 이유가 없습니다.
mindplay.dk

1
MD5가 암호 저장에 안전하다는 @ThomasPornin의 답변을 가로 질러 내 핵심에 충격을 받았습니다. MD5가 괜찮다면 왜 모든 사람들이 그것을 사용하지 않는다고 말합니까? bcrypt ?? 그들은 너무 조심 스럽습니까? 나는 모든 것을 읽고 이해했으며 무차별 대항에 취약하기 때문에 MD5가 매우 나쁘다는 인상을 받았다. 최근 1 년 전의 코멘트는 대답과 모순되지 않습니다 ...
temporary_user_name

1
@ Aerovistae : 당신은 security.SE 사이트 에서 그 대답 을 보고 싶을 수도 있습니다. 암호 해싱에 대한 자세한 분석 및 최근 정보가 포함되어 있습니다.
Thomas Pornin

30

이전 답변에서는 GPU에 대해 언급하지 않았으므로 암호가 소금에 절인 경우에도 전체 데이터베이스를 며칠 또는 몇 주가 아닌 몇 분 또는 몇 시간 내에 강제로 SHA-1 해싱을 병렬화 할 수 있습니다.

bcrypt 또는 scrypt와 같은 최신 암호 해시 알고리즘은 훨씬 더 높은 메모리 요구 사항을 가진 블록 암호 (GPU의 메모리 액세스를 같은 정도로 병렬화 할 수 없음) 때문에 GPU에서 실행하기 어렵도록 특별히 설계되었습니다. 또한 "작업 기능"이있어 기술이 향상됨에 따라 속도를 늦출 수 있습니다.

즉, 작업에 가장 적합한 도구 만 사용해야합니다. 그리고 SHA-1은 최신 기술에 비해 매우 부족합니다.

더 읽을 거리 :


2
"bcrypt 또는 PBKDF2와 같은 현대의 비밀번호 해시 알고리즘은 GPU에서 실행하기 어렵도록 특별히 설계되었습니다. "bcrypt 또는 scrypt "를 의미 했습니까? PBKDF2는 반복되는 해싱이므로 GPU에 문제가되는 것은 없습니다.
Tgr

4
사용하는 GPU를 알려주십시오. 같은 GPU를 구입할 것입니다. "분"( "시간"미만, 최대 59 분)으로 2 ^ 160 SHA-1 계산을 수행 할 수 있으면 초당 10 ^ 44 이상을 수행 할 수 있어야합니다. PCIe는 약 128GT / s의 속도로 전송되므로 GPU에도 멋진 온보드 메모리가 있어야합니다. 나는 그것을 원한다.
데이먼

3
@Damon : 사용자에게 "사소한"암호 (<8 비트 엔트로피) 또는 "깨지지 않는"암호 (> 60 비트의 엔트로피)가 있다고 가정하는 것 같습니다. 암호 엔트로피가 10-60 비트 범위 인 모든 사람을 완전히 무시하고 있습니다. 이들은 bcrypt, rainbow table 및 GPU를 사용하는 사용자이며 일반적으로 일반적인 사용자 기반의 약 80 %를 구성합니다.
jammycakes

1
(oops ... 나는 "bcrypt, rainbow 테이블 및 GPU가 가장 큰 차이를 만드는 사용자입니다")
jammycakes

3
일부 통계 및 분석은 troyhunt.com/2011/06/brief-sony-password-analysis.html을 참조하십시오. 사용자의 36 %가 비밀번호 사전에 나타나는 비밀번호를 선택하고 2-3 %만이 가장 일반적인 비밀번호를 선택합니다.
jammycakes

7

귀하의 설명은 최신 기술에 맞게 정확합니다.

그러나 해시 함수의 단일 반복을 사용해서는 안됩니다. 최소한, 최소한 여러 번 반복해야합니다 (해시를 1000 회 반복하면 공격자의 작업이 1000 배 증가합니다. 작업량은 동일하지만 증가하지만 당신은 그들보다 훨씬 적은 암호 해싱을하고 있습니다).

그러나 이상적으로는 여기에 설명 된 것과 같은 기존 비밀번호 스토리지 기본 요소를 사용해야합니다 .


수천 번 반복하는 것은 생각만큼 좋지 않습니다. 해시 충돌의 위험이 증가합니다. yorickpeterse.com/articles/use-bcrypt-fool
jammycakes

1
그 기사는 완전히 혼란스러워 보입니다. 안전한 해싱 함수는 반복 해싱을 통해 눈에 띄는 엔트로피를 잃지 않으며 반복 해싱은 PBKDF2 및 scrypt와 같은 주요 확장 체계의 핵심 구성 요소입니다. 저자가 권장하는 bcrypt도 비슷한 구성을 사용합니다. 그의 '공격'은 해시의 사전 이미지를 찾는 데 의존합니다.이 경우 해시를 사용하는 대부분의 구성은 철저히 손상됩니다. 마지막으로 사람들이 반복 해싱을 직접 사용하지 않는 것이 좋습니다. 제 질문에서 말했듯이 목적에 맞게 설계된 기존 기본 형식을 사용해야합니다.
Nick Johnson

7

SHA1은이다 메시지 다이제스트 , 그것은 없었다 결코 암호 해싱 (또는 키 파생) 기능 . (HMAC-SHA1이있는 PBKDF2에서와 같이 KDF의 빌딩 블록으로 사용될 수 있지만)

암호 해싱 기능은 사전 공격 및 레인보우 테이블을 방어해야합니다. 이 목표를 달성하기 위해 여러 알고리즘이 설계되었습니다.

현재 가장 좋은 선택은 아마도 Argon2 입니다. 이 암호 해싱 기능 제품군은 2015 년 암호 해싱 공모전에서 우승했습니다.

경우 Argon2가 사용할 수없는 유일한 다른 표준화 된 암호 해싱 또는 키 유도 함수이다 PBKDF2 먹은 NIST 표준입니다. 표준을 사용할 필요가없는 경우 bcryptscrypt를 포함한 다른 선택 사항 있습니다.

Wikipedia에는 ​​다음 기능에 대한 페이지가 있습니다.


4

SHA-1에서 심각한 취약점보다 검색 속도가 훨씬 빠르다는 심각한 취약점이 발견되었습니다. 여전히 다루기 힘들지만, 너무 오래 걸리지는 않을 것으로 예상됩니다. 편집증 프로그래머는 SHA-2 제품군의 무언가를 선호합니다.

이 기사 에서 2005 원래 결과에 대해 :

"화재 출구로 걸어 가야하지만 달리지 않는 시간이다. 연기는 보이지 않지만 화재 경보기는 꺼졌다."

현재의 암호 해독이 SHA-1을 안전하지 않게 만드는 것이 아니라 암호 커뮤니티가 더 나쁜 소식이 모퉁이에 있을지 걱정하고 있습니다. 이 두려움은 SHA-1과 동일한 결함을 보이는 SHA-2에도 적용됩니다. 비록 훨씬 더 넓은 검색 공간이 필요하기 때문에 SHA-3에 대한 지속적인 탐구입니다 .

요컨대, SHA-1은 현재 안전하며 아마도 언젠가는 올 것 같지만 암호 커뮤니티는 예후에 불편합니다.


당신은 링크를 제공 할 수 있습니까? 내가 말했듯이, 내가 찾을 수있는 가장 좋은 사전 이미지 공격은 검색 속도를 8 배나 빠르게 만들고, 심지어 작동하려면 SHA-1 단계의 절반을 생략해야합니다. (또한 암호 해시에는 쓸모없는 두 번째 사전 이미지 공격이라고 생각합니다.)
Tgr

나는 또한 최근 뉴스에 비추어 NSA에서 나온 것에 회의적이다 :)
Alex W

4

2017 년 2 월 현재 SHA-1은 더 이상 안전한 것으로 간주되지 않습니다. Google은 축소되지 않은 전체 SHA-1 ( report to link ) 에 대한 충돌 공격이 성공했다고보고했습니다 . Google 공지 사항을 보려면 여기를 클릭하십시오. .

편집 : 다른 사람들이 지적했듯이 암호는 해시 충돌 공격에 취약하지 않습니다. 그러나 일반적인 지침으로 보안 관련 응용 프로그램에는 SHA-1을 선택하지 않습니다. 더 나은 대안이 있습니다.


좋아, SHA-1 충돌을 찾는 데 약 6,500 CPU 년과 100 GPU 년 이 걸렸지 프로덕션 공격은 아닙니다. 암호를 해독하는 것은 가능한 모든 입력에 대한 강력한 힘이 아니라 10,000,000 개의 빈번한 암호 목록에 대한 무차별 강제력입니다. 여기 신문이 있습니다.
zaph

1
결함은 암호를 보호하기 위해 해시 기능 만 사용하고 있습니다. 해시 함수를 사용하는 것만으로는 충분하지 않으며 소금을 추가하는 것만으로는 보안을 향상시킬 수 없으며 암호화 해시는 매우 빠릅니다. 대신 약 100ms 동안 임의의 소금으로 HMAC를 반복하고 해시로 소금을 저장하십시오. 같은 사용 기능 PBKDF2(일명 Rfc2898DeriveBytes), password_hash/ password_verify, Bcrypt와 유사한 기능. 요점은 공격자가 무차별 암호를 찾는 데 많은 시간을 할애하는 것입니다. 사용자를 보호하는 것이 중요합니다. 안전한 암호 방법을 사용하십시오.
zaph

충돌은 사전 이미지가 아니며 암호는 서명이 아닙니다. 충돌 공격은 원래 평문에 대한 지식이 필요하기 때문에 암호에 대해 작동하지 않습니다.
Tgr

Tgr : 동의합니다. 감사합니다. Zaph : 그렇습니다. 레인보우 공격으로부터 보호하고 느린 암호 해시를 사용하는 소금을 바르는 것은이 답변에서 구체적으로 다루지 않은 권장 사례 중 하나입니다.
Aaron

3

소금에 절인 암호를 저장하면 실제 목적으로 SHA-1이 적합합니다. SHA-2가 더 안전하다고 여겨지지만 SHA-1은 진정 편집증이 될 이유가없는 한 문제가되지 않습니다.

NIST가 말한 내용은 다음과 같습니다 .

지금까지 SHA-1에 제시된 결과는 보안에 문제가되지 않습니다. 그러나 기술의 발전으로 NIST는 2010 년까지 더 크고 강력한 해시 함수 (SHA-224, SHA-256, SHA-384 및 SHA-512)를 위해 SHA-1을 단계적으로 중단 할 계획입니다.


즉, 2004 년 그들의에서 NIST의 주석입니다 2,010 권고 초안은 SHA-1 2010 이상 모든 비 전자 서명 생성 응용 프로그램을 승인했다.
TGR
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.