В наше время компьютерные системы сталкиваются со множеством проблем, таких как уязвимости в ПО, DDoS-атаки и «потолок» развития двоичных ЭВМ. Именно в такой момент на сцену выходит блокчейн. Он может стоять на защите наших персональных данных, будучи быстрым и открытым. Но так ли это? Именно это и рассматривается в моей работе. Я хочу проверить, действительно ли блокчейн объективно лучше, чем классические централизованные компьютерные системы.
Гипотеза: блокчейн системы имеют преимущество перед централизованными по статье быстродействия, отказоустойчивости и безопасности.
Цель: обосновать преимущество блокчейна перед централизованными компьютерными системами.
Для достижения цели решались следующие задачи:
1. Выяснить, что такое блокчейн.
2. Выяснить преимущество блокчейна над централизованными системами.
3. Проверить экспериментальным путем характеристики блокчейна.
4. Провести анализ данных, сделать вывод.
Методы исследования: анализ, наблюдение, сравнение и обобщение результатов.
Вывод: блокчейн является потенциальной технологией, которая может изменить наше привычное понимание компьютерных систем, и способна опередить классические централизованные системы в плане безопасности, отказоустойчивости и возможно в быстродействии. Но к сожалению, он еще не получил достаточной популярности и доверия со стороны разработчиков. Блокчейну еще предстоит встать в первые ряды решений классических проблем компьютерных систем.
Вложение | Размер |
---|---|
nauchnaya_statya.docx | 325.06 КБ |
Научная статья (описание работы)
1. Введение
Актуальность:
Большинство разработчиков компьютерных систем сталкиваются со множеством проблем. Это проблемы в безопасности и отказоустойчивости, а также остановка в развитии мощностей компьютеров. Разработчики прибегают к разным решениям, от самых простых, до невероятно сложных. Именно в такой момент на сцену выходит блокчейн. Предполагается, что он обладает повышенной отказоустойчивостью, безопасностью и быстродействием по сравнению с другими решениями. Я хочу проверить, действительно ли блокчейн объективно лучше, чем классические централизованные компьютерные системы.
Гипотеза:блокчейн системы имеют преимущество перед централизованными по статье быстродействия, отказоустойчивости и безопасности.
Цель:обосновать преимущество блокчейна перед централизованными компьютерными системами.
Для достижения цели решались следующие задачи:
Объект исследования:блокчейн системы.
Предмет исследования:технологии блокчейн системы.
2. Основная часть
2.1. Теоретическая часть
1. Что такое блокчейн?
Блокчейн(от англ. Blockchain) — это универсальный концепт распределенного хранения данных которые обеспечивают безопасность, отказоустойчивость и открытость для всех одновременно.
Впервые концепт блокчейна был представлен в 2009 анонимом под псевдонимом Сатоши Накамото. Концепт блокчейна был описан в .pdf в котором блокчейн являлся основной частью проекта первой в мире криптовалюты названной Bitcoin.
Прошло уже 9 лет, но блокчейн все еще развивается, заслуживая доверие множества коммерческих кампаний и государств. Появилось огромное количество приложений, которые используют блокчейн для повышения производительности приложений и любых других компьютерных систем.
2. Протоколы блокчейна.
Хеширование
Но прежде чем понять, что такое блокчейн мне было необходимо вникнуть в компьютерные протоколы и алгоритмы которые он использует. Первым таким является хеширование (от англ. Hashing).
Хеширование, или хеш-функция, это алгоритм, который преобразует массив данных в битовую строку строго определенной длинны. Например, если мы возьмем роман «Преступление и Наказание» Федора Михайловича Достоевского и число 7, то после хеширования алгоритмом MD5 на выходе мы получим битовые строки одинаковой длинны, такой как эта:
Хеш-функция должна удовлетворять двум свойствам:
Коллизия хеш-функции — это два входных блока данных (x,y) такие, что , где H это хеш-функция. Коллизии являются основной проблемой всех хеш-функций, представляя угрозу безопасности систем, основанных на хеш-функциях.
ВBitcoin используется двойная хеш-функция SHA-256. Выглядит она следующим образом
Но важнее всего то, где она применяется. Двойная функция используется в Bitcoin для построения дерева Меркла.
Дерево Меркла или Хеш-дерево (от англ. Merkletree) — это полное двоичное дерево, в листовые вершины которого помещены хеши от блоковданных, а внутренние вершины содержат хеши от сложения значений в дочерних вершинах.
Дерево Меркла состоит из «листовых вершин», в которые помещены хеши от блоков данных (транзакции в случае Bitcoin или части файла в BitTorrent), внутренних вершин, которые содержат сложения значений хешей листовых (конкатенация), и корневого хеша, который является хешем от всего набора данных.
Древо Меркла необходимо для эффективности хранения данных в блокчейне, и возможности проверить входные блоки данных без пересчитывания всего дерева.
Таблица ниже из книги «Mastering bitcoin: unlocking digital cryptocurrencies» показывает, что даже при увеличении объема транзакций (или размера исходного файла), размер пути и блока увеличивается незначительно
Таблица 1
Связь количества транзакций и размера блока
Количество транзакций | Приблизительный размер блока | Размер пути (в хешах) | Размер пути (в байтах) |
16 транзакций | 4 килобайта | 4 хеша | 128 байт |
512 транзакций | 128 килобайт | 9 хэшей | 288 байт |
2048 транзакций | 512 килобайт | 11 хэшей | 352 байт |
65535 транзакций | 16 мегабайт | 16 хэшей | 512 байт |
PGP
Следующий алгоритм используемый в блокчейне, это PGP.
PGP (от англ. PrettyGoodPrivacy) – это библиотека функций предоставляющая асимметричное шифрование. Позволяет выполнять прозрачное шифрование данных, а также цифровую подпись файлов. PGP создает пару ключей (Приватный ключ — Публичный ключ). Приватный ключ необходимо хранить в тайне, а публичный ключ нужно передавать своим знакомым при личной встрече, или передавать в специальные сети для обмена ключами.
Любые данные зашифрованные одним ключом из пары Aмогут быть расшифрованы только другим ключом из пары A.
Алиса и Боб хотят обменяться зашифрованными сообщениями по незащищенному каналу, который прослушивает Ева. Для этого они обмениваются публичными ключами, или загружают их на специальный сервис.
Алиса использует публичный ключ Боба и шифрует сообщение. Боб получает его и расшифровывает приватным ключом. Ева все равно не сможет понять смысл сообщений. Она все еще может заменить сообщение Алисы на свое, но от этого мало толку. Боб все равно зашифрует следующее сообщение с помощью публичного ключа Алисы.
Так же с помощью PGP можно доказать авторство — подписать данные. Достаточно зашифровать их приватным ключом, и открыть публичные ключ. Тогда кто угодно сможет расшифровать сообщение Алисы ее публичным ключом, тем самым доказав ее авторство за сообщением/данными/файлом.
В блокчейне PGP используется пользователем сети, чтобы подтвердить, что он, например, владелец переводимых биткоинов (то, что подтверждает PGP может быть чем угодно, от голосов, до владения ценными бумагами, все зависит от самого блокчейна).
Концепт блокчейна
Блокчейн — это выстроенная по определенным правилам непрерывная последовательная цепочка «блоков», массивов содержащих разную информацию, которые связаны друг с другом с помощью хеширования.
Предположим, что Ева решила заработать биткоинов нечестным путем. Для этого она изменяет блокчейн (не важно, как), создавая себе биткоины. В таком случае Еве будет мешать несколько фактов. Если Ева захочет изменить одну из старых транзакций «Алиса передает Бобу 1 биткоин» на «Алиса передает Еве 1 биткоин» ей придется изменить блок в котором содержится транзакция, и заново подобрать ее хеш, на что требуются большие мощности. После этого ей придется пересчитать каждый блок, идущий после. Для таких вычислений ей будет необходимо огромное количество мощности, где нигде больше нельзя взять. Но даже если она сможет, сообщество не будет принимать новой цепочки созданной Евой.
Предположим, что Ева сговорилась с Марком и попросила добавить себе несуществующие биткоины транзакцией «Марк передает Еве 1 биткоин». После формирования транзакции Марк посылает ее в сеть. Здесь транзакцию встречают все пользователи сети биткоин. Они проверяют соответствие, что на счету Марка действительно есть 1 биткоин для перевода. Так как столько у Марка нет, сеть не принимает транзакцию Марка.
Блокчейн способен хранить не только транзакции. Он способен хранить абсолютно любую информацию, самые разные документы, начиная ценными бумагами, и заканчивая медицинской страховкой, или свидетельством о браке.
Блоки одновременно формируются множеством «майнеров», людей которые используют свои мощности для перебора хешей, чтобы подтверждать блоки в сети. Удовлетворяющие критериям блоки отправляются в сеть, включаясь во все копии цепочки на машинах пользователей. Регулярно в сети Bitcoin возникают ситуации, когда несколько новых блоков в разных частях распределённой сети называют предыдущим один и тот же блок, то есть цепочка блоков начинает разделятся. В каждом из новых блоков могут встречаться как одинаковые транзакции, так и разные, вошедшие только в один из них. Когда ретрансляция блоков начинается, майнеры начинают считать главной цепочку с учётом уровня сложности хеша и длины цепочки. При равенстве сложности и длины предпочтение отдаётся той цепочке, конечный блок которой появился раньше. Транзакции, вошедшие только в отвергнутую ветку, теряют статус подтверждённых. Если это транзакция по передаче биткоинов, то она будет поставлена в очередь и затем включена в очередной блок.
Блокчейн формируется как непрерывно растущая цепочка блоков с записями обо всех транзакциях. Копии базы или её части одновременно хранятся на множестве машин и синхронизируются, и обмениваются блоками через протокол BitTorrent. Информация в блоках не шифрована и доступна в открытом виде.
2.2. Практическая часть
Исследование № 1
Цель: Сравнить отказоустойчивость централизованной и блокчейн системы.
Отказоустойчивость — это свойство технической системы сохранить свою работоспособность после отказа одного или нескольких составных частей. В централизованных системах Пользователь-Сервер точкой отказа является сервер, вывод из строя которого может привести котключению. Стоит отметить, что существуют модификации централизованных систем, которые могут улучшить отказоустойчивость, например, использование NAS и серверов дублеров.
Ниже будет рассмотрен случай потоковой передачи видео, потому что между сервером и клиентом устанавливается постоянное соединение.
Предположим, что существует некий сайт,предназначенный для просмотра фильмов. На нем есть один фильм размером 4.1 Gb и длительность в 2 часа. Рассчитаем битрейт фильма по формуле подсчета битрейта:
,где N – размер видео в килобитах, а t – его длительность в секундах, а B – битрейт видеофайла.
Таким образом, битрейт фильма на сайте составит:(Чтобы избежать не нужных вычислений, мы не переводим мегабайты в килобиты, хотя принято указывать битрейт в килобайтах)
Значит для комфортного потокового просмотра фильма на каждого пользователя потребуется как минимум 0,05 Mb. Найдем минимальную ширину потока на каждого пользователя (предположив, что на каждого выделяется 0,1):или 0,3 Gbps. Соответственно, чтобы положить сайт DoS-атакой, необходимо использовать атаку, большечем 350 Mbps(Хотя важно учитывать, что в реальной жизни у серверов есть неиспользуемые мощности, и провайдерам не выгодно предоставлять ширину канала в 350 Mbps Это значит, что 350 Mbps скорее всего будет не достаточно, и может быть равна даже 1 Gbps).
Теперь рассмотрим случай блокчейна. Для того чтобы положить блокчейн DoS-атакой, необходимо получить список IP-адресов всех держателей полной версии блокчейна (в нашем случае их 3500), чтобы атаковать все из них одновременно. Средняя ширина канала у обычного пользователя интернет 3 Mbps. Это значит, что злоумышленники должны переполнить трех мегабайтовые каналы 3500 пользователей. Для этого необходима следующая мощность:или 10,2 Gbps
Вывод: блокчейн в этом случае будет в 34 раза отказоустойчивей, чем централизованное приложение. Хотя нам нужно учитывать, что провайдеры хостингов сайтов предлагают ширину канала большую чем 350 Mbps, от 1 до 100 и выше. Но в целом такая корреляция Блокчейн >Централизованная система, будет наблюдаться в большинстве случаев.
Исследование №2
Цель: сравнить уровеньбезопасности блокчейна и централизованных систем.
Мы рассмотрим разные виды атак на централизованные системы и блокчейн, и сравним их теоретический ущерб.
Централизованные системы | Блокчейн |
|
Когда злоумышленник владеет более 50 процентов суммарной вычислительной мощности, он может выбирать какая из веток ветвления будет основной и добавлять в блоки только свои данные.
|
Таблица 2. Примерный список атак на сайты в сети интернет и блокчейн.
Анализ ущерба от атак на блокчейн
Атака | Ущерб |
«Атака 51%» и Двойное расходование | Возможность полного контроля блокчейна, а значит и любых изменений (кроме изменений предыдущих блоков). |
Атака Сибиллы | Не возможна, так как в криптосообществе принято использовать POW или POS в обязательном порядке. |
Взлом криптографии | Не возможен при достаточном количестве разрозненных клиентов. |
Таблица 3. Общий анализ ущерба от атак в блокчейне
Ущерб от атак на централизованные системы
Атака | Ущерб |
Уязвимость в ПО | Де факто — ущерб может быть любым, до выполнения вредоносного кода, до обычной остановке работы системы. Решается своевременными обновлениями, или open source решениями. |
SQL инъекция | Возможность прочитать, изменить, добавить, удалить данные любых таблиц в базе данных. Решается своевременными обновлениями и фильтрацией входных параметров |
Dos-атака | Полное или частичное отключение/замедление работы системы. Может решатся множеством способов, таких как использование CDN, серверов-дублеров и другие. |
XSS-атака | Регулярные проверки безопасности кода, добавление ContentSecurityPolice, кодирование входных данных, на стороне сервера, и обновление браузеров и XSS-фильтров на стороне клиента. |
MITM | Использование шифрования между клиентом и сервером HTTPS (SSL/TLS). |
Таблица 4. Общий анализ ущерба от атак на сайты в сети Интернет.
Вывод:количество атак на блокчейн равно двум, одна из которых сложна для осуществления, а другая решается более сложными условиями проверки. В централизованных системах каждая атака может быть предотвращена дополнительными мерами, но их количество равно шести. Соответственно блокчейн безопасней чем централизованные системы.
Исследование № 3
Цель: сравнить быстродействие блокчейна и централизованных систем.
Для измерения быстродействия, мы будем считать время, необходимое для операции запрос-ответ в централизованных системах, и время, необходимое для загрузки блока при первой синхронизации с сетью.
Эти операции наиболее приближены друг к другу. Поиск данных запрос-ответ в полном блокчейне занял бы минимальное время, так как поиск проводился бы по локальной версии блокчейна. Для этого нам надо будет посчитать время отклика утилитой Ping, и программой для сниффинга трафика Wireshark.Чтобы использовать Ping на сайте в сети Интернет, не нужно ничего необычного, достаточно узнать его адрес (для дополнительной задержки из-заDNS) или IP адрес.C блокчейном уже сложнее, так как это распределенная сеть. Чтобы узнать IP адреса их пользователей и потом «пропинговать» их, я воспользуюсь программой Wireshark
Примечание:у блокчейна есть характеристика, называемая Транзакции за секунду (tps). Именно она определяет быстродействие блокчейна, но так как у сайтов в сети Интернет нет схожей характеристики, мы используем время отклика при загрузке, хотя после получения полной версии блокчейна, отклик будет самым минимальным из возможных.
1. Для начала я загружу BitcoinCore – стандартный клиент для Bitcoin, и TurtleWallet – клиент для меньшего по размеру TurtleCoin.
2. С помощью программы Wireshark, я начинаю слушать трафик, попутно синхронизируя с блокчейн Bitcoin, подключаясь к участникам сети
Как видите,IP назначения пакетов, отправленных через протокол Bitcoin повторяется несколько раз. Можно смело предположить, что это пиры блокчейна Bitcoin.
3. «Пропингуем» каждый из них.В результате мы получили отклик только от 86.11.167.95. Остальные IP не отвечали.
Как можно увидеть по выводу консоли, средний пинг с сервером 138 миллисекунд.
Название ресурса/сети | Средний пинг (мсек) | Примечания |
Bitcoin | 138 | Самое большое сообщество, и самое большое количество пользователей. Чем больше пользователей, тем больше шанс, что он окажется рядом, и процесс загрузки пройдет быстрее. |
TurtleCoin | 254 | Не очень известная монета, по размерам не сопоставима с Bitcoin. |
Google (google.ru) | 51 | Межнациональная компания, имеющая сервера по всему миру и обладающая огромными мощностями. |
Tutanota (tutanota.com) | 100 | Не очень популярный сервис для безопасной почты в сети интернет. |
Таблица 5. Сравнение время отклика для сайтов и разных пиров блокчейнов.
Вывод: легко напрашивается вывод, о том, что централизованные системы имеют преимущество. Но стоит учитывать, что в конце концов у централизованных систем есть предел в быстродействии, а у блокчейна он отсутствует. Блокчейн не получил достаточной популярности и развития, но он потенциально может быть быстрее чем централизованные системы, так как блокчейн использует p2p систему соединения, мощности для обработки запроса у каждого пользователя может быть разными. Но факт остается фактом, централизованные системы выигрывают в быстродействии на данный момент.
Заключение
Блокчейн является потенциальной технологией, которая может изменить наше привычное понимание компьютерных систем, и способна опередить классические централизованные системы в плане безопасности, отказоустойчивости и возможно в быстродействии. Но к сожалению, он еще не получил достаточной популярности и доверия со стороны разработчиков. Блокчейну еще предстоит встать в первые ряды решений классических проблем компьютерных систем.
В своей работе мы выяснили, что такое блокчейн. Выяснили преимущество блокчейна над централизованными системами. Проверили экспериментальным путем характеристики блокчейна. Проанализировали данные и сделать вывод.
Цель нашей работы достигнута, задачи выполнены, гипотеза частично подтвердилась.
Литература:
Шелковая горка
Две снежинки
Зимний дуб
Весенняя гроза
Учимся ткать миленький коврик