웹 개발

복호화와 양방향 암호화 방식

_KH_ 2025. 6. 1. 04:35

이번에는 비밀번호를 단순 암호화했지만, 이메일이나 전화번호 같이 개인 식별 가능한 정보들은 복호화가 필요한 경우가 있다고 생각한다. 예를 들어 내 정보 수정 같은 경우.. 그래서 양방향 암호화 알고리즘을 적용하여 정보 유출에 대비하고, 필요할 시에 사용자 본인만 복호화 가능해야 한다. 

 

1. 복호화 : 암호화된 데이터를 다시 원래의 평문으로 되돌리는 과정.

- 전화번호나 이메일 같은 민감 정보를 암호화해서 저장해 놓고, 사용자 본인이 마이페이지에서 정보를 수정하거나 확인할 때 다시 보여줘야 하는 경우, 이때 암호문을 다시 원래대로 복구해서 보여줌

암호화된 전화번호: Zk92L30sM==  
→ 복호화 → 원래 전화번호: 010-1234-5678

2. 양방향 암호화 : 암호화와 복호화가 모두 가능한 암호 방식

- 암호화된 데이터를 다시 복원할 수 있기 때문에, 로그인 인증 외에도 정보 조회, 수정 등에 적합

 

※ 대표적인 양방향 암호화 알고리즘

1) AES (Advanced Encryption Standard)대칭키 방식 (암호화/복호화에 같은 키 사용)

■ 장점 : 속도가 빠르고 구현이 간단하다.

■ 단점 : 키 유출 시 전체 보안이 위협받으며, 키 분배가 어렵다.

 

2) RSA (Rivest–Shamir–Adleman)비대칭키 방식 (공개키/개인키 사용)

■ 장점 : 키 노출에 강하고, 안전한 키를 전달할 수 있다.

■ 단점 : 속도가 느리고 연산이 복잡하다.

 

코드 디벨롭을 위해 개인 정보 수정 등의 기능에 있어 양방향 암호화를 적용해 봐야겠다.


+) 비밀번호 저장에 양방향 암호화를 써도 되는가? 

→ 부적절함. 복호화가 가능하기 때문에 암호화된 비밀번호를 다시 복호화할 가능성이 존재함. 또한, 키의 관리가 힘들고 OWASP(웹 보안 비영리 단체)도 비밀번호 저장에는 단방향 해시 알고리즘 사용을 권장하고 있다.

 

+) 단방향 암호화 알고리즘의 종류와 양방향 암호화 알고리즘의 종류

1) 단방향 알고리즘 : Bycrpt, SHA-256

2) 양방향 알고리즘 : AES, RSA