[TIL] RSA + AES256 암호화 방식

Seulguo·2025년 6월 23일

TIL

목록 보기
3/4
post-thumbnail

외부 기관과 보안 연동을 하던 중, RSA와 AES256을 함께 사용하는 암호화 방식을 적용하게 됐다.
이론으로만 알고 있던 내용을 실제 연동 구조에 적용해보면서 흐름과 구성 방식을 정리해두면 좋겠다는 생각이 들어 작성해본다.


🔐 RSA와 AES256을 함께 쓰는 이유는?

RSA와 AES는 각각 비대칭키, 대칭키 암호화 방식이다.
두 방식은 구조적으로 다르고, 서로의 약점을 보완할 수 있기 때문에 함께 사용되는 경우가 많다.

방식설명장점단점
AES (대칭키)하나의 키로 암·복호화속도가 빠르고 효율적키를 안전하게 전달하기 어렵다
RSA (비대칭키)공개키로 암호화 → 개인키로 복호화키 공유가 안전하다연산이 무겁고 대용량 데이터에는 비효율적

실제 연동에서는 보통 아래와 같은 방식으로 함께 사용된다:

  1. AES256으로 본문 데이터를 암호화
  2. 사용한 AES 키를 RSA 공개키로 암호화
  3. 암호화된 데이터(encData)와 키(encKey)를 함께 전송
  4. 서버에서는 개인키로 encKey를 복호화하여 AES 키 복원
  5. 복원한 키로 encData를 복호화

이런 구조를 하이브리드 암호화(Hybrid Encryption)라고 부른다.
속도와 보안성을 모두 확보할 수 있어, 공공기관이나 금융기관과의 연동에서 자주 사용된다.


📦 실제 구조 요약

1. AES256 키 생성  
2. 평문 데이터를 AES256으로 암호화 → encData  
3. AES 키를 RSA 공개키로 암호화 → encKey  
4. encKey + encData를 서버로 전송  
5. 서버는 개인키로 encKey 복호화 → AES 키 복원  
6. 복원한 키로 encData 복호화 → 원문 복원  

🔄 대칭키 vs 비대칭키 개념 정리

✅ 대칭키 (AES 등)

  • 같은 키로 암호화/복호화
  • 속도가 빠르고 구현이 간단함
  • 단점: 키 전달 과정이 보안에 취약

✅ 비대칭키 (RSA 등)

  • 공개키로 암호화 → 개인키로 복호화
  • 키 공유는 안전하지만,
  • 연산이 느리고, 큰 데이터를 암호화하는 데는 부적합

📦 AES256 / RSA 구성 요소

📌 AES 구성 요소

항목설명
Key (암호화 키)256bit = 32바이트. 기본적으로 base64 인코딩, 환경에 따라 hex도 사용
IV (Initialization Vector)블록 단위 암호화에서 패턴 반복을 막기 위해 사용. 보통 16바이트
Padding블록 크기에 맞게 채워 넣는 규칙. 실무에서는 보통 PKCS#7 사용
암호화 모드CBC, GCM, ECB 등이 있으며 CBC + PKCS7 조합이 일반적

📌 RSA 구성 요소

항목설명
키 길이보통 2048bit 또는 4096bit
패딩 방식PKCS#1 v1.5 (기본), OAEP (더 안전하지만 복잡)
블록 크기RSA는 한 번에 암호화 가능한 길이가 제한됨 (키 길이 - 패딩 길이)
출력 인코딩기본적으로 base64, 필요 시 hex 사용

🛠 암호화 모드 (AES 기준)

모드설명보안성특징
CBC (Cipher Block Chaining)블록들이 연결되어 암호화됨. IV 필요⭐⭐⭐⭐실무에서 가장 많이 사용
ECB (Electronic Codebook)각 블록을 독립적으로 암호화같은 내용은 같은 암호문이 나옴. 거의 사용 안 함
GCM (Galois/Counter Mode)암호화 + 무결성 검증 동시 처리⭐⭐⭐⭐⭐속도 빠르고 안전함. 다만 복잡함

→ 실무에서는 AES 암호화 시 AES256 + CBC + PKCS7 Padding 조합이 가장 많이 사용되고,
RSA는 보통 PKCS#1 v1.5 또는 OAEP 패딩 방식을 함께 사용한다.


✍️ 정리하며

기존에는 암호화 알고리즘 이름과 방식만 외우고 있었는데,
실제 연동에 적용하면서 하나하나 찾아보고 구성 요소들을 이해하게 되니까 훨씬 명확하게 다가왔다.
특히 데이터를 주고받는 구조에서 암복호화는 단순한 보안 옵션이 아니라, 연동의 핵심이라는 점도 확실히 느꼈다.
단순히 외워서 아는 것과, 흐름을 이해하고 실제로 구현해보는 것 사이에는 생각보다 큰 차이가 있다는 걸 실감한 작업이었다.


📌 함께 보면 좋은 키워드

#암호화 #RSA #AES256 #하이브리드암호화 #대칭키 #비대칭키 #PKCS1 #PKCS7 #IV #Padding #CBC모드 #보안연동

1개의 댓글

comment-user-thumbnail
2025년 7월 5일

이 포스팅 자주 해주세요ㅠㅠ 많은 인사이트 얻구 갑니다아

답글 달기