[swift] Swift에서 키체인에 암호화된 데이터 저장하기

앱의 데이터를 보호하기 위해 암호화된 키체인을 사용하는 것은 중요합니다. 키체인은 iOS와 macOS에서 제공되는 안전한 저장소로, 중요한 데이터를 안전하게 저장할 수 있습니다. 이번 글에서는 Swift에서 키체인에 암호화된 데이터를 저장하는 방법에 대해 알아보겠습니다.

1. 키체인에 데이터 추가

키체인에 데이터를 저장하기 위해서는 Security 프레임워크를 사용해야 합니다. 먼저 Security 프레임워크를 import 합니다.

import Security

다음으로, 키체인에 저장할 데이터를 Dictionary 형식으로 만듭니다. 데이터는 kSecClass, kSecAttrAccount, kSecValueData와 같은 키들로 구성됩니다.

let secureData = "Secret data".data(using: .utf8)!
let query: [String: Any] = [
    kSecClass: kSecClassInternetPassword,
    kSecAttrAccount: "MyAccount",
    kSecValueData: secureData
]

마지막으로, SecItemAdd 함수를 사용하여 데이터를 키체인에 추가합니다.

let status = SecItemAdd(query as CFDictionary, nil)
if status != errSecSuccess {
    print("Failed to add data to keychain")
}

위의 코드에서 status는 데이터를 키체인에 추가한 결과를 나타내는 값입니다. errSecSuccess 값이 아니라면 데이터가 추가되지 않은 것을 확인할 수 있습니다.

2. 키체인에서 데이터 읽기

키체인에서 저장된 데이터를 읽기 위해서는 SecItemCopyMatching 함수를 사용합니다. 데이터를 읽기 위해서는 이전에 저장했던 쿼리를 그대로 사용해야 합니다.

let query: [String: Any] = [
    kSecClass: kSecClassInternetPassword,
    kSecAttrAccount: "MyAccount",
    kSecReturnData: true
]

var result: AnyObject?
let status = SecItemCopyMatching(query as CFDictionary, &result)

if status == errSecSuccess {
    if let data = result as? Data,
       let stringValue = String(data: data, encoding: .utf8) {
        print("Stored data: \(stringValue)")
    }
} else {
    print("Failed to read data from keychain")
}

위의 코드에서 status는 데이터를 읽은 결과를 나타내는 값입니다. errSecSuccess 값이 아니라면 데이터를 읽을 수 없는 것을 확인할 수 있습니다. 데이터는 Data 형식으로 반환되며, 필요에 따라 적절하게 변환하여 사용할 수 있습니다.

3. 키체인에서 데이터 삭제

키체인에서 데이터를 삭제하기 위해서는 SecItemDelete 함수를 사용합니다. 삭제할 데이터의 쿼리를 작성하고, 이를 SecItemDelete 함수의 인자로 전달합니다.

let query: [String: Any] = [
    kSecClass: kSecClassInternetPassword,
    kSecAttrAccount: "MyAccount"
]

let status = SecItemDelete(query as CFDictionary)
if status != errSecSuccess {
    print("Failed to delete data from keychain")
}

위의 코드에서 status는 데이터를 삭제한 결과를 나타내는 값입니다. errSecSuccess 값이 아니라면 데이터가 삭제되지 않은 것을 확인할 수 있습니다.

결론

Swift에서 키체인에 암호화된 데이터를 저장하는 방법에 대해 알아보았습니다. 키체인은 중요한 데이터를 보호하기 위한 안전한 저장소로 사용할 수 있습니다. 이를 활용하여 앱의 데이터 보안을 향상시킬 수 있습니다.