이번에는 비밀번호를 단순 암호화했지만, 이메일이나 전화번호 같이 개인 식별 가능한 정보들은 복호화가 필요한 경우가 있다고 생각한다. 예를 들어 내 정보 수정 같은 경우.. 그래서 양방향 암호화 알고리즘을 적용하여 정보 유출에 대비하고, 필요할 시에 사용자 본인만 복호화 가능해야 한다.
1. 복호화 : 암호화된 데이터를 다시 원래의 평문으로 되돌리는 과정.
- 전화번호나 이메일 같은 민감 정보를 암호화해서 저장해 놓고, 사용자 본인이 마이페이지에서 정보를 수정하거나 확인할 때 다시 보여줘야 하는 경우, 이때 암호문을 다시 원래대로 복구해서 보여줌
암호화된 전화번호: Zk92L30sM==
→ 복호화 → 원래 전화번호: 010-1234-5678
2. 양방향 암호화 : 암호화와 복호화가 모두 가능한 암호 방식
- 암호화된 데이터를 다시 복원할 수 있기 때문에, 로그인 인증 외에도 정보 조회, 수정 등에 적합
※ 대표적인 양방향 암호화 알고리즘
1) AES (Advanced Encryption Standard) → 대칭키 방식 (암호화/복호화에 같은 키 사용)
■ 장점 : 속도가 빠르고 구현이 간단하다.
■ 단점 : 키 유출 시 전체 보안이 위협받으며, 키 분배가 어렵다.
2) RSA (Rivest–Shamir–Adleman) → 비대칭키 방식 (공개키/개인키 사용)
■ 장점 : 키 노출에 강하고, 안전한 키를 전달할 수 있다.
■ 단점 : 속도가 느리고 연산이 복잡하다.
코드 디벨롭을 위해 개인 정보 수정 등의 기능에 있어 양방향 암호화를 적용해 봐야겠다.
+) 비밀번호 저장에 양방향 암호화를 써도 되는가?
→ 부적절함. 복호화가 가능하기 때문에 암호화된 비밀번호를 다시 복호화할 가능성이 존재함. 또한, 키의 관리가 힘들고 OWASP(웹 보안 비영리 단체)도 비밀번호 저장에는 단방향 해시 알고리즘 사용을 권장하고 있다.
+) 단방향 암호화 알고리즘의 종류와 양방향 암호화 알고리즘의 종류
1) 단방향 알고리즘 : Bycrpt, SHA-256
2) 양방향 알고리즘 : AES, RSA
'웹 개발' 카테고리의 다른 글
[Spring] Bean의 생명주기 (1) | 2025.06.09 |
---|---|
REST API란? (0) | 2025.05.30 |
[FullStack] 상품 품절 시 상품 목록에서 품절 이미지 띄우기 (0) | 2025.05.28 |
[Backend] 이메일 API와 네이버 로그인 API의 흐름도 (0) | 2025.05.27 |
[Front] AJAX 콜백 함수 형식 (0) | 2025.05.26 |