Найти в Дзене
Nick One Cheating

Как шифровать пин-коды? Основные методы шифрования

Оглавление

Итак, сразу к делу

В прошлой статье речь зашла о том, как безопасно и надежно хранить пин-коды от банковских карт, не опасаясь за сохранность собственных средств

Итогом статьи стало то, что прежде чем записывать вашу конфиденциальную информацию, ее нужно зашифровать. О том, как это делать, какие бывают методы шифрования/дешифрования и пойдет речь в данной публикации

На написание данной серии статей меня вдохновил фильм "Престиж" Кристофера Нолана 2006 года. Главный герой в нем шифрует свой дневник с секретами своих фокусов при помощи кодового слова TESLA. Мне стало интересно, как он это делает и это послужило поводом подробно изучить данную тему

Основная суть шифрования

Бытует мнение, что шифрование - это нечто очень сложное и непонятное

На самом деле, это очень просто

В качестве примера рассмотрим шифрование только цифр. В этом случае "алфавит" состоит из 10 арабских цифр от 0 до 9

1 2 3 4 5 6 7 8 9 0 - исходный "алфавит"

Придумаем некоторый шифр:

8 6 9 0 1 2 3 4 5 7 - шифрованный "алфавит"

Теперь нужно читать эту таблицу сверху вниз:

Цифра 1 теперь шифруется цифрой 8, 2 - 6, 3 - 9 и так далее. То есть каждой цифре в соответствие однозначно ставится другая цифра

Таким образом, пин-код 9171 будет иметь шифр 5838

Для дешифрования нужно читать таблицу наоборот, снизу вверх:

Тогда 5838 переходит в 9171

Подытожим: для шифрования/дешифрования необходимо составить таблицу, в которой первой строкой запишется исходный алфавит, а второй строкой - шифрованный алфавит. Далее процесс шифрования происходит сверху вниз, а дешифрования - снизу вверх

Теперь главный вопрос - а как составить шифрованный алфавит? Каким алгоритмом/логикой пользоваться для создания своего уникального шифра? Рассмотрим самые распространенные методы

Атбаш

Самый простой метод, который заключается в зеркальной замене алфавита:

1 2 3 4 5 6 7 8 9 0 - исходный алфавит
0 9 8 7 6 5 4 3 2 1 - шифрованный алфавит

Шифр Цезаря

Достаточно простой способ, заключающийся в сдвиге алфавита на некоторое фиксированное число символов. Сам Цезарь использовал сдвиг на 3 символа

1 2 3 4 5 6 7 8 9 0 - исходный алфавит
4 5 6 7 8 9 0 1 2 3 - шифрованный алфавит

Два представленных шифра очень просты для использования, то также и очень просты для взлома: атбаш взламывается с 1 попытки, шифр Цезаря - достаточно 9

Для целей шифрования пин-кодов это не особо важно, поскольку перебор пин-кодов можно банально привести с блокировке карты банкоматом. Однако, если хочется использовать более надежный шифр, то стоит попробовать метод простой замены

Простая замена

В данном методе необходимо придумать свое уникальное кодовое слово, на основе которого и будет происходить шифрование

Поскольку в наших примерах мы используем арабские цифры, то и кодовое слово должно состоять только из арабских цифр (длина кодового слова не играет роли). Важный нюанс - цифры не должны повторяться

Например, кодовое слово 70152 подойдет для шифра, в то время как 701052 уже нет, поскольку цифра 0 встречается здесь дважды

Хорошо, пускай мы выбрали кодовое слово 70152, которое будем всегда помнить наизусть - как тогда составить шифрованный алфавит?

Правило построения очень простое - нужно сначала выписать кодовое слово, а затем написать все оставшиеся цифры в порядке возрастания. В нашем случае это цифры 3, 4, 6, 8, 9

1 2 3 4 5 6 7 8 9 0 - исходный алфавит
7 0 1 5 2 3 4 6 8 9 - шифрованный алфавит

Важный нюанс - чтобы составить шифр таким образом, чтобы все цифры "перемешались", нужно в кодовое слово включить хотя бы 1 цифру из последних в алфавите

Чтобы продемонстрировать это факт попробуем использовать кодовое слово 431:

1 2 3 4 5 6 7 8 9 0 - исходный алфавит
4 3 1 2 5 6 7 8 9 0 - шифрованный алфавит

Как мы видим, только первые 4 цифры стали шифроваться другими символами, а цифры с 5 до 0 остались неизменными - такой шифр будет очень слабым

О том, как эти методы шифрования обобщить на шифрование текста, в чем их достоинства и уязвимости, и какими способами можно взломать простые шифры читайте в будущих публикациях. Всем спасибо за прочтение