Криптвоюматика 2.0 | страница 11
Есть много способов это сделать, начиная с простых, — которые легко обойти. Например, пересчитать все буквы в сообщении и потом проверить это количество. Если цифра не сходится, то сообщение было изменено какими-то злодеями, либо не дошло до нас целиком. Но этот метод легко обходится, если злоумышленник знает, какого рода проверку мы будем применять.
Простейший пример такой антиподделочной проверки находится в бланке ОСАГО об аварии. Там внизу нужно отметить, сколько квадратиков заполнены галочками (типа «я выезжал со стоянки», «я стоял на светофоре»). Это чтоб кто-то после получения подписанной копии не натыкал новых, нужных ему вариантов происшествия. Но криптографическая проверка или, иначе говоря, «хэш», гораздо круче. В нашем (примитивном) варианте при перестановке букв в сообщении контрольная сумма не изменится. А в правильно сделанном хэше при малейшем изменении сразу понятно: это не оригинал. При этом сам «хэш» занимает одну строчку даже для очень больших файлов или документов[13].
У хэша есть одно очевидное свойство: он односторонний. То есть по хэшу невозможно подобрать изначальное сообщение (только перебором всех вариантов — так и работает майнинг; но об этом позже). Да, у некоторых типов хэшей была такая проблема, что у разных сообщений мог получиться одинаковый хэш, но сейчас это либо уже решено, либо не играет особой роли. Главное — вы поняли, что эта функция работает только в одну сторону.
Теперь к самому блокчейну. Как использовать подписи и хэши? Представим себе одноклассников, которые хотят завести виртуальную валюту. Они ведут запись на школьной доске: сколько у кого было монет и кто кому сколько отправил, ставят подписи для подтверждения сделок, и все эту доску видят. Потом приходит учитель и говорит: «Вы тут совсем распоясались, поди уже и клей друг другу толкаете втихаря». Стирает все записи мокрой тряпкой и насаждает веру в светлое будущее.
Ученикам такая херня не нравится. Им нужна своя валюта, и так, чтобы с доски никто не мог ничего стереть. И на одной общей бумажке тоже писать нельзя — тот, у кого она находится, может там наисправлять всего. Поэтому у каждого бумажка будет своя, но у всех одинаковая. На перемене все сверяют записи и добавляют новые — кто кому сколько передал и сколько теперь монет у каждого.
Как понять, хватает ли у Васи денег на передачу Маше? Надо перечитать весь журнал, и станет понятно: вот 10 монет Вася получил от Пети на прошлой неделе, а 40 ему вчера перечислил Олег. После этого сделок не было, поэтому вписываем в журнал новую строчку: «забрать 50 монет у Васи и добавить 50 монет Маше», заверяем васиной подписью и дописываем хэш. Да, проверять всё — это долго, но у каждого же есть компьютер! Он сразу поймёт, если подпись не та или история неправильная. Испорченную сделку он в журнал записывать не станет, а просто выкинет как фальшивую.