Компания Apple объявила о создании открытой библиотеки с реализацией методов гомоморфного шифрования на языке Swift. Библиотека позволяет создавать приложения, обрабатывающие данные, доступные только в зашифрованном виде, без промежуточной расшифровки ни на одном из этапов вычислений. На выходе выдаётся зашифрованный результат, который аналогичен шифрованию результата выполнения тех же вычислений над исходными незашифрованными данными. Код проекта распространяется под лицензией Apache 2.0. Реализация основана на схеме BFV (Brakerski-Fan-Vercauteren), которая, в свою очередь, основана на задаче обучения с ошибками в кольце (RLWE), защищённой от криптоанализа квантовыми компьютерами. Низкоуровневые примитивы для шифрования используются из библиотеки Swift Crypto...Подробнее: https://www.opennet.ru/opennews/art.shtml?num=61655
Давайте без шуток. Опен-сорс проекты это всегда хорошо.
>на языке Swiftтолку с такого опенсорса как с козла молока
Поддерживаю. Только хотел написать, что просто лижут яица себе.
Под свою экосистему разработали библиотеку. Ну молодцы чего.
Теперь осталось только понять кто и зачем ее станет использовать.
> гомоморфного шифрованияКакое неприличное название. Неужели нельзя было придумать что-то другое? Я не специалист по терминам, но если бы я создавал какую-то новую терминологию, а бы задумался для начала...
"Придумать" увы, нельзя - это ЛАТЫНЬ.
Это термин из терии групп, если не ошибаюсь.
От Apple другого и не ожидалось.
>> на языке Swift
> толку с такого опенсорса как с козла молокаДа и с шифрования которое позволяет каким-то посторонним козлам "процессинг без расшифровки" толк какой-то странный. Немножечко беременна, но это не то что вы подумали, и вообще.
И чё? Тебе не нужно, кому-то нужно, отвянь
Так самое сложное там не код на языке, а алгоритмы и бизнес-логика. Перепиши на сях, если так нужно. Есло умеешь, конечно.
Чтобы переписать на Сях надо идеальнейше знать swift... А, кто на нём пишет врядли идеальнейше знает Си. Тема то мутная и без этого всего, дальше некуда.Кстати, а как там США относится к такой криптографии... не пора ли надгрызков закрывать? Отличный повод линуксоидам эту тему продавив - занять освободившуюся нишу...
P.S
Позорно зачищаемое из др.ветви про фанатиков псевдо не-фанатиков:
>>> Но древне процессоре в роутере отлично работает. Я конечно понимаю что настоящая причина что надо больше золота. Но в этом нет ничего хорошего для пользователя.
>> Настоящая причина что в ядре код, который даже проверить не на чем.
> Ещё один экстрасенс. Откуда ты взял что нет железок? Ничего кроме несите ваши денежки за этим не стоит.У того спорщика пустая голова, если не сказать дезинформирует, явно из-за его фанатизма прогрессизма...
(сами они себя предпочитают не именовать фанатиками...
есть впрочем и чуть более нейтральные примеры фанатизма - т.н. фанаты футбола/спорта/машин/женщин/денег/власти, ну конечно же они не фанатики - иначе как таким и им - обсирать фанатиков религиозных, т.е.неравнодушеных иначе говоря псевдо-верующих, как разобилчающих ложность их фанатизма и даже вредность им и окружающим, чему пример и это тип)
Ему же насрать на всех кроме себя, потому т.б. ничего не доказать что ему не угодно в любой сфере - это даже не просто фанатизм это вкупе с ней подонковость(мин.из разряда тут хочу и всё, на остальных насрать), проверенно многократно на таких, так или иначе антихристианстих оказывавшихся, - фанатиках-псевдо-нефанатиках, по сути скрытого сатанизма, и ладно бы они признавались в этом так нет же... Вон даже сам Кармак как то на вопрос является ли он сатанистом уч.наличие пентаграм и прч.скверны в DOOMv1.666 тогда заявил что нет в DOOMFAQ а, позже в Q3 сколько мерзости почти на каждом уровне и особенно если глянуть названия на ресурсы - имена текстур или моделей в ч.н. Бафомёт, часто располагаемый над арками проходов под которым игрок бегает значит уже оскверняясь... и что удивляться что и в DOOM4 в музыке нашли 666 и пентаграммы АЧХ закодированным в виде даже картинки, ответ Кармака - опять: это просто шутка, типа атеистическая, ну да конечно, распространяет популяризируя скверну душе игрока - шутка, если бы кормил дерьмом - и то меньше было испачкал; это к тому что такие они фапатели-на-прогрес якобы-нефанатики).
Сообщество не может переписать на более открытые языки программирования (оно ж только это и делает) ?? Сообщество боится дыр в процессе ??
Так swift вроде открытый же ? У него экосистема вне apple конечно унылая, но собрать на линуксе вроде можно, было бы желание.
Зачем это переписывать? Межделмаш уже сделал на гораздо более открытом языке https://www.opennet.ru/opennews/art.shtml?num=53459
Ну гомо же, как всегда)
>Опен-сорс проекты это всегда хорошо.Хорошо, когда ещё и реальная польза есть.
>на языке Swift
Востребовано это будет только на платформах самого Яббла.
> Хорошо, когда ещё и реальная польза есть.Вот если именно ты им воспользуешься, то будет реальная польза.
> Востребовано это будет только на платформах самого Яббла.
С чего это?
Свифт уже давно официально поддерживает линукс - Red Hat, Fedora, Amazon Linux, Ubuntu (причем с древней 20.04) и винду.
На расте проектов больше чем на вот этом.
> Свифт уже давно официально поддерживает линуксНикто в здравом уме не станет работать с этим ворохом костылей поверх objectivec.
Мда... Вообще-то там практически нет obj c.
github.com/swiftlang/swift
Objective-C 0.5%Тот foundation, который работает на линуксе и винде, это отдельная реализация, которая с обжсишным foundation связана только общими интерфейсами.
И это иногда проблема, когда в новой foundation нет того что есть в старом.
Но конечно продолжают потихоньку реимплементировать все недостающее и столкнуться с эти становится все сложнее, но тем не менее бывает.Тем не менее, на свифте успешно пишется кроссплатформа для винды.
Для линукса тоже можно, но нафиг нужно?
https://www.swift.org/install
> Востребовано это будет только на платформах самого Яббла.и что? Пользователей ябла в мире 19%, а в США почти 50%. Так что все ок.
С ног на голову перевернул всё.
Опен Сорс не хорошо и не плохо. Все зависит от проекта и реализации.
Главное у кого ружьё....
Да, только офф-топики плохо
https://www.apple.com/privacy/
>пользователь передаёт на сервер Apple зашифрованный номер телефона, а сервер, без его расшифровки, проверяет наличие номера в чёрных списках для блокирования спама или базах данных с информацией о принадлежности номеровв чем, собственно, проблема, просто сравнить хеши?
Хэш можно брутфорснуть, ключ для шифрования будет подобрать сложнее
а теперь поясните как в случае шифрования будет происходить поиск? В каком виде в базе хранятся "черные" номера?
я нашел пример https://github.com/apple/live-caller-id-lookup-exampleно там все упирается в Apple_SwiftHomomorphicEncryption_Pir_V1_KeywordDatabaseRow и тд
import ArgumentParser
import Foundation
import PrivateInformationRetrievalProtobuf
import SwiftProtobufнадо ковырять саму библиотеку, что-то мне подсказывает что все спрятано там, в том числе поиск в базе (https://github.com/apple/swift-homomorphic-encryption)
если у кого-то есть время, посмотреть you are welcome ))
> в чем, собственно, проблема, просто сравнить хеши?У них проблем нет проблем сравнить хеши.
А у тебя начнутся, если хеш твоего номера случайно совпадет с номером нигерийского принца.
Они начнутся и при сравнении зашифрованных номеров, ничем тут не лучших хэша.
Ну если местный эксперт писать будет - то да. Вы ж все именно так и делаете. И ключ будет 1234.Скажи, эксперт, тебе не приходит в голову что шифрует-то - клиент на своей стороне, расшифровке получателем ЭТО не подлежит в принципе, поэтому ключ шифрования надо каждый раз выбирать - новый?
А два разных клиента - вообще в принципе не зашифруют одним и тем же.
Чем это отличается от хэша - догадайся сам.
Вот тебе экcперд намёк:> А два разных клиента - вообще в принципе не зашифруют одним и тем же.
В том что хэш от заведомо малого объема данных это фигня.
Чушь несёшь
Во-первых, хеш от маленького объема данных можно легко расшифровать.
Во-вторых, по хэшам все равно можно установить, кто кому звонит. Если Apple пользуется услугами сторонней компании для проверки спам-номеров, то при использовании подобного шифрования даже эта компания не будет знать, чей именно номер проверяет.
Правда, с трудом могу понять, как подобное в принципе возможно. Математика - сложная штука, блин.
В самом по себе принципе гомоморфизма нет ничего сложного.Если вы возьмете два потока байт, закодируете их с помощью AES-OFB и сделаете между полученными значениями XOR, то применив (правда, дважды) операцию декодирования к результату вы окажетесь на руках с тем же самым набором байт, как если бы вы просто два потока байт поXORили.
Эллиптические кривые позволяют производить ещё более прикольные трюки, при этом математика за этим всем стоит очень несложная.
Но вот как делать поиск в БД - тут я теряюсь в догадках. Точнее, варианты есть, но к гомоморфизма они отношения не имеют.
>Но вот как делать поиск в БДКак сделать поиск по ключу, если серверу не передать ключ? Если сервер отвечает на вопрос "есть в базе ключ или нет", то он знает какой это ключ и с к каким данным он привязан.
В случае с конфиденциальным поиском, сервер не ишет и не отвечает на вопрос. Первое что приходит на ум - сервер отсылает клиенту всю базу и говорит "ищи сам", тем самым сохраняется конфиденциальность. База растет и этот вариант не работает, вот и с помощью гомоморфного шифрования придумали метод как не передавать всю базу, но чтобы клиент искал сам.
Если представить каждый ключ (номер телефона) как уникальное простое число, то схему можно представить так:
Перемножим все ключи черных номеров в базе и это число отправим клиенту. Клиент тупо поделит это число на свое и если оно нацело делит, значит есть в базе данное число (ключ).
Проблема тут в том, что число становится большим с ростом количества номеров, решением может служить логарифмическая разбивка на части (перемножаем не всю базу а по частям, шардам), и отправка этих данных клиенту.
а вы понимаете вообще, в чем суть шифрования? в чем проблемы? и для чего эти шифры? или так - MD5 и нормас??
Насколько я помню, полностью гомоморфная обработка информации требует сотни гибибайт для простейшего Hello Worldа. Именно поэтому это не нашло применения в реальном мире. А так любую программу можно скомпилировать. Только у вас есть столько памяти и вычислительных ресурсов, как на хранение шифротекстов, так и на их обработку?
Ты помнишь неправильно
> у вас есть столько памяти и вычислительных ресурсов, как на хранение шифротекстов, так и на их обработку?Уже есть... Квантовые компьютеры давно же изобретенны, хоть сейчас они в тренде из-за доп-го прогресса, - подключаться, на квантовом уровне, к твоему и твоего ребёнку мозгам - и вот сколько надо гигабит им...
И откуда по вашему их прям-чудо мега-скорость?...
swift это такой замаскированный objectivec. Его может использовать только мазохист или погрязший в зависимостях эппла дурак. 5 лет херачил на нём, хочется скорее закопать это поделие.Дотнет наше всё
Си(даже не говорю уже про Ассемблер) - не?
Для настоящих программистов... что бы не быть чем то вроде JS-скриптовика с псевдо-унифицированной же архитектурой, которая на самом деле отдельная архитектура паразитирующая на других архитектурах, паразит...
Ты писал на Си и C#? Попробуй чисто для себя - сразу поймёшь ПРОПАСТЬ в производительности и удобстве! Это уже не говоря о мириадах библиотек под .NET
Тогда уж, всё же удобней не писать - а, пользоваться)))
А, вот тут то вопрос производительности Си vs C# наличествует ещё как ...(нет и на Си конечно можно залагать, хоть чаще это всё же на С++ при злоупотреблением ООП и особенно чужими билиотеками, т.б.универсальными и т.б.багнутыми или просто неоптимизированными, хоть конечно не чужое если тоже не значит оптимизированное это требует колоссальных затрат времени, которые таким как вы фактически халтурщикам - просто неприемлемы же). А, про " производительности и удобстве!" кто спорит?... Только потом у игр и ПО неадекватные производимому системные требования, т.б. скрыто перекладыаемые же, их стоимость отсутствия тормозов, на пользователя в добавок к цене продукта, в т.ч.и когда нулевой у freeware/OSC.
> 5 лет херачил на нём, хочется скорее закопать это поделие.
>
> Дотнет наше всёПро дотнет могу то же самое сказать. Зачем эти вылезшие из корпорашек язычки - C#, Swift, Go без свободного сообщества и свободной экосистемы? Если не нравятся плюсы, есть раст.
dotnet/C# полностью свободный, они всё переделали уже чуть ли не 10 лет назад.
> Работа с данными при гомоморфном шифровании сводится к тому, что пользователь шифрует данные и без раскрытия ключей передаёт для обработки на внешний сервер.Ой к чему эти полумеры? У вас все данные из телефона есть.
MicrosoftSEAL сто лет как доступен под МIT лицензией.
Единственно непонятно, зачем данные посылать на какой то сервер.
Для шифрования?
Так клиент же уже отправляет шифрованные данные!
Или для того, что бы на стороне сервера тоже могли прочитать твои шифрованные данные?
Там очень хитрая идея, шифруешь «нечто» локально, и отправляешь на сервер. Сервер не может расшифровать, но может проводить ряд операций над твоим зашифрованным «нечто».Сервер в результате операций изменит твой зашифрованный «блоб», но не будет знать чего он достиг в результате своих действий. И отправляет этот «блоб» тебе назад. Ты расшифровываешь его своим ключом шифрования и видишь результат вычислений на сервере
Идея вовсе не хитрая: всё храниться в облаках, а клиент сервера ничего не может поделать с данными, кроме как показать на экране и инициировать оплату по карте. Сейчас схему обкатывают (сервер проводит ряд операций над твоим зашифрованным «нечто»), что бы в будущем поменять клиента и сервер местами.
Плохая идея эпл ненужен.
Не для Эпол.
Сделают насильные распределенные вычисления, хомячкам будут кидать задании, их айфони будут фоново что то просчитывать, не имея доступа к зашифрованным данным.
"Люди - новая нефть" ©
айфони прошлый век, м.б.для защиты связи с тут рассмотренным:
- https://www.opennet.me/opennews/art.shtml?num=61655#70Если предположить что это именно для расчёта, а не просто криптографии их зловредских м_снских сообщений им нужно, то саммо собой напрашивается вариант что считать планируют - нейроны...
например .. минимум ранее бывшего в здании с надписью Зверь, в брюсселе, а тут значит уже в т.ч.как на нейронной же "платформе" т.о.зн.быстрей чем любые аппартные чипы,
иначе же сложность и затраты на всё слишком неадекватны, и уж точно это не уровень банковских операций и т.б. магазинных оплат.
тут можно одну из схем "нулевого разглашения" (ZK) применить. И поиск то сводится (частный случай) к ответу на вопрос "содержится ли в базе ключ Х", да или нет, и никаких возвращаемых значений по ключу. Ограничена применимость такого поиска.
Квантовые же вычисления, ныне даже публично, значит уже давно. Зачем поиск тут - параллельный перебор по формуле, в т.ч.зависящей от общего секретного ключа.
Чтобы не городить квантовый процессора в напр.мобилках - тоже м.б. так или иначе втихую использован мозг его владельца. Скоерей всего не без вреда, минимум ускоренное устаревание клеток [и даже вовсе рак].
> Квантовые же вычисления,Ну и квантово-стойкие алгоритмы применяют ведь.
> тоже м.б. так или иначе втихую использован мозг его владельца.
Вангую, что в ближайщие 1000 лет этого не достичь.
А, ты уверен что уже сейчас не так, с тобой же....
Уверен, потомучто телевизер не смотрю, а то что у большинства уже развилась шиза не говорит об успешности их деятельности.
Не понятно как можно изменять блоб не поломав
Не очень понимаю, как это работает.Зашифровал с маркантом, получается случайная равновероятная последовательность, как с ней производить что-то?
Ну для этого великие умы и думали! Как без расшифровки проводить вычисления. Это давно проработанная теория, её далеко не Эппля придумала.
Я почитал мурзилки по вопросу и пришёл к выводу, что там нет маркантов, а ключи постоянные или меняются по какому-то известному алгоритму или последовательности.С добавлением марканта такая штука не работает.
Ну а для какого ещё шифрования они могли опубликовать библиотеку
Какой объём данных так можно обработать? Что насчёт структуры? Можно ли так виртуалку хотя-бы с досом запустить?
Обмен хэшами. На сервере - таблица из хэшей. Терминал вычисляет хэш сервер ищет строку с этим хэшем и отдает соответствующий хэш.
В этом случае сервер будет знать что вам звонят спасены
звонок - событие терминала. Оно скрыто от сервера. Сервер отрабатывает связи хэшей.