[iOS] AES와 RSA Keychain 저장여부 정리

2025. 2. 24. 21:25iOS

반응형

1. AES 키 (대칭키)

  • 통신용 AES키 (세션키)
    • 저장X (임시키) : 보통 요청마다 생성 후 바로 폐기합니다.
    • 단, 요청마다 새 키를 생성해 RSA로 암호화해 서버에 전달 후, 서버에서만 복호화합니다.
  • 로컬 데이터 암호화용 AES키 (마스터 키)
    • Keychain에 저장 : 하나의 AES키를 Keychain에 안전하게 저장 후 데이터 암복호화 시 재사용합니다.
    • Keychain은 자동으로 보안 처리 (하드웨어 보안 요소 사용)

2. RSA 키 쌍 (비대칭키)

  • RSA 개인 키 (Private Key)
    • 반드시 Keychain에 저장
    • 개인키는 절대 외부에 노출되면 안됩니다.
    • kSecAttrAccessible을 .afterFirstUnlock 또는 .whenUnlockedThisDeviceOnly로 설정해 보안을 강화합니다.
  • RSA 공개 키 (Public Key)
    • Keychain에 저장해도 되고, 메모리 캐싱만 해도 무관
    • 공개 키는 유출되어도 안전하지만, 필요 시 Keychain에 함께 저장해 손쉬운 관리가 가능합니다.
키 종류 Keychain 저장 여부 이유
AES 키(세션키) X (저장안함) 요청마다 생성 및 폐기(단기)
AES 키(로컬 마스터 키) O (Keychain) 로컬 데이터 암복호화 (장기)
RSA 공개 키 (Public) 선택사항 공개 키는 유출되어도 안전
RSA 개인 키 (Private) O (Keychain 필수) 개인 키는 절대 외부 유출 금지
반응형

'iOS' 카테고리의 다른 글

[iOS] MVVM-C vs. RIP  (0) 2025.02.25
[iOS] CryptoKit vs. CryptoSwift  (0) 2025.02.14
[iOS] WKWebView Cookie  (1) 2025.02.11
[iOS] Async/Await  (1) 2025.02.06
[iOS] 무결성 (Integrity)  (3) 2025.02.06