728x90
반응형
암호화 종류
양방향 (암호화 + 복호화)
- 대칭키 (비공개키)
- 비대칭키 (공개키)
암호화 및 복호화 예시
평문: "안녕하세요"
암호화: "97aef2af4b16b80f546c8bff375b7a556d29c0ea44592e837a663651d48123bf"
복호화: "안녕하세요"
단방향 (암호화)
- 해시
SHA-256 해시
해시를 사용한 비밀번호 저장 시 보안 강화 방법
해시만으로는 보안에 취약할 수 있다 때문에 해시를 강화할 수 있는 방법이 추가적으로 필요하다.
1. Salt(소금) 추가
해시 값을 생성할 때 랜덤한 문자열을 추가하는 방법
같은 비밀번호도 매번 다른 Salt 값이 추가해 해시 값을 다르게 생성할 수 있다.
password123 + randomSalt -> 해시화 -> 해시값
* 여기서 Salt 값과 비밀번호는 $ 같은 구분자를 사용해 구분한다.
2. Key Stretching (키 스트레칭)
해시 알고리즘을 반복적으로 실행하여 해시 계산을 복잡하게 만드는 방법
공격하는데 드는 시간을 기하급수적으로 늘릴 수 있음
3. bcrypt / scrypt / Argon2
Salt + Key Stretching, 두가지 방식을 결합한 방법
공격자가 비밀번호를 추측하는데 필요한 시간을 크게 느려 보안을 강화
비밀번호는 단방향 해시로 저장 및 비교해야 하지만, 어드민에서 평문 확인이 필요할 때는 양방향 암호화를 적용해야한다.
728x90
반응형
'Java' 카테고리의 다른 글
암호화, 오류 Error attempting to apply AttributeConverter (0) | 2025.03.25 |
---|---|
암호화, AES-256-CBC를 이용해서 암호화/복호화 하는 방법 (1) | 2025.03.24 |
Java, 채팅하기(Chat) (0) | 2024.08.16 |
Java, Iterator (ioStream) (0) | 2024.08.12 |
Java, 함수형 프로그래밍 / 람다식 (0) | 2024.08.05 |