Swift DES/3DES 암호화 사용

Swift DES/3DES 암호화 사용

설명

DES와 3DES는 짧은 블록 크기와 노후한 설계로 인해 현대적인 민감 데이터 보호에 적합하지 않습니다.

잠재적 영향

  • 암호문 분석과 무차별 대입 위험 증가
  • 민감 데이터 복구 가능성 증가
  • 레거시 암호화 의존으로 인한 규정 준수 실패

해결 방법

  1. DES/3DES 대신 AES-GCM 같은 인증 암호화 알고리즘을 사용합니다.
  2. 레거시 호환 경로는 민감 데이터 처리와 분리하고 단계적으로 제거합니다.
  3. 암호화 키, IV, nonce는 안전한 난수와 키 관리 정책으로 생성합니다.

예시

변경 전

변경 전은 CryptoSwift의 DES 구성, 변경 후는 CryptoKit의 AES-GCM 호출을 발췌한 것입니다. 각 라이브러리의 가져오기와 키 준비 코드는 생략했으며, key 타입도 서로 다릅니다.

swift
let des = try DES(key: key, blockMode: CBC(iv: iv), padding: .pkcs7)

변경 후

swift
let sealedBox = try AES.GCM.seal(data, using: key)

설명:

  • 변경 전: DES를 사용해 민감 데이터를 암호화합니다.
  • 변경 후: CryptoKit의 SymmetricKey로 AES-GCM을 사용합니다. 기존 DES 키를 그대로 재사용하지 말고 새 키와 저장 형식으로 마이그레이션해야 합니다.

참조