Сучасне шифрування

У цьому пості я спробую простими словами пояснити симетричне та асиметричне шифрування.

шифрування

Давайте одразу перейдемо до проблеми розподілу ключів. Що це проблема? Давайте уявімо, що у нас є повідомлення, яке зашифроване якимось ключем. Нам потрібно передати повідомлення якомусь знайомому, але для того щоб він розшифрував повідомлення йому потрібен ключ. А отже, нам потрібно відправити ще й ключ. Але якщо якась людина перехопить повідомлення і ключ, то вона сама зможе її розшифрувати і вся секретність пропаде. Ось ця проблема передачі ключа називається проблемою розподілу ключів. Раніше вона вирішувалася передачею повідомлення за надійним джерелом, наприклад кур'єром, або при зустрічі відправника та одержувача. Чому б тоді просто не передавати повідомлення за таким же джерелом? Є кілька причин.

1. Зазвичай ключ набагато коротший за повідомлення.

2. Можна заздалегідь передати багато ключів і домовитися, який ключ коли використовувати. (Наприклад, передати по одному ключу на кожен день місяця).

3. Зазвичай у зашифрованих повідомленнях міститься термінова інформація, а, використовуючи ключі, її можна швидко пересилати відкритими каналами зв'язку, які можуть прослуховуватися зловмисниками (наприклад, радіо).

Раніше вважалося, що для шифрування та розшифровки повідомлення необхідно використовувати одні й ті самі ключі, які повинні знаходитись і у відправника та одержувача. Але в минулому столітті людина на прізвище Діффі вигадала, як обійтися без передачі ключів.

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

сучасне

У цьому прикладі ключ від вашого замку завжди знаходився тільки у вас, а ключ друга був у нього. Вітаю, ви надіслали повідомлення без передачі ключів.

Але цей спосіб має маленький мінус. Він абсолютно марний у криптографії. Якщо ви зашифруєте повідомлення яким-небудьскладнимшифром, а потім зашифруєте повідомлення ще раз, то для того, щоб розшифрувати повідомлення, вам спочатку потрібно зняти другий шифр, а потім вже перший, інакше замість повідомлення вийде безглуздий набір символів. Можете уявити, що замість того, щоб повісити другий замок, ваш друг покладе скриньку в ще одну величезну скриньку та заборону її. Але з простими шифрами (наприклад, шифр Віженера або Цезаря, які описані в минулому пості) це працює.

Незважаючи на свою практичну марність, цей шифр дав людям надію, що обійти проблему розподілу ключів можливо, і вже через кілька років та сама людина (Уітфілд Діффі) вигадала криптографію з відкритим ключем.

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

Якщо ж ви захочете надіслати повідомлення другові, то ви знаходите на його сторінці його відкритий ключ і повторюєте те саме.

Якщо для розшифрування та шифрування використовується один і той же ключ, то це називається симетричним шифруванням. А якщо використовуються різні ключі (як у попередньому прикладі), то цеасиметричнешифрування

Проте кілька років усе це було лише теорією, бо ніхто не міг вигадати, як це реалізувати.

Пізніше було створено алгоритм RSA, який є першим криптографічним алгоритмом із відкритим ключем. Незважаючи на те, що він був створений 40 років тому, він досі часто використовується в сучасному світі (у тому ж телеграмі, наприклад). До речі, перші сучасні шифри були створені в Америці в 70-х роках, що дуже лякало і нервувало уряд, так так всі відкриті канали зв'язку прослуховувалися. (з метою запобігання тероризму, звичайно ж)

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

сучасне

PS Я зробив корисну програму для андроїд, ви не будете проти, якщо я про нього розповім?