Блокчейн

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

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

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

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

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