1 / 13

Други блокови шифри-2

Други блокови шифри-2. 1. GOST GOST е 64-битов блоков алгоритъм с 256-битов ключ. GOST също има допълнителен ключов материал, който е дискутиран по-късно. Алгоритъмът прави итерации на един прост шифриращ алгоритъм в 32 рунда.

Download Presentation

Други блокови шифри-2

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Други блокови шифри-2 1. GOST GOST е 64-битов блоков алгоритъм с 256-битов ключ. GOST също има допълнителен ключов материал, който е дискутиран по-късно. Алгоритъмът прави итерации на един прост шифриращ алгоритъм в 32 рунда. За да се шифрира, първото прекъсване на текста е на две части – лява L и дясна R. Подключът за рунд i е Ki. Рунд i, на GOST е: Li = Ri - 1 Ri = Li -1 ⊕ f(Ri - 1, Ki) Фиг. 1 е един рунд на GOST. Функцията f е разбираема. Първо лявата половина и i-тия под ключ се събират по модул 232. Резултатът е разделен на осем 4-битови парчета и всяко от тях става вход за различен S-бокс. Има 8 различни S-бокса в GOST; първите 4 бита отиват в първия S-бокс, вторите 4 бита отиват във втория бокс и т.н. Всеки S-бокс е една пермутация на числата от 0 до 15. Например, един S-бокс може да бъде:7, 10, 2, 4, 15, 9, 0, 3, 6, 12, 5, 13, 1, 8, 11. Фиг.1

  2. Други блокови шифри-2Продължение В този случай, ако входът към S-бокса е 0, изходът е 7. Ако входът е 1 – изходът е 10 и т.н., всичките 8 S-бокса са различни; добре е обмислен допълнителен материал за ключа. S-боксовете са били запазени секретни. Изходите на 8-те S-бокса се рекомбинират в една 32-битова дума, тогава цялата дума претърпява едно циклично изместване наляво на 11 бита. Накрая, резултатът се подлага на XOR с лявата половина за да стане нова дясна половина и дясната половина става нова лява половина. Това се прави 32 пъти. Подключовете се генерират просто. 256-битовият ключ се разделя на осем 32-битови блока: k1, k2,..., k8. Всеки рунд употребява различен подключ, съгласно таблица. Дешифрира-нето е същото като шифрирането, като редът на ki е обратен. Има важни разлики между DES и GOST. -DES има сложна процедура за генериране на подключове от ключа. GOST има много проста процедура. -DES има 56-битов ключ; GOST - 256-битов ключ. Ако се добави в секретността, пермутациите S-бокса, GOST има общо около 610 бита секретна информация. -S-боксовете в DES имат 6-битови входове и 4-битови изходи; S-боксовете на GOST имат 4-битови входове и изходи. И двата алгоритъма имат 8 броя S-бокса, но един S-бокс в GOST е ¼ от размера на един S-бокс на DES. -DES има една неестествена пермутация, наречена P-бокс; GOST употребява едно циклично изместване наляво на 11 бита. -DES има 16 рунда; GOST -32 рунда.

  3. Други блокови шифри-2Продължение 2. CAST CAST алгоритъмът има размер на блока 64 бита и 64-битов ключ. Структурата на CAST е позната. Алгоритъмът употребява шест S-бокса с 8-битов вход и 32-битов изход. Конструк-цията на S-боксовете е зависимо приложение и сложно. За да шифрира, първо се разделя блокът на явния текст на лява и дясна половина. Алгоритъмът има 8 рунда. На всеки рунд дясната половина се комбинира със някакъв материал на ключа употребявайки функция f и тогава се подлага на XOR с лявата половина за да даде нова дясна половина. Оригиналната дясна половина (преди рунда) става нова лява половина. След 8 рунда ( не се завъртат дясната и лявата половини след 8-я рунд), двете половини се свързват за да се получи шифрования текст. Функцията f е проста: (1)  разделя се 32-битовият вход на четвъртинки по 8 бита: a, b, c, d. (2)  разделя се 16-битовия ключ на две 8-битови половинки: e, f. (3)  обработва се a през S-бокс 1, b през S-бокс 2, c през S- 3, d през S-бокс 4, e през S-бокс 5, и f през S-бокс 6. (4)  XOR на шестте изхода на S-боксовете заедно за да се получи крайния 32-битов изход. Алтернативно, 32-битовият вход може да се подложи на XOR с 32-те бита на ключа, разделя се на четвъртинки по 8 бита, обработва се през S-боксовете и след това се подлагат на XOR заедно. N рунда от тези се появяват секретни, като N + 2 рунда от друга опция. 16-битов подключ за всеки рунд е лесно изчислим от 64-битовия ключ. Ако k1, k2,..., k8 са 8 байта на ключа, тогава подключовете за всеки рунд са: Round 1: k1, k2 Round 2: k3, k4Round 3: k5, k6Round 4: k7, k8 Round 5: k4, k3Round 6: k2, k1Round 7: k8, k7Round 8: k6, k5

  4. Други блокови шифри-2Продължение 3. Blowfish Blowfish е един алгоритъм свързан с приложение на големи микропроцесори. Той не е патентован. Проектирането на Blowfish е за да се отговори на следните критерии: 1. Бърз. Blowfish шифрира данни с 32-битов микропроцесор със скорост 26 часовникови цикъла за байт. 2.Компактен. Blowfish може да бъде стартиран в по-малко от 5K памет. 3.Прост. Blowfish употребява само прости операции;събиране, XOR, и таблици с търсене за 32-битови операнди. Неговото проектиране е лесно за анализиране, което го прави резистентен/устойчив на грешки в приложението. 4.Променлива секретност. Дължината на ключа на Blowfish е променлива и може да бъде дълъг до 448 бита. Blowfish е един блоков шифър за 64-битов блок с ключ с променлива дължина. Алгори-тъмът съдържа две части: разширение на ключа и шифриране на данната. Разширението на ключа превръща ключа до 448-битов в различни матрици на подключа възлизащи на 4168 В. Шифрирането на данната съдържа проста функция повтаряна 16 пъти. Всеки рунд съдържа зависима от ключа пермутация и една ключова и даннова субституция. Всички операции са събиране и XOR на 32-битови думи. Само едни допълнителни операции са 4 индексирани матрици данни за рунд. Blowfish употребява големи числа за подключове Тези ключове могат да бъдат преизчислени преди някаква данна да е шифрирана или дешифрирана. P-матрицата съдържа 18 32-битови подключа: P1, P2,..., P18 Четири 32-битови S-бокса имат 256 входа всеки: S1,0, S1,1,..., S1,255 S2,0, S2,1,..., S2,255 S3,0, S3,1,..., S3,255 S4,0, S4,1,..., S4,255

  5. Други блокови шифри-2Продължение Фиг.2 Blowfish е Feistel верига, съдържаща 16 рунда. Входът е един 64-битов елемент от данни, x. За да шифрира: Разделя се x на две 32-битови половини: xL, xR For i = 1 to 16: xL = xL ⊕ Pi xR = F(xL) ⊕ xR Swap xL and xR Swap xL and xR (Undo the last swap.) xR = xR ⊕ P17 xL = xL ⊕ P18 Recombine xL and xR

  6. Други блокови шифри-2Продължение Фиг.3  Функция F. Функцията F е показана на фиг.3: Разделя се xL на четвъртинки по 8 бита: a, b, c, и d F(xL) = ((S1,a + S2,b mod 232) ⊕ S3,c) + S4,d mod 232 Подключовете са изчислени, употребявайки алгоритъма на Blowfish. Точният метод е: (1) Инициализира се първо Р-матрицата и след това четири S-бокса, за да се фиксира стринга. Този стринг съдържа шестнадесетични числа за p. (2)  XOR P1 с първите 32 бита на ключа, XOR P2 с вторите 32-бита на ключа, и т.н. за всички битове на ключа (до P18). Повтаряне на цикъла през битовете на ключа, докато цялата матрица P бъде подложена на XOR с битове на ключа. (3)  Шифриране на всички нулеви стрингове с алгоритъма Blowfish, употребявайки ключовете в стъпки 1 и 2. (4)  Заместване на P1 и P2 с изхода от стъпка 3. (5)  Шифриране на изхода от стъпка 3, употребявайки алгоритъма Blowfish с модифицираните подключове. (6)  Заместване на P3 и P4 с изхода от стъпка 5. (7)  Продължаване на процеса, замествайки всички елементи на P-матрицата и тогава всичките 4 S-бокса с изхода на непрекъснато променящ се Blowfish алгоритъм.

  7. Други блокови шифри-2Продължение 4. SAFER Алгоритъмът е за блок и ключ с дължина 64 бита. Не е верига на Feistel като DES, но е итерационен: същата функция е приложена за същия брой рундове. Всеки рунд употребява два 64-битови подключа и алгоритъмът само употребява операции над байтовете. 5. 3-Way 3-Way е блоков шифър проектиран от Joan Daemen. Той има дължина на блока и ключа 96 бита и е проектиран за много ефективен хардуер. 3-Way не е верига на Feistel, но е итерационен блоков шифър. 3-Way може да има n рунда; Daemen препоръчва 11. 6. Crab Този алгоритъм е развит от Burt Kaliski и Matt Robshaw на RSA Laboratories. Идеята зад Crab е да се употребява техника за еднопосочна Хаш функция за да се направи един бърз алгоритъм за шифриране. От тук, Crab е много подобен на MD5. Crab има много голям блок:1024 байта. Откакто Crab е представян повече за разпространение в изследванията, в сравнение с един реален алгоритъм, няма представени дефинитивни/окончателни подпрограми за генериране на ключ. Авторите предлагат един метод, който може да обърне един 80-битов ключ в три желани подключа, макар че алгоритъмът може лесно да приеме променлива дължина на ключовете.

  8. Други блокови шифри-2Продължение 7.Теория на проектирането на блокови шифри. Принципите на Shannon за конфузия/смесване и дифузия/разпространение остават основни в проектирането на добър блоков шифър. Скриването на статистическите връзки и прави криптоанализа по-труден: • Конфузията обслужва скриването на всяка връзка между явния текст, шифрования текст и ключа; • Дифузията разпространява влиянието на битовете на индивидуалния явен текст или на ключа толкова колкото е възможно върху шифрования текст. Трикът е многократно смесена конфузия (с много по-малки таблици) и дифузия в един шифър в различни комбинации. Това се нарича шифър продукт - product cipher. Понякога един блоков шифър, който включва слоеве на заместване и пермутация е наричан субституционно-пермутационна верига - substitution-permutation network, или дори SP network. Ако се погледне функцията f на DES: • Разширяващата пермутация и P-бокса изпълняват дифузия; • S-бокса дава конфузия. Разширяващата се пермутация и P-бокса са линейни; S-боксовете – нелинейни. DES също илюстрира малко повече принципи на проектирането на блоков шифър. Най-важна е идеята за итеративните/повтарящи се блокови шифри - iterated block cipher. Това означава да се приеме една проста функция за рунда и да се повтаря многократно. DES с два рунда не е много силен; той има 5 рунда преди всички изходни битове да са свързани с всички входни битове и всички битове на ключа. 16 рундов DES е силен; 32-рундов DES е още по-силен.

  9. Други блокови шифри-2Продължение Feistel вериги (Networks) Повечето блокови алгоритми са вериги на Фейстел - Feistel networks. Тази идея датира от ранните 1970 години. Взема се блок с дължина n и се разделя на две половини с дължина n/2: L и R. Разбира се n трябва да бъде четно. Може да се дефинира един итеративен блоков шифър, където изходът за i-ти рунд да се определи от изхода на предния рунд: Li = Ri - 1 Ri = Li - 1 ⊕ f(Ri - 1,Ki) Kiе подключът употребен в i-ти рунд и f е една произволна функция на рунда. Тази концепция може да се види в DES, Lucifer, FEAL, Khufu, Khafre, LOKI, GOST, CAST, Blowfish, и др. Функцията е гарантирано реверсивна. Защото XOR е употребено да комбинира лявата половина с изхода на функцията на рунда, необходимо е да е вярно, че Li - 1 ⊕ f(Ri - 1,Ki) ⊕ f(Ri - 1,Ki) = Li - 1 Шифърът, който употребява тази конструкция е гарантирано обратим толкова дълго колкото входовете към fвъв всеки рунд могат да бъдат реконструирани. Няма значение каква е f - f не е необходимо да бъде обратима. Може да се проектира f да бъде толкова сложна колкото се желае и няма да трябва да се използват два различни алгоритъма – един за шифрирането и друг за дешифрирането. Структурата на веригата на Feistel има грижа за всичко това автоматично. Прости отношения DES има свойството, че ако EK(P) = C, тогава EK’(P’) = C’, където P’, C’, и K’ са допълнения на битовете на P, C, и K. Тази особеност намалява сложността за атака на грубата сила при коефициент 2. LOKI има свойства на допълнение, които намаляват сложността за тази атака с коефициент 256. Едно просто отношение/релация - simple relation може да бъде определено като: If EK(P) = C then Ef(K) (g(P,K)) = h(C,K), къдетоf, g, и h са прости функции. В DES, f е побитово допълнение на K, g е побитово допълнение на P, и h – същото, само че за C. Това е резултат от подлагането на XОR на ключа в част от текста.

  10. Други блокови шифри-2Продължение Структура на групата (Group Structure) Когато се разглежда един алгоритъм, въпросът е дали една група се проявява. Еле-ментите на групата са блоковете на шифрования текст с всеки възможен ключ и групата на операциите е съставна. Гледайки на една структурна група на алгоритъма е един опит да се определи колко много допълнителни разбърквания се случват в многократното шифриране. Въпросът е дали или не един алгоритъм е действително една група, но колко точно е близък до една група. Ако има само липса на един елемент, това не е група, но двойното шифриране ще бъде – статистически говорейки – загубено време. Работата на DES показва, че той е много далеч от това да бъде група. Слаби ключове В един добър блоков шифър, всички ключове са еднакво силни. Алгоритмите с малък брой на слабите ключове като DES, не са обикновено проблем. Да се избере един от тях е малко вероятно и може лесно да се тества за да се отстранят. Дори тези слаби ключове мо-гат понякога да се употребят, ако блоковият шифър употребява еднопосочна Хаш функция. Сила срещу диференциалния и линейния криптоанализ Проектиране на S-Box Мощността на различни вериги на Feistel – специфична тяхна устойчивост на двата криптоанализа (линееен и диференциален) – е свързана с техните S-боксове. Това идва от изобилието на конструиране на добър S-бокс. Един S-бокс е просто едно заместване (simply a substitution): картиране на m-битови входове в n-битови изходи. Една таблица за търсене за 64-битови входове в 64-битови изходи е 64*64-битов S-бокс. Един S-бокс с m-битов вход и n-битов изход се нарича m*n-bit S-box. S-боксовете са обикновено само нелинейна стъпка в един алгоритъм - те са, което е секретността за един блоков шифър. Най-общо, колкото са по-големи те толкова е по-добре. Размерът m е много важен в сравнение с размера n. Увеличаването на размера n намалява ефективността на диф.анализ, но голямо увеличение на ефективността на линейния криптоанализ. Действително, ако: • n ≤ 2m – m, тогава има определена линейна релация на входните и изходните битове на S-бокса; • n ≤ 2m, тогава има линейна релация само на изходните битове.

  11. Други блокови шифри-2Продължение Много важно е изследването на булевите функции - Boolean functions. За да бъде секретен, булевите функции употребени в S-боксове трябва да отговарят на специфични условия: • не бива да бъдат линейни или сродни/свързани; • да има баланс на нули и единици и да няма корелации между различните комбинации от битове; • изходните битове да притежават независимост, когато кой и да е входен бит е комплимен-тарен. Тези критерии за проектиране са също отнесени към изследването на функциите на склонност - bent functions: функциите, които могат да показват оптимум. Една особеност, която изглежда много важна е ефекта на лавината: как много изходни битове на един S-бокс се променят, когато някакво подмножество на входните битове е про-менено. Лесно е да се наложат условия на булевите функции такива, че те да отговарят на сигурен критерий на лавината, но конструирането им е по-трудна задача. Строг критерий на лавината - strict avalanche criteria (SAC) гарантира, че точно половината от изходните битове се променят, когато един входен бит се променя. Предлагат се различни критерии за конструиране на S-боксове, подобно на критерия за проектиране на S-боксовете на DES. Четири общи приближения могат да се идентифицират: 1. Случаен избор. Ясно е, че малките случайни S-боксове са несекретни, но големите могат да бъдат достатъчно секретни. Случайни S-боксове с 8 и повече входа са силни. 12 бита S-бокс е по-добре. Повече мощ се добавя, ако S-боксовете са случайни и зависими от ключа. IDEA употребява големи и зависими от ключа боксове. 2.Избор и тест. Някои шифри генерират случайни S-боксове и след това ги тестват за необходими особености. 3.Изкуствен. Тези техники употребяват малко математика: S-боксовете са генерирани употребявайки интуитивни техники. 4.Математически направен. Генериране на S-боксове съгласно математически принципи, така че те да имат доказана секретност срещу диф. и линейния криптоанализ и добри дифу-зионни характеристики.

  12. Други блокови шифри-2Продължение 8. Употреба на еднопосочна Хаш функция Най-простият начин да се шифрира е с еднопосочна Хаш функция - Хаш на предния блок на шифрования текст, свързан с ключа, тогава да се приложи XОR на резултата с текущия блок явен текст: Ci = Pi ⊕ H(K,Ci - 1) Pi = Ci ⊕ H(K,Ci - 1) Поставя се дължината на блока равна на изхода на еднопосочната Хаш функция. Така, в резултат има употреба на еднопосочната Хаш функция, като един блоков шифър в CFB режим. Една подобна конструкция може да се употреби и в OFB режим: Ci = Pi ⊕ Si; Si = H(K,Ci - 1) Pi = Ci ⊕ Si; Si = H(K,Ci - 1) Секретността на тази схема зависи от секретността на еднопосочната функция. Karn Този метод е открит от Phil Karn и поместен в публичната област - прави един обра-тим шифриращ алгоритъм на сигурни еднопосочни Хаш функции. Алгоритъмът работи на явния текст и шифрования текст в 32 блока. Ключът може да е с някаква дължина, въпреки че сигурната дължина на ключа ще бъде по-ефективна за определени еднопосочни функции. За еднопосочни функции MD4 и MD5, 96-байта ключове работят най-добре. За да се шифрира, първо се разделя явният текст на две 16-байтови половини: P1 и Pr. Тогава, се разделя ключът на две 48-байтови половини: K1и Kr. P = P1,Pr K = K1,Kr Cr = Pr ⊕ H(P1,K1) C1 = P1 ⊕ H(Cr,Kr) C = C1,Cr

  13. Други блокови шифри-2Продължение Luby-Rackoff Michael Luby и Charles Rackoff показват, че Karn не е секретен. Разглеждат две едноблокови съобщения : AB и AC. Ако криптоанализаторът знае двете - явния текст и шифрования текст на първото съобщение и първата половина на явния текст на второто съобщение, може лесно да изчисли цялото второ съобщение. Атаката на известен явен текст е възможна при тези обстоятелства, но това е важен проблем на секретността. Три рунда шифриращ алгоритъм отстранява проблема. Той употребява 3 различни Хаш функции: H1, H2, и H3. По-нататъшната работа показва, че H1 може да е равно на H2, или че H2 може да е равно на H3, но не и двете. Също, H1, H2 и H3 не могат да се базират на повторения на същите основни функции. Както и да е, приемайки че H(k,x) се държи като псевдослучайна функция, има версия в три рунда: (1)  Разделя се ключът на две половини: K1 и Kr. (2)  Разделя се явния текст на две половини: L0 and R0. (3)  Прикача се K1 за L0 и хаш. XОR на резултатът от хаш с R0 за да даде R1: R1 = R0 ⊕ H(K1,L0) (4)  Прикача се Kr за R1 и хаш. XOR на резултатът от хаш с L0 за да даде L1: L1 = L0 ⊕ H(Kr,R1) (5)  Прикача се K1 за L1и хаш. XOR на резултатът от хаш с R1 за да дадеR2: R2 = R1 ⊕ H(K1,L1) (6)  Прикача се L1 за R1 за да генерира съобщението.

More Related