Security
Encryption
by orioncsy
2023. 3. 6.
암호화
대칭키와 비대칭키
대칭키
- 양측이 암복호화하는 데 필요한 키를 동일한 키로 가지는 것
- 대표적인 알고리즘
- DES, 3DES, AES, SEED, ARIA
- 속도가 비대칭키보다 빠르다.
- 대칭키의 단점은 키를 전달하는 과정에 있다.
- 키를 전달하는 과정에서 탈취당하면 보안상 위험
- 이것을 해결하기 위해 공개키를 사용해서 대칭키를 암호화할 수 있다.
비대칭키
- 대칭키 단점을 극복하기 위해 모든 사람이 접근할 수 있는 공개키와 사용자가 가지는 개인키를 사용
- 키를 분배할 필요가 없어 보안에 더욱 좋다.
- 단점은 암복호화하는 속도가 상대적으로 느리다.
단방향 암호화
개념
- 암호화만 가능하고 복호화가 불가능한 방식
- 비밀번호를 암호화하여 DB에 저장하고 사용자에게 비밀번호를 받아 암호화하여 비교하는 방식
- 유저가 비밀번호를 잃어버렸을 때 찾을 수 없다.
- 메일이나, sms를 통해 인증하고 새 비밀번호 설정 가능
알고리즘
- 주로 해시 알고리즘을 사용
- SHA - 256
- 임의의 메세지를 256 bits의 축약된 메시지로 변경하는 알고리즘
- 경우의 수가 2^256이기 때문에 무차별 대입 공격에 안전하다.
- 속도가 빨라 인증서, 블록체인에 주로 사용
단방향 해시의 단점
- rainbow table
- digest : 해시를 통해 암호화한 메세지
- 레인보우 테이블은 해시 함수를 사용하여 변환 가능한 모든 해시값을 저장한 표
- 많이 사용하는 password를 사용할 경우 레인보우 테이블에 대입하면 비밀번호가 유출될 수 있다.
- salting이라는 기법 활용
- 패스워드에 임의의 128bit 정도의 문자열을 추가하여 digest 생성
- 무차별 대입 공격
- 해시 함수의 목적은 빠르게 검색하기 위해 만들어진 것으로 이것을 이용해 빠르게 digest를 비교해 해킹할 수 있다.
- key stretching 기법 활용
Spring boot에서 구현
- BCryptPasswordEncoder
- BCrypt라는 해시 함수를 이용한 구현체
- salt 값까지 활용할 수 있어서 보안상 더 안전
- SHA보다 BCrypt를 사용하는 이유
- BCrypt는 Blowfish를 사용하여 해시 반복 횟수를 변수로 지정하여 작업량을 조절할 수 있다.
- 이를 통해 무차별 대입 공격을 예방할 수 있다.
Reference
https://velog.io/@ayoung0073/Security-비밀번호-단방향-암호화
https://liveyourit.tistory.com/183