[swift] Swift CryptoSwift로 비대칭 암호화를 위한 키 교환하기

비대칭 암호화는 공개키와 개인키로 암호화와 복호화를 수행하는 암호화 방식입니다. 이를 통해 안전한 통신을 할 수 있게 됩니다. 이번에는 Swift CryptoSwift 라이브러리를 사용하여 비대칭 암호화를 위한 키 교환을 하는 방법에 대해 알아보겠습니다.

CryptoSwift 라이브러리 설치하기

먼저, CryptoSwift 라이브러리를 프로젝트에 추가해야 합니다. 이를 위해 CocoaPods를 사용해서 설치할 수 있습니다. Podfile에 다음과 같이 의존성을 추가하세요.

pod 'CryptoSwift'

그리고 터미널에서 다음 명령어를 실행하여 pod를 설치하세요.

$ pod install

이제 CryptoSwift 라이브러리가 프로젝트에 추가되었습니다.

비대칭 키 생성하기

비대칭 암호화를 위해서는 공개키와 개인키를 생성해야 합니다. CryptoSwift를 사용하여 RSA 키 쌍을 생성하는 방법을 알아보겠습니다.

import CryptoSwift
import Foundation

// 키쌍 생성
let keyPair = try! CC.RSA.Key.generate(.bits(RSAKeyExponentBits._2048), publicKeySize: 0)

// 공개키와 개인키 추출
let privateKey = keyPair.privateKey
let publicKey = keyPair.publicKey

// 키 정보 출력
print("Private Key: \(privateKey)")
print("Public Key: \(publicKey)")

위의 코드에서 2048 비트 RSA 키 쌍을 생성하고 생성된 공개키와 개인키를 추출합니다. 이렇게 생성된 키를 사용하여 메시지를 암호화하고 복호화할 수 있습니다.

메시지 암호화하기

생성된 공개키를 사용하여 메시지를 암호화하는 방법을 알아보겠습니다.

import CryptoSwift

let message = "Hello, World!"
let publicKeyData = Data(base64Encoded: publicKey)!

// 공개키로 메시지 암호화
let encryptedData = try! RSA.encrypt(Data(message.utf8), publicKey: publicKeyData)

// 암호화된 데이터 출력
print("Encrypted Message: \(encryptedData.base64EncodedString())")

위의 코드에서는 RSA.encrypt를 사용하여 공개키로 메시지를 암호화합니다. 암호화된 데이터는 Base64로 인코딩되어 출력됩니다.

메시지 복호화하기

암호화된 메시지를 개인키를 사용하여 복호화하는 방법을 알아보겠습니다.

import CryptoSwift

let encryptedData = Data(base64Encoded: "CklF+f0N/jvUPL/+t0ja8AHlCUtuTf1zMRVS02HTNNQ=")!

// 개인키로 메시지 복호화
let decryptedData = try! RSA.decrypt(encryptedData, privateKey: privateKey)

// 복호화된 데이터 출력
print("Decrypted Message: \(String(data: decryptedData, encoding: .utf8) ?? "")")

위의 코드에서는 RSA.decrypt를 사용하여 개인키로 메시지를 복호화합니다. 복호화된 데이터는 UTF-8로 인코딩되어 출력됩니다.

이제 비대칭 암호화를 위한 키 교환 및 암호화, 복호화 과정을 구현하는 방법에 대해 알아봤습니다. CryptoSwift를 사용하면 간단하게 암호화 관련 작업을 처리할 수 있으며, 비대칭 암호화를 이용한 안전한 통신 기능을 구현할 수 있습니다.

참고 자료