Современные навыки хакеров превосходят все и вся. Вирусы в картинках, взломы баз данных пользователей, прозвоны, фишинг, ботнеты, программы - вымогатели и многое другое.
Наша цель заключается в том, чтобы достичь безопасного хранения данных на вашем компьютере или телефоне. Наверняка вы слышали, что пароли не стоит хранить в телефоне или в компьютере, так как в том случае, если злоумышленники получат доступ к вашим устройствам, то они спокойно смогут войти в ваше соц. сети, а если у вас еще и ко всем аккаунтам на разных платформах одинаковые пароли, то тут даже без комментариев о том, что может быть..
Перейдем к сути.
Существует много способ для безопасного хранения и передачи информации.
Их можно разделить на две категории:
1) криптография
2) стеганография
Каждая из этих категорий имеет подкатегории:
1.1 симметричное шифрование
1.2 асимметричное шифрование
1.3 хеширование (одностороннее шифрование без возможности дешифрования. Эта подкатегория нам не подходит)
1.4 гибридное шифрование
2.1 классическая стеганография
2.2 компьютерная стеганография
2.3 цифровоя стеганография
Данные подкатегории делятся еще на подкатегории, но это уже тема для отдельной статьи.
Сегодня мы будем разбирать раздел криптографии и асимметричное шифрование.
Раскрытие категории:
Криптография - наука изучающая методы шифрования информации и их использование.
Асимметричное шифрование (RSA - Rivest, Shamir, Adleman) - шифрование данных с помощью двух ключей, один из которых - открытый, а другой - закрытый.
Весь процесс шифрования и дешифрования происходит на основе математических формул и чисел. Пугаться не нужно, ничего сложно в этом нет.
Алгоритм:
1) Генерация двух простых чисел p и q.
2) Вычисление значения n, где n = pq.
3) Вычисление функции Эйлера. F = (p-1)(q-1).
4) Генерация экспоненты e, являющийся взаимно простым с F. (Наибольший общий делитель двух чисел равен 1)
5) Вычисление значения d, такое что (d*e) % F = 1. (% - остаток от деления)
Совокупность e и n является открытым ключом, а совокупность d и n – закрытым ключом.
Для шифрования информации необходимо преобразовать символы в числа удобным вам способом. Можно воспользоваться таблицей символов ASCII (смотреть скришот ниже) и использовать числовые значения для букв в столбике "DEC". Более простым способом является создание своих числовых значений для букв(A-1, B-2, C-3 и т. д.)
После преобразование всех символов в числовые значения начинаем их шифровать с помощью алгоритма написанного выше.
*Для удобства, числовое значение каждой буквы можно раделять точкой. *
Для шифрования сообщения:C = m**e%n
Для дешифрования сообщения:m = C**d%n
m - числовое значение символа
Пример:
Возьмём слово "шифр".
Алфавит: ш-12; и-18; ф-23; р-54
p = 3
q = 5
n = 3 * 5 = 15
F = (3-1) * (5-1) = 8
e = 7 (*gcd(7, 8) = 1)
d = 7 ((7*7) % 8 = 1)
*gcd - функция проверки того, что два числа являются взаимно простыми
Процесс шифрования:
Шифруем каждое числовое значение символа:
12 -> 12^7%15 = 3
18 -> 18^7%15 = 12
23 -> 23^7%15 = 2
54 -> 54^7%15 = 9
Зашифрованное сообщение: 3.12.2.9
Процесс дешифрования:
Дешифруем зашифрованные числовые значения букв:
3 -> 3^7%15 = 12
12 -> 12^7%15 = 18
2 -> 2^7%15 = 23
9 -> 9^7%15 = 9
Сопоставляем буквы в соответствии с кодами из алфавита (ш-12; и-18; ф-23; р-54) и получаем слово "шифр"
Важно соблюдать порядок зашифрованных кодов букв, иначе при дешифровке сообщение будет просто набор символов.
Уже занимаюсь разработкой по внедрению данного алгоритма в телеграмм бота, который будет в абсолютно открытом доступе.