Header Image - BioAPI

Оценка трудоёмкости восстановления секрета

Естественным образом возникает вопрос о том, насколько надежно защищает предложенный способ разделения секрета от восстановления секрета на основе знания данных предоставляемых поставщикам облачных вычислений (CP). Представляется возможным использовать строго доказуемую неединственность решения. Или единственность с точностью до широкого класса функций, как инструмент в защите информации при решении краевых задач с привлечением неконтролируемых вычислительных ресурсов.

Другие задачи для кластера

Кроме задачи Дирихле есть и другие задачи для кластера. На самом деле можно взять любое дифференциальное уравнение, перевести его к какой-либо конечно-разностной схеме и решать. Можно уже пойти дальше и применить метод конечных элементов. Всем этим я мог бы заниматься, но не занимаюсь. А всё потому что у меня сменился научный руководитель и тема. Опишу пару задач, которые я тоже делал, но они оказались довольно простыми и особо я на них не зацикливался. Это была проба пера и технологии MPI.

Метод Гаусса

Остановимся подробней на задаче решения системы линейных алгебраических уравнений методом Гаусса. Эта задача представлена формулой (1).

(1)

Для расспараллеливания этой задачи, а так же реализации схемы разделения секрета, разобьём исходную матрицу на блоки, причём размерность A много больше D. Таким образом получаем формулу (2).

(2)

Приведём систему к виду (3). Для этого вычислим обратную матрицу A-1 и матричные произведения CA-1B и CA-1F1.

(3)

Затем найдём промежуточное решение, используя формулу (4), и возвратим данные на клиентскую машину:

(4)

После чего значения X вычисляются на клиентской машине. При данной схеме распараллеливания блок D и часть вектора F2 не будут скомпрометированы, так как не попадут в ЦОД, а будут обрабатываться только на машине клиента. Для того чтобы злоумышленник получил всю матрицу M, по которой он мог бы восстановить моделируемый объект ему необходимо перебрать все возможные матрицы D и вектора F2. При должном размере этих блоков задача перебора станет принципиально нерешаемой.

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

Формула Фробениуса

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

(5)

Где и A-1 существуют. Для данной задачи, как и для предыдущей матрица разбивается на блоки, но все эти блоки обрабатываются в ЦОД. Сначала обращается матрица A, затем считаются произведения C A-1 и C A-1 B. После чего считается разность D — C A-1 B и обращается матрица H. Затем вычисляются -H-1 C A-1 и -A-1 B H-1. Последним этапом можно вычисляется A-1 + A-1 B H-1 C A-1.

Оставшиеся задачи

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

  1. Задача объекта в потоке и завихрениях среды.
  2. Задача о колебаниях мембраны в потоке.
  3. Задача области давления.
  4. Посмотреть алгоритмы дискретной математики (теории графов) и возможно запрограммировать их.

Адаптивные сетки

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

Новые эксперименты на кластере

Для исправления недостатков предыдущего эксперимента было решено переписать сервер на языке си, а так же встроить синхронизацию в решатель, чтобы избежать накладных расходов на передачу управления от решателя к скрипту синхронизации и обратно. Этот эксперимент проводился на кластере ОмГТУ, для расчётов было задействовано 9 и 16 ядер, а так же управляющий компьютер в качестве компьютера клиента, т.е. на нём были запущены сервер и вычислитель с одной подзадачей.

Экстраполяция

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

Результаты просчётов

Наконец переходим к самому интересному к результатам просчётов. Долгий путь был проделан только лишь ради этого момента. Конечно в кластере ОмГТУ не так много узлов всего, а свободных было и того меньше. Мне позволили использовать не более 16 узлов одновременно. Или точнее 16 процессоров, которые расположены на 2-х узлах.

Клиент-серверная архитектура

Здесь для читателя будет предложена клиент-серверная архитектура, которую я использовал для реализации вычислений. Ранее уже объяснялась необходимость использования серверного приложения для синхронизации вычислений. Конечно, если бы информация не была такой важной, то можно было бы просто распараллелить её обработку и позже получить результаты. Однако, из-за того, что это не так и часть информации никогда не попадёт в ЦОД и нужен сервер. Клиент-серверная архитектура оправдывает себя и при рассылке задач на вычислительные узлы и их сбор по завершению решения. К сожалению, это некоторый велосипед, повторно реализующий функции MPI.

Критерий остановки

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

Перехлёсты

В прошлой статье я упоминал про перехлёсты, здесь я расскажу что это такое и почему именно так, а не иначе. Ничего сложного в этом нет, это просто границы смежных областей. Казалось бы такой пустяк, однако, не совсем. Есть некоторые мелочи, на которых следует заострить внимание. Поехали!

Схема вычислений для уравнения Лапласа

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