Обработка приватных данных на публичных вычислительных сетях

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

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


Термины и обозначения


Обозначим формулой f(x)=f0? постановку задачи решения математического уравнения.
В качестве отправной точки для рассуждений выберем задачу решения системы линейных уравнений.
Обозначим формулой (x0+ex): f(x0+ex)=f0 принятие в качестве решения задачи значения (x0+ex), где


Постановка задачи


Требуется найти преобразования задачи Ek и преобразование найденного решения Dk, такие что

где

При этом должна сохраняться экономическая/временная/или другая выгода от выполнения вычислений на внешнем вычислителе
price( f(x)=f0? -> g(y)=g0? ) + price( (y0+ey) -> (x0+ex) ) << price( f(x)=f0? )
Открытая модель с доверием
Закрытая модель без доверия

Решение системы линейных уравнений


Рассмотрим задачу решения системы линейных уравнений ax=b, где

Замечания:



Линейные преобразования системы линейных уравнений



Алгоритм защиты вычислений задачи решения системы линейных уравнений


  1. Сформируем обратимые матрицы U и V и вектор z из случайных величин
  2. Вычисляем на локальном вычислителе a'=UaV, b'=U(b-az)
  3. Передаём на внешний вычислитель задачу решения уравнения a'x'=b'
  4. Используя полученное решение уравнения a'x'=b', вычисляем на локальном вычислителе x=Vx'+z
  5. Проверка истинности найденного решения может быть выполнена явной подстановкой найденного решения в формулу системы линейных уравнений ax=b


Задача линейного программирования


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

Рассмотрим задачу линейного программирования ax<=b && cx->max, где


Алгоритм защиты вычислений решения задачи линейного программирования


  1. Сформируем обратимую матрицу V и вектор z из случайных величин
  2. Вычисляем на локальном вычислителе a'=aV, c'=cV, b'=b-az
  3. Передаём на внешний вычислитель задачу решения уравнения a'x'<=b' && c'x'->max
  4. Используя полученное решение задачи линейного программирования a'x'<=b' && c'x'->max, вычисляем на локальном вычислителе x=Vx'+z


Замечания:




Абстрактный вычислитель


Согласно теории алгоритмов, современные технические устройства, при решении задач обработки данных могут быть представлены в виде конечного абстрактного вычислителя, полностью имитирующем вычисление на любом техническом устройстве.
Модели таких абстрактных вычислителей были предложены Тьюрингом, Марковым и другими.
Будем использовать запись y=x*F для обозначение работы этих вычислителей над исходными данными x по алгорифму F где y – искомые данные.
Последовательное применение нескольких алгорифмов (программа) F1,…,Fn при обработке данных будем обозначать как y=x*F1*…*Fn
Теория алгоритмов, говорит нам, что любой алгоритм (или композиция алгоритмов) имеют эквивалентные алгоритмы, а значит, можно составить алгорифм “уменьшения” количества шагов программы или алгоритм “обфукации” программы для усложнения анализа кода программы, используя запись программы F1*…*Fn как исходные данные для обработки.

Публичный абстрактный вычислитель


Постановка задачи:


Пусть требуется выполнить вычисления y=x*F над исходными данными x по алгорифму F где y – искомые данные.

Замечания:




Алгоритм защиты вычислений на публичном вычислителе


  1. Возьмём произвольные алгорифмы, обладающие свойствами x = x*E*U и y = y*V*D для любых допустимых x и y, и такие, что алгорифмы E и D не являются слишком затратными для вычисления на локальном вычислителе.
  2. Составим алгорифм G=U*F*V и используя алгорифм “уменьшения” количества вычислений или алгоритм “обфукации” преобразуем его к программе G’ используя локальный вычислитель.
  3. Вычислим на локальном вычислителе x’=x*E
  4. Выполним на внешнем вычислителе задачу y’=x’*G’, сообщив на внешний вычислитель x’ в качестве исходных данных, программу G’ и получив в ответ значение y’.
  5. Вычислим на локальном вычислителе y=y’*D

Замечания:




Литература




Контакты


@dprotopopov
09.11.2015 00:58 UTC
Первоисточник