[Security] 단방향 암호화 알고리즘

단방향 암호화 알고리즘

단방향 암호화 알고리즘은 복호화가 불가능하고 암호화만 가능한 알고리즘이다
대표적으로 SHA알고리즘이 존재한다
해쉬를 통해서 암호화를 진행하기 때문에 복호화가 불가능하다
복호화를 수행할 필요가 없는 데이터에 적합하다
예를들어 비밀번호 같은 경우는 유효성 검증만 수행해주면 되기 때문에 단방향 암호화 알고리즘으로 암호화를 진행한다


단방향 암호화 알고리즘 취약점

Plain text + Salt

단방향 암호화 알고리즘의 경우 Hash를 통해 암호화를 수행하기 때문에 복호화가 불가능하다
하지만 해쉬의 특성상 같은 데이터를 암호화 하면 항상 같은 결과값이 나온다는 특성이 있다
그렇기 때문에 레인보우 테이블이라는 특정 데이터마다 해쉬 결과값을 보유하고 있는 테이블이 존재하고 이를 통해 암호화된 결과와 비교해 원본 데이터를 유추하는것이 가능하다
그렇기 때문에 단방향 암호화 알고리즘을 사용할 때는 Salt 값을 붙혀서 수행한다
Salt값이란 암호화를 수행할 plain text에 붙히는 값이다
Salt값을 붙힘으로 써 만들어지는 암호화된 데이터의 원본 값을 유추해내기 힘들다


SHA 1, SHA 2 and SHA 3

SHA1의 경우는 해쉬충돌로 인한 취약점이 발견되었다
그렇기 때문에 SHA 256이나 SHA 3를 권장한다

Author: Song Hayoung
Link: https://songhayoung.github.io/2020/07/07/Security/one_way_encryption/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.