[Spring] 암호화

·2025년 6월 10일

Spring

목록 보기
16/26

💡암호화

✅암호화란?

암호화는 정보를 인가되지 않은 접근으로부터 보호하기 위해 데이터를 특정 알고리즘을 이용해 알아볼 수 없게 변환하는 기술이다.
암호화된 데이터는 복호화를 통해 다시 원래의 데이터로 되돌릴 수 있다.


✅암호화의 목적

웹 서비스에서는 사용자의 비밀번호, 주민등록번호, 카드 정보 같은 민감한 데이터들을 다룬다.
이런 정보들이 유출되면 큰 사고로 이어질 수 있기 때문에 다음과 같은 목적을 위해 암호화를 사용한다.

1. 기밀성(Confidectiality) : 허가(인가)되지 않은 사용자가 데이터를 볼 수 없도록 함

2. 무결성(Integrity) : 데이터가 위/변조되지 않았음을 보장

3. 인증(Authentication) : 송신자가 수신자의 신원을 확인

4. 부인방지(Non-repudiation) : 나중에 행위를 부인하지 못하도록 증거를 남김


💡암호화의 방식

암호화 방식은 복호화 가능 여부에 따라 단방향/양방향 암호화로 나누고, 양방향 암호화 내에서 암호화/복호화를 위해 사용되는 키에 따라 비밀키(대칭키)암호화공개키(비대칭키)암호화로 분류할 수 있다.


1. 양방향 암호화

양방향 암호화란 암호화된 데이터를 복호화할 수 있는 암호화 방식이다.

1-1. 대칭키 암호화 (Symmetric Encryption)

🔍대칭키 암호화란?

대칭키 암호화는 암호화와 복호화에 같은 암호키(대칭키)를 사용한다.
암호문을 생성(암호화)할 때 사용하는 키와 암호문으로부터 평문을 복원(복호화)할 때 사용하는 키가 동일한 암호 시스템이다.
암호 시스템의 안전성은 키의 길이, 키의 안전한 관리에 의존성에 높다.

🎯사용목적

  • 기밀성 유지
  • 데이터의 안전한 저장 및 전송
  • 외부에 노출되지 않도록 암호화한 뒤, 복호화하여 내부 로직에서 사용

📍사용 예시

  • 주민등록번호, 카드번호, 계좌번호 저장
  • 설정 파일(DB 비밀번호 등)보호
  • 파일 암호화, Jasypt를 통한 설정 암호화

🔐대표 알고리즘

  • AES (Advanced Encryption Standard): 현대 표준
  • DES (Data Encryption Standard)
  • 3DES(Triple DES)

1-2. 비대칭키 암호화(Asymmetric Encryption)

대칭키 암호 시스템의 가장 큰 약점은 키관리의 어려움에 있다.
한 사용자가 관리해야할 키의 수가 너무 많아지기 때문이다.
이러한 약점을 보완하기 위해 나타난 암호 시스템이 공개키(비대칭키) 암호 시스템이다.
비대칭키 암호 시스템에서 각 사용자는 두 개의 키를 부여 받으며, 키 중 하나는 공개되고(공개키) 다른하나는 사용자에 의해 비밀리에 관리 되어야 한다.(비밀키)
비대칭키 암호화 시스템에서 각 사용자는 자신의 비밀키만 관리하면 되므로 키 관리의 어려움을 줄일 수 있다.

🔍비대칭키 암호화란?

비대칭키 암호화는 서로 다른 두개의 키(공개키, 개인키)를 사용한다.
공개키로 암호화한 데이터는 개인키로만 복호화 할 수 있고, 반대로 개인키로 서명한 데이터는 공개키로만 검증할 수 있다.

🎯사용 목적

  • 키 분배 문제 해결
  • 공개키로 안전하게 암호화 후, 개인키로 복호화
  • 디지털 서명을 통해 데이터 위조 방지 및 신원 확인

📍사용 예시

  • JWT(Json Web Token) 서명 및 검증
  • OAth2 로그인 시 ID 토큰 검증
  • HTTPS(SSL/TLS) 통신에 서버 인증
  • 이메일 서명/암호화

🔐대표 알고리즘

  • RSA (Rivest-Shamir-Adleman) : 가장 널리 사용됨
  • ECC (Elliptic Curve Cryptography) : 더 가볍고 빠름. 모바일에 적합

2. 단방향 암호화

2-1. 해시 함수(Hash Function)

🔍해시 함수란?

해시 함수는 어떤 입력값이든 받아서 고정된 길이의 해시값으로 변환해주는 함수이다.
암호화는 가능하지만 복호화는 불가능하며, 같은 입력값에서는 항상 같은 출력이 나오지만, 조금이라도 다른 입력이면 전혀 다른 값이 나온다.

🎯사용 목적

  • 입력값이 맞는지 확인(예 : 비밀번호)
  • 데이터의 위변조 여부 검증(무결성 확인)
  • 디지털 서명 시 해시 사용

📍사용 예시

  • 비밀번호 저장 (BCrypt, SHA-256 등)
  • 파일 다운로드 시 체크섬 제공
  • 블록체인에서 거래 기록 해시 처리

🔐 대표 알고리즘

  • SHA-256, SHA-512: 가장 널리 사용
  • MD5: 과거 사용되었지만 현재는 보안상 취약
  • BCrypt, Argon2: 비밀번호에 특화된 고보안 해시 함수

📌양방향 VS 단방향

구분양방향 암호화단방향 암호화 (해시)
복호화 가능가능불가능
사용 목적저장 후 다시 꺼내쓰기비교만 하기 (복원 불필요)
대표 기술대칭키(AES), 비대칭키(RSA)해시(SHA, BCrypt)
사용 예주민번호, JWT, 설정 암호화비밀번호 저장, 무결성 검증

실제 보안 시스템에서는 이 세가지 방식이 상황에 따라 조합되어 사용한다.

  • 사용자의 비밀번호는 해시로 단방향 암호화해 저장하고,
  • 서비스 설정 파일이나 민감 정보는 대칭키로 양방향 암호화해서 복호화 가능하게 하며,
  • 로그인 후 발급되는 JWT 토큰은 비대칭키로 서명과 검증을 수행한다.
profile
배우고 기록하며 성장하는 백엔드 개발자입니다!

0개의 댓글