Сам себе Телеграм

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

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

У вас обоих стоит Линукс с установленным пакетом OpenSSL. Дальше чисто дело техники, и примерно всё то же самое делает и сам мессенжер Телеграм, просто сама работа алгоритмов от тебя скрыта. Эдакий Протокол Диффи — Хеллмана, только в полностью ручном режиме.

Твой собеседник должен:

Создать пару публичных/приватных RSA ключей:
openssl genpkey -algorithm RSA -out private.key.pem -pkeyopt rsa_keygen_bits:4096

Вытащить публичный ключ и записать его в файл:
openssl rsa -pubout -in private.key.pem -out public.key.pem

Прислать содержимое public.key.pem (оно текстовое) тебе, например, обычной почтой (*). Разглашение публичного ключа никому ничего не даёт — для дешифровки нужна его приватная часть.

Теперь тебе нужно зашифровать данные этим его присланным публичным ключом.

Сходу зашифровать несимметричным алгоритмом RSA большой файл, не разбивая его на мелкие куски невозможно, команда
openssl rsautl -encrypt -inkey public.key.pem -pubin -in poutine.jpeg -out poutine.jpeg.enc
выдаёт ошибку о том, что размер данных слишком большой для данного ключа длиной 4096 бит. Но всё, что меньше 4096 – 11 бит, зашифровать можно. Поэтому делают так: создают ключ для симметричного шифрования, например, AES или Twofish — это уж кому что милее — им кодируют файл, а уже сам ключ несимметрично шифруют публичным ключом, и передают его собеседнику в кодированном виде вместе с данными.

Делаем случайный ключ для симметричного шифрования:
openssl rand 256 -out symm.key

Шифруем фотографию путина алгоритмом AES256 с этим ключом:
openssl enc -aes-256-cbc -salt -in poutine.jpeg -out poutine.jpeg.enc -pass file:./symm.key

Шифруем сам ключ алгоритмом RSA:
openssl rsautl -encrypt -inkey public.key.pem -pubin -in symm.key -out symm.key.enc

Теперь у нас есть два шифрованных файла, в одном данные, шифрованные AES256, в другом — шифрованный ключ к AES256.

Чтобы послать это по обычной почте, переведём все бинарники в текст кодировкой Base64.

cat poutine.jpeg.enc | base64
cat symm.key.enc | base64

Текст присылаем нашему собеседнику.

Фсе. Теперь ни одна живая душа, без владения приватным ключом, не сможет ничего прочитать. И всё делается элементарно, на коленке. В-общем, “террористам”, которых якобы гоняет Роскомгестапо, блокировка Телеги не преграда совершенно. Ну, а страдают, как обычно, непричастные.

PS: Единственный способ передать государству ключи для дешифровки сообщений — это на этапе генерации у клиента несимметричных ключей сливать приватную часть “кому надо”. Т.е. это надо спецом встраивать такую функцию в клиента. А клиент Телеги — опаньки — опенсорсный. Вставка подобной функциональности будет мгновенно засечена.

Поэтому сам запрос на получение ключей — нелеп и смехотворен. Я могу отдать только то, что у меня есть.

PPS: Нынче модно ненавидеть Роскомгестапо за то, что они делают. А меж тем претензия не по адресу. Кто создал Роскомгестапо? Кто принял законы, по которым он работает? Кто подписал эти законы? И кто, вообще, выбрал всех этих людей?

* В реальных применениях публичный ключ ещё дополнительно подписывается центром сертификации, которому доверяют оба участника — иначе сообщения возможно перехватить, и ключи подменить, устроив атаку типа “Человек посередине”.

Mirrored from Лабораторный Журнал №6.

Как ты будешь сообщать пароль собеседнику?
хе-хе. Ты только что сделал то же самое. Ну примерно. Те чтобы послать файл из пункта А в пункт Б нужно чтобы в пункте Б сгенерировали private-public ключи и public (достаточный для зашифровки only) послали в пункт А хоть емейлом, хоть голубем .
После чего задача сообщения пароля исчезает. Остается просто автоматизировать процесс. Чтобы робот в пункте А сообщал по запросу новый публичный пароль и помнил его у себя в базе вместе с частным паролем для последующей расшифровки.
Я про то, что одним запароленным раром тут не обойтись, надо ещё дополнительные телодвижения делать (мутить ассиметричное шифрование, например).

Хороший пролог к разговору о том что такое distributed identifier and blockchain :)

у меня сильное осчусчение, что в роскомнадзоре сидят попросту не шибко компетентные граждане, которые решили показать кузькину мать какому-то там сраному дурову
но не учли разницу в скилле
Это да.

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

Я вот тут смотрел должности в институте, где всю жизнь проработала моя бабушка. НИИ занимался разработкой радаров в своё время.

Ну там, научный сотрудник требовался, с опытом, со всем. Ага. На зарплату в 50 000 рублей. Это в Москве.

На 50 000 в Москве не проживёшь, нет. Если только с мамой в одной квартире жить =) А семью растить на эти деньги невозможно. Аренда квартиры в одно рыло столько съест.
вот-вот
какая-то, прямо скажем, шизофрения - с одной стороны, громкие заявления про необходимость подьема отечественной научно-технической базы, с другой - вот такое отношение