Site icon AppTractor

Apple выпустила библиотеку гомоморфного шифрования для Swift

На Swift.org разработчики языка объявили о выпуске нового пакета Swift с открытым исходным кодом для гомоморфного шифрования в Swift.

Гомоморфное шифрование — это криптографическая техника, которая позволяет производить вычисления на зашифрованных данных, не раскрывая операционному процессу лежащие в их основе незашифрованные данные. Она позволяет клиентам отправлять зашифрованные данные на сервер, который обрабатывает эти зашифрованные данные и возвращает результат, который клиент может расшифровать. Во время выполнения запроса сам сервер никогда не расшифровывает исходные данные и даже не имеет доступа к ключу дешифрования. Такой подход открывает новые возможности для работы облачных сервисов, обеспечивая конфиденциальность и безопасность данных пользователя, что, безусловно, очень привлекательно для многих сценариев.

В Apple используют гомоморфное шифрование в своей работе, поэтому они рады поделиться этой Swift-реализацией с сообществом, чтобы другие могли использовать ее и вносить свой вклад.

Одним из примеров использования этой реализации в iOS 18 является новая функция Live Caller ID Lookup, которая предоставляет услуги определения номера абонента и блокировки спама. Live Caller ID Lookup использует гомоморфное шифрование для отправки зашифрованного запроса на сервер, который может предоставить информацию о телефонном номере без того, чтобы сервер знал конкретный номер телефона, указанный в запросе. Чтобы продемонстрировать это, разработчики выложили пример, который предоставляет функциональный бэкенд для тестирования функции Live Caller ID Lookup с использованием гомоморфного шифрования.

Вот еще самый простой пример использования библиотеки:

import HomomorphicEncryption

// We start by choosing some encryption parameters for the Bfv<UInt64> scheme.
// *These encryption parameters are insecure, suitable for testing only.*
let encryptParams =
    try EncryptionParameters<Bfv<UInt64>>(from: .insecure_n_8_logq_5x18_logt_5)
// Perform pre-computation for HE computation with these parameters.
let context = try Context(encryptionParameters: encryptParams)

// We encode N values using coefficient encoding.
let values: [UInt64] = [8, 5, 12, 12, 15, 0, 8, 5]
let plaintext: Bfv<UInt64>.CoeffPlaintext = try context.encode(
    values: values,
    format: .coefficient)

// We generate a secret key and use it to encrypt the plaintext.
let secretKey = try context.generateSecretKey()
let ciphertext = try plaintext.encrypt(using: secretKey)

// Decrypting the plaintext yields the original values.
let decrypted = try ciphertext.decrypt(using: secretKey)
let decoded: [UInt64] = try decrypted.decode(format: .coefficient)
precondition(decoded == values)

Саму библиотеку для шифрования вы можете найти на GitHub: https://github.com/apple/swift-homomorphic-encryption

Exit mobile version