Ағындық шифрлар
Блоктық шифрлар
Блоктық шифрлеуде бастапқы мәтін ұзындығы алдын ала бекітілген тұрақты блоктарға бөлінеді. Әр блок бір-біріне тәуелсіз шифрленеді, ал барлық блоктар үшін бір ғана кілт пайдаланылады.
Ауыстыру
Символдар белгілі бір ережемен басқа символдарға ауыстырылады.
Орын алмастыру
Символдардың мәні емес, тек орналасу реті (позициясы) өзгереді.
Құрастырма
Ауыстыру мен орын алмастыру бірнеше раунд арқылы кезектесіп қолданылады.
Ауыстыру шифрлері
Моноәліпбилік және полиәліпбилік тәсіл
- Бір әліпби қолданылса — шифр моноәліпбилік (бір әліпбилі) деп аталады.
- Бірнеше әліпби қолданылса — шифр полиәліпбилік (көп әліпбилі) деп аталады.
Цезарь шифры
Цезарь шифры — моноәліпбилік ауыстыру шифрының ең қарапайым мысалы. Әр әріп алфавиттегі келесі N позицияға жылжытылады.
Формула
(әріп) = ((әріп) + N) mod 43
Мұнда: 1 ≤ N < 43, N — шифрлеу кілті.
Мысал
Шифрмәтін (мысал):
Б М С Б Т Б Ұ Ә Б Н Ң Б У Ү
Кілт және ашық мәтін (мысал):
N = 0,2 ··· А Қ П А Р А Т А Л М А С У
Ескерту: берілген үзінділер бастапқы мәтіндегі үлгі ретінде сақталды; нақты сәйкестік алфавиттің индекстеу тәртібіне тәуелді.
Вижинер шифры
Вижинер шифры — полиәліпбилік ауыстыру шифры. Шифрлеу әдетте n×n матрица (Вижинер кестесі) арқылы жүргізіледі: бірінші қатарда алфавит толық беріледі, келесі қатарлар алдыңғы қатарды бір символға жылжыту арқылы құрылады.
Шифрлеу қадамдары
- Түйінді сөз (кілт) таңдалады. Мысалы: «ақпарат».
-
Ашық мәтіннің астына кілт символдары жазылады. Егер кілт қысқа болса, ол хабар толық біткенше қайталанады.
(*) Ашық мәтін (мысал):
О Р Ы Н А Л М А С Т Ы Р У Ш И Ф Р І
(**) Кілт (қайталанған):
А қ п а р а т а қ п а р а т а қ п а
- Шифрмәтін символы Вижинер кестесі бойынша анықталады: (*) символы — жол, (**) символы — бағана; қиылысындағы таңба — нәтиже.
Вижинер кестесінің жетілдірілген нұсқасы
- Бірінші қатардан басқа қатарларда алфавит әріптері еркін ретпен орналастырылады.
- 0–9 сандарымен нөмірленген 10 қатар (біріншісін есептемегенде) таңдалады.
- Кілт ретінде сандық шамалар қолданылуы мүмкін.
Матрицалар арқылы шифрлеу идеясы
Сенімділікті арттырудың бір тәсілі — матрицалық түрлендірулерді қолдану (мысалы, векторды матрицаға көбейту). Бұл жағдайда A={aij} матрицасы шифрлеу негізі ретінде алынады, ашық мәтін символдары сандық эквиваленттерге ауыстырылып B={bi} векторы ретінде беріледі, ал нәтижесінде C={ci} — шифрмәтін алынады.
Дешифрлеу үшін кері матрица қолданылады. Процедуралар қатаң формализацияланғандықтан автоматтандыруға ыңғайлы, алайда әр әріп үшін бірнеше арифметикалық амал қажет болуы өңдеу уақытын арттырады.
Орын алмастыру шифрлері
Орын алмастыру шифрлері символдардың өзін өзгертпей, тек олардың мәтіндегі орналасу позицияларын ауыстырады.
Жай бағаналық орын алмастыру
Мәтін бірдей блоктарға бөлініп, кестеге горизонталь бағытта жазылады. Шифрмәтін кестені вертикаль бағытта оқу арқылы алынады. Дешифрлеуде керісінше әрекет орындалады.
Мысал
Ашық мәтін: «СИММЕТРИЯЛЫ ЖҮЙЕНІ ШИФРЛЕУ»
Мәтін 6 жол, 4 бағана кестеге жазылады; кейін бағаналар бойынша жоғарыдан төменге оқылып, 5 таңбадан топтастырылады.
Шифрмәтін (мысал):
срүии ийфмя ермлн леыіе тжшу
n-орын ауыстыру (пермутация) ұғымы
Орын алмастыруды ұзындығы n болатын символдар тізбегі үшін пермутация ретінде сипаттауға болады. Жоғарғы қатарда 1-ден n-ге дейінгі орындар, төменгі қатарда — сол орындардың еркін реттелген сәйкестігі беріледі. Мұндай сәйкестік n дәрежелі ауыстыру деп аталады.
Код үзіндісі (Object Pascal)
const Lmax=100;
type TArr=array[1..Lmax] of integer;
{Мәтінді шифрлеу:
Кіру параметрі: txt — негізгі мәтін, password — кілт
Нәтиже: шифрленген мәтін}
function SH_TO(txt:string;password:TArr):string;
var i,l:integer;
shifr:array[1..Lmax] of char;
s:string;
begin
l:=length(txt);
for i:=1 to l do shifr[password[i]]:=txt[i];
for i:=1 to l do s:=s+shifr[i];
result:=s;
end;
{Шифрді ашу:
Кіру параметрі: txt — шифрленген мәтін, password — кілт
Нәтиже: бастапқы мәтін}
function SH_FROM(txt:string;password:TArr):string;
var i,l:integer;
s:string;
begin
l:=length(txt);
for i:=1 to l do s:=s+txt[Password[i]];
result:=s;
end.
Құрастырма шифрлар
Құрастырма шифрлардың негізгі идеясы — сенімді криптожүйе құру үшін ауыстыру және орын алмастыру сияқты қарапайым түрлендірулерді бірнеше раунд бойы алма-кезек қолдану.
Қысқаша салыстырмалы кесте
| Алгоритм | Кілт (бит) | Блок (бит) | IV (бит) | Раунд |
|---|---|---|---|---|
| Lucipher | 128 | 128 | — | — |
| DES | 56 | 64 | 64 | 16 |
| FEAL-1 | 64 | 64 | — | 4 |
| B-Crypt | 56 | 64 | 64 | — |
| IDEA | 128 | 64 | — | — |
| ГОСТ 28147-89 | 256 | 64 | 64 | 32 |
Ескерту: бастапқы мәтінде кейбір өрістер толық берілмеген, сондықтан кестеде «—» ретінде көрсетілді.
DES алгоритміне шолу
Мәтін блогы
64 бит
Кілт
56 бит (64 биттің әр 8-биті — бақылау)
Раунд саны
16
DES 1970-жылдары стандарт ретінде қабылданды: 1974 жылы IBM ұсынған Lucifer негізінде әзірленіп, 1976 жылы федералдық стандарт ретінде бекітілді.
Негізгі қадамдар
- Бастапқы орын алмастыру (Initial Permutation).
- Кілтті түрлендіру: 56 битке қысқарту, бөліктерге бөлу, солға жылжыту, 48 битті таңдау (сығылатын орын алмастыру).
- Раундтық функция: оң бөлікті кеңейту, кілтпен XOR, S-блоктар арқылы сығу, P-блокпен орын алмастыру, сол бөлікпен біріктіру.
- Соңғы орын ауыстыру (Final Permutation) — бастапқы операцияға кері.
Қауіпсіздік және қазіргі қолданылуы
DES үшін негізгі мәселе — 56 биттік кілт қазіргі талаптарға сай қысқа. 1998 жылы EFF арнайы құрылғы арқылы кілтті шамамен 3 күнде таба алған (жоба бағасы шамамен $250 000).
DES-тің шектеулеріне байланысты тәжірибеде 3DES жиі қолданылды: онда DES операциясы үш рет қайталанып, сенімділік арттырылады.
Ескерту: бастапқы мәтінде 3DES кілті туралы сандық мәндер әртүрлі түсіндірілетін түрде берілген; жалпы идея — DES-ке қарағанда кілт кеңістігін ұлғайту.
Дешифрлеу
DES-та шифрлеу мен дешифрлеу құрылымы ұқсас: айырмашылығы — бөлімдік кілттер кері ретпен қолданылады, яғни K16, K15, …, K1.
Ағындық шифрлар
Егер блоктық алгоритмдер мәтінді блоктарға бөліп шифрласа, ағындық шифрлау мәтінді бөлшектемей, әр элементті (бит/таңба) ағын түрінде шифрлап жібереді. Көп жағдайда шифрлау мен дешифрлау mod 2 бойынша ашық мәтін мен кілт тізбегін қосу (XOR) операциясына сүйенеді.
Вернам шифры
Тарихи тұрғыда алғашқы ағындық шифрлардың бірі. Оның практикалық қолданылуы өте ұзын кілт тізбектерін жасау қажеттілігіне байланысты көбіне қолайсыз деп саналады.
Синхрондық шифр
Кілт тізбегі ақпарат ағынына тәуелсіз генерацияланады. Жіберуші мен қабылдаушы жақтағы генераторлар синхрондалған болуы керек; әйтпесе бір бит жоғалса, кейінгі символдар қате дешифрлануы мүмкін.
Өзіндік синхронданатын шифр
Әр символдың шифрлануы алдыңғы n символға тәуелді: сол алдыңғы бөліктер кілт тізбегін құруға қатысады. Синхрондау әр n шифрмәтін символынан кейін автоматты түрде қалпына келеді.