Не обращая внимания на ОЗУ
В этой статье есть несколько проблем. Пожалуйста, помогите улучшить его или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалять эти шаблонные сообщения )
|
Симулятор Oblivious RAM (ORAM) — это компилятор , который преобразует алгоритм таким образом, что полученный алгоритм сохраняет поведение ввода - вывода исходного алгоритма, но распределение шаблонов доступа к памяти преобразованного алгоритма не зависит от доступа к памяти. образец исходного алгоритма.
Использование ORAM мотивировано тем, что злоумышленник может получить нетривиальную информацию о выполнении программы и данных , которые программа использует, просто наблюдая за закономерностью, по которой программа обращается к различным областям памяти во время своего выполнения. Злоумышленник может получить эту информацию, даже если данные в памяти зашифрованы .
Это определение подходит для таких настроек, как защищенные программы, работающие в незащищенной общей памяти , или клиенты, запускающие программы в своих системах путем доступа к ранее сохраненным данным на удаленном сервере . Концепция была сформулирована Одедом Гольдрейхом и Рафаилом Островским в 1996 году. [1]
Определение
[ редактировать ]Говорят, что машина Тьюринга (TM), математическая абстракция реального компьютера (программы), не обращает внимания , если для любых двух входных данных одинаковой длины движения головок ленты остаются одинаковыми. Пиппенгер и Фишер [2] доказал, что каждая ТМ со временем работы можно заставить забыть, и что время работы забывчивого ТМ . Более реалистичной моделью вычислений является модель RAM . В модели вычислений RAM имеется ЦП , который может выполнять основные математические, логические и управляющие инструкции. Процессор также связан с несколькими регистрами и физической оперативной памятью , где он хранит операнды своих инструкций. ЦП также имеет инструкции для чтения содержимого ячейки памяти и записи определенного значения в ячейку памяти. Определение ORAM отражает аналогичное понятие игнорирования доступа к памяти в модели RAM.
Неформально, ORAM — это алгоритм на интерфейсе защищенного ЦП и физического ОЗУ, который действует как ОЗУ для ЦП, запрашивая физическую ОЗУ для ЦП, при этом скрывая информацию о фактическом шаблоне доступа к памяти ЦП от физическая оперативная память. Другими словами, распределение обращений к памяти двух программ, совершающих одинаковое количество обращений к оперативной памяти, неотличимо друг от друга. Это описание по-прежнему будет иметь смысл, если ЦП будет заменен клиентом с небольшим хранилищем, а физическое ОЗУ заменено удаленным сервером с большой емкостью хранилища, на котором находятся данные клиента.
Ниже приводится формальное определение ORAM. Позволять обозначают программу, требующую памяти размером при выполнении на входе . Предположим, что имеет инструкции по основным математическим и управляющим операциям, а также две специальные инструкции. и , где считывает значение в местоположении и записывает значение к . Последовательность ячеек памяти, к которым обращается программа во время его выполнения называется шаблоном доступа к памяти и обозначается .
Алгоритм с полиномиальным временем представляет собой компилятор Oblivious RAM (ORAM) с вычислительными издержками. и накладные расходы на память , если данный и детерминированная программа RAM с объемом памяти выводит программу с объемом памяти такой, что для любого входа , время работы ограничен где это время работы , и существует пренебрежимо малая функция такие, что выполняются следующие свойства:
- Корректность: Для любого и любая строка , с вероятностью по крайней мере , .
- Забывчивость: Для любых двух программ , любой и любые два входа, если , затем является -близко к на статистическом расстоянии , где и .
Обратите внимание, что в приведенном выше определении используется понятие статистической безопасности . Аналогичное определение можно дать и понятию вычислительной безопасности . [3]
История ORAM
[ редактировать ]ORAM были предложены Гольдрейхом и Островским. [4] [5] [1] где основной мотивацией было заявлено обеспечение защиты программного обеспечения от злоумышленника, который может наблюдать за шаблоном доступа к памяти программы (но не за ее содержимым).
Основной результат в этой работе [1] заключается в том, что существует компилятор ORAM, который использует серверного пространства и требует дополнительных затрат времени в размере при создании программы, которая использует клетки памяти не обращают внимания. Существует несколько атрибутов, которые необходимо учитывать при сравнении различных конструкций ORAM. Наиболее важными параметрами производительности конструкции ORAM являются накладные расходы на пространство на стороне клиента, накладные расходы на пространство на стороне сервера и затраты времени, необходимые для осуществления одного доступа к памяти. На основании этих признаков построена Ашаров и др., [6] под названием «OptORAMa» это первая оптимальная конструкция ORAM. Это достигает клиентское хранилище, серверное хранилище и издержки доступа, соответствующие известным нижним границам.
Еще одним важным атрибутом конструкции ORAM является то, амортизируются ли издержки доступа или учитываются наихудшие условия . Некоторые более ранние конструкции ORAM имели хорошие гарантии амортизированных накладных расходов на доступ, но накладные расходы на доступ в худшем случае. Некоторые конструкции ORAM с полилогарифмическими вычислительными затратами в наихудшем случае являются таковыми. [7] [8] [9] [10] [11] [12] Конструкции [4] [5] [1] были в модели случайного оракула, где клиент предполагает доступ к оракулу, который ведет себя как случайная функция и возвращает согласованные ответы на повторяющиеся запросы. Доступ к оракулу можно было бы заменить псевдослучайной функцией , начальным числом которой является секретный ключ, хранимый клиентом, если предположить существование односторонних функций . Документы [13] [14] были направлены на полное устранение этого предположения. Авторы [14] также добиться накладных расходов на доступ в размере
Хотя большинство ранних работ посвящено доказательству безопасности с помощью вычислений, есть и более поздние работы. [3] [10] [13] [14] которые используют более строгое статистическое понятие безопасности.
Одна из единственных известных нижних границ затрат на доступ к ORAM принадлежит Goldreich et al. [1] Они показывают нижняя граница накладных расходов на доступ к ORAM, где это размер данных. Другая нижняя оценка принадлежит Ларсену и Нильсену. [15] Существует также условная нижняя граница накладных расходов на доступ к ORAM, предложенная Бойлом и др. [16] что связывает эту величину с размером сортировочных сетей .
Конструкции ОРАМ
[ редактировать ]Тривиальная конструкция
[ редактировать ]Тривиальная конструкция симулятора ORAM для каждой операции чтения или записи считывает и записывает каждый отдельный элемент массива, выполняя значимое действие только для адреса, указанного в этой единственной операции. Таким образом, тривиальное решение сканирует всю память для каждой операции. Эта схема требует временных затрат в размере для каждой операции с памятью, где n — размер памяти.
Простая схема ORAM
[ редактировать ]Простая версия статистически безопасного компилятора ORAM, созданная Чунгом и Пассом. [3] описывается ниже вместе с обзором доказательства его правильности. Компилятор на входе n и программе Π с требуемой памятью n выводит эквивалентную забывчивую программу Π′ .
Если входная программа Π использует r регистров, выходной программе Π' потребуется регистры, где является параметром конструкции. Π' использует память и ее (в худшем случае) накладные расходы на доступ .
Компилятор ORAM описать очень просто. Предположим, что исходная программа Π помимо двух специальных инструкций содержит инструкции для основных математических и управляющих операций. и , где считывает значение в позиции l и записывает значение v в l . Компилятор ORAM при построении Π' просто заменяет каждую инструкцию чтения и записи подпрограммами Oread и Owrite , оставляя остальную часть программы прежней. Можно отметить, что эту конструкцию можно заставить работать даже с запросами к памяти, поступающими в режиме онлайн .
Организация памяти забывчивой программы
[ редактировать ]Программа Π' хранит полное двоичное дерево T глубины в его памяти. Каждый узел в T представлен двоичной строкой длиной не более d . Корень — это пустая строка, обозначаемая λ . Левый и правый дочерние элементы узла, представленного строкой являются и соответственно. Программа Π' рассматривает память Π как разделенную на блоки, где каждый блок представляет собой непрерывную последовательность ячеек памяти размера α . Таким образом, существует не более блоков всего. Другими словами, ячейка памяти r соответствует блоку .
В любой момент времени между блоками и листьями в T существует связь . Чтобы отслеживать эту связь, Π' также хранит структуру данных, называемую картой положения, обозначаемую , с использованием регистры. Эта структура данных для каждого блока b хранит лист T , связанный с b в .
Каждый узел в T содержит массив, содержащий не более K троек. Каждая тройка имеет вид , где b — идентификатор блока, а v — содержимое блока. Здесь K является параметром безопасности и .
Описание программы «Забывчивость»
[ редактировать ]Программа Π′ начинается с инициализации своей памяти, а также регистрируется в ⊥ . Описания процедур Owrite и Oread достаточно, чтобы завершить описание Π' . Подпрограмма Owrite приведена ниже. Входные данные подпрограммы представляют собой ячейку памяти. и значение v, которое должно быть сохранено в местоположении l . Он состоит из трех основных фаз: FETCH, PUT_BACK и FLUSH.
input: a location l, a value v
Procedure FETCH // Search for the required block. // b is the block containing l. // i is l's component in block b. if then . // Set pos to a uniformly random leaf in T. flag . for each node N on the path from the root to pos do if N has a triple of the form then Remove from N, store x in a register, and write back the updated N to T. flag . else Write back N to T.
Procedure PUT_BACK // Add back the updated block at the root. . // Set pos' to a uniformly random leaf in T. if flag then Set x' to be the same as x except for v at the i-th position. else Set x' to be a block with v at i-th position and ⊥'s everywhere else. if there is space left in the root then Add the triple to the root of T. else Abort outputting overflow.
Procedure FLUSH // Push the blocks present in a random path as far down as possible. . // Set to a uniformly random leaf in T. for each triple in the nodes traversed the path from the root to Push down this triple to the node N that corresponds to the longest common prefix of and . if at any point some bucket is about to overflow then Abort outputting overflow.
— найти местоположение l в дереве T. Задача этапа FETCH Предположим, что pos — это лист, связанный с блоком, содержащим местоположение l . Для каждого узла N в T на пути от корня до pos эта процедура перебирает все тройки в N и ищет тройку, соответствующую блоку, содержащему l . Если он находит эту тройку в N , он удаляет тройку из N обновленное состояние N. и записывает обратно он просто записывает обратно весь узел N. В противном случае
На следующем этапе он обновляет блок, содержащий l, значением v , связывает этот блок со свежевыбранным равномерно случайным листом дерева и записывает обновленную тройку обратно в корень T. новым
Последняя фаза, которая называется FLUSH, представляет собой дополнительную операцию по освобождению ячеек памяти в корне и других более высоких внутренних узлах. В частности, алгоритм выбирает равномерно случайный лист. а затем пытается максимально опустить каждый узел на пути от корня до . Он прерывает вывод переполнения, если в какой-то момент какая-то корзина вот-вот переполнит свою емкость.
Подпрограмма Oread аналогична Owrite . Для подпрограммы Oread входные данные — это просто ячейка памяти. и это почти то же самое, что и Owrite . Если на этапе FETCH не найдена тройка, соответствующая местоположению l , оно возвращает ⊥ как значение в местоположении l . На этапе PUT_BACK он запишет обратно тот же блок, который он прочитал, в корень после связывания его со свежевыбранным равномерно случайным листом.
Корректность простой схемы ORAM
[ редактировать ]Пусть C обозначает компилятор ORAM, описанный выше. Для данной программы Π пусть Π′ обозначает . Позволять обозначаем выполнение программы Π на входе x с использованием n ячеек памяти. Кроме того, пусть обозначают шаблон доступа к памяти . Обозначим через µ функцию такую, что для любого , для любой программы Π и для любого входа , вероятность того, что выводит переполнение не более . Следующую лемму легко увидеть из описания C .
- Лемма об эквивалентности
- Позволять и . Дана программа Π с вероятностью не менее , выход идентичен выходу .
Легко видеть, что каждая операция Owrite и Oread пересекает пути от корня к листу в T, выбранные равномерно и независимо случайным образом. Этот факт означает, что распределение шаблонов доступа к памяти любых двух программ, совершающих одинаковое количество обращений к памяти, неразличимо, если они обе не переполняются.
- Лемма о забывчивости
- Учитывая две программы и и два входа такой, что , с вероятностью по крайней мере , шаблоны доступа и идентичны.
Следующая лемма завершает доказательство корректности схемы ORAM.
- Лемма о переполнении
- Существует пренебрежимо малая функция µ такая, что для каждой программы Π , каждого n и входа x программа выходы переполняются с вероятностью не более .
Накладные расходы на вычисления и память
[ редактировать ]Во время каждой операции Oread и Owrite два случайных пути от корня к листу T полностью исследуются Π' . Это занимает время. Это то же самое, что и вычислительные затраты, и поскольку К .
Общий объем памяти, используемый Π′, равен размеру T . Каждая тройка, хранящаяся в дереве, имеет слова в нем и, таким образом, есть слов на узел дерева. Поскольку общее количество узлов в дереве равно , общий объем памяти слова, что . Следовательно, затраты памяти на конструкцию равны .
Ссылки
[ редактировать ]- ^ Jump up to: а б с д и Гольдрейх, Одед ; Островский, Рафаил (1996), «Защита программного обеспечения и моделирование в не обращающей внимания оперативной памяти», Журнал ACM , 43 (3): 431–473, doi : 10.1145/233551.233553 , hdl : 1721.1/103684 , MR 1408562 , S2CID 7502114
- ^ Пиппенджер, Николас ; Фишер, Майкл Дж. (1979), «Отношения между мерами сложности», Журнал ACM , 26 (2): 361–381, doi : 10.1145/322123.322138 , MR 0528038 , S2CID 2432526
- ^ Jump up to: а б с Чунг, Кай-Мин; Пасс, Рафаэль (2013), «Простой ORAM» , Архив криптологии ePrint IACR
- ^ Jump up to: а б Гольдрейх, Одед (1987), «К теории защиты программного обеспечения и моделированию с помощью не обращающих внимания RAM», в Ахо, Альфред В. (ред.), Труды 19-го ежегодного симпозиума ACM по теории вычислений (STOC '87) , Ассоциация по вычислительной технике , стр. 182–194, doi : 10.1145/28395.28416 , ISBN. 0-89791-221-7 , S2CID 17767715
- ^ Jump up to: а б Островский, Рафаил (1990), «Эффективные вычисления в забывчивой оперативной памяти», Труды 22-го ежегодного симпозиума ACM по теории вычислений (STOC '90) , Ассоциация вычислительной техники , стр. 514–523, doi : 10.1145/100216.100289 , ISBN 0-89791-361-2 , S2CID 11987830
- ^ Ашаров, Гилад; Комаргодски, Илан; Лин, Вэй-Кай; Наяк, Картик; Пезерико, Енох; Ши, Элейн (2023), «OptORAMa: Оптимальная забывчивая оперативная память», Журнал ACM , том. 70, Ассоциация вычислительной техники , стр. 4:1–4:70, doi : 10.1145/3566049.
- ^ Ашаров, Гилад; Комаргодски, Илан; Лин, Вэй-Кай; Ши, Элейн (2023), «Забывчивость {RAM} с логарифмическими издержками в наихудшем случае», Журнал криптологии , Springer , стр. 7, номер домена : 10.1007/s00145-023-09447-5
- ^ Кушилевиц, Эяль; Лу, Стив; Островский, Рафаил (2012), «О (не)безопасности забывчивой оперативной памяти на основе хеширования и новой схеме балансировки», Труды двадцать третьего ежегодного симпозиума ACM-SIAM по дискретным алгоритмам , Ассоциация вычислительной техники , стр. 143 –156, номер домена : 10.1137/1.9781611973099.13 , ISBN 978-1-61197-210-8 , МР 3205204
- ^ Островский, Рафаил ; Шуп, Виктор (1997), «Хранение частной информации (расширенное резюме)», Лейтон, Ф. Томсон ; Шор, Питер В. (ред.), Труды двадцать девятого ежегодного симпозиума ACM по теории вычислений (STOC '97) , Ассоциация вычислительной техники , стр. 294–303, doi : 10.1145/258533.258606 , ISBN 0-89791-888-6 , S2CID 14488066
- ^ Jump up to: а б Ши, Элейн ; Чан, Т.-Х. Юбер; Стефанов, Эмиль; Ли, Минфэй (2011), «Не обращающий внимания баран с стоимость наихудшего случая», Ли, Дон Хун; Ван, Сяоюн (ред.), « Достижения в криптологии» – ASIACRYPT 2011 – 17-я Международная конференция по теории и применению криптологии и информационной безопасности, Сеул, Южная Корея, 4–8 декабря , 2011, Труды , Конспекты лекций по информатике, том 7073, Springer, стр. 197–214, doi : 10.1007/978-3-642-25385-0_11 , hdl : 10722/139993 , ISBN 978-3-642-25384-3
- ^ Гудрич, Майкл Т .; Митценмахер, Михаэль ; Охрименко, Ольга; Тамассия, Роберто (2011), «Незабываемая симуляция ОЗУ с эффективными накладными расходами на доступ в наихудшем случае», Качин, Кристиан; Ристенпарт, Томас (ред.), Труды 3-го семинара по безопасности облачных вычислений ACM, CCSW 2011, Чикаго, Иллинойс, США, 21 октября 2011 г. , Ассоциация вычислительной техники , стр. 95–100, arXiv : 1107.5093 , doi : 10.1145 /2046660.2046680 , ISBN 978-1-4503-1004-8 , S2CID 72429
- ^ Чунг, Кай-Мин; Лю, Чжэньмин; Пасс, Рафаэль (2014), «Статистически безопасная ORAM с накладные расходы», в Саркаре, Палаше; Ивата, Тецу (ред.), Достижения в криптологии - ASIACRYPT 2014 - 20-я Международная конференция по теории и применению криптологии и информационной безопасности, Гаошунг, Тайвань, Китайская республика, 7-11 декабря 2014 г., Материалы, часть II , Конспекты лекций по информатике, том 8874, Springer, стр. 62–81, arXiv : 1307.3699 , doi : 10.1007/978-3-662-45608-8_4 , ISBN. 978-3-662-45607-1
- ^ Jump up to: а б Айтай, Миклош (2010), «Забывчивые ОЗУ без криптографических предположений [расширенный аннотация]», Труды 42-го симпозиума ACM по теории вычислений (STOC 2010) , Ассоциация вычислительной техники , стр. 181–190, doi : 10.1145/1806689.1806716 , МР 2743267 , S2CID 260228
- ^ Jump up to: а б с Дамгорд, Иван ; Мельдгаард, Сигурд; Нильсен, Джеспер Буус (2011), «Идеально безопасное забывчивое ОЗУ без случайных оракулов», в Ишаи, Ювале (редактор), Теория криптографии - 8-я конференция по теории криптографии, TCC 2011, Провиденс, Род-Айленд, США, 28-30 марта , 2011, Труды , Конспект лекций по информатике, вып. 6597, Springer, стр. 144–163, doi : 10.1007/978-3-642-19571-6_10 , ISBN. 978-3-642-19570-9
- ^ Ларсен, Каспер Грин; Нильсен, Йеспер Буус (2018), «Да, существует не обращающая внимания нижняя граница {RAM}!», Достижения в криптологии - CRYPTO , Springer, стр. 523–542, doi : 10.1007/978-3-319-96881-0_18
- ^ Бойл, Элетт ; Наор, Мони (2016), «Существует ли невнимательная нижняя граница оперативной памяти?», Материалы конференции ACM 2016 года по инновациям в теоретической информатике (ITCS '16) , Ассоциация вычислительной техники , стр. 357–368, doi : 10.1145 /2840728.2840761 , ISBN 978-1-4503-4057-1 , МР 3629839 , S2CID 9729386