Dry soft hash что это
Взлом «посоленных» хешей
Безопасность веб-приложений: Что можно, а что нельзя делать при шифровании с использованием соли.
Безопасность веб-приложений: Что можно, а что нельзя делать при шифровании с использованием соли
Обзор:
Вопрос безопасности баз данных стал более насущным по мере того, как базы данных становились более открытыми. Шифрование является одним из пяти основных факторов безопасности данных.
Небезопасной практикой является хранение такой важной информации, как пароль, номер кредитной карты в базе данных в незашифрованном виде. Эта статья охватывает различные возможности шифрования.
Даже в если вы зашифровали вашу информацию, это совершенно не значит, что она находится в полной безопасности. В этой статье рассматриваются действия со стороны злоумышленника.
Соль (Криптография)
http://en.wikipedia.org/wiki/Salt_(cryptography)
Предположим, что украден хешированный пароль пользователя. Известно, что пароль является одним из 200,000 английских слов. Система использует 32-х битную соль. «Посоленный» ключ – это оригинальный пароль, добавленный к произвольной 32-х битной соли. Из-за соли посчитанные хеши злоумышленника не подойдут (не удастся использовать радужные таблицы). Злоумышленник должен посчитать хеш каждого слова с каждым из 232 (4,294,967,296) возможных вариантов соли, добавленных к паролю, до тех пор, пока не будет получено совпадение. Общее число возможных комбинаций может быть получено умножением количества слов в словаре на количество возможных вариантов соли:
2^ <32>\умножить на 200 000 = 8.58993459 \умножить на 10^ <14>
Для завершения брут-форс атаки злоумышленник должен перебрать почти 900 триллионов хешей, вместо всего-лишь 200,000. Даже если пароль сам по себе достаточно прост, соль делает взлом паролей достаточно сложной операцией.
Соль должна быть неизвестной. Если злоумышленник знает, какая используется соль, он сразу может перейти к первому шагу. Ниже приведены несколько возможных способов взлома «посоленных» хешей.
Приложения, не использующие хеши:
Во время изучения веб-приложения я дошел до этого места программы. Программа использовала javascript для шифрования пароля пользователя перед отправкой. В качестве соли использовался текущий ID сессии.
На сервере программа не сможет проверить значение пароля по причине использования соли и случайного ID сессии. И поскольку MD5 является нереверсивной хеш-функцией, пароль не сможет быть проверен до тех пор, пока пароли хранятся в виде текста в базе данных.
В качестве соли для шифрования пароля перед отправкой используется случайно сгенерированный ID сессии. Это значит, что серверные базы данных не будут зашифрованы.
Иногда такого рода программы выдают много информации.
Пункт №1: Всегда шифруйте вашу базу данных паролей.
Для того, чтобы использовать все эти виды атак, вы должны знать, при помощи какого алгоритма был посчитан хеш.
Что можно сделать, чтобы выяснить используемый алгоритм хеширования??
Ответ: Все алгоритмы генерируют хеш фиксированной длины. Поэтому на основании выходного значения вы можете прикинуть, какой алгоритм использовался☺. “Все это – достаточно известные факты”, но по-прежнему я помещаю их здесь.
Для этого я размещу небольшую таблицу для выявления хеш-функций на основе их выходного значения
Функция: md5(“входные данные”); Hash(“входные данные”); Вывод: 32 Символа Пример: “5f4dcc3b5aa765d61d8327d eb882cf99”
Функция: System.Security.Cryptogr aphy Вывод: 32 Символа Пример: “5f4dcc3b5aa765d61d8327d eb882cf99”
Функция:java.secur ity.MessageDigest Вывод: 32 Символа Пример: “5f4dcc3b5aa765d61d 8327deb882cf99”
Функция: Crypt() По-умолчанию DES вывод: 13 Символов Пример: “sih2hDu1acVcA”
Определения типов хэшей при помощи скрипта hash-Identifier для расшифровки паролей
Когда вы имеете дело с неизвестным хэшем, первый шаг – корректная идентификация типа.
Определения типов хэшей при помощи скрипта hash-Identifier для расшифровки паролей
Хэши обычно используются для хранения конфиденциальной информации, как, например, учетных записей, которые не должны находиться в открытом виде. При помощи утилит наподобие Hashcat мы можем взломать эти хэши однако только в случае, если знаем алгоритм генерации. Используя инструменты навроде скрипта hash-identifier, можно легко определить тип любых хэшей, чтобы затем указать правильный режим при работе с Hashcat.
Помимо взлома хэшей hash-identifier также полезен для идентификации алгоритма, используемого при выдаче контрольной суммы для загрузки файлов. Кроме того, этот скрипт помогает определить, к какому приложению относится хэшированный файл или значение (например, SQL базе или какому-либо другому формату, специфичному для конкретного поставщика).
Что такое хэш и как расшифровать пароль?
Как было сказано ранее, пароли, извлекаемые из базы данных или компьютера, обычно хранятся в виде хэшей, а не в открытом виде. Функция хэширования преобразует пароли в хаотичный набор символов и чисел, которые не должны быть обратимы обратно в пароль.
Однако два или более одинаковых пароля, при использовании одной и той же функции, будут иметь один и тот же хэш. Соответственно, при помощи этой функции можно получить набор хэшей для списка паролей, а затем использовать этот перечень для обнаружения подходящего пароля. Подобным образом работает множество утилит для взлома.
Хотя хранение пароля в виде хэша лучше, чем в открытом виде, вероятность взлома все равно остается, если у злоумышленника хороший набор правил или словарь, которые можно использовать в Hashcat или другой подобной программе.
Если вы много работаете с хэшами, то легко увидите разницу между разными и часто используемыми типами.
Например, сможете ли вы на глаз определить, к какому типу относятся хэши, указанные ниже?
При использовании Hashcat для взлома этого хэша мы должны установить опцию –m с целью работы в нужном режиме. Для взлома хэша MD5 мы бы указали режим 0.
В итоге, установив нужный алгоритм и используя хороший словарь, после расшифровки хэша мы получили слово «hashcat».
Какие хэши поддерживаются?
На данный момент Hashcat в состоянии расшифровать большое количество хэшей. В репозитории на GitHub для утилиты hash-identifier список поддерживаемых хэшей очень внушителен:
Для начала нужно установить Python3 на вашем компьютере (есть версии для разных платформ). Кроме того, вам понадобится утилита Hashcat, которую можно загрузить, используя команду apt install hashcat, после обновления системы при помощи команд apt update и apt upgrade.
Если вы хотите сгенерировать ваши собственные хэши для тестового взлома, то можете воспользоваться командой в формате echo —n PLAINTEXT | (HASHTYPE)sum. Например, при создании хэша SHA1 для слова «nullbyte» я запустил следующую команду:
Шаг 1. Загрузка и установка Hash-Identifier
Установить скрипт, написанный на Python, – очень просто. Откройте терминал и запустите следующую команду:
Затем посмотрите содержимое директории hash-identifier:
Вы должны обнаружить файл hash—id.py, который можно запустить при помощи команды ниже:
Шаг 2. Идентификация неизвестных хэшей
В качестве пробного подхода при помощи hash-identifier попробуем опознать следующие пять неизвестных хэшей:
Для начала в командной строке вводим первую строку и быстро получаем результат, что скорее всего имеем дело с хэшем, используемым в MySQL, который попробуем взломать чуть позже.
Третий хэш опознается как SHA1:
Четвертый хэш опознается как SHA512:
Наконец, пятый и последний хэш опознается как MD5:
Все прошло без особых проблем. Следующий шаг – поиск нужного режима, соответствующего обнаруженному типу, который будет указываться в Hashcat во время взлома.
Шаг 3. Подбор режима в Hashcat
При поиске нужного режима мы можем взглянуть на огромный список хэшей, поддерживаемых в Hashcat. Сокращенный вариант с наиболее популярными типами приведен ниже:
В списке выше есть два примера, которые могут соответствовать первому хэшу (7196759210defdc0), рассмотренному нами в предыдущем шаге. На первый взгляд, режим 200 «MySQL323» наиболее соответствует. Подтвердить гипотезу можно при помощи проверки тестового хэша в hash-identifier.
Точное совпадение с нужным хэшем:
Если мы попробуем другой тип (300), то увидим, что результаты не совпадают.
Соответственно, еще раз убеждаемся, что режим 200 выбран правильно.
Шаг 4. Расшифровка хэша при помощи Hashcat
После идентификации типа хэша и подбора нужно режима можно приступать к расшифровке пароля в Hashcat. Вначале нужно создать словарь с паролями, который будет использоваться в Hashcat для атаки на хэш. В сети есть много доступных списков, например, RockYou, но в нашем случае мы будем создавать тестовый словарь example.dict с несколькими паролями.
Если вы все еще находитесь внутри скрипта hash-identifier, нажмите Ctrl—C, а затем откройте файл в текстовом редакторе nano, запустив следующую команду:
После добавления нескольких предполагаемых паролей, один из которых – «hashcat», нажимаем Ctrl—X для выхода из редактора и вводим Y, чтобы сохранить изменения в файле. Теперь мы можем использовать этот файл в качестве словаря вместе с ранее выбранным режимом для взлома хэша. Базовая команда выглядит примерно так:
Вместо значения HASH_VALUE указываем хэш 7196759210defdc0, вместо MODE_NUMBER – подобранный ранее режим 200. Результат работы показан ниже. Если у вас старая система, как в моем случае – нужно указать параметр –force.
В результате мы получили 7196759210defdc0:hashcat и смогли расшифровать хэш посредством сравнения с элементами словаря из файла example.dict.
Когда вы имеете дело с неизвестным хэшем, первый шаг – корректная идентификация типа. Хотя скрипт hash-identifier – не идеален, но позволяет без особых проблем опознать наиболее распространённые хэши и отличить разные типа хэшей, которые выглядят одинаково, но требуют разных режим работы в Hashcat. Даже если hash-identifier не уверен, с каким типом вы имеете дело, сравнение с результатами примеров с сайта Hashcat, может помочь в идентификации.
Надеюсь это руководство, посвященное опознанию неизвестных хэшей, вам понравилось.
Что такое NFT и как на них можно заработать миллионы
С каждым годом новые технологии все больше проникают в нашу жизнь, изменяют ее, заставляют людей пересматривать свои взгляды и уже по-другому воспринимать привычные для нас вещи. Что такое NFT, почему искусство перешло в виртуальную реальность и как люди зарабатывают на этом миллионы долларов?
Что такое NFT и откуда он взялся?
NFT (non-fungible token) – это уникальный невзаимозаменяемый цифровой ключ, созданный на основе криптовалюты. NFT не может быть уничтожен или заменен на другой такой токен. Он представляет собой некий сертификат уникальности и неповторимости какого-либо цифрового объекта. Стоит отметить, что невзаимозаменяемый токен никак не влияет на копирование файла. Он только подтверждает, что тем или иным цифровым объектом обладает конкретный пользователь.
При помощи технологии NFT можно продать или купить любой цифровой объект – музыку, изображение, 3D-модель, текст, игровой предмет и пр. Его суть состоит в регистрации некоего права собственности на конкретный виртуальный объект в блокчейне. Информацию о владельце невозможно заменить или удалить.
Иными словами, это схоже с покупкой дорогой картины. То есть, она принадлежит вам, но при этом может быть выставлена в какой-то известной галерее на всеобщее обозрение любителей изобразительного искусства. Стоит также отметить, что фотографировать данную картину или использовать ее копию в интернете может любой желающий.
Первые эксперименты с технологией NFT начались еще в 2013-2014 годах на скриптовом языке Bitcoin. В 2017 году компьютерный алгоритм для создания, контроля и предоставления информации о владении чем-либо был создан на блокчейне Ethereum.
Первая продажа виртуального объекта при помощи NFT
«Ежедневно: первые 5000 дней» / «Everydays: The First 5000 days» — это коллаж из 5000 изображений, создаваемых Beeple на протяжении 13 лет, начиная с мая 2007 года. Однажды иллюстратор принял решение ежедневно делать и выкладывать в интернет новое изображение. Необычайно ответственный Майк Винкельманн с того момента не пропустил ни единого дня. В результате у него собралось уже более 5000 работ.
Коллаж «Ежедневно: первые 5000 дней» / «Everydays: The First 5000 days» Майка Винкельманна (Beeple)
Человек, который приобрел цифровой объект на основе NFT, получил не только само изображение, а и уникальный токен, который содержит в себе цифровую подпись художника, время создания произведения искусства, записи о всех предыдущих продажах и владельцах, и прочую не менее важную информацию.
В настоящее время предметы цифрового искусства можно продавать и покупать на таких крупных площадках как OpenSea, Rarible, Mintable и пр. Чтобы создать NFT виртуального предмета необходимо завести кошелек Ethereum и загрузить в него свой лот. Токен может быть создан сразу или уже после того, как покупатель решит приобрести права собственности на цифровой объект. NFT-маркетплейсы со своей стороны берут комиссии за успешные сделки.
Так что такое NFT и есть ли у него будущее?
Примечательно то, что эта работа 2007 года высмеивает коллекционеров, которые покупают предметы искусства за огромные деньги. На трафарете изображены люди, принимающие участие в аукционе, на котором ведутся торги за картину с надписью «I can’t believe you morons actually buy this shit» / «Я не могу поверить, что вы, кретины, реально покупаете это дерьмо».
Трафарет «Morons» (White) стрит-арт художника Banksy
Ethereal Flames Pink War Dog из игры DOTA 2
Заядлые коллекционеры готовы платить сумасшедшие суммы за право обладать редким предметом. В числе таких артефактов могут оказаться и цифровые объекты NFT. Единственным отличием является только носитель. В любом случае посмотреть на объект и использовать его копию могут все желающие, но право собственности остается только у одного человека. В случае с NFT это право хранится в криптокошельке единственного владельца.
Игра CryptoKitties (Криптокотики) на основе блокчейна Ethereum
Достаточно сложно понять, что такое NFT и почему эта технология постепенно становится нашей новой реальностью. Но вполне возможно, что уже через несколько лет она будет такой же привычной и доступной для пользователей, как оплата покупок при помощи банковской карты или телефона.
Не стоит также забывать о том, что NTF – это всего лишь новый инструмент, который можно использовать для различных целей. Сейчас его все активнее применяют для распространения цифровых коллекционных объектов. Такими являются, например, уникальные видео-моменты спортивных матчей или фильмов, аудиозаписи известных исполнителей, оцифрованные предметы искусства, популярные мемы и даже сообщения из социальных сетей.
Да, давайте покупать жипеги. Отличный план, надёжный как швейцарские часы.
Только не факт, что лично твой nft будет что то стоить. Как видим дорогущие нфт идут от уже распиаренных личностей или структур.
Хотя с котиками попробовать можно, но что-то мне подсказывает что там тоже не всё чисто.
Робопес Spot и творческие порывы
Американская компания роботехники Boston Dynamics существует с 1992 года. Сначала услугами бывших инженеров Массачусетского технологического университета пользовались в основном американские же военные.
Boston Dynamics, Spot 3.0
Есть их первый громоздкий прототип BigDog, финансируемый DARPA, пока он остается только опытным образцом. Его четырехногая шагающая конструкция предполагает схожие со строением собаки бионические элементы, заменяющие колеса или гусеницы, необходимые для устойчивого положения и движения.
Boston Dynamics, тесты WildCat, 2013
На разных этапах эволюции милой желтой собачки были резвая дикая кошка и ее неторопливый вариант LS3, приспособленный для переноски больших грузов, больше напоминающий покладистого мула.
Boston Dynamics, тесты LS3 (Legged Squad Support System), 2012
На стройплощадке аэропорта Сан-Франциско, пресс-служба американской компании HoloBuilder
В первую очередь это работяга, способный выполнять сложную и нудную работу, состоящую из однотипных многократно повторяющихся задач. Как например, подробные геодезические замеры для строительства аэропорта в Сан-Франциско.
Видео с камеры Spot (слава), тест на ориентирование в пространстве в лаборатории Boston Dynamics
Рабочие канадской компании Pomerleau с помощниками Спот
Еще пес используется на морских подстанциях, где необходимо регулярно проводить осмотр оборудования в опасных для человека условиях.
И с помощью удаленного оператора ищет утечки нефти на морской платформе в Норвежском море для скандинавского нефтегазового оператора Aker BP. В таких случаях задействуют Spot Enterprise с функцией самозарядки и передачи данных.
Его даже завели на техасском полигоне SpaceX в Бока-Чика: кому охота первым осматривать место аварии, особенно если в повалившемся набок топливном баке ракеты был жидкий азот.
Инженеры компании ласково называют механического компаньона Зевс и поставили ему будочку.
С началом пандемии женская больница Массачусетского технологического университета в качестве эксперимента проводит бесконтактное измерение жизненных показателей пациентов.
Когда-то нечаянный пиар на YouTube помог Boston Dynamics привлечь коммерческое внимание к своим разработкам. Пришлось немного подыграть, превратив Спота в фирменную фишку, мастера на все манипуляторы. Теперь их продукцию используют для рекламы себя.
По крайней мере у нас: Сбер не стал мелочиться и купил робопса за 5,4 млн рублей как только он появился в продаже зимой 2021 года. Пока четвероногий осваивается в просторных коридорах корпоративного университета банка.
Иногда раскладывает книги в архивах Российской государственной библиотеки.
Например, Go1 от китайской Unitree Robotics, которого можно купить от 2 700 долларов. Есть еще AlphaDog от Weilan за 2 400, но они пока выпущены ограниченным тиражом для тестирования.
А что же искусство?
На спине робота был установлен пейнтбольный маркер с краской. Через специальный сайт любой желающий методом лотереи мог на 2 минуты получить доступ к удаленному управлению механизмом и повеселиться вволю, раскрашивая все, что попадется под ногу.
Не будем расстраиваться, балет все-таки будет. Spot не только умеет открывать двери, собирать мелкие предметы в корзину на спине, сажать цветочки и рисовать мелками на асфальте. Он еще отличный танцор.
В конце 2020 года Boston Dynamics сделала всем отличный подарок: два гуманоидных робота Atlas, механический пес и складской трудоголик Handle зажгли под хит «Do You Love Me?» модной в 60-е группы Contours.
В июне 2021 контрольный пакет акций BD купил за 1,1 млд долларов азиатский гигант Hyundai Motor и сразу запустил для западных покупателей промо-кампанию экологичного гибрида Ioniq, который с прошлой весны рекламируют амбассадоры компании BTS.
Встречайте синхронный ансамбль пластичных четвероногих роботов под корейский k-pop «I m on it». Кстати, песиков в танце кружится столько же, сколько участников слащавой мальчуковой группы.
Фиксики уже не те.
За криптовалюту теперь можно купить колбасу в ближайшем магазине
Биржа Coinbase ввела поддержку систем Apple Pay и Google Pay, и теперь расплатиться биткоином или любой другой криптовалютой можно в любом месте, где принимают Visa.
Достаточно выпустить виртуальную карту биржи, деньги будут конвертироваться автоматически.
Часть 3. Упадок. Акварель 42х60
Компания Geometric Energy Corporation (GEC) объявила сегодня о запуске миссии DOGE-1 к Луне на борту ракеты Falcon 9 в первом квартале 2022 года. В качестве полезной нагрузки миссии будет выступать 40-килограммовый кубсат. Он получит разнообразные датчики и камеры на своём борту. Дополнительное пространство для полезной нагрузки будет выделено для объектов цифрового искусства в виде табличек, предоставленных GeometricLabs Corporation и Geometric Gaming Corporation.
Отметим, что это одна из т.н. Rideshare-миссий, поэтому позднее должны появится и другие полезные нагрузки. Руководство миссией будет осуществляться Geometric Space Corporation (GSC) в сотрудничестве со SpaceX.
«Официально заключив сделку с DOGE Geometric Energy Corporation и SpaceX укрепили DOGE в качестве расчётной единицы лунного бизнеса в космическом секторе», — сказал главный исполнительный директор Geometric Energy Сэмуэль Рид (Samuel Reid).
«Эта миссия продемонстрирует применение криптовалюты за пределами околоземной орбиты и заложит основу для мультипланетарной торговли. Мы рады запустить DOGE-1 на Луну!», — сказал вице-президент SpaceX по коммерческим запускам Том Очинеро (Tom Ochinero).
Скрытые особенности Биткоина
Обзор неочевидных для многих отличий Биткоина от существующих платежных систем
Ранее в статье «Почему Биткоин — это принципиально новая монетарная система» речь шла о том, что любая денежная (монетарная) система базируется на трех основных составляющих — денежной массе, денежных транзакциях и владении деньгами. В отличие от управляемой и монополизированной государством традиционной монетарной системы, основанной на фиатных (фидуциарных) деньгах, Биткоин является децентрализованной денежной системой и управляется правилами (протоколом), зашитыми в его программный код. Это в корне меняет три основных составляющих, лежащих в основе этой системы — деньги эмитирует программный код, а не государство; транзакции между контрагентами осуществляются напрямую, без посредников; распоряжаться деньгами на биткоин-адресах может только владелец их приватных ключей, никто другой не может получить к ним доступ.
Но помимо этого Биткоин, как платежная система, имеет ряд других уникальных особенностей о которых либо не знают, либо не придают им значения.
1. В Биткоин-сети нет аккаунтов.
В отличие от других платежных систем, у пользователей Биткоина нет своего аккаунта, т.е. счета, который был бы каким-то образом привязан к пользователю. Клиенты банков имеют аккаунты в виде банковских счетов, идентифицируемых по паспорту и/или налоговому номеру клиента. Банковские карты платежных сетей Visa и MasterCard также связаны с аккаунтами их пользователей. Клиенты электронной платежной сети PayPal имеют аккаунты, связанные с адресом их электронной почты. Во всех других платежных системах существуют какие-то способы идентификации личности и её счетов. В Биткоине этого нет!
С одной стороны это делает пользование Биткоином псевдонимным. С другой — в случае утраты приватных ключей восстановить доступ к биткоин-адресам невозможно. В Биткоине только приватный ключ дает право пользования деньгами, хранящимися на соответствующем ему биткоин-адресе. Нет ключа — нет биткоинов! Или, как говорится в популярной среди биткоинеров поговорке — ”Not your keys, not your coins” (Не твои ключи, — не твои биткоины).
Из этого следует, что вся ответственность за хранение денег в Биткоине лежит только на владельце приватных ключей от биткоин-адреса. Никто не сможет помочь ему восстановить доступ при утрате ключей!
Отчасти эта проблема решается сторонними сервисами верхнего уровня, которые предоставляют доступ к аккаунту клиента и через него — к приватным ключам, которые хранятся на серверах этих сервисов. Это делается за счет утраты анонимности — пользователь должен указать свои реквизиты для восстановления доступа к аккаунту, как правило, — e-mail и/или номер телефона. А по требованиям KYC/AML и свои личные данные — имя и фамилию, адрес проживания и т.п.
Например, в популярном веб-кошельке Blockchain.info приватные ключи от биткоин-адресов клиентов хранятся в зашифрованном виде на серверах сервиса, а клиенты получают к ним доступ, войдя в свой аккаунт на сайте или приложении для смартфона по паролю и используя для надежности двухфакторную авторизацию. Кроме того, клиенты могут скачать свои приватные ключи (точнее — seed-фразу) и хранить у себя. Это дает им возможность воспользоваться любым другим кошельком, который поддерживает seed.
2. В биткоин-кошельках не хранятся биткоины.
Эта парадоксальная фраза сбивает с толку многих начинающих (и не только) пользователей Биткоина. Но в действительности это так! В Биткоин кошельках хранятся приватные ключи от биткоин-адресов, а не сами монеты. Более того, см. п.3…
3. Биткоины не существуют как сущности.
4. Биткоины не отправляются ни на адреса, ни с адресов.
В отличие от банковских транзакций, которые суть перевод денежных средств с одного банковского счета на другой, транзакция в Биткоине реализована по-другому — это разблокирование неизрасходованных средств выхода осуществленной ранее транзакции (UTXO — unspent transaction output) при помощи приватного ключа биткоин-адреса отправителя и блокирование переводимой суммы при помощи публичного ключа адреса получателя. Поскольку можно использовать только всю сумму на неизрасходованном выходе, остаток (сдача) блокируется публичным ключом адреса отправителя.
После этого получатель может таким же образом разблокировать своим приватным ключом неизрасходованный выход этой новой транзакции (UTXO) и заблокировать публичным ключом нового получателя переводимую ему сумму, осуществляя новый перевод.
Ниже на картинке приведен пример простой транзакции. У отправителя (его принято называть Элис/Alice) на неизрасходованном выходе (UTXO) ранней транзакции есть 10 BTC. Элис переводит 8 BTC получателю (принято называть Бобом/Bob), а остаток (сдача) в размере 2 BTC возвращается на биткоин-адрес отправителя (Элис). При этом выход с 10 BTC становится израсходованным и создаются два новых неизрасходованных выхода (UTXO) — c 8 BTC и 2 BTC. Но первый может теперь разблокировать только Боб, а второй — только Элис.
Пример транзакции в Биткоине.
Из этого следует, что баланс любого биткоин-адреса — это сумма всех неизрасходованных выходов транзакций (UTXO), которые заблокированы публичным ключом владельца этого адреса.
Пусть вас не пугает эта сложность, Биткоин использует криптографические алгоритмы и, с точки зрения криптографии, это достаточно простая схема. К тому же, позволяющая отследить всю цепочку транзакций вплоть до первой эмиссионной.
По сути, это выглядит как перевод с одного биткоин-адреса на другой с возвратом остатка (сдачи) на биткоин-адрес отправителя (не обязательно тот, с которого был осуществлен перевод). Но, как вы теперь понимаете, в реальности это осуществляется путем разблокирования приватным ключом отправителя и нового блокирования переводимых сумм публичными ключами получателей.
Из этого следует очередная особенность:
5. Биткоины никогда не бывают в пути.
Банковские транзакции подразумевают реальное движение сумм переводов между счетами. Сначала со счета отправителя снимается переводимая сумма и он уменьшается на эту сумму. Затем средства перемещаются по банковским и межбанковским каналам, проходя через транзитные счета, пока не поступят на счет получателя, который увеличивается на переводимую сумму. Т.е. какое-то время существует ситуация при которой деньги со счета отправителя уже сняты, а на счет получателя еще не зачислены.
В Биткоине такого нет! До тех пор, пока биткоин-транзакция не будет в составе нового блока записана в блокчейн, средства остаются на биткоин-адресе отправителя. Фактически самого движения нет, есть одновременный акт передачи монет с адреса на адрес в момент записи блока с транзакцией в блокчейн.
А как же «двойная трата», спросите вы? Да, действительно, если я отправляю средства на адрес получателя, а они сразу с моего адреса не списываются, значит я могу снова отправить их на адрес другого получателя. Одними и теми же монетами купить пиццу и пиво к ней!
На самом деле, большинство программных кошельков это не позволяют делать. Но никто не мешает это сделать напрямую, послав подписанное распоряжение о переводе средств в Биткоин-сеть. Что же произойдет в этом случае? Да всё просто! Одна из двух транзакций не пройдет. И не обязательно это будет вторая. Тут возможны два случая:
1. Обе транзакции попали в один мемпул. Майнер пропустит одну и забракует по нехватке средств вторую.
2. Транзакции попали в разные мемпулы (к разным майнерам). В блокчейн будет записан блок только с одной транзакцией. После этого вторая транзакция станет невалидной.