GitHub
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
-
Программирование3 недели назад
Конец программирования в том виде, в котором мы его знаем
-
Видео и подкасты для разработчиков6 дней назад
Как устроена мобильная архитектура. Интервью с тех. лидером юнита «Mobile Architecture» из AvitoTech
-
Магазины приложений3 недели назад
Магазин игр Aptoide запустился на iOS в Европе
-
Новости3 недели назад
Видео и подкасты о мобильной разработке 2025.8