Крипто-форум crprogram.16mb.com

Програмування, Delphi, криптографія, криптоаналіз, шифри, вихідні коди, вирішення задач, приклади програм

Часовий пояс: UTC десь + 2 години




Розпочати нову тему Відповісти  [ 9 повідомлень ] 
Автор Повідомлення
 Заголовок повідомлення: Проста підстановка
СообщениеДодано: 09 гру 2014, 20:48 
Не в мережі

Повідомлень: 362
Підстановочний шифр - (інша назва моноалфавітний шифр (грецьк. μονος - один), шифр простої заміни) - алгоритм шифрування інформації, який полягає у заміні одних знаків відкритого тексту одними і тими ж сцеціальними знаками з таблиці підстановки.(цифрами, буквами, символами тощо).

Цей шифр практично еквівалентний алфавітним писемностям,
у випадку коли його значення невідоме тим, від кого намагаються захистити інформацію.

На даний час невідомо де і коли вперше почали застосовувати цей шифр для секретного листування.

Одним з перших відомих історикам алфавітів були алфавіти, які винайшли фінікійці та у місті Угаріт.

Перші відомі історикам задокументовані відомості використання підстановочного шифра відносять до часів Давньої Греції (Квадрат Полібія) та Стародавнього Риму (наприклад, шифр Цезаря).

Наприклад,
зашифруємо з таблицею підстановки "а-x,б-p,в-w,г-n ... к-d, ... т-q, ... і т.д." слово "так", отримаємо шифротекст "qxd".
т => q
а => x
к => d


Востаннє редагувалось Raul в 08 лют 2013, 11:42, всього редагувалось 3 разів.

Повернутися наверх
  
 
 Заголовок повідомлення: Re: Проста підстановка
СообщениеДодано: 09 гру 2014, 20:48 
Не в мережі

Повідомлень: 502
Для інтерфейсу допишемо генерацію таблиці підстановки:
Код:
procedure TForm1.Button4Click(Sender: TObject);
var
i:integer;
f:textfile;
t:string;
tab:array[0..256]of byte;
tmp,L,no:byte;
begin

L:=34;

for i:=0 to L do
tab[i]:=i;

for i:=1 to 100 do
begin
no:=random(35);
tmp:=tab[no];
tab[no]:=tab[i mod L];
tab[i mod L]:=tmp;
end;

assignfile(f,'key.txt');
rewrite(f);
for i:=0 to L do
begin
writeln(f,inttostr(tab[i]));
stringgrid1.Cells[1,i+1]:=inttostr(i);
stringgrid1.Cells[2,i+1]:=inttostr(tab[i]);
end;
closefile(f);
memo3.Lines.add('таблицю згенеровано.');
end;

Цей метод генерації таблиці слід використовувати тільки в навчальних цілях.

для кнопки 3 код завантаження таблиці:
Код:
procedure TForm1.Button3Click(Sender: TObject);
var
i:integer;
f:textfile;
t:string;
begin
assignfile(f,'key.txt');
reset(f);
for i:=0 to 50 do
begin

readln(f,t);
if t<>'' then
Key[i]:=strtoint(t)
else
key[i]:=0;

stringgrid1.Cells[1,i+1]:=inttostr(i);
stringgrid1.Cells[2,i+1]:=t;
end;
closefile(f);
memo3.Lines.add('таблицю завантажено.');
end;


опишемо загальні змінні
Код:
var
  Form1: TForm1;
  Ctxt,Ptxt:array[0..1000] of byte;
  key:array[0..50]of byte;
  ntxt:integer;


Повернутися наверх
  
 
 Заголовок повідомлення: Re: Проста підстановка
СообщениеДодано: 09 гру 2014, 20:48 
Не в мережі

Повідомлень: 502
Тоді процедура шифрування матиме вигляд:
Код:
procedure CipherZ;
var
i,L:integer;
begin
L:=34;
for i:=1 to ntxt do
begin
Ctxt[i]:=Key[Ptxt[i]];
form1.memo3.Lines.add(inttostr(i)+') '+inttostr(Ptxt[i])+'['+Caracter(Ptxt[i])+'] => '+inttostr(Ctxt[i])+'['+Caracter(Ctxt[i])+']');
end;

for i:=0 to L do
begin
form1.stringgrid1.Cells[0,i+1]:=inttostr(i);
form1.stringgrid1.Cells[1,i+1]:=Caracter(i);
form1.stringgrid1.Cells[2,i+1]:=Caracter(key[i]);
end;

end;


Повернутися наверх
  
 
 Заголовок повідомлення: Re: Проста підстановка
СообщениеДодано: 09 гру 2014, 20:48 
Не в мережі

Повідомлень: 502
В результаті отримаємо:
Зображення


Повернутися наверх
  
 
 Заголовок повідомлення: Re: Проста підстановка
СообщениеДодано: 09 гру 2014, 20:48 
Не в мережі

Повідомлень: 362
Ефективний метод зламу таких шифрів КРА та частотний аналіз.


Повернутися наверх
  
 
 Заголовок повідомлення: Re: Проста підстановка
СообщениеДодано: 09 гру 2014, 20:48 
Не в мережі

Повідомлень: 502
Схема роботи підстановочного шифру:
Зображення


Повернутися наверх
  
 
 Заголовок повідомлення: Re: Проста підстановка
СообщениеДодано: 09 гру 2014, 20:48 
Не в мережі

Повідомлень: 282
Наприклад
шифр Петра І Олексійовича,
яким він шифрував повідомлення з
м.Нарва 28 червня 1708 року:
Зображення
частина зашифрованого тексту:
Цитата:
Поди къ Черкаскому и, сослався з губернаторомъ азовскимъ, чини немедленно съ Божiею помощiю промыслъ надъ тьми ворами, и которые изъ нихъ есть поиманы, тъхъ вели въшать по украинскимъ городамъ.


Повернутися наверх
  
 
 Заголовок повідомлення: Re: Проста підстановка
СообщениеДодано: 09 гру 2014, 20:48 
Не в мережі

Повідомлень: 362
Інший приклад:
один із шифрів які використовували французи часів Наполеона Бонапарта у війні в Іспанії 1808-1811 рр. (Його зламав англієць Джордж Сковелл (George Scovell). У той час Великобританія допомагала Іспанії у війні з Францією.)

Це був шифр простої заміни-підстановки.

Код:
d. c  | b. a  | ñ o.
______________________
f. e  | p  q. | m n.
_____________________
g  h. | y  j. | l ll.

     \  x  /
u. t   X    z
     / x s.\

Тоді
d = _.|
a = |_|
x = V
і т.д.

Може здатись що шифр надто простий, той же шифр Віженера був винайдений кілька століть раніше, і чому не використовувався?

Тут необхідно пояснити - існує поняття так званих тактичних шифрів. Це шифри які стійкі на той час, після якого їх злам не несе ніякої шкоди. Тобто, наприклад у бойових умовах - за декілька днів обстановка змінюється і немає значення що супротивник прочитає де була та чи інша військова частина - за декілька днів вонабуде у іншому місці.
Використання таких слабких ширів пов'язане з їх простотою у ручному шифруванні.

Але...
Розглянемо два випадки.
Випадок перший.
Десь у далекій Африці є двоє воюючих племен "Мумба-Юмба" та "Тумба-Матумба".
Їх вожді використовуєть прості тактичні шифри для зв"язку з окремими своїми загонами, наприклад прості кодові таблиці.
Для криптоаналізу їх шифрів шаманам "Мумба-Юмба" та "Тумба-Матумба" необхідно 3 дні.
Коли ж вони через 3 дні читають повідомлення одне одного - загони уже в іншому місці і користь з цієї інформації рівна 0.

Інший випадок.
Знову ті ж племена "Мумба-Юмба" та "Тумба-Матумба".
І ось вождя племені "Мумба-Юмба" почала підтримувати сусідня країна.
Шамани вождя зранку перехопили повідомлення - і передали спеціалістам сусідньої країни - ті на комп'ютері за пару хвилин зламали шифр і почали читати повідомлення племені "Тумба-Матумба", і почали повідомляти отримані координати їх загонів вождю "Мумба-Юмба", який таким чином отримує перевагу.

Такі шифри і досі використовуються у різних країнах. ( системи найрізноманітні - від дискових шифраторів, до шифр таблиць, наприклад Дріада.).

Таким чином тактичні шифри були актуальні в докомп'ютерну еру, зараз же використання таких шифрів може завдати тільки шкоди.


Повернутися наверх
  
 
 Заголовок повідомлення: Re: Проста підстановка
СообщениеДодано: 09 гру 2014, 20:48 
Не в мережі

Повідомлень: 282
Шифр Центробалта(Центральний комітет Балтійского флоту). Жовтень 1917.

Цитата:
20-А
66-Б
44-В
11-Г
74-Д
18-Е
21-Ж
27-З
31-И
39-К
36-Л
37-М
58-Н
59-О
60-Р
78-П
69-С
43-Т
47-У
98-Ф
88-Х
81-Ч
83-Ш
75-Ц
67-Щ
26-Ю
12-Я
19-Ы

--------- - -
ПримѢчаніе:Передъ цифрами давать букву ф
послѢ цифръ давать запятую.

ПримѢчаніе:Въ начале депеши и въ концѢ бук
ва "щ" означаетъ нашу депешу.

Позывные Москвы "МСК" Петрограда "КУП"


Повернутися наверх
  
 
Показати повідомлення за:  Сортувати по:  
Розпочати нову тему Відповісти  [ 9 повідомлень ] 

Часовий пояс: UTC десь + 2 години



cron
Роwеrеd bу рhрВB® аnd Hostinger web hosting