Java

암호화, 양방향 vs 단방향 암호화

greenyellow-s 2025. 3. 24. 13:30
728x90
반응형

암호화 종류

양방향 (암호화 + 복호화)

  • 대칭키 (비공개키)
  • 비대칭키 (공개키)

암호화 복호화 예시

평문: "안녕하세요"
암호화: "97aef2af4b16b80f546c8bff375b7a556d29c0ea44592e837a663651d48123bf"
복호화: "안녕하세요"

 

 


단방향 (암호화)

  • 해시

 

SHA-256 해시

 

해시를 사용한 비밀번호 저장 시 보안 강화 방법

해시만으로는 보안에 취약할 수 있다 때문에 해시를 강화할 수 있는 방법이 추가적으로 필요하다.


1. Salt(소금) 추가

해시 값을 생성할 때 랜덤한 문자열을 추가하는 방법

같은 비밀번호도 매번 다른 Salt 값이 추가해 해시 값을 다르게 생성할 수 있다.

password123 + randomSalt -> 해시화 -> 해시값

 

* 여기서 Salt 값과 비밀번호는 $ 같은 구분자를 사용해 구분한다.

 

2. Key Stretching (키 스트레칭)

해시 알고리즘을 반복적으로 실행하여 해시 계산을 복잡하게 만드는 방법

공격하는데 드는 시간을 기하급수적으로 늘릴 수 있음

 

3. bcrypt / scrypt / Argon2

Salt + Key Stretching, 두가지 방식을 결합한 방법

공격자가 비밀번호를 추측하는데 필요한 시간을 크게 느려 보안을 강화

 

 

비밀번호는 단방향 해시로 저장 및 비교해야 하지만, 어드민에서 평문 확인이 필요할 때는 양방향 암호화를 적용해야한다.

 

 

728x90
반응형