Что не надо подключать к Интернету

Забавная страничка с довольно одиозными примерами. Нашлась панель управления ГЭС, контроль системы кондиционирования воздуха, ещё пара вещей. Но самое забойное, кмк, это лежащая в публичном доступе вебкамера, которая показывает картинку с жетона RSA, используемого для двухфакторной аутентификации. Меня даже не столько безалаберность юзера удивляет, сколько количество приложенных впустую усилий. Ну ладно, не хочешь таскать с собой жетон — не таскай. На любой смартфон можно поставить RSA приложение, обладающее точно такой же функциональностью. И всё, никаких жетонов. А тут человек камеру покупал, затем настраивал, потом подключал к Интернету…

https://www.zdnet.com/pictures/shodan-safari-connected-internet-things/

Крещение огнём

Учу уже несколько месяцев всякую Циску. До этого как-то обходился без этих знаний, ну, не приходилось мне до сих пор управлять VLAN, DMZ, и прочими умными словами.

Позавчера новые знания, мягко говоря, пригодились на всю катушку, когда удачно попавшей молнией вынесло старый брандмауэр 5520 (да, древний). Вподчистую. Хорошо, что новый был уже в стойке, перекинули айпишники, и начали восстанавливать всё заново. Заново — потому что синтакс бекапов конфига 5520 к новой 5525X не подходит от слова “совсем”. Даже правила для NAT-нутых серверов надо по-другому писать, давать разрешения на доступ к ВНУТРЕННЕМУ айпишнику вместо внешнего (непонять, почему так).

Все выходные на работе просидел блин. Научился, конечно, очень многому, но ну его нафиг, так учиться.

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

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

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

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

Дископад

Примерно в 2012-2013 году все начали переходить на твёрдотельные жёсткие диски. И всё поначалу было круто, и скорость работы, и отсутствие шума. Но вот 6 лет спустя этого массового перехода я стал замечать, что практически все твёрдотельные диски, которые я куда-то устанавливал, дохнут с характерным сроком наработки на отказ около 5 лет. И скажу я вам, что на старорежимных накопителях с магнитной технологией записи я такой ерунды не замечал. У меня есть диски заметно старше 5 лет, которые прекрасно работают до сих пор. А такого же возраста SSD-шников, всё ещё в рабочем состоянии — очень немного осталось. Причём, чисто личный опыт говорит, что от марки это практически не зависит. Больше всего я видел дохлых Гнусмасов, но это потому, что мы их больше всего и покупали. Но и Micron/Crucial тоже дохнут. Вот пока Intel и SanDisk’ов дохлых не видал, но думаю, это вопрос времени. Скорее всего, это ограничения самой технологии — на флеш память невозможно записать материал более определённого числа раз. Насколько понимаю, каждый цикл записи чуточку разрушает слой изолятора, который не даёт затвору МОП-транзистора разряжаться. Постепенно он теряет свои изоляционные свойства, заряд начинает стекать, и отличить 2 от 3 (если память у нас MLC/TLC) становится невозможно. SLC в этом отношении живёт заметно дольше, но попробуйте найти в 2018 году хоть один диск вменяемой ёмкости и не за конские деньги, сделанный по этой технологии.

Но вообще всё равно удивительно. Ведь чтобы убить диск размером 256 гигабайт, на него придётся записать 2.44 петабайта информации (256 гиг записать 10 000 раз). Чтобы это успеть сделать за 5 лет, на него надо писать 58 гигабайт в час или почти 17 мегабайт в секунду, безостановочно. Хм… Хотя… Особенно если учитывать то, что на самом деле чтобы записать данные на флеш, ячейку флеша надо предварительно очистить, т.е. мы записываем по-сути, дважды. На большинстве компьютеров очисткой более неиспользуемых ячеек флеш-памяти занимается технология TRIM, в фоновом режиме, иначе производительности кабздец, см. Write Amplification. В-общем, чорт его знает, может быть, вполне возможно.

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

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

Идея не моя, просто я на это насмотрелся досыта, когда компьютерные вирусы препарировал. Технология 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 всем миром не прищемили хвост, никто, ни ФБР, ни ЦРУ ничего сделать с самим вирусом не могли. Так победим. Удачи.

Получил письмо

Все помнят шутку про Страшный Компьютерный Вирус? Ну, там начинающий крякер посылал письмо примерно такого содержания: “На вашем компьютере есть вирус. Я ещё начинающий программист, поэтому нужна ваша помощь. Зайдите в командную строку и наберите format c:”

В каждой шутке, как известно…

Приехало сегодня:

Gоod day.
Dо nоt mind оn my illiteraсy, I аm from Jараn.

I uploаded thе mаliciоus рrоgram on yоur systеm.

Sinсe that momеnt I pilfеred аll рrivy baсkground from your systеm. Additiоnаlly I have somе morе соmpromising еvidenсе. The mоst interеsting evidеncе that I stolе- its а vidеotаpе with yоur masturbаtion. I аdjustеd virus оn a рorn wеb site аnd aftеr you loаded it. Whеn you decidеd with thе vidеo and tapped оn а plаy buttоn, my dеlеteriоus sоft аt оnce sеt up on yоur system. Aftеr adjusting, yоur сamеrа shoоt thе videоtaрe with you self-abusing, in аddition it sаvеd рrecisely the pоrn videо yоu mаsturbatеd on. In next fеw days my mаlwarе сollесted аll your soсiаl аnd work сontacts.

If you desire to eliminate all the evidence- transfer me 200 united state dollar in Bitcoins.
It is my Bitcoin wallet address – 14Sv5Bc3g3MXEY2PkvpPt8VCL2tb9hyuNz
You have 32 h. to go from this moment. As soon as I receive transaction I will erase the evidence permanently. Other way I will send the tape to all your friends.

Круче всего, конечно эта фраза: I adjusted virus on a porn site and after you loaded it.

Интересно, какой язык для этого говнокрякера родной? Думаю, что китайский.

Кстати, кто-то, походу, повёлся на это говно. Все помнят из моего поста про блокчейн, что транзакции для биткоина лежат в открытом доступе?

Вот и поглядим активность этого кошелька: https://blockchain.info/address/14Sv5Bc3g3MXEY2PkvpPt8VCL2tb9hyuNz

4 апреля кто-то ему отправил похожую сумму, 220 долларов (0.0319 BTC). Курс биткоина постоянно прыгает, так что вполне возможно, что тогда биткоин и стоил те самые двести долларов.

Блокчейн

Большинство моих ЖЖ-друзей, наверное, в курсе, что это, и как это работает. Но вдруг кто не знает или не понимает.

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

Если два эксперта проведут дактилоскопирование одного и того же человека, они получат (во всяком случае, должны) одинаковый результат. Так и с компьютерами — если два человека будут использовать один и тот же алгоритм хеширования на одном и том же наборе данных, они должны получить один и тот же хеш. То-есть, если у тебя есть кусок текста, и у меня есть кусок текста, мы его хешируем одним и тем же алгоритмом, и у нас получается одинаковый хеш — это значит, что куски текста, которые мы анализировали, 100% идентичны (1).

Теперь построим свой собственный примитивный блокчейн. Блокчейн — это block chain, т.е. цепь из блоков. Каждым блоком внутри нашей цепи будут 5 кусков текста, разделённых запятыми: хеш предыдущего блока, три куска “полезной нагрузки”, и хеш для этого блока. Хранить в блокчейне можно любые данные, но допустим у нас будет хранится информация о финансовых транзакциях. Использовать будем алгоритм хеширования MD5 (2)

Построим первый блок. Так как это начальный блок в цепи блоков, у него не может быть хеша предыдущего блока. Ну и плевать, придумаем свой. abcdefghijklmopqrstuvwxyz1234567 — вполне сгодится. Далее указываем транзакцию, кто кому заплатил, и сколько: Маша,Олег,5 рублей. И хешируем всё это вместе:

md5sum <<< "abcdefghijklmopqrstuvwxyz1234567,Маша,Олег,5 рублей", получаем хеш a61d142c8be7fac8b41da05d11c9f76e.

Всё, вот первый блок в нашем блокчейне:

abcdefghijklmopqrstuvwxyz1234567,Маша,Олег,5 рублей,a61d142c8be7fac8b41da05d11c9f76e

Строим второй блок, где Серёжа заплатил Тане 3 рубля:

md5sum <<< "a61d142c8be7fac8b41da05d11c9f76e,Серёжа,Таня,3 рубля", получаем хеш 20e22c43963d6ee9bbc71d65c4251492, и, соответственно, блок:

a61d142c8be7fac8b41da05d11c9f76e,Серёжа,Таня,3 рубля,20e22c43963d6ee9bbc71d65c4251492

И теперь наш блокчейн выглядит так:

abcdefghijklmopqrstuvwxyz1234567,Маша,Олег,5 рублей,a61d142c8be7fac8b41da05d11c9f76e
a61d142c8be7fac8b41da05d11c9f76e,Серёжа,Таня,3 рубля,20e22c43963d6ee9bbc71d65c4251492

Ну, и так далее, блоков можно добавлять до окончания места на жёстком диске.

Чем это круто? Тем, что блокчейн лежит в свободном доступе, и ЛЮБОЙ человек, взяв этот блокчейн, может собственноручно перевычислить все хеши и проверить все записи: если хеши совпадают, значит, информации можно доверять. Именно этим и занимаются майнеры — они перепроверяют транзакции для криптовалют, то-есть, обеспечивают функционирование платёжной системы, за что им отстёгивают денег.

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

1. 100% гарантии, разумеется, быть не может, но если алгоритм шифрования нормальный и не имеет коллизий (это когда два разных набора данных дают один и тот же хеш), то вероятность совпадения будет примерно 1/количество возможных хешей, т.е. для хеша длиной 128 бит это 2.94E-39, или пренебрежительно мало. Для хеша длиной 512 бит это вообще число со 150+ символами после десятичной точки.
2. Алгоритм хеширования MD5 достаточно хреновый по современным меркам, и имеет коллизии. Правда, для реально читаемого человеком текста можно пренебречь — все существующие примеры коллизий это хеши специально сгенерированных двоичных данных. Но в реально рабочих приложениях, тем не менее, рекомендуется использовать более коллизионноустойчивые алгоритмы, типа SHA-256 (используется в блокчейне для биткоина) или SHA-3.

PowerPC? DEC Alpha?

Пишут, что Эппл собирается отказываться от Интеловских x86/x64 процессоров в своих ноутбуках. В принципе, Эппл и до x86 прекрасно себе жил с RISC-процессорами IBM PowerPC. И Microsoft особо в ус не дула — Windows NT 4.0 прекрасно фурыкал как на Интеле, так и на DEC Alpha, и на PowerPC. Но так как x86 захватывал всё большую и большую часть рынка, постепенно софтописатели сфокусировали свои усилия на поддержке именно этой платформы, и к середине 2000х годов архитектура x86 стала практически монополистом, за исключением рынка эмбедщиков и прочих специализированных приложений.

А тем временем самым популярным пользовательским процессором постепенно становится тоже RISC-процессор ARM. Именно эта архитектура стоит в смартфонах, планшетах, “умных” телевизорах, и т.д. И эволюционирует эта платформа семимильными шагами — четырёхядерным процессором в телефоне уже никого не убедишь, а Эппловский A11 по производительности не сильно хуже i7! Поэтому рискну предположить, что заменой Интелу будет именно следующее поколение ARM, A12/A13. И переделывать практически ничего не придётся, уже все решения отточены.

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

Настройка 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