LINUX.ORG.RU

IBM выпустила для Linux тулкит для реализации полностью гомоморфного шифрования (FHE)

 ,


2

5

Компания IBM анонсировала тулкит для реализации технологии полностью гомоморфного шифрования (FHE) для операционных систем на базе Linux (для архитектур IBM Z и x86).

Ранее доступный для macOS и iOS, FHE тулкит от IBM теперь выпущен и для Linux. Поставка осуществляется в виде Docker-контейнеров для трех дистрибутивов: CentOS, Fedora и Ubuntu Linux.

Что особенного в технологии полностью гомоморфного шифрования? Данная технология позволяет зашифровывать как статические данные, так и изменяемые (шифрование «на лету») с помощью «повсеместного» шифрования (pervasive encryption). Таким образом, FHE позволяет работать с данными даже не расшифровывая их.

Кроме того, система Data Privacy Passports (консолидированная система защиты информации) позволяет клиентам IBM Z устанавливать разрешения на работу с данными для конкретных лиц посредством использования механизма контроля за правами доступа и отзывать доступ к данным даже в процессе их передачи.

Как сообщает IBM в своем пресс-релизе: «Изначально предложенная математиками в 1970-х годах, а затем впервые продемонстрированная в 2009 году, технология полностью гомоморфного шифрования стала уникальным способом защиты конфиденциальности информации. Идея проста: теперь вы можете обрабатывать конфиденциальные данные без их предварительной расшифровки. Короче говоря, вы не можете украсть информацию, если не можете ее понять».

Для клиентов IBM Z (s390x) первый выпуск FHE тулкита для Linux поддерживает только Ubuntu и Fedora, тогда как для платформ x86 этот инструментарий работает также и на CentOS.

Между тем IBM выразила уверенность, что опытные разработчики, хорошо знакомые с Docker, смогут легко портировать FHE инструментарий от IBM в другие дистрибутивы GNU/Linux. Каждая версия тулкита предоставляет пользователям доступ к встроенной среде IDE (Integrated Development Environment) через веб-браузер, установленный в их операционной системе.

Перед началом работы с FHE тулкитом для Linux рекомендуется ознакомиться с документацией на странице проекта на GitHub. Кроме версии на GitHub доступен контейнер на Docker Hub.

Для лучшего понимания работы системы полностью гомоморфного шифрования от IBM предлагается ознакомиться с официальным видео-анонсом.

>>> Подробности

★★★

Проверено: alpha ()

Ответ на: комментарий от mx__

Docker containers with three editions for CentOS Linux, Fedora Linux and Ubuntu Linux.

Походу у них три разных версии для трех разных дистров. Но чем они отличаются - неясно.

Возможно ноги растут откуда-то отсюда:

Для клиентов IBM Z (s390x) первый выпуск FHE тулкита для Linux поддерживает только Ubuntu и Fedora, тогда как для платформ x86 этот инструментарий работает также и на CentOS.

gill_beits ★★★ ()
Последнее исправление: gill_beits (всего исправлений: 1)

погуглил:

https://habr.com/ru/post/86266/

Как это работает, ... Представьте, что вы отсылаете зашифрованную вашим закрытым ключом декларацию и получаете также зашифрованный результат от налогового специалиста, который не узнал ни бита информации о ваших доходах.

объясните пж кто понял

superuser ★★★ ()
Ответ на: комментарий от superuser

гомоморфный - значит результ операции над преобразованными данными равен преобразованию результата применения той же операции к исходным данным.

То есть для преобразования F и операции сумма:

F(a) + F(b) = F(a+b)

Если вместо F - операция шифрования enc(), а вместо суммы - любая операция X(a, b), то

enc(X(a,b)) = X(enc(a), enc(b))

Соответственно ты можешь отправлять зашифрованные данные enc(a), enc(b) в систему(чужое облако), та будет проводить расчеты на этих зашифрованных данных не расшифровывая их и будет присылать зашифрованный же результат X(enc(a),enc(b)) тебе обратно на расшифровку.

alpha ★★★★★ ()

Между тем IBM выразила уверенность, что опытные разработчики, хорошо знакомые с Docker, смогут легко портировать FHE инструментарий от IBM в другие дистрибутивы GNU/Linux.

мы не научились поставлять зависимости, извините

anonymous ()
Ответ на: комментарий от beck

Я не спец в теме, узнала про эту штуку из этой же новости. Но там по ссылкам пишут что раз весь ML - это по сути линейная алгебра и операции с матрицами, то есть сложение и умножение, то можно зашифровав исходники отдать все данные на внешний ML-кластер, где тебе их обсчитают и расклассифицируют при этом не зная содержимого.

То есть можно будет на публичных облаках считать например медицинские данные диагнозов и т.п. А потом расшифровывать результаты уже дома у медиков под контролем.

alpha ★★★★★ ()
Ответ на: комментарий от alpha

Сейчас для этого предлагается использовать федеративное обучение, просто не передавая данные на облако, а только параметры моделей. Из преимуществ: безопасность чувствительных данных и уменьшение объема передаваемых данных.

Хотя тема интересная, да.

JAkutenshi ★★ ()
Последнее исправление: JAkutenshi (всего исправлений: 1)

Друзья шифропанки, подскажите мне, можно ли эту штуку использовать, например, для безопасной передачи публичного ключа асимметричной криптосистемы? Если да — так можно сделать тот же RSA неуязвимым в буквальном смысле, поскольку взлом без открытого ключа предполагает перебор всех чисел, пригодных для использования в качестве ключей, а их на порядках ключей RSA очень много, много больше, чем тех же атомов во вселенной.

Или может сразу для передачи секретного ключа для использования в симметричной системе? Тогда ECDH можно отправлять на свалку, как и почти любую асимметричную криптографию, ибо прикрутить сюда аутентификацию — элементарная задача.

Или я что-то сильно не понимаю?

SM5T001 ()
Ответ на: комментарий от alpha

т.е. типа я знаю, что мне передали изображение, но не знаю какое, я обрабатываю это изображение и отправляю обратно, а отправитель расшифровывает результат?

это интересно. но как обработать изображение не зная, что на нём? ну я типа знаю, что изображение состоит из пикселей, но не знаю каких. и? что я могу сделать с этими пикселями если я не знаю, что на них? я могу убрать красный канал например. но усилить его вдвое уже не могу, потому что я же не знаю, что там в исходном красном канале, а вдруг там и так уже максимальное значение красного?

чтобы сделать обработку изображения, надо же знать что на пикселях, потому что обработка изображения - это анализ исходного изображения, а как сделать анализ если значение пикселей неизвестно?

как-то мутно. кто-то может объяснить на примере для чего это?

anonymous ()
Ответ на: комментарий от beck

Ну вот, например, ты пишешь какой-то госпроект, но ты третья сторона. У тебя есть задача производить рассчеты над какой-то персональной информацией. Ты не можешь у себя их хранить, логировать ничего не можешь, нужно как-то на лету обработать и не просрать ничего. Например, пусть проект - медицинский. Диагнозы - врачебная тайна. Задача - сделать электронное медзаключение. Там есть такая проверка - врач, который выписывает заключение по диагнозу Х должен обладать специальностью, необходимой для постановки диагноза (стоматолог не может выписать тебе справку про волчанку). Сейчас-то всем похер - считается, что система защищена, сервис, который это занимается, тянет себе данные доктора, данные пациента, что-то сравнивает:

competenceCheck(doctor, patient) = 
  sickness(patient) in specialities(doctor)

competenceCheck("иванов", "глисты")

То есть, есть шанс утечки - кто-то возьмет и узнает, что у тебя глисты, будет стыдно, например.

С гомоморфным шифрованием, приближенно:

competenceCheck(doctorEncrypted, patientEncrypted) =
  sicknessEncrypted(doctorEncrypted) encryptedIn specialitiesEncrypted(doctorEncrypted)

competenceCheck("1ab32cn88eea14", "a248c4de1ac")

Машина и люди увидят визуальный мусор, они не узнают, что у тебя глисты - победа.

Правда, я не в курсе, в каких странах уже есть стандарты, позволяющие это использовать именно так, но принцип такой.

cdshines ★★★★ ()
Ответ на: комментарий от cdshines

что за бред? чем это отличается от обезличивания информации? почему иванову нельзя присвоить идентификатор «пациент 8343» и вернуть врачу?

anonymous ()
Ответ на: комментарий от anonymous

так вот же пример: https://github.com/IBM/fhe-toolkit-linux/blob/master/samples/BGV_country_db_lookup/BGV_country_db_lookup.cpp#L268

тлдр: просто поиск по кв-парам (дано: зашифрованная база, вход: открытый текст, найти: значение, соответствующее входу (при том, что в базе он зашифрован) занимает 80 секунд, поэтому пока можно просто осваивать принципы. Не удивлюсь, если скоро окажется, что IBM начала продавать какие-то тачки, оптимизированные под эту тему (с производительностью на порядки лучше), и это все просто прикормка.

cdshines ★★★★ ()
Ответ на: комментарий от beck

2009

А я думал, что это нерешённая задача…

Можно привести пример из реальной жизни, для чего это может быть использовано?

Хранить зашифрованную информацию и искать в ней без расшифровки. Т.е. например архив почты можно сканировать на ключевое слово не расшифровывая его. Это позволяет выполнять поиск на любой удалённой системе никогда не загружая туда приватный ключ.

xaizek ★★★★★ ()
Ответ на: комментарий от xaizek

но ведь это нарушает приватность данных. если я могу просканировать сообщение на наличие какого-то слова, то перебрав словарь я могу восстановить всё содержимое сообщения.

довольно странная идея, но очень интересно.

anonymous ()
Ответ на: комментарий от cdshines

Не понятно, как оно может быть ВАПЩЕ полностью гомоморфным - оно что, сохраняет вообще любые преобразования какие возможно? Но это же нереально? Для кейса поиска по тексту в БД я понимаю. А вот для чего-то более умного трудно представить как-то

vitalif ★★★★★ ()
Ответ на: комментарий от anonymous

Но чтобы это работало, надо знать приватный ключ (функцию шифрования надо применить и к искомому слову). Так что это не проблема. А вот из реальных недостатков у них как минимум malleability, т.е. гомоморфные шифры несколько менее безопасны негомоморфных.

xaizek ★★★★★ ()
Ответ на: комментарий от xaizek

«Упругость» шифра — не всегда недостаток. Например, она позволяет дядям Васе и Пете отрицать свои сообщения в переписке, ссылаясь на то, что по пути их модифицировало АНБ.

SM5T001 ()
Ответ на: комментарий от balsoft

На википедии:

Если криптосистема с такими свойствами сможет зашифровать два бита, то, поскольку операции сложения и умножения формируют над битами полный по Тьюрингу базис, становится возможным вычислить любую булеву функцию, а следовательно, и любую другую вычислимую функцию.
xaizek ★★★★★ ()
Ответ на: комментарий от vitalif

Почему нереально? Все в конце-концов упирается в операции в ALU процессора, а это арифметические операции. Если библиотека умеет арифметические операции, она потенциально может эмулировать любую логику. Я не эксперт в этой области (и конкретно BGV-cхеме), но емнип все эти системы как раз-таки тормозят именно из-за того, что примитивные операции выполняются не напрямую, а через библиотеку. Вот норм презентация: https://www.slideshare.net/ssuser4c5f79/h-elib

cdshines ★★★★ ()
Ответ на: комментарий от xaizek

но если я знаю приватный ключ, то зачем мне искать в зашифрованном содержании, оно для меня точно такое же как расшифрованное. т.е. все эти усилия только для того чтобы пропустить фазу расшифровки при поиске?

ну вообще это интересно. можно держать базу клиентов в облаке зашифрованой и делать элементарные проверки типа «есть ли такой клиент в базе» или «сколько этот клиент потратил за всё время», но если её кто-то потырит, то данные клиентов теоретически не утекут.

но всё равно как-то сомнительно, приватный ключ же надо раскрывать левым людям чтобы они могли поискать, а приватный ключ ракрывать нельзя никому :) в конце концов какая разница, утечёт незашифрованная база, или утечёт приватный ключ к базе которая общедоступна.

но очень интересно, хоть ничего и не понятно. но чувствуется, что тема сильная.

anonymous ()
Ответ на: комментарий от anonymous

Ты не можешь таким образом обрабатывать шифрование данные относительно нешифрованных.

Но в ML же не с абсолютными критериями сравнивают, а одни данные с другими. То есть ты можешь классифицировать шифрованные данные шифрованными же.

Грубо говоря ты на своей стороне красный цвет зашифруешь тоже, прежде чем в облако отдать. И будешь в своём архиве искать не красный(0xf00) а какую-то абракадабру.

alpha ★★★★★ ()
Ответ на: комментарий от anonymous

Так ключ не к базе. Ты на клиенте шифруешь публичным ключом, ложишь в «базу». Потом на клиенте же кто угодно публичным ключом шифрует запрос и отправляет его на сервер. Им придет зашифрованный же ответ. Если они хотят просто совершить манипуляции (пусть 3-я сторона - сервис по переводу строк из uppercase в lowercase), они это выполняют (в силу свойств системы шифрования им не нужно расшифровывать это в исходный текст) и записывают опять результат в базу. А ты потом достаешь его и смотришь своим приватным ключом. Зачем «левым» людям искать твои данные? Если ты хочешь кому-то их открыть, ты уже отдашь кому надо просто открытые данные, им не нужен СК для этого.

cdshines ★★★★ ()
Ответ на: комментарий от cdshines

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

да, сложная тема.

anonymous ()
Ответ на: комментарий от anonymous

т.е. все эти усилия только для того чтобы пропустить фазу расшифровки при поиске?

Гомоморфное шифрование определяется как возможность делать операции без расшифровки, так что да. Но можно делать больше чем поиск, любые преобразования возможны (выше цитата про Тьюринг-полноту).

xaizek ★★★★★ ()
Ответ на: комментарий от anonymous

Ага, особенно ходим по кругу, если все отдельные и независимые примеры скидываем в кучу и строим на этой куче ложных выводов свои утверждения. И еще не понимаем, о чем говорим.

cdshines ★★★★ ()
Ответ на: комментарий от alpha

а это точно будет работать? шифрование же преобразует данные в шум, мл будет работать если на него подать не структурированную информацию, а шум? ну т.е. есть уверенность в том, что мл сможет правильно классифицировать шум?

anonymous ()
Ответ на: комментарий от cdshines

ну вроде же и просили объяснить непонимающим. ты говоришь используется публичный ключ, другой эксперт говорит, что приватный. вы можете между собой договориться какой ключ используется для поиска? или может есть ссылка на пример использования?

anonymous ()
Ответ на: комментарий от anonymous

Ну вот гомоморфное шифрование - оно такое что шум не растёт при проведении операций над данными. Он как бы в другой плоскости, перпендикулярно твоим данным. Так что сколько их не складывай/умножай, а «шумовая составляющая» не меняется.

Далеко не любое шифрование такое, но нашёлся человек, который в 2009 году доказал, что оно такое существует.

alpha ★★★★★ ()
Последнее исправление: alpha (всего исправлений: 1)
Ответ на: комментарий от xaizek
Ответ на: комментарий от anonymous

Ссылка есть выше, в соседней директории есть еще один пример. Да и вообще, загугли. Если ты тот же самый анон, который начал с фразы «что за бред», я не хочу продолжать.

cdshines ★★★★ ()
Ответ на: комментарий от anonymous

Вот у меня есть пример с работы, правда там приватной информации нет, но это не важно. Суть в том, что надо взять изображение, сделать с него Фурье преобладание, потом полученное изображение умножить на другое и дальше сделать обратный Фурье. С тем, с чем я работаю это происходит на обычном компьютере гораздо быстрее, чем длится заливка этих данных в интернет (изображения порядка 150 Мб), но при некоторых условиях, типа облаков, быстрых каналов и огромных изображений, это может стать нужно. Кроме того это всего лишь часть «жизненного пути» изображения, наверняка можно и всё остальное так же сделать, а там есть достаточно долгие задачи…

vitruss ★★★★ ()
Ответ на: комментарий от xaizek

Это кстати не очень понятно. Там получается что криптографическая функция строится из расчёта сколько раз потом планируется этот зашифрованный текст перемножать?

alpha ★★★★★ ()
Последнее исправление: alpha (всего исправлений: 1)
Ответ на: комментарий от xaizek

Вижу, тоже шифрование изучаешь. Что скажешь насчёт моего комментария выше? Можно ведь использовать гомоморфное шифрование как способ безопасно передать тот же RSA, например если клиент прислал определённое случайное число, зашифрованное гомоморфно, а сервер произвёл над шифротекстом операции с использованием своего открытого RSA-ключа и отправил результат клиенту. Клиент расшифровал полученный результат и восстановил открытый ключ сервера.

Но ведь полученный результат не является тайной? Любой кто наблюдает за передачей данных может сравнить шифротекст до и после преобразования и догадаться, каким именно ключом производили преобразование. Или нет?

Или передавать случайные числа, а не ключи RSA, и использовать их для симметричного шифрования. Получается схема с нулевым раскрытием, которая должна быть надёжнее систем, используемых на данный момент. Так? Но ведь преобразования всё равно не являются тайной...

Что-то получается сплошь security trough obscurity, не вижу как можно сделать надёжную схему.

SM5T001 ()
Ответ на: комментарий от xaizek

Хранить зашифрованную информацию и искать в ней без расшифровки. Т.е. например архив почты можно сканировать на ключевое слово не расшифровывая его.

Я хоть дерись не понимаю, как это возможно, потому что на выходе шифрования, в силу теоремы Шеннона, случайная равновероятная последовательность. А практически любая процедура шифрования - это накладывание ключа + перемешивание.

Как в получившемся «белом шуме» можно что-либо найти?

beck ()
Ответ на: комментарий от SM5T001

если клиент прислал определённое случайное число, зашифрованное гомоморфно, а сервер произвёл над шифротекстом операции с использованием своего открытого RSA-ключа и отправил результат клиенту.

Думаю, что понял идею. Судя по гомоморфности безопасность будет зависеть от самого преобразования. Если это преобразование очевидное, то раскусить связь между выходом и входом тоже будет легко (хотя может быть на константу сложнее из-за повышенной сложности вычислений).

xaizek ★★★★★ ()
Ответ на: комментарий от SM5T001

не вижу как можно сделать надёжную схему.

Многомерная криптография © является NP-полной задачей: даже квантовый компьютер не успеет расшифровать до «конца света» :)

quickquest ★★★★★ ()
Последнее исправление: quickquest (всего исправлений: 1)
Ответ на: комментарий от beck

Гомоморфные шифры – продолжение ассиметричных, которые являются частично гомоморфными. Как в RSA можно делать манипуляции над результатами благодаря свойствам возведения в степень и взятия модуля, так и в полностью гомоморфных можно делать в принципе всё. Мне кажется, здесь нужен математик для объяснения деталей.

xaizek ★★★★★ ()
Ответ на: комментарий от quickquest

Как и декодирование линейных кодов. Автор CodeCrypt(программа такая есть, работает как PGP, но использует McEliece) даже добился успехов в создании рабочего решения, но увы, использованные в нём системы(на практике это «оптимизации» стандартного McEliece) были взломаны дважды — сначала квази-диадическая версия(автор потом заменил её), а недавно и квазициклическая...

Стандартный McEliece неуязвим, но 256 бит получает только при размере ключа в 4.5 мегабайта, что безумно много. Но это одна из немногих «старых» систем, которую так и не смогли сломать. Лично я делаю на неё ставку и сижу курю теорию кодирования.

SM5T001 ()
Ответ на: комментарий от beck

Я хоть дерись не понимаю, как это возможно, потому что на выходе шифрования, в силу теоремы Шеннона, случайная равновероятная последовательность.

Не совсем, взять хоть режим ECB, при применении которого сохраняются некоторые особенности открытого текста.

Насчёт поиска не подскажу, но попробую описать, как примерно можно произвести операции с неизвестным вводным числом:

Допустим, Иван решил пойти к гадалке и испытать удачу, узнав свою суженую. У каждого человека в нашем воображаемом мире есть свое «счастливое число», раскрытие которого кому-то, кроме своей пары, обязательно оборачивается бедой.

У нашей гадалки особенный номер, потому-то к ней все и ходят чтобы найти пару.

Гадалка запрещает передавать ей своё число напрямую, потому Иван вынужден своё число зашифровать гомоморфно. Допустим, число Ивана — 8, ключ шифрования — 12, тогда зашифрованное сложением число будет 20. Полученный шифр Иван передаёт гадалке, та бросает кость, складывает результат со своим числом и шифротекстом Ивана, после чего передаёт полученное число Ивану.

Допустим, переданное Ивану число — 34. Иван легко расшифровывает истинное число, отнимая 12 и получая 22, а это число принадлежит Светлане. Суженые разыграли громкую свадьбу и жили долго и счастливо.

Приведённый выше пример — это гомоморфное сложение, умножение тоже по аналогии.

Разумеется, «в лоб» вбивать в гугл зашифрованный поисковой запрос и надеяться получить адекватный ответ — не лучшая затея. Все современные системы придётся дорабатывать, и дорабатывать сильно, если мы хотим научить их работать с гомоморфным шифрованием.

SM5T001 ()