Рейтинг:1

Как определяются внутренние функции для FF3?

флаг br

Я видел, как FF1/FF3 говорили, что они сохраняют тот же формат, что и открытый текст. Например, если я зашифрую десятичное число 1234, то его зашифрованное значение также будет четырехзначным десятичным числом. Оба они используют сеть Feistel. Как циклические функции внутренне спроектированы в каждом раунде структуры для сохранения формата данных? Я хотел узнать, как дизайн внутренних функций помогает сохранить формат.

fgrieu avatar
флаг ng
Как насчет чтения разделов 4.1 и 4.5 [спецификации FF3-1] (https://doi.org/10.6028/NIST.SP.800-38Gr1-draft)?
Рейтинг:2
флаг in

Из 4.1 Представление строк символов проект спецификации NIST SP 800 38G Rev 1 что упоминалось в комментариях:

Входные и выходные данные для функций шифрования 286 и дешифрования FF1 и FF3-1 должны быть конечными последовательностями цифр, т.е. строками цифр. Если данные, подлежащие шифрованию, отформатированы в алфавите, который еще не является набором базовых цифр системы счисления, то каждый символ должен быть представлен отдельной цифрой, чтобы применить FF1 или FF3-1.

...

Выбор и реализация взаимно-однозначного соответствия между данным алфавитом и набором базовых цифр счисления, который представляет алфавит, выходит за рамки этой публикации.

Это еще не так ясно, но в основном вам нужно канонически сопоставить ваши входные данные с диапазоном [0, N) и обратно во время шифрования и расшифровка. Это сопоставление выходит за рамки, поскольку оно, конечно, специфично для спецификации ввода данных.


Если ваши данные состоят из нескольких диапазонов, все становится немного сложнее. По сути, вы сначала упорядочиваете данные (обычно слева направо), затем определяете базу для каждого отдельного набора входных диапазонов. Затем значение в диапазоне создается путем умножения входного диапазона на нижние конечные базы.

Сначала я покажу вам, как эти $\текст{кодировать}$ и $\текст{декодировать}$ функции будут работать:

Предположим, что входные диапазоны предназначены для цифры, исключая ноль, за которой следует символ в верхнем регистре ABC, т.е. [1-9][А-Я]. Основание цифр, исключая ноль, равно $9$, основа алфавита конечно $26$.

Теперь попробуем вычислить значение для 7Z. Если вы будете следовать этим правилам, то значение, которое вы получите, равно 6$ \cdot 26 + 25 = 181$, куда $6$ индекс 7 в $[1, 9]$, $26$ это основа (количество символов) в ABC и $25$ индекс Z в этой азбуке.

Чтобы отобразить его обратно, вы сначала выполняете $181\bmod 26$, что должно дать вам $25$ снова, что дает вам Z после деиндексации. Затем вы делите: $\big\lceil 181 / 26 \big\rceil$, и вернуться $6$ который является индексом 7 В диапазоне $[1, 9]$.

Теперь нам нужно включить шифрование и дешифрование:

Теперь вы можете выполнить FF1 или FF3 для результата, $181$ и получить другое значение. Вы можете просто использовать правила, чтобы закодировать это в требуемое представление.

Так скажи, что у тебя есть $\текст{кодировать}(\текст{"7Z"}) = 181$ и $\text{enc}_k(181) = 26$, то это даст вам $\текст{декодировать}(26) = "1А"$ которые вы можете хранить. Затем вы переворачиваете так: $\text{decode}(\text{dec}_k(\text{encode}(\text{"1A"}))) = "7Z"$. Параметры кодирования и декодирования специфичны для [1-9][А-Я].

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

fgrieu avatar
флаг ng
«менее микросекунды» для кодирования до и после самого шифрования правильно для FF3-1 (и даже достаточно, если это на цифру), поскольку пространство блока FF3-1 ограничено 192-битным. Для FF1 ограничение составляет 4 ТБ (512 МБ), а для большого блока время на одну цифру станет намного больше, поскольку оно растет с количеством цифр и пропорционально этому при использовании алгоритмов в спецификации и ответе.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.