что именно означает "счетчик"?
Счетчик согласно определению в Википедии;
В цифровой логике и вычислениях счетчик — это устройство, которое хранит (а иногда и отображает) количество раз, когда произошло определенное событие или процесс.
В контексте CTR; он используется для создания различных входных данных для шифрования, затем выходные данные сравниваются с открытым текстом для получения зашифрованного текста. Обычно это выполняется путем увеличения, хотя можно использовать и LFSR.
Это то же самое, что и nonce
Нет, это не то же самое, что nonce (число, используемое один раз)
Режим CTR объединяет одноразовый номер и счетчик в качестве входных данных для шифра. Вход складывается из двух частей;
- одноразовая часть; обычно генерируется случайным образом для сеанса шифрования или с использованием счетчик/LFSR.
- ответная часть; изначально установлен ноль, затем увеличивается для каждого блока шифрования
С их помощью мы можем иметь рандомизированное шифрование, и каждый блок может производить разные выходные данные с одним и тем же ключом, если мы используем PRP, такой как AES (часть PRF более сложна, и фактически CTR определяется для PRF, поскольку нет необходимости в обратном)
«Обычно счетчик инициализируется некоторым значением, а затем увеличивается на 1 для каждого последующего блока (по модулю $2^б$, куда $b$ размер блока)». Что именно означает это утверждение?
Учтите, что у нас есть 64-битный одноразовый номер и 64-битный счетчик;
одноразовый счетчик
9237AF71A232BC82E4 0000000000000000
Первый блок использует 9237AF71A232BC82E400000000000000000
в качестве входных данных, то следующий блок использует в качестве
одноразовый счетчик
9237AF71A232BC82E4 0000000000000001
9237AF71A232BC82E4 0000000000000002
9237AF71A232BC82E4 0000000000000003
9237AF71A232BC82E4 0000000000000004
... ...
9237AF71A232BC82E4 ЭФФФФФФФФФФФФФ
9237AF71A232BC82E4 FFFFFFFFFFFFFFFFFF
... ...
9237AF71A232BC82E5 0000000000000000 ???
Если вы можете зашифровать $2^{64}$ блоков вы дойдете до конца счетчика, в зависимости от случая это может быть опасно.
Если продолжить с 0 счетчика 9237AF71A232BC82E400000000000000000
тогда у вас будет проблема с одноразовым повторным использованием (двойной блокнот) в режиме CTR; конфиденциальность теряется. Наблюдатель может выполнять ручное перетаскивание кроватки даже автоматизированное.
Если вы продолжите приращение, чем 9237AF71A232BC82E500000000000000000
вы можете нажать другой ввод, который также может превратиться в двукратный блокнот.
Останавливаться на достигнутом; на самом деле, остановись задолго до этого если вы используете PRP вместо PRF.
Примечания о различных употреблениях термина nonce IV;
Определение NIST использует счетчик в качестве всего ввода для шифрования.
Википедия делает различие. Я предпочитаю определение из Википедии. В случае GCM NIST использует IV и счетчик отдельно.
Линделл и Кац в своей книге используют IV в качестве 3$/4$ часть размера блока и $1/4$ что касается счетчика. Шифрование определяется как $y_i := F_k (IV || \langle i \rangle)$ Они показывают, что если IV выбран единообразно, то повторное использование IV является незначительным событием. Поэтому режим CTR безопасен для CPA.