나는 "암호를 소금에 절인"방법보다 암호 보호를 향상시키는 방법을 읽었습니다. 하지만 비밀번호가 복잡한 형태로 저장되어 있으면 확인하는 방법을 모르겠습니다. 사용자의 암호가 클라이언트에서 암호화되고 해시 코드가 데이터베이스의 해시 코드와 비교된다고 가정합니다. 웹 개발 경험이 없습니다. 저는 웹 보안 방법을 배우고 있습니다.
당신이 현재 그것을 배우고 있다고 말했기 때문에 나는 약간의 인트로를 제공하려고 노력할 것입니다. 그리고 가능한 한 짧게 만들려고 노력할 것입니다.
Salt
우리가 생성하고 일반 암호 / 암호 문구에 추가하는 임의의 문자열입니다. plain
바로 옆에있는 데이터베이스에 저장 될 수 있습니다 Hash Value
.Hashing
길이가 고정 된 값에 데이터를 매핑하는 방법입니다. 이 값을 Hash Value
또는 이라고 checksum
합니다. 해싱은 단방향입니다. MD5 및 SHA256은 해싱 알고리즘의 몇 가지 예입니다.소금의 이점
여기서 우리가하는 일은 기본적으로 모든 사용자가 (해시 출력에서) 고유 한 암호를 가지고 있는지 확인하는 것입니다. 이렇게하면 동시에 여러 사용자의 암호를 계산하기 위해 사용자 데이터를 캡처 한 공격자가 방지 할 수 있습니다.
또 다른 말은 누군가가 모든 사용자 이름과 암호를 볼 때 어떤 사용자가 동일한 암호를 사용하는지 말할 수 없다는 것입니다.
다음 표는이를 더 잘 이해하는 데 도움이됩니다.
| username | salt | plain-password |salted-password-to-be-hashed | hashed-password |
|----------|------------------|----------------|------------------------------|------------------------------------------------------------------|
| user1 | db97913154884d72 | password1 | passworddb97913154884d72 | 5027a576d161385ddcc72e47280f85729fc3ba5e48e0a018e2f68dc7d13e93cc |
| user2 | 8fc2884d127fd40b | password1 | password18fc2884d127fd40b | 6069e0e5a06d41ed0ffb06d0c0e26dd7dea3cb14de80e4075848d3217b40b783 |
다음 단계는 저장 및 인증 하는 기본 방법 을 보여줍니다 .
저장하는 방법? (레지스터)
plain-password
통해 클라이언트에서 백 엔드 응용 프로그램에 제공됩니다 https
.salt
하고 일반 암호에 추가 (또는 앞에 추가)합니다.hashed-password
해싱 알고리즘 (예 : SHA-256, MD5 등)을 사용하여 계산합니다.username
, salt
및 hashed-password
데이터베이스에. (저장 plain-password
및 / 또는 salted-password-to-be-hashed
.)인증하는 방법?
plain-password
통해 클라이언트에서 백 엔드 응용 프로그램에 제공됩니다 https
.salt
데이터베이스에서 특정 사용자를 가져와 일반 암호에 추가 (또는 앞에 추가)합니다.hashed-password
동일한 해싱 알고리즘을 사용하여 계산 하고 저장된 알고리즘과 비교합니다.좀 더 고급 :
라는 두 번째 솔트를 추가 할 수도 있습니다 pepper
. 이것은 일반 비밀번호 (pepper + plain-password + salt)에 추가 할 또 다른 임의의 문자열입니다. 그러나 여기서는 및 pepper
옆이 아닌 다른 데이터 소스에 저장됩니다 .salt
hashed-password
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다