2014-12-14 1 views
0

나는이 방법을 사용하여 소금과 해시 암호 관리가에 소금과 해시 된 암호를 복구?파이썬

업데이트 : 당신은, 사용자로부터 암호를 가지고 자신의 암호에 동일한 소금과 해시 방법을 적용하고이 일치하는지 원래 소금/해시 암호와 비교하기로한다. 그건 완벽하게 이해가됩니다.

+0

여러 암호를 동일한 값으로 해시 할 수있는 경우 선택한 방법으로 암호가 발생할 확률은 얼마입니까? 그것은 매우 낮아야합니다. – nodebase

+0

충돌 가능성은 실제로 매우 낮습니다. 해시 함수는 큰 엔트로피를 갖도록 설계되었으므로 두 개의 입력을 닫을 때 출력이 멀리 떨어져있게됩니다. 해싱 함수는 무한한 공간을 무한 공간을''** ** X'' 크기의 공간으로 일반적으로 32 또는 64로 매핑하므로 충돌이 발생하지만 강력한 엔트로피 덕분에 거의 같은 토큰 또는 동일한 수의 토큰은 해시 공간에서 서로 멀리 떨어져있을 것입니다. –

답변

3

그렇지 않습니다. 해싱은 한 가지 방법 일뿐입니다. 이것이 해싱의 핵심입니다.

DB에 누출 정보가있는 경우 사용자를 보호하기 위해 원시 암호를 저장하지 마십시오. 당신은 몇 가지 "암호 복구"절차를 구현하려면

, 당신은 모든 사람들처럼, 이렇게 무작위로 생성 된 새로운 하나를 보내 암호를 재설정 임시 링크가있는 사람에게 이메일을 보내해야합니다.

+0

또는 정말 엉터리 비밀 번호를 암호화 체계를 사용하여 (암호화를 말하지 않았 음을 유의하십시오.) 해시 맵을 해제 할 수없는 이유는 많은 암호가 같은 값으로 해시 될 수 있다는 점에 유의할 가치가 있습니다 ...) –

0

해싱은 문자열을 암호화하고 사용자가 제공 한 해시를 앱에서 생성하는 것과 비교할 수있는 한 가지 방법입니다.

그러나, simple-crypt이 그것을 당신이 당신이 "이 방법"해시하려면 무엇을 찾고 있는지 될 수있다.

0

좋은 질문입니다.

우선 : 사용자의 비밀번호를 일반 텍스트로 보내지 마십시오 !!

몇 가지 이유 때문에 잘못된 보안 관행으로 간주됩니다. 누군가가 사용자의 이메일 계정 (Gmail은, 등)에 대한 액세스 권한을 얻을 경우

  • , 그들은 암호를 가지고 사용자 계정을 탈취 할 수 있습니다.

  • 두 번째로 해싱은 암호를 횡설수설로 바꾸는 단방향 암호화 형식입니다. 해싱의 가장 큰 장점은 항상 같은 암호가 항상 같은 횡설수설로 바뀔 것입니다. 즉, 원시 암호를 저장하지 않고도 암호 일치를 수행 할 수 있습니다. 암호를 해시하고 AES-256과 같은 양방향 암호화를 수행하지 않아야하는 이유는 양방향 암호화가 어려울 수있는 암호화 키를 생성, 관리 및 보안해야하기 때문입니다. 해싱은 대다수 개발자에게 쉽고 안전합니다. 대신 사용자에게 암호를 전송하여 암호 재설정 물건을 구현

, 대신 그들이 일정 금액 후 만료 한 번 토큰 비밀번호를 재설정 할 수있는 보안 페이지에 사용자에게 링크를 보내야합니다 시간. 그들이 피해를 할 수있는 시간의 제한된 양의가있다 - 공격자가 다른 사람의 이메일 계정 (Gmail은, 등)의 보류를 얻을 경우에도

이 방법.

직접 할 수있는 방법은 다양하지만 저장하거나 관리 할 필요가없는 일회용 토큰을 얻는 쉬운 방법은 사용자 관리를 Stormpath과 같은 마이크로 서비스로 오프로드하는 것입니다 비밀번호 재설정, 비밀번호 저장, 사용자 프로필, 인증, 암호화, 해싱 등 모든 사용자 관리를 관리합니다.

from flask import Flask 
from flask.ext.stormpath import StormpathManager 

app = Flask(__name__) 
app.config['STORMPATH_ENABLE_FORGOT_PASSWORD'] = True 

stormpath_manager = StormpathManager(app) 

app.listen(3000) 

참고가 : 당신은 예를 들어, 당신이 그렇게 같은 Flask-Stormpath 라이브러리를 사용하는 것 플라스크 웹 응용 프로그램에서이 같은 것을 구현하고 싶었

내가 Stormpath에서 작동하지만 이러한 규칙 사용중인 응용 프로그램과 관계없이 응용 프로그램을 적용하고 응용 프로그램의 보안을 강화하는 데 도움이됩니다.