Jump to content

Не обращая внимания на ОЗУ

Симулятор 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 , оставляя остальную часть программы прежней. Можно отметить, что эту конструкцию можно заставить работать даже с запросами к памяти, поступающими в режиме онлайн .

Компилятор 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 . Каждая тройка, хранящаяся в дереве, имеет слова в нем и, таким образом, есть слов на узел дерева. Поскольку общее количество узлов в дереве равно , общий объем памяти слова, что . Следовательно, затраты памяти на конструкцию равны .


  1. ^ Jump up to: а б с д и Гольдрейх, Одед ; Островский, Рафаил (1996), «Защита программного обеспечения и моделирование в не обращающей внимания оперативной памяти», Журнал ACM , 43 (3): 431–473, doi : 10.1145/233551.233553 , hdl : 1721.1/103684 , MR   1408562 , S2CID   7502114
  2. ^ Пиппенджер, Николас ; Фишер, Майкл Дж. (1979), «Отношения между мерами сложности», Журнал ACM , 26 (2): 361–381, doi : 10.1145/322123.322138 , MR   0528038 , S2CID   2432526
  3. ^ Jump up to: а б с Чунг, Кай-Мин; Пасс, Рафаэль (2013), «Простой ORAM» , Архив криптологии ePrint IACR
  4. ^ Jump up to: а б Гольдрейх, Одед (1987), «К теории защиты программного обеспечения и моделированию с помощью не обращающих внимания RAM», в Ахо, Альфред В. (ред.), Труды 19-го ежегодного симпозиума ACM по теории вычислений (STOC '87) , Ассоциация по вычислительной технике , стр. 182–194, doi : 10.1145/28395.28416 , ISBN.  0-89791-221-7 , S2CID   17767715
  5. ^ Jump up to: а б Островский, Рафаил (1990), «Эффективные вычисления в забывчивой оперативной памяти», Труды 22-го ежегодного симпозиума ACM по теории вычислений (STOC '90) , Ассоциация вычислительной техники , стр. 514–523, doi : 10.1145/100216.100289 , ISBN  0-89791-361-2 , S2CID   11987830
  6. ^ Ашаров, Гилад; Комаргодски, Илан; Лин, Вэй-Кай; Наяк, Картик; Пезерико, Енох; Ши, Элейн (2023), «OptORAMa: Оптимальная забывчивая оперативная память», Журнал ACM , том. 70, Ассоциация вычислительной техники , стр. 4:1–4:70, doi : 10.1145/3566049.
  7. ^ Ашаров, Гилад; Комаргодски, Илан; Лин, Вэй-Кай; Ши, Элейн (2023), «Забывчивость {RAM} с логарифмическими издержками в наихудшем случае», Журнал криптологии , Springer , стр. 7, номер домена : 10.1007/s00145-023-09447-5
  8. ^ Кушилевиц, Эяль; Лу, Стив; Островский, Рафаил (2012), «О (не)безопасности забывчивой оперативной памяти на основе хеширования и новой схеме балансировки», Труды двадцать третьего ежегодного симпозиума ACM-SIAM по дискретным алгоритмам , Ассоциация вычислительной техники , стр. 143 –156, номер домена : 10.1137/1.9781611973099.13 , ISBN  978-1-61197-210-8 , МР   3205204
  9. ^ Островский, Рафаил ; Шуп, Виктор (1997), «Хранение частной информации (расширенное резюме)», Лейтон, Ф. Томсон ; Шор, Питер В. (ред.), Труды двадцать девятого ежегодного симпозиума ACM по теории вычислений (STOC '97) , Ассоциация вычислительной техники , стр. 294–303, doi : 10.1145/258533.258606 , ISBN  0-89791-888-6 , S2CID   14488066
  10. ^ 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
  11. ^ Гудрич, Майкл Т .; Митценмахер, Михаэль ; Охрименко, Ольга; Тамассия, Роберто (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
  12. ^ Чунг, Кай-Мин; Лю, Чжэньмин; Пасс, Рафаэль (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
  13. ^ Jump up to: а б Айтай, Миклош (2010), «Забывчивые ОЗУ без криптографических предположений [расширенный аннотация]», Труды 42-го симпозиума ACM по теории вычислений (STOC 2010) , Ассоциация вычислительной техники , стр. 181–190, doi : 10.1145/1806689.1806716 , МР   2743267 , S2CID   260228
  14. ^ 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
  15. ^ Ларсен, Каспер Грин; Нильсен, Йеспер Буус (2018), «Да, существует не обращающая внимания нижняя граница {RAM}!», Достижения в криптологии - CRYPTO , Springer, стр. 523–542, doi : 10.1007/978-3-319-96881-0_18
  16. ^ Бойл, Элетт ; Наор, Мони (2016), «Существует ли невнимательная нижняя граница оперативной памяти?», Материалы конференции ACM 2016 года по инновациям в теоретической информатике (ITCS '16) , Ассоциация вычислительной техники , стр. 357–368, doi : 10.1145 /2840728.2840761 , ISBN  978-1-4503-4057-1 , МР   3629839 , S2CID   9729386

См. также

[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 7de84c3973e5183cd5f3ba43990acfbf__1717858740
URL1:https://arc.ask3.ru/arc/aa/7d/bf/7de84c3973e5183cd5f3ba43990acfbf.html
Заголовок, (Title) документа по адресу, URL1:
Oblivious RAM - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)