Доклады, выступления, видео и электронные публикации
Обеспечение безопасности клиента публичного облака
М.М. Грунтович
Закрытое акционерное общество «ОКБ САПР», Москва, Россия
В статье предлагается метод обеспечения конфиденциальности, целостности и надежности при безопасном хранении данных в публичном облаке. Предлагаемый метод использует шифрование, имитозащиту и разделение секрета. Необходимость такого сервиса мотивируется недоверием пользователей к публичным облачным хранилищам, в частности, ввиду недостаточной надежности связи с облаком.
Ключевые слова: облачное хранение, публичное облако, шифрование, имитозащита, надежность.
Введение
Пожалуй, наиболее значимая причина, тормозящая внедрение облачных вычислений – недоверие к безопасности информации, хранящейся или обрабатывающейся «в облаках». В частном облаке [1], где владелец информации и собственник ЦОД совпадают, все же есть понимание того, как можно пытаться обеспечить безопасность обрабатываемой там информации. Есть опыт, накопленный при решении задач безопасности виртуальных структур и корпоративных ЦОДов. В ситуации публичного облака задача гораздо более сложная. В этом случае задействовано большое количество относительно независимых промежуточных звеньев, провайдеров различных сервисов, обеспечивающих доступ клиента к хранилищам информации и обрабатывающим мощностям. Это приводит к сложным моделям нарушителей и усложняет решение задач обеспечения информационной безопасности ([2], [3]).
По большому счету, можно выделить две зоны рисков: сеть и ЦОД. В зоне рисков сети вопросы конфиденциальности и целостности передаваемой информации могут решаться традиционными методами: шифрование с имитозащитой посредством протоколов типа TLS. А вот при хранении информации и ее обработке в ЦОД задача обеспечения безопасности куда сложнее.
Что касается конфиденциальности и целостности при хранении, то рецепт относительно прост: поместить информацию в защищенный контейнер, где она сохраняется в зашифрованном виде с обеспечением целостности. Для обеспечения достоверности хранимой информации, например, для невозможности навязывания более ранней версии контейнера, необходимо формировать контрольную сумму не только на основе хранимой информации, но и некоторой служебной части, например, времени, номера версии и т. п.
Куда сложнее задача обеспечить безопасность информации в случае ее обработки в облаке. Максимум, на что можно в настоящее время рассчитывать, это договора с провайдерами услуг и их репутация [2]. Аудит ЦОДов, насколько можно судить по сообщениям в Сети, практически недостижим для конечного пользователя, да он и не дает полной гарантии того, что достаточно ценная информация не будет разглашена или изменена при ее обработке. Уже давно обсуждаются методы гомоморфного шифрования, которые должны бы позволить обеспечить на стороне клиента шифрование информации, коммутирующее с ее преобразованиями при обработке. Однако пока по этой тематике только пишутся статьи, и ничего реалистичного не видно. Есть варианты, коммутирующие с операцией сложения чисел, есть – с умножением, есть варианты вполне гомоморфного шифрования, которое сохраняется при сложении и вычитании (см., например, [5]). Но проблема в том, что эти методы шифрования имеют очень много ограничений, потому их пока нельзя считать действенными. Еще менее понятно, что делать с гомоморфным кодом аутентификации, т. е. с технологией, которая бы помогала обнаружить искажение результатов обработки информации в облаке. Есть некоторые предложения (см., например, [5]), но до полного решения задачи еще очень далеко.
Надежность хранения информации в облачных сервисах практически никогда не ставится под сомнение, поскольку это есть одна из «фишек» под которую заточены технологии виртуализации. Однако можно поставить вопрос по-другому, а именно, озаботиться не надежностью собственно хранилища в смысле случайного, неумышленного нарушения его работы, а доступностью информации, в смысле доступности связи с хранилищем и защитой от умышленного исчезновения информации или доступа к ней в хранилище. Кроме договора ничего предложить нельзя. Но кажется, все же можно: дублирование информации в нескольких облачных сервисах.
Далее будет предложена комплексная технология, которая позволит обеспечить конфиденциальность, целостность, достоверность и доступность хранения информации в облаке. При этом задействованы дублирование, разделение секрета, шифрование и коды аутентификации.
Технология обеспечения безопасного хранения информации в облачном хранилище
Итак, необходимо разместить некоторую информацию в облаке с обеспечением конфиденциальности, целостности и доступности. Можно поступить просто, при записи информации:
- сгенерировать и запомнить секретный ключ;
- зашифровать информацию с обеспечением целостности, добавив, например, отметку времени;
- выложить контейнер на несколько хранилищ.
При чтении, соответственно:
- вспомнить секретный ключ;
- выбрать хранилища, содержащие самую «свежие» версии контейнера;
- для нихпо очереди выполнить следующие действия впредь до достижения успеха:
- прочитать контейнер из хранилища;
- расшифровать контейнер, проверив целостность информации;
- остановиться, если целостность подтверждена.
Конфиденциальность и контроль целостности обеспечиваются контейнером. Количество хранилищ выбирается из расчета надежности.
Все хорошо, но система требует хранения секретного ключа. Чтобы избежать этого неудобства, в дополнение к выше описанному предлагается разделить ключ на доли с помощью системы разделения секрета.
Подготовительный этап (выбор параметров)
- Выбрать два набора облачных хранилищ S1,…,Sn и T1,…,Tm;
- выбрать технологию разделения секрета на n долей с порогом t = n-m;
- выбрать симметричные алгоритмы шифрования E/D и вычисления кода аутентификации MAC.
Выбор параметров n и t зависит от оценки рисков случайного или умышленного искажения информации в хранилищах {Si} и {Tj}, потери связи с ними, а также нарушения конфиденциальности. Наборы хранилищ не обязательно различные. Очевидно разумно, выбрать {Tj} {Si}. При этом {Tj} – хранилища с наибольшей скоростью канала.
Теперь сохранение информации состоит в следующем:
- генерируем сеансовый ключ K;
- разделяем K на доли и помещаем их в хранилища {Si};
- шифруем информацию на K и помещаем ее в хранилища {Tj}.
Алгоритм сохранения информации X
- Сгенерировать ключ шифрования и кода аутентификации K;
- разделить секрет K на n долей K1,…,Kn;
- для i = 1,…,n выполнить шаги 4-6:
- Ci = MACK(TVP||Si||Ki);
- Ki* = (TVP||Si||Ki||Ci);
- Ki* Si;
- X' = EK(X);
- C = MACK(TVP||X');
- X* =(TVP||X'||C);
- уничтожить ключ K;
- для j = 1,…,m выполнить: X* Tj.
Символом обозначается передача информации по открытому каналу связи, || – конкатенация битовых строк.
Под TVP понимается Time Variant Parameter, выбранный «по вкусу»: отметка времени, счетчик или нонс. Он может сохраняться владельцем информации в качестве ее идентификатора или восстанавливаться из сохраненных долей как наиболее «свежий».
Ключ K здесь обозначает как ключ шифрования, так и ключ MAC. Это отождествление чисто методическое: дабы не усложнять изложение. На практике при шифровании и вычислении MAC конечно лучше использовать различные ключи, например, производные от K.
При извлечении информации из хранилища выполняем обратную последовательность действий:
- извлекаем в хранилищ {Si} доли секрета;
- восстанавливаем ключ K;
- извлекаем в хранилищ {Tj} зашифрованную информацию;
- расшифровываем ее на ключе K.
Алгоритм извлечения информации X
- для i = 1,…,n выполнить: Si Ki*;
- выбрать одно из подмножеств U = {U1,…,Ut} {S1,…,Sn} с наиболее «свежим» значением TVP;
- если U = , неудачное завершение;
- для i = 1,…,t выполнить: Ki* = (TVP||Ui||Ki||Ci);
- восстановить K на основании долей {Ki};
- для i = 1,…,t выполнить шаг 7:
- если Ci ≠ MACK(TVP||Si||Ki), то повторить выбор на шаге 2;
- для j = 1,…,m выполнить шаги 9-12:
- Tj Xj*;
- Xj* =(TVP||Xj'||Cj);
- Xj = DK(Xj');
- если Cj = MACK(TVP||Xj'), перейти на шаг 14;
- неудачное завершение;
- X = Xj;
- уничтожить ключ K;
- успешно завершить алгоритм.
Обсуждение производительности
Разделение секрета можно было бы применить непосредственно к информации X, не прибегая к ее шифрованию на сеансовом ключе K. Однако алгоритмы разделения и восстановления секрета работают достаточно медленно, при необходимости сохранения больших объемов информации это будет заметно. А использование симметричного шифрования вполне комфортно по скорости при допустимом замедлении разделения/восстановления ключа.
Необходимость передачи вместо X сразу n долей Xi*, каждая из которых длиннее X, приводит к замедлению канала связи, по крайней мере, в n раз. Еще одно замедление возможно при переборе вариантов подмножества U. Ускориться можно, организовав на доверенной платформе специализированный сервис S. В этом случае при сохранении информации клиент передает ее на S по TLS-каналу, а сервис S сам выполняет описанный выше алгоритм записи информации в облаке. И наоборот, получив от клиента запрос на чтение информации, S выполняет алгоритм чтения из облака, а далее передает информацию по TLS каналу клиенту. В этом случае конечные пользователи работают по каналу с обычной скоростью, а замедление канала влияет только на сервис S, который должен быть оборудован соответствующим образом. Правда, опять появляются ключи для организации TLS канала.
Безопасность и надежность
Если опустить процедуру разделения ключа, мы увидим решение шифрования с обеспечением целостности, которое упоминалось выше. Разделение ключа предназначено для обеспечения надежности и целостности. Кроме того, оно позволяет избежать необходимости локального хранения ключа шифрования.
Использование TVP и кода аутентификации позволяет обеспечить контроль целостности и достоверности информации.
Разделение секрета и достаточно большое значение m позволяет избежать чрезмерной зависимости от пропадания связи и искажения информации при хранении. Это значение следует выбрать так, чтобы минимизировать вероятность таких рисков.
Разделение секрета вместе с шифрованием позволяет защититься от разглашения информации в предположении о невозможности сговора или одновременного разглашения более чем t долей. Его следует выбрать достаточно большим, чтобы минимизировать вероятность означенного риска.
Описанная выше технология позволяет при правильном выборе параметров обеспечить безопасное хранение информации в публичном облаке без необходимости сохранения секретного ключа у клиента.
Список литературы
- Mell P., Grance T. The NIST Definition of Cloud Computing // NIST Special Publication 800-145, September 2011. http://csrc.nist.gov/publications/nistpubs/800-145/SP800-145.pdf.
- Jansen W., Grance T. Guidelines on Security and Privacy in Public Cloud Computing // NIST Special Publication 800-144, December 2011. http://csrc.nist.gov/publications/nistpubs/800-144/SP800-144.pdf.
- Badger L., Grance T., Patt-Corner R., Voas J. Cloud Computing Synopsis and Recommendations // NIST Special Publication 800-146, May 2012. http://csrc.nist.gov/publications/nistpubs/800-146/sp800-146.pdf.
- Gentry C. Fully homomorphic encryption using ideal lattices // The 41st ACM Symposium on Theory of Computing (STOC). P. 169–178. ACM, 2009.
- Fiore D., Gennaro R., Pastro V. Verifiable Computation over Encrypted Data in the Presence of Verification Queries // IACR Cryptology ePrint Archive, 2014:202, 8 June 2014. http://eprint.iacr.org/2014/202.pdf
Автор: Грунтович М. М.
Дата публикации: 01.01.2015
Библиографическая ссылка: Грунтович М. М. Обеспечение безопасности клиента публичного облака // Комплексная защита информации. Материалы XX научно-практической конференции. Минск, 19–21 мая 2015 г. Минск: РИВШ, 2015. С. 40-44.
Метки документа:
криптография
облака и облачные технологии
теория/технологии и классификации
Обратная связь
Отправьте нам сообщение или закажите обратный звонок.