티스토리 뷰

note..

비밀번호 암호화

sungjine 2022. 2. 8. 22:43
반응형

비밀번호 암호화는 비밀번호를 지킬 때 필요한 것으로 개인정보보호법에 명시되어 있는 만큼 만약 서비스를 만들어 운영하게 된다면 반드시 해야 하는 부분일 것이다.

 

비밀번호를 암호화할 때는 SHA-256과 같은 단방향 암호화를 해야하며, 이는 암호화된 비밀번호가 유출되더라도 비밀번호를 찾아내지(복호화) 못하도록 하기 위함이다.

 

 * SHA-256 : 암호 알고리즘 중 한 종류

 * 단방향 암호화 : 평문을 암호화한 후 암호문에서 평문을 찾을 수 없도록 구현된 암호화 방법

 

하지만 암호화를 하더라도 레인보우 테이블과 같은 공격을 받게 되면 암호화한 의미가 퇴색된다.

 

 * 레인보우 테이블 : 공격자가 단방향 암호화로 암호화한 데이터를 가지고 암호화된 데이터와 비교하여 평문을 찾는 방법

 

반응형

 

위와 같은 공격을 방어하는 방법으로 비밀번호에 salt를 추가한 후에 암호화하여 저장하는 방법이 있다.

 

이렇게 salt를 추가하게 되면 유일한 비밀번호를 만들 수 있어 레인보우 테이블과 같은 공격을 방어할 수 있게 된다.

 

salt는 모든 비밀번호에 각각 랜덤한 값을 사용할 수도 있고 하나의 값을 공용으로 사용할 수도 있을 것으로 보인다.

 

랜덤한 값을 각각 쓰면 진정으로 모든 비밀번호가 거의 유일하게 관리되겠으나 salt를 관리하는 비용이 발생할 것으로 생각되고 하나의 값을 공용으로 사용하면 salt를 관리하는 비용은 없을 것이나 같은 서비스 내에 중복되는 비밀번호가 생기게 될 것이다.

 

개인적인 생각으로는 하나의 salt를 사용해도 보안상 큰 문제는 없다고 생각되어 하나의 salt를 사용하는 방향이 조금 더 좋아 보인다.

 

단, salt는 의미를 가지지 않아야 한다.

 

salt 이외의 다른 방법으로는 키 스트레칭(Key Stretching) 방법이 있다.

 

키 스트레칭 방법은 암호화를 여러 번 실행하여 공격자로 하여금 비밀번호를 쉽게 알아내지 못하도록 방지하는 방법이다.

 

보안은 여러 개의 보안 방법을 같이 쓰면 좋아지니 salt와 키 스트레칭을 같이 사용하는 것이 좋을 것 같다.

반응형
댓글
반응형
최근에 올라온 글
Total
Today
Yesterday
글 보관함
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31