[Spring Security] 패스워드 암호화 기술

zini9188·2023년 3월 15일
0

Spring Security

목록 보기
4/6

패스워드 암호화 기술

Plain Text 저장

  • 암호화하지 않은 텍스트 그 자체를 의미

해시 알고리즘

  • 단방향 암호화를 위한 핵심 알고리즘

  • 한번 암호화되면 복호화되기 어려운 특성

MD5 (Message Digest 5)

  • 초창기 사용하던 MD2, MD4 해시 알고리즘의 결함을 보완한 알고리즘

  • 단방향 알고리즘이지만 복호화가 된 사례가 종종 있어 거의 사용하지 않음

  • 다이제스트 (Digest)

    • 원본 메세지를 암호화한 메세지로, 암호화 기술에 자주 사용되는 용어

SHA (Secure Hash Algorithm)

  • MD5의 결함을 보완한 해시 알고리즘

  • 해시된 문자열을 만들기 위해 비트 회전 연산이 추가된 방식

Rainbow Attack?

패스워드로 사용할만한 문자열들을 Rainbow Table로 만들어, 해당 목록에 있는 문자열을 동일한 알고리즘으로 암호화한 후, 탈취한 암호화된 문자열과 서로 비교하는 작업을 통해 원본 문자열을 구하는 공격

대응책

레인보우 공격을 100% 무력화할 순 없지만 컴퓨터가 다이제스트를 비교하는 작업의 횟수를 줄이는 키 스트레칭 방법과 솔트(Salt)라는 방법이 있다.

  • 키 스트레칭: SHA 알고리즘처럼 해시된 다이제스트를 반복적으로 해시하는 방법이다. 해시 처리가 반복 될수록 다이제스트를 비교하는 횟수도 현저히 줄어든다.

  • 솔트: 패스워드로 입력하는 원본 메시지에 임의의 문자열을 추가해 해시 처리하는 것을 말한다. 솔트를 추가하면 레인보우 테이블을 이용해 비교할 경우의 수가 늘어나므로 레인보우 공격에 대응할 수 있다.

Work Factor를 추가한 Hash 알고리즘

레인보우 공격을 통해 해시된 메시지를 알아내려고 시도하더라도 최대한 많은 비용과 시간이 소요되도록 하는 알고리즘이다.

대표적으로 PBKDF2, bcrypt, scrypt이 있으며, Work Factor는 공격자가 해시 된 메시지를 알아내는 데 많은 비용과 시간이 들게 해주는 특정 요소를 의미한다.

PBKDF2와 bcrypt는 Work Factor로 솔트와 키 스트레칭을 기본적으로 사용하며 내부적으로 훨씬 복잡한 알고리즘을 이용한다.

scrypt는 다이제스트 생성 시, 메모리 오버헤드를 갖도록 설계되어 브루트 포스 공격을 시도하기 위해 병렬화 처리가 어렵도록 설계되어 있다.

profile
백엔드를 지망하는 개발자

0개의 댓글