stify"> Оскільки при зашифруванні черговий блок шифротекста повністю визначається тільки відповідним блоком відкритого тексту і значенням секретного ключа K, то однакові блоки відкритого тексту будуть перетворюватися в цьому режимі в однакові блоки шифротекста. А це іноді небажано, оскільки може дати ключ до аналізу змісту повідомлення. Наприклад, якщо шифруються дані на жорсткому диску, то порожній простір буде заповнено однаковими байтами, що залишилися там від форматування диска. А значить по шифротекст можна буде здогадатися про розмір корисної інформації на диску. У таких випадках потрібно застосовувати інші режими шифрування.
1.4.2 Cipher Feed Back - зворотна завантаження шифротекста
Cipher Feed Back Режим зворотного зв'язку за шифротекст - одна зі схем симетричного шифрування, при якій зашифрований блок тексту являє собою побітного додавання блоку відкритого тексту із зашифрованим результатом шифрування попереднього блоку. Має модифікацію, що дозволяє шифрувати дані, розмір яких менше розміру блоку шифру, що дає можливість шифрувати потік даних, не чекаючи того, поки на вхід надійде необхідне число біт.
У цьому режимі розмір блоку може відрізнятися від 64. Вихідний файл M зчитується послідовними t-бітовими блоками (t lt;=64): M=M (1) M (2) ... M ( n) (залишок дописується нулями або пропусками).
- бітовий зсувний регістр (вхідний блок) спочатку містить вектор ініціалізації IV, вирівняний по правому краю. Для кожного сеансу шифрування використовується новий вектор ініціалізації.
Для всіх i=1 ... n блок шифртекста C (i) визначається наступним чином:
(i)=M (i) xor P (i - 1),
де P (i - 1) - старші t бітів операції IDEA (С (i - 1)), причому, C (0)=IV.
Оновлення зсувного регістру здійснюється шляхом видалення його старших t бітів і дописування праворуч C (i).
Відновлення зашифрованих даних також не становить труднощів: P (i - 1) і C (i) обчислюються аналогічним чином і M (i)=C (i) xor P (i - 1).
1.4.3 Output Feed Back - зворотна завантаження вихідних даних
Режим OFB, як і CFB є потоковим, тобто функція викликається в алгоритмі до підсумовування з порцією відкритого тексту. Але на цей раз на вхід подається НЕ шифротекст з попередньою ітерації, а просто її ж вихідні дані. Тобто відбувається зациклення функції.
У такій ситуації стає важливим одноразове використання вектора ініціалізації. Припустимо два різні повідомлення шифруються в режимі OFB з використанням одного і того ж вектора ініціалізації. Тоді, якщо противнику стає відомий якої-небудь j-ий блок відкритого тексту першого повідомлення, то, маючи j-ий блок шифротекста він легко може обчислити Oj - вихідні дані, а оскільки вони залежать тільки від вектора ініціалізації, який однаковий для обох повідомлень, то можна стверджувати, що і в другому повідомленні це буде той же Oj, звідси, маючи j блок шифротекста другого повідомлення противник відразу одержить відкритий текст j-го блоку другого повідомлення.
Тому в алгоритмі OFB необхідно уникати не тільки повторення векторів ініціалізації, але й того, що б будь j-ий блок вхідних даних функції для одного повідомлення не використовувався як вектор ініціалізації для іншого повідомлення. Нижче наведені рівняння для шифрування в режимі OFB: OFB зашифрование:
I 1=IV
I j=O j - 1, j=1,2, ... n
O j=CIPH K (I j), j=1,2, ... n
C j=P j + O j, j=1,2, ... n - 1 n=P n + MSB t (O n)
OFB расшифрование:
I 1=IV j=O j - 1, j=2, ... nj=CIPH K (I j), j=1,2, ... nj=C j + O j, j= 1,2, ... n - 1 n=C n + MSB t (O n),
де «+» - це операція xor.
Проблема доповнення повідомлення для OFB вирішується просто: для останнього, можливо неповного, блоку повідомлення використовується рівно стільки біт вихідних даних функції, скільки біт в цьому блоці. Таким чином, в цьому режимі, на відміну від попередніх, довжина повідомлення залишається незмінною в процесі шифрування і, головне, при передачі.
1.4.4 Counter - шифрування з лічильником
У потоковому режимі шифрування з лічильником на кожній ітерації алгоритму шифрування на вхід функції подається якесь випадкове значення Т. Ці вхідні дані повинні бути різні для всіх ітерацій алгоритму в яких блоковий шифр використовує один і той же ключ шифрування, тому генератор таких значень іноді називають лічильником (що дає найбільш простий спосіб генерації унікальних значень T).
Насправді вимога унікальності вхідних ...