비밀번호 암호화
비밀번호 암호화를 위해 사용하는 기법이 두 가지가 있습니다.
- 해시(Hash): 비밀번호를 암호화하는 기법. 보통 단방향 기법을 사용합니다.
- salt(이하 조미료): 비밀번호를 해싱할 때 Rainbow Table(무지개 공격!)을 막기 위해 사용하는 기법
해싱(Hasing)
해싱은 단방향과 양방향 두 종류가 있는데, 비밀번호 암호화 시에는 단방향 기법을 사용합니다.
직접 해싱 해보기
어떤 값을 입력하건 고정된 길이의 해시 결과가 나옵니다.
단방향인데 어떻게 맞는지 검증하나요?
데이터베이스에 저장된 값은 변경시키지 않고, 사용자 입력값만 해싱하여 두 값이 일치하는지 확인합니다.
사용자 입력값 | SHA256으로 해싱한 값 | 데이터베이스에 저장된 값 |
example | 50d858e0985ecc7f60418aaf0cc5ab587f42c2570a884095a9e8ccacd0f6545c | 50d858e0985ecc7f60418aaf0cc5ab587f42c2570a884095a9e8ccacd0f6545c |
해싱의 문제점
해커들은 비밀번호에 자주 사용되는 값들을 해싱한 값을 자체 데이터베이스에 저장하고 있습니다. 이를 Rainbow Table이라고 합니다.
이 값들과 데이터베이스의 비밀번호와 비교하여 비밀번호를 탈취할 수 있습니다.
보통 사용자들은 여러 사이트에 동일한 비밀번호를 사용하기 때문에 하나의 서버만 탈취 당해도 여러 사이트를 탈취 당할 가능성이 높습니다.
비밀번호에 자주 사용되는 값 | Rainbow Table의 값 | 데이터베이스에 저장된 값 |
example | 50d858e0985ecc7f60418aaf0cc5ab587f42c2570a884095a9e8ccacd0f6545c | 50d858e0985ecc7f60418aaf0cc5ab587f42c2570a884095a9e8ccacd0f6545c |
password | 5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8 | 5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8 |
123456 | 8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92 | 8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92 |
guest | 84983c60f7daadc1cb8698621f802c0d9f9a3c3c295c810748fb048115c186ec | 84983c60f7daadc1cb8698621f802c0d9f9a3c3c295c810748fb048115c186ec |
admin | 8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918 | 8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918 |
후략 .... | 후략 .... | 후략 .... |
조미료 기법(salt)
해커들의 무지개 공격에 대응하기 위해 조미료 기법을 사용합니다.
조미료 기법이란 비밀번호 해싱 시 임의의 값을 더하여 해싱하는 것을 말합니다. 이때 임의의 값을 salt라고 합니다.
입력값 | salt | 입력값 + salt | 원래 결과 | 변경된 결과 |
password | salt | password_salt | 5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8 | 48858c776754f108b3dfb896d4204e9f0995613169318c0b6825a6334dbe56ce |
'웹 기초 지식' 카테고리의 다른 글
JWT(JSON Web Token) (0) | 2025.05.04 |
---|