[swift] CryptoSwift에서 제공하는 여러 암호화 모드의 종류 및 특징

CryptoSwift는 Swift로 작성된 암호화 라이브러리로, 다양한 암호화 모드를 제공합니다. 이 문서에서는 CryptoSwift에서 제공하는 몇 가지 암호화 모드와 그 특징을 살펴보겠습니다.

ECB (전자 코드 북 모드)

ECB는 일반적으로 가장 간단한 암호화 모드입니다. 평문 데이터를 블록 단위로 나누고, 각 블록을 독립적으로 암호화합니다. 하지만 ECB는 동일한 평문 블록이 동일한 암호문 블록으로 변환되기 때문에 보안성이 약합니다.

let encrypted = try! ECB(key: key, blockMode: .PKCS7Padding).encrypt(data.bytes)

CBC (암호 블록 연결 모드)

CBC는 ECB의 보안성 문제를 해결하기 위해 개발된 암호화 모드입니다. 이전 블록의 암호문을 현재 블록의 암호화에 사용하여 암호문의 패턴을 없애는 역할을 합니다.

let encrypted = try! CBC(key: key, iv: iv, blockMode: .PKCS7Padding).encrypt(data.bytes)

CTR (카운터 모드)

CTR 모드는 블록 암호화 함수를 스트림 암호화로 변환하는 모드입니다. 각 블록에 대해 일련의 카운터가 사용되고, 이를 암호화 함수의 입력으로 사용하여 스트림을 생성합니다.

let encrypted = try! CTR(key: key, iv: iv, counter: counter, blockMode: .PKCS7Padding).encrypt(data.bytes)

GCM (갤러웨이 암호화 모드)

GCM 모드는 인증과 암호화를 동시에 수행하는 암호화 모드입니다. 추가적인 인증 태그(Authentication Tag)를 생성하여 암호문의 무결성을 검증합니다.

let encrypted = try! GCM(key: key, iv: iv, additionalAuthenticatedData: aad).encrypt(data.bytes)

특징

더 많은 암호화 모드와 예제 코드에 대한 정보는 CryptoSwift GitHub 페이지에서 확인할 수 있습니다.