Шифрование с сохранением формата - Format-preserving encryption

В криптография, шифрование с сохранением формата (FPE), относится к шифрованию таким образом, что вывод ( зашифрованный текст ) имеет тот же формат, что и ввод ( простой текст ). Значение слова «формат» варьируется. Обычно обсуждаются только конечные области, например:

  • Чтобы зашифровать 16-значный номер кредитной карты, чтобы зашифрованный текст представлял собой еще одно 16-значное число.
  • Чтобы зашифровать английское слово так, чтобы зашифрованный текст был другим английским словом.
  • Чтобы зашифровать п-битовое число, чтобы зашифрованный текст был другим п-битовое число (это определение п-битовый блочный шифр).

Для таких конечных областей и для целей обсуждения ниже шифр эквивалентен перестановке N целые числа {0, ... , N−1} где N это размер домена.

Мотивация

Ограниченная длина или формат поля

Одна из причин использования FPE связана с проблемами, связанными с интеграцией шифрования в существующие приложения с четко определенными моделями данных. Типичным примером может быть Номер кредитной карты, такие как 1234567812345670 (Длина 16 байт, только цифры).

Добавление шифрования в такие приложения может быть сложной задачей, если модели данных должны быть изменены, поскольку обычно это связано с изменением ограничений на длину полей или типов данных. Например, вывод типичного блочный шифр превратит номер кредитной карты в шестнадцатеричный (например.0x96a45cbcf9c2a9425cde9e274948cb67, 34 байта, шестнадцатеричные цифры) или Base64 значение (например, lqRcvPnCqUJc3p4nSUjLZw ==, 24 байта, буквенно-цифровые и специальные символы), что нарушит работу любых существующих приложений, ожидающих, что номер кредитной карты будет 16-значным числом.

Помимо простых проблем с форматированием, при использовании AES-128-CBC этот номер кредитной карты может быть зашифрован до шестнадцатеричного значения. 0xde015724b081ea7003de4593d792fd8b695b39e095c98f3a220ff43522a2df02. Помимо проблем, вызванных созданием недопустимых символов и увеличением размера данных, данные, зашифрованные с использованием режима CBC алгоритма шифрования, также изменяют свое значение при повторном дешифровании и шифровании. Это происходит потому, что случайное начальное значение который используется для инициализации алгоритма шифрования и включается как часть зашифрованного значения, отличается для каждой операции шифрования. Из-за этого невозможно использовать данные, зашифрованные в режиме CBC, в качестве уникальный ключ для идентификации строки в базе данных.

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

Сравнение с действительно случайными перестановками

Хотя действительно случайная перестановка является идеальным шифром FPE, для больших доменов невозможно предварительно сгенерировать и запомнить действительно случайную перестановку. Таким образом, проблема FPE заключается в генерации псевдослучайной перестановки из секретного ключа таким образом, чтобы время вычисления одного значения было небольшим (в идеале постоянным, но, что наиболее важно, меньше, чем НА)).

Сравнение с блочными шифрами

An п-битовый блочный шифр технически является FPE на съемочной площадке {0, ..., 2п-1}. Если FPE требуется на одном из этих наборов стандартного размера (например, п = 64 для DES и п = 128 для AES) можно использовать блочный шифр нужного размера.

Однако при типичном использовании блочный шифр используется в режим работы что позволяет ему шифровать произвольно длинные сообщения, и с вектор инициализации как обсуждалось выше. В этом режиме блочный шифр не является FPE.

Определение безопасности

В криптографической литературе (см. Большинство ссылок ниже) мерой «хорошего» FPE является то, может ли злоумышленник отличить FPE от действительно случайной перестановки. Постулируются различные типы злоумышленников, в зависимости от того, имеют ли они доступ к оракулам или известным парам зашифрованный / открытый текст.

Алгоритмы

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

Конструкции FPE Black и Rogaway

Внедрение FPE с безопасностью, вероятно, связанной с безопасностью базового блочного шифра, было впервые предпринято в статье криптографов. Джон Блэк и Филип Рогавей,[1] в котором описаны три способа сделать это. Они доказали, что каждый из этих методов так же безопасен, как и блочный шифр, который используется для его построения. Это означает, что если алгоритм AES используется для создания алгоритма FPE, то полученный алгоритм FPE будет таким же безопасным, как AES, потому что злоумышленник, способный победить алгоритм FPE, также может победить алгоритм AES. Следовательно, если AES безопасен, то построенные на его основе алгоритмы FPE также безопасны. Во всем нижеследующем E обозначает операцию шифрования AES, которая используется для построения алгоритма FPE, и F обозначает операцию шифрования FPE.

FPE из префиксного шифра

Один простой способ создать алгоритм FPE на {0, ..., N-1} - присвоить каждому целому числу псевдослучайный вес, а затем выполнить сортировку по весу. Веса определяются путем применения существующего блочного шифра к каждому целому числу. Блэк и Рогавэй назвали эту технику «префиксным шифром» и показали, что она, вероятно, не хуже используемого блочного шифра.

Таким образом, чтобы создать FPE в домене {0,1,2,3}, учитывая ключ K применить AES (K) к каждому целому числу, давая, например,

вес(0) = 0x56c644080098fc5570f2b329323dbf62вес(1) = 0x08ee98c0d05e3dad3eb3d6236f23e7b7вес(2) = 0x47d2e1bf72264fa01fb274465e56ba20вес(3) = 0x077de40941c93774857961a8a772650d

Сортировка [0,1,2,3] по весу дает [3,1,2,0], поэтому шифр

F(0) = 3F(1) = 1F(2) = 2F(3) = 0

Этот метод полезен только для небольших значений N. Для больших значений размер таблицы поиска и необходимое количество шифрований для инициализации таблицы становится слишком большим, чтобы быть практичным.

FPE от велосипедной ходьбы

Если есть набор M допустимых значений в области псевдослучайной перестановки п (Например п может быть блочным шифром, таким как AES), алгоритм FPE может быть создан из блочного шифра путем многократного применения блочного шифра до тех пор, пока результат не станет одним из допустимых значений (в пределах M).

CycleWalkingFPE (x) { если п(x) является элементом M тогда        вернуть п(Икс) еще        вернуть CycleWalkingFPE (п(Икс))}

Рекурсия гарантированно завершится. (Потому что п взаимно однозначно и область конечна, повторное применение п образует цикл, поэтому начиная с точки в M цикл в конечном итоге завершится M.)

Это имеет то преимущество, что элементы M не обязательно отображаться в последовательную последовательность {0, ...,N-1} целых чисел. У него есть недостаток, когда M намного меньше, чем пдомена, что для каждой операции может потребоваться слишком много итераций. Если п блочный шифр фиксированного размера, такой как AES, это серьезное ограничение на размер M для которых этот метод эффективен.

Например, приложение может захотеть зашифровать 100-битные значения с помощью AES таким образом, чтобы создать другое 100-битное значение. С помощью этого метода шифрование AES-128-ECB может применяться до тех пор, пока оно не достигнет значения, при котором все его 28 самых высоких битов установлены на 0, что займет в среднем 228 должны произойти итерации.

FPE из сети Feistel

Также возможно создать алгоритм FPE, используя Сеть Фейстеля. Сеть Фейстеля нуждается в источнике псевдослучайных значений для подключей для каждого раунда, и выходные данные алгоритма AES могут использоваться в качестве этих псевдослучайных значений. Когда это будет сделано, получившаяся конструкция Фейстеля будет хороша, если будет использовано достаточно патронов.[2]

Одним из способов реализации алгоритма FPE с использованием AES и сети Фейстеля является использование такого количества битов вывода AES, которое необходимо для равной длины левой или правой половины сети Фейстеля. Если, например, в качестве подключа требуется 24-битное значение, для этого значения можно использовать 24 младших бита вывода AES.

Это может не привести к тому, что выходные данные сети Фейстеля сохранят формат входных данных, но можно повторить итерацию сети Фейстеля таким же образом, что и методика велосипедной ходьбы, чтобы гарантировать, что формат может быть сохранен. Поскольку можно настроить размер входов в сеть Фейстеля, можно сделать очень вероятным, что эта итерация завершится в среднем очень быстро. В случае номеров кредитных карт, например, 1016 возможны 16-значные номера кредитных карт, а поскольку 1016 = 253.1использование 54-битной сети Фейстеля вместе с ходьбой на велосипеде создаст алгоритм FPE, который в среднем зашифрует довольно быстро.

Шаффл Торпа

Перемешивание Торпа похоже на идеализированное перемешивание карт или, что эквивалентно, максимально несбалансированный шифр Фейстеля, где одна сторона представляет собой один бит. Несбалансированные шифры Фейстеля легче доказать, чем сбалансированные.[3]

Режим VIL

Для размеров домена, равного степени двойки, и существующего блочного шифра с меньшим размером блока, новый шифр может быть создан с использованием режима VIL, как описано Bellare, Rogaway.[4]

Поспешный шифр пудинга

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

Режим FFSEM / FFX AES

Режим FFSEM AES (спецификация[5]), который был принят к рассмотрению NIST, использует описанную выше структуру сети Фейстеля Блэка и Рогавея, с AES для функции раунда, с одной небольшой модификацией: используется единственный ключ, который слегка настраивается для каждого раунда.

С февраля 2010 года FFSEM был заменен режимом FFX, написанным Михир Белларе, Филип Рогавей и Теренс Спис. (Технические характеристики,[6][7] Разработка режимов блочного шифрования NIST, 2010).

FPE для шифрования JPEG 2000

В JPEG 2000 По стандарту коды маркеров (в диапазоне от 0xFF90 до 0xFFFF) не должны появляться в открытом тексте и зашифрованном тексте. Простая техника modular-0xFF90 не может быть применена для решения проблемы шифрования JPEG 2000. Например, слова зашифрованного текста 0x23FF и 0x9832 действительны, но их комбинация 0x23FF9832 становится недействительной, поскольку вводит код маркера 0xFF98. Точно так же метод простого обхода велосипеда не может быть применен для решения проблемы шифрования JPEG2000, поскольку два действительных блока зашифрованного текста могут дать неверный зашифрованный текст при их объединении. Например, если первый блок зашифрованного текста заканчивается байтами «... 30FF», а второй блок зашифрованного текста начинается байтами «9832 ...», тогда в зашифрованном тексте появится код маркера «0xFF98».

В документе «Эффективные и безопасные схемы шифрования для JPEG2000» описаны два механизма шифрования JPEG 2000 с сохранением формата.[8] Авторы: Хунцзюнь Ву и Ди Ма. Чтобы выполнить шифрование JPEG 2000 с сохранением формата, метод заключается в исключении байта «0xFF» при шифровании и дешифровании. Затем механизм шифрования JPEG 2000 выполняет сложение по модулю n с потоковым шифром; другой механизм шифрования JPEG 2000 выполняет технику обхода велосипеда с блочным шифром.

Другие конструкции FPE

Некоторые конструкции FPE основаны на добавлении выходных данных стандартного шифра по модулю n к данным, подлежащим шифрованию, с различными методами устранения смещения результата. Сложение по модулю n, используемое во многих конструкциях, является очевидным решением проблемы FPE (таким образом, оно используется в ряде случаев), с основными отличиями в используемых механизмах смещения.

Раздел 8 FIPS 74, Публикация Федеральных стандартов обработки информации 1981 г. Руководство по внедрению и использованию стандарта шифрования данных NBS,[9] описывает способ использования алгоритма шифрования DES таким образом, чтобы сохранить формат данных посредством сложения по модулю n с последующей операцией несмещения. Этот стандарт был отозван 19 мая 2005 г., поэтому метод следует считать устаревшим с точки зрения того, что он является официальным стандартом.

Еще одним ранним механизмом шифрования с сохранением формата был Питер Гутманн "Шифрование данных с ограниченным диапазоном значений"[10] который снова выполняет сложение по модулю n для любого шифра с некоторыми корректировками, чтобы сделать результат единообразным, при этом результирующее шифрование будет таким же надежным, как и основной алгоритм шифрования, на котором оно основано.

Статья «Использование шифрования с сохранением типа данных для повышения безопасности хранилища данных».[11] Майкла Брайтвелла и Гарри Смита описывает способ использования DES алгоритм шифрования таким образом, чтобы сохранить формат открытого текста. Этот метод, по-видимому, не применяет шаг несмещения, как другие упомянутые здесь методы по модулю n.

Статья "Шифрование с сохранением формата".[12] от Михир Белларе и Томас Ристенпарт описывает использование «почти сбалансированных» сетей Фейстеля для создания безопасных алгоритмов FPE.

Статья «Управление форматом шифрования с использованием шифрования с сохранением типа данных».[13] Ульф Маттссон описывает другие способы создания алгоритмов FPE.

Примером алгоритма FPE является FNR (Гибкие Наор и Рейнгольд).[14]

Принятие алгоритмов FPE органами стандартизации

Специальная публикация NIST 800-38G, «Рекомендации по режимам работы блочного шифрования: методы шифрования с сохранением формата»[15] определяет два метода: FF1 и FF3. Подробности о предложениях, представленных для каждого, можно найти на сайте разработки режимов блочного шифрования NIST,[16] включая информацию о патентах и ​​тестовых векторах. Примеры значений доступны как для FF1, так и для FF3.[17]

  • FF1 - это FFX [Radix] «Режим шифрования на основе Фейстеля с сохранением формата», который также входит в стандартные процессы ANSI X9 как X9.119 и X9.124. Его представили в NIST Михир Белларе из Калифорнийского университета в Сан-Диего, Филипп Рогавей из Калифорнийского университета в Дэвисе и Теренс Спайс из Voltage Security Inc. Поставляются тестовые векторы, и некоторые из них запатентованы. (ПРОЕКТ СП 800-38Г Ред. 1) [18] требует, чтобы минимальный размер домена для зашифрованных данных составлял 1 миллион (ранее 100).
  • FF3 - это БПС, названный в честь авторов. Его представили в NIST Эрик Бриер, Томас Пейрен и Жак Стерн из Ingenico, Франция. Авторы заявили NIST, что их алгоритм не запатентован.[19] В Напряжение HPE Компания, хотя и претендует на владение патентами также на режим BPS.[20][21] 12 апреля 2017 года NIST пришел к выводу, что FF3 «больше не подходит в качестве метода FPE общего назначения», поскольку исследователи обнаружили уязвимость.[22]
  • FF3-1 (ПРОЕКТ СП 800-38Г Ред. 1) [18] заменяет FF3 и требует, чтобы минимальный размер домена для зашифрованных данных составлял 1 миллион (ранее 100).

Другой режим был включен в черновик руководства NIST, но был удален перед окончательной публикацией.

  • FF2 - это схема VAES3 для FFX: приложение к «Режиму работы FFX для сохранения шифрования»: набор параметров для строк шифрования произвольной системы счисления с операцией подключей для увеличения срока службы ключа шифрования. Он был представлен в NIST Иоахимом Вэнсом из VeriFone Systems Inc. Тестовые векторы не поставляются отдельно от FF1, и его части запатентованы. Авторы представили модифицированный алгоритм как DFF[23] который активно рассматривается NIST.

Корея также одобрила стандарт FPE, FEA-1 и FEA-2.

Реализации

Реализации FF1 и FF3 с открытым исходным кодом общедоступны вЯзык C,Язык Go,ЯваPython

использованная литература

  1. ^ Джон Блэк и Филип Рогавей, Шифры с произвольными доменами, Proceedings RSA-CT, 2002, стр. 114–130. http://citeseer.ist.psu.edu/old/black00ciphers.html (http://www.cs.ucdavis.edu/~rogaway/papers/subset.pdf )
  2. ^ Жак Патарен, Луби-Ракофф: 7 раундов хватит на двоихп (1-эпсилон) Безопасность, Труды CRYPTO 2003, Конспект лекций по информатике, том 2729, октябрь 2003 г., стр. 513–529. https://www.iacr.org/archive/crypto2003/27290510/27290510.pdf; также Жак Патрин: Безопасность случайных схем Фейстеля с 5 или более раундами. https://www.iacr.org/archive/crypto2004/31520105/Version%20courte%20Format%20Springer.pdf
  3. ^ Моррис, Бен; Рогавей, Филипп; Стегерс, Тилль (2009), «Как зашифровать сообщения в небольшом домене» (PDF), КРИПТО
  4. ^ Белларе, Михир; Rogaway, Филипп (1999), О построении шифров с переменной длиной ввода (PDF)
  5. ^ Теренс Спайс, Фейстел, режим шифрования с конечным набором параметров http://csrc.nist.gov/groups/ST/toolkit/BCM/documents/proposedmodes/ffsem/ffsem-spec.pdf
  6. ^ Михир Белларе, Филипп Рогавей, Теренс Спайс: Режим работы FFX для шифрования с сохранением формата (PDF), 2010
  7. ^ Михир Белларе, Филипп Рогавей, Теренс Спайс: Дополнение к «Режиму работы FFX для шифрования с сохранением формата» (PDF), 2010
  8. ^ Хунцзюнь Ву, Ди Ма, «Эффективные и безопасные схемы шифрования для JPEG2000», Международная конференция по акустике, речи и обработке сигналов (ICASSP 2004). MSP-L 1.6, Vol. V, стр. 869–872. http://www3.ntu.edu.sg/home/wuhj/research/publications/2004_ICASSP_JPEG2000.pdf
  9. ^ FIPS 74, Публикация федеральных стандартов обработки информации 1981 г., Руководство по внедрению и использованию стандарта шифрования данных NBS http://www.itl.nist.gov/fipspubs/fip74.htm В архиве 2014-01-03 в Wayback Machine
  10. ^ Питер Гутманн, «Шифрование данных с ограниченным диапазоном значений», 23 января 1997 г., https://groups.google.com/group/sci.crypt/browse_thread/thread/6caf26496782e359/e576d7196b6cdb48
  11. ^ Майкл Брайтвелл и Гарри Смит, "Использование шифрования с сохранением типов данных для повышения безопасности хранилищ данных", Материалы конференции по национальной безопасности информационных систем 1997 г. https://portfolio.du.edu/portfolio/getportfoliofile?uid=135556 В архиве 2011-07-19 на Wayback Machine
  12. ^ Михир Белларе и Томас Ристенпарт, Шифрование с сохранением формата http://eprint.iacr.org/2009/251
  13. ^ Ульф Маттссон, Управление форматом шифрования с использованием шифрования с сохранением типа данных http://eprint.iacr.org/2009/257
  14. ^ Сашанк Дара, Скотт Флюрер. «Гибкие Наор и Рейнгольд». Cisco Systems Inc.
  15. ^ Дворкин, Моррис (2016), Специальная публикация NIST 800-38G, Рекомендации по режимам работы блочного шифрования: методы шифрования с сохранением формата, Дои:10.6028 / NIST.SP.800-38G
  16. ^ Разработка режимов блочного шифрования NIST
  17. ^ Примеры алгоритмов NIST Cryptographic Toolkit
  18. ^ а б «Рекомендация SP 800-38G Rev. 1 (ПРОЕКТ) для режимов работы блочного шифрования: методы шифрования с сохранением формата». NIST. Февраль 2019. Получено 1 апреля 2019.
  19. ^ Заявление авторов о патенте BPS (PDF)
  20. ^ Заявки на патент HPE Voltage
  21. ^ Пересмотренное гарантийное письмо в отношении основных патентных требований Режим работы FFX для шифрования с сохранением формата (PDF)
  22. ^ «Недавний криптоанализ FF3». NIST. 12 апреля 2017 г.. Получено 5 мая 2020.
  23. ^ FF2 Addendum DFF (PDF)