Кто нибудь пробовал такое? Какие есть библиотеки (если есть)? Там идея в том, чтобы производить вычисления над зашифрованными данными и получать зашифрованный результат, который можно расшифровать только зная ключ для расшифровки. Таким образом, вычисления можно проводить на "ненадежной" машине и получать результат, который не будет известен никому кроме того кто зашифровал исходные данные. Я не очень понимаю, можно ли при этом скрыть еще и алгоритм вычислений. То есть чтобы алгоритм был зашифрован в самих входных данных, и никакое дизассемблирование не могло бы прояснить сути того что же конктерно делает "криптовиртуальная машина" с конкретным набором данных (ибо они зашифрованы!). Так например толку от одного гомоморфного сложения мало, а если даже будут гомоморфные основные арифметически и логические операции, но при этом открытые опкоды, то можно даже не видя данных, понять что же алгоритм делает. А вот интересно, можно ли как-то и алгоритм зашифровать. Ну и вообще есть ли практические реализации, или только теория.
Для RSA приводят такой пример E(x) = x^e mod n E(m1)*E(m2)=(m1^e * m2^e) mod n = (m1*m2)^e mod n = E(m1*m2) То есть произведение двух чисел, зашифрованных RSA можно прямо в шифрованном виде и делать. Берешь и умножаешь. С какой целью надо умножать два числа под 1024 и более разрядов - шут его знает. Но типа можно. По-моему серьезных практических применений у таких штук нету.
f13nd, чтобы этот пример имел практическое значение, нужно m1*m2 < n и то для дешифровки результата надо убирать е на защищённой машине. Тч практически каша из топора
Сия чушь из интернета https://ru.wikipedia.org/wiki/Гомоморфное_шифрование Практический результат... я пока собираю информацию. Возможно ли, и если возможно то что именно. В зависимости от этого будет понятнее что там с практическим результатом.
xcode, если взять пример f13nd ==получаем.. 1. возводим м1 и м2 в е и кидаем на облако. 2. считаем их произведение "секретно" на облаке. 3. чистим результат от е. ====== №1 и №3 нужно делать на надёжной тачке и общее кол-во операций получается.. 3*lg2(n) для локальной тачки и lg2(n) на облаке. любопытные "облачные" изыски получаются и то тута подвох == на локалке кол-во операций умножения, а на облачке практически сложение идёт