Блокчейн

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

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

Если два эксперта проведут дактилоскопирование одного и того же человека, они получат (во всяком случае, должны) одинаковый результат. Так и с компьютерами — если два человека будут использовать один и тот же алгоритм хеширования на одном и том же наборе данных, они должны получить один и тот же хеш. То-есть, если у тебя есть кусок текста, и у меня есть кусок текста, мы его хешируем одним и тем же алгоритмом, и у нас получается одинаковый хеш — это значит, что куски текста, которые мы анализировали, 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

Отдал часы мужику

В продолжение истории.

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

Выяснилось до предела тупое — к нему залезли в дом в то время, когда он с семьёй был в Мексике. Украли часы и 800 долларов. Видимо, воры были не полными кретинами, так что часы выкинули. Не полными кретинами — потому что для того, чтобы использовать часы, их надо регистрировать с Apple ID. По запросу суда Apple мгновенно выдаст по серийному номеру всю инфу насчёт гражданина, зарегистрировавшего краденый продукт. Так что эппловские продукты красть бесполезно, разве только если ты спецом не хочешь навести на себя ментов.

И залезли к нему тоже по-тупому, так как он в фейсбуке разместил фотографию из Мексики — “заходите, дорогие воры, нас дома нет”. Народ в массе, всё же идиоты, не понимают, что излишняя разговорчивость в соцсетях может довести до цугундера.

До кучи выяснилось, что мужик является молодёжным пастором. Возможно, кто-то из паствы знали о том, что он уезжает и вольно или невольно выступили в роли наводчиков, а может, и самих воров.