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

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

Предположим, надо тебе секретно отправить фотографию чего-нибудь другу. Я взял фотографию путина. Нет, не того Путина, который Владимир Владимирович, а путина, который национальное канадское хрючево. Но не суть. Передать таким образом можно что угодно, хоть диаграммы подрыва Кремля. Ну да, можно использовать всякие там запароленные 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: Нынче модно ненавидеть Роскомгестапо за то, что они делают. А меж тем претензия не по адресу. Кто создал Роскомгестапо? Кто принял законы, по которым он работает? Кто подписал эти законы? И кто, вообще, выбрал всех этих людей?

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

Строительство усилителей

Припадаю опять к тихим хобби, типа электроники. В очередной раз интересуюсь звуковыми схемами, в том числе усилителями. Если раньше меня больше интересовало изготовление схем вообще (и тот самый предусилитель для микрофона я таки собрал, и он прослужил мне верой и правдой много лет) и овладевание общей теорией, в этот раз меня интересует изготовление схем КАЧЕСТВЕННЫХ. В понятие качества вкладывается понятно какой смысл — низкие параметры КНИ. Ну, хотя бы ниже 0.5% получить бы для начала.

Так вот, что архиудобно, так это бесплатная программа LTSpice. Помимо того, что в ней можно нарисовать саму схему, её можно просимулировать, и анализировать полученное через обратное преобразование Фурье, рассчитав КНИ и показав наглядно гармоники.

Симулируется, понятное дело, теоретический максимум. Реальные компоненты хуже виртуальных. Но это и полезно — чтобы понять, чего можно выжать из схемы в теории.

Вот та самая схема предусилителя, что я спаял ранее, по сути своей оказалась говном. Вот она:

Это рабоче-крестьянский усилитель с общим эмиттером плюс эмиттерный повторитель. Ну, любую книжку по электронике можно раскрыть, и там эта схема будет.

Так вот если её просимулировать, подав на вход сигнал 1 килогерц, то FFT полученного сигнала выглядит довольно порнографично:

Этих вот иголок на 2, 3, 4 и далее килогерц (гармоник) быть не должно в хорошем усилителе.

Если добавить SPICE-директиву .four, LTSpice любезно посчитает КНИ. И цифры отражают, в-общем, то, что видно на картинке:

КНИ аж три процента с гаком, почти как у лучших ламповых усилителей =)) Шучу, конечно, но вообще-то факты действительно таковы, что КНИ 0.5% является для ламповой техники очень хорошим показателем, а уж КНИ 0.08%, до которого транзисторная техника дошла ещё в 1970х, как, например, в усилителе Техникс SE-9600, для ламповой техники остаётся недостижимой вершиной. Нет, ну, достижимой, конечно. Но за очень конские деньги. В недорогой советской ламповой технике КНИ в 3% был обычным делом. Слушать это, тем не менее, было можно, так как характер искажений у ламповой техники обычно немного другой, не такой заметный.

Однако, вернёмся к тупому усилителю. Почему данная схема искажает? В первую очередь из-за нелинейности транзистора Q1. Дело в том, что у транзистора есть собственное сопротивление, и оно составляет примерно 25 / Ic в миллиамперах. Т.е. если ток в цепи коллектора (Ic) составляет 1 миллиампер, сопротивление транзистора будет равно 25 омам. С возрастанием тока оно падает, с уменьшением — растёт. Таким образом, коэффициент усиления транзистора получается разным просто на усилении банальной синусоиды: в тот момент, когда синусоида проходит через ноль, коэффициент усиления минимален, а на гребне синусоиды — максимален. Получается ерунда. Именно поэтому в книжках по электронике говорят “не делайте схему с заземлённым эмиттером”, потому что это переменное сопротивление таким образом становится наиболее заметным. С данным эффектом можно бороться, вкрячив в цепь эмиттера резистор, сравнительно большой по сравнению с внутренним сопротивлением транзистора. Ну, как на схеме, собственно, и сделано. Является ли при этом такая схема отрицательной обратной связью или мы просто исправляем одну кривизну другой кривизной — мнения расходятся. Горовиц-Хилл говорят, что да, это таки отрицательная обратная связь. Но в любом случае, помогает это не сильно.

В-общем, схему надо будет доработать, до полноценной схемы с отрицательной обратной связью. В результате я бы хотел сделать усилитель для наушников. Это проще, так как усилитель не надо делать очень мощным, 1 ватт для наушников — это OVERДОХРЕНА. И такое у меня подозрение, что скорее всего саму усилительную часть я сделаю на банальном операционнике Бурр-Браун, а выходной каскад — классический тяни-толкай на парах инженера Шиклаи.

Про блокировку Телеги

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

Идея не моя, просто я на это насмотрелся досыта, когда компьютерные вирусы препарировал. Технология DGA (domain generation algorithm).

При запуске программа сначала пытается идти на свои основные серверы. ОК, допустим Роскомгестапо уже подсуетилось, и заблокировало их. Не проблема, вот у нас, например, сегодня 16 апреля 2018 года. Соответственно, идём на 2018Apr16.com, который вчера был предусмотрительно зарегистрирован владельцами мессенжера. Завтра пойдём на 2018Apr17.com и так далее. Это и есть алгоритм. Роскомгестапе придётся каждый день отрывать зад от стула и блокировать всё новые и новые серверы.

Конечно, вышеописанный пример очень примитивен и алгоритм быстро вычисляется. В реальности алгоритмы намного более сложные, и имена доменов намного более обскурны. Вот, например, такие доменные имена использовал шифровальщик Locky:

bkadufmdyf[.pm]
kpvoxwgf[.pm]
fysck[.fr]
hsasjielgfkneh[.ru]
qquvjijtvatj[.in]
edmgbqygn[.de]
nbavfpb[.uk]
wyusb[.yt]

В нём, правда, алгоритм генерации доменов тоже не фонтан. Но в Телеге сидят настоящие программисты, которые умеют в криптографию, я верю, что они смогут придумать такой алгоритм, который не смогут раскусить интернет-гестаповцы. Потом, кто сказал, что надо генерировать ОДНО доменное имя? А двести тысяч ежедневно — не хотите? (абсолютно реальный случай, вирус GameOver Zeus). Особенно учитывая, что на данный момент процедура блокировки работает в полностью ручном режиме, блокировать 200 000 доменов лапками, да ещё ежедневно… как говорится, это пишется с мягким знаком. Пока владельцу ботнета Zeus всем миром не прищемили хвост, никто, ни ФБР, ни ЦРУ ничего сделать с самим вирусом не могли. Так победим. Удачи.

Обленился

Со временем просто тотальный кирдык. У меня максимум есть два-три часа вечером, чтобы чего-то поделать, какие-то хобби, если ничего по дому не надо делать. Так как дети спят, железо в подвале не попилишь. С этой стороны очень хороши хобби тихие — например, электроника. Поэтому время, потраченное на всё прочее, как-то хочется подсократить.

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

Но гриль надо разжигать, прогревать, и т.д. Когда приходишь с работы, и у тебя есть тридцать минут на то, чтобы всё приготовить, с грилем возиться и не хочется и времени нет. Поэтому в последнее время я жарю бифштексы не на гриле, а на чугунном ребристом гридле, поставленном на газовую плитку. Разумеется, на улице — ибо всё это серьёзно дымит. А плитка у меня туристическая, портативная на пропане. Это только так кажется, что небольшая туристическая плитка маломощная. Пропан вообще херачит значительно убедительнее природного газа (метана), там энергии почти в три раза больше при том же объёме (для химиков — на моль). Ещё убедительнее фигачит бутан или керосин в примусе. Короче, плитка греет — моё почтение.

Вот так всё это выглядит во время готовки:

Бифштексы получаются прекрасно. Вот так вот сходу по вкусу отличить такой бифштекс от бифштекса, приготовленного на угольном гриле лично мне было бы непросто. Самое главное не бздеть хорошенько прогреть гридль. Когда вытопленный из бифштекса жЫр периодически загорается, как на картинке — это правильная температура.

Цисководу на заметку

Настройка SSH аутентификации в коммутаторы и маршрутизаторы Cisco по RADIUS:

http://www.ipbalance.com/security/radius/1165-windows-server-2012-as-radius-for-cisco-router-a-switch.html

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

PS: Статья про IOS, конфигурация RADIUS на NX-OS в новых свитчах немного другая, см. соотв. документ:

https://www.cisco.com/c/en/us/td/docs/switches/datacenter/nexus9000/sw/6-x/security/configuration/guide/b_Cisco_Nexus_9000_Series_NX-OS_Security_Configuration_Guide.html

Плотничиха

Нашёл очень неплохой канал на ютубе, который ведёт чернокожая лесбиянка Лиа. Но понравился мне канал, разумеется, не за это. А за то, что она объясняет простым и понятным языком азы строительного мастерства.

Вот, например, как правильно устанавливать плинтусы. Углы в доме никогда не равны точно 90 градусам, поэтому стандартный рез плинтусов под 45 градусов в большинстве случаев не работает. Нет, ну он работает, но потом в большинстве случаев приходится щель замазывать и красить. Есть способ лучше, с лобзиком.

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