Как стать автором
Обновить

Делаем всё наоборот или портативный канал для безопасной передачи данных

Время на прочтение4 мин
Количество просмотров14K

Введение


Год назад, когда ещё был в 10 классе, я занялся криптографией. Точнее, как занялся: в школе обязательно требовалось провести исследовательскую работу — вот я и решил исследовать шифр RSA. В связи с недостаточностью знаний для исследования на стойкость, было проведено довольно сомнительное исследование (с точки зрения полезности) на время генерации ключей и шифрования некоторого текста в зависимости от размера ключа на основе собственной реализации алгоритма. Заняв места на нескольких научно-практических конференциях, я почти оставил всю эту область. Чуть было даже код не потерял. Однако пока я писал RSA, начитался всякой всячины про то, как наши данные утекают в «водосточную трубу». И вот эта печальная мысль, провалявшись у меня в голове три месяца, обрела себя в идее нового проекта. Было решено сделать устройство, которое позволило бы сохранять хоть какую-то часть переписки в тайне (ну или хотя бы давало на это надежду)

Планирование и реализация


Как я уже сказал, было решено сделать именно устройство. Почему? Пожалуй, для большинства людей, «живущих» на Хабре, подобные статьи покажутся жёлтой прессой, но всё же. Слухи не берутся из ниоткуда. Поэтому была разработана такая схема:



Вот тут мы и действуем «наоборот». Чаще всего (насколько я имею доступ к этому «чаще») устройство, которое шифрует информацию, стоит на входе/выходе с компьютера, шифруя весь поток информации. Мы же входом выходом делаем именно компьютер.

К сожалению, опыта в разводке плат было '-1', денег на специалистов тоже, помочь особо было некому, поэтому старался выбрать наименьшее из зол существующих. Raspberry Pi показался оптимальным вариантом. Там и Linux и экранчик внешний можно подключить, UART, USB, в общем всё, что могло бы пригодиться. К нему я раздобыл (мне дали) плату расширения DVK511 с двухполосным экраном и джойстиком для полной изоляции ввода/вывода от ПК.

Получилось как-то так:



В качестве одной из основных идей была мобильность такого устройства. Оно не должно было стоить дорого, быть легко переносимым от ПК к ПК, работать с максимальным количеством ОС. Что важнее — никаких собственных каналов. Вливаемся в существующие системы. Тогда было решено сделать так:



В качестве асимметричного шифра я решил использовать уже реализованный мною RSA с длинной ключа в 4096 бит, а симметричным выбрал AES 256 бит как один из самых распространённых (использовалась реализация Open SSL для экономии времени (меня и так пилили все вокруг, что к ЕГЭ не готовлюсь)).

Реализовывать я всё решил на QT — подкупила кросплатформенность.

По части GUI и шифрования, пожалуй, проблем возникло меньше всего. О GUI говорить вообще не стану, с QT реализация простенького GUI — задача на 15 минут. В шифровании — главное аккуратно преобразовать RAW код в чиселки и обратно, чтобы можно было без потерь передавать шифр обычным текстом.

Потом стало хуже. К плюсам платы можно отнести то, что библиотека для С к ней всё же присутствует и даже есть примеры… Пожалуй, для меня на этом они кончились. Оказалось, что джойстик висит на тех же портах, что и экран и использовать их одновременно не получится. Ну, точнее как: после каждого нажатия джойстика приходится закрывать к нему доступ, открывать доступ к дисплею, потом выводить информацию, закрывать доступ к дисплею, активировать джойстик. Соответственно каждая операция требует времени. В общем, если решите сами сделать такое устройство — возьмите другую плату и заранее посмотрите на её распиновку.

И вот самое печальное — передача на ПК. Всё вышеописанное готово, до конференции меньше недели, я радостный бегу за Bluetooth модулем для Raspberry. Купил. Прихожу. И не понимаю… От туда файлы передаются, обратно — нет. Как так? Разобраться так и не вышло. И доступ ставил для всех, и настройки Bluetooth менял. В итоге решение пришло в последний момент. Ну не решение, а костыль. Для того, чтобы всё работало, было решено монтировать часть диска ПК, откуда файлы берутся и забираются.

Полный цикл работы нет смысла выкладывать. Но ввод текста для шифрования выглядит примерно так:



Заключение


Возможно ли гарантировать, что подобное устройство полностью защитит вашу информацию? Не буду лукавить: моё — нет. Однако сама концепция выноса ввода информции на полностью изолированное устройство должна работать.Однако, если вы решите планировать мировой заговор или шифровать переписку с любовницей от жены, работающей в ФСБ, то я бы рекомендовал добавить аппаратный генератор случайных чисел и наслоить поверх одних алгоритмов другие (например, на эллиптических кривых (к примеру, ГОСТ Р 34.10-2012)), что увеличит шанс, что ко всему бэкдоров не найдут. Так же идеально было бы самому вытравить плату.

Ещё одно. Если вы будете успешнее меня с технологией OBEX, то можно научить устройство работать с абсолютно любым другим устройством, на котором есть текстовый редактор. Вы можете просто передавать команды и зашифрованные сообщения текстовыми файлами.

Существуют ли аналоги? Хороший вопрос… Такой же мне задали «высокие» гости, приехавшие на последнюю конференцию, в которой я участвовал. Все мы понимаем, что устройства для защиты информации, несмотря на все принципы Керкгоффса, по большей части остаются засекреченными, однако в свободном доступе подобных устройств найти мне не удалось, о чём я и сообщил, пожаловавшись, что о них мало что известно. В ответ мне сказали, что может и не стоит информацию о подобном хранить в открытом доступе? Но работой вроде заинтересовались, взяли телефон, email. Только вот как-то давно это было, а так никто и не связался.

Я же вообще сторонник того, что право на неприкосновенность личной информации не менее важно, чем право на свободу слова. При написании статьи передо мной встал вопрос: стоит ли публиковать ссылку на исходники? Мне кажется, что любой профессиональный программист может реализовать такое устройство не более чем за 10 длинных зимних вечеров, а тогда зачем ему мой код, который по большей части «чтобы работало». Однако, если кому понадобится, могу расшарить репозиторий: пишите в ЛС.

На данный момент работа отложена в дальний репозиторий в связи с отсутствием средств и недостаточной теоретической подготовкой.
Теги:
Хабы:
+9
Комментарии9

Публикации

Истории

Работа

Ближайшие события