Недавно (20 июня 2019 года) на Cryptology ePrint Archive была опубликована статья "SoK of Used Cryptography in Blockchain". Данный пост - восьмой в запланированной серии, содержащей любительский перевод этой статьи.
Систематизация знаний по используемой криптографии в блокчейне
(перевод с английского
статьи
Mayank Raikwar, Danilo Gligoroski and Katina Kralevska
SoK of Used Cryptography in Blockchain
Cryptology ePrint Archive, Report 2019/735
https://eprint.iacr.org/2019/735)
Аннотация
(перевод аннотации здесь)
1 Введение (перевод введения здесь)
1.1 Наш вклад (перевод здесь)
2 Методология исследования (перевод здесь)
3 Основные понятия блокчейна
3.1 Криптографическая хэш-функция (перевод здесь)
3.2 Механизмы консенсуса (перевод здесь)
3.3 Сетевая инфраструктура
Блокчейн поддерживается одноранговой сетью (P2P). P2P-сеть является оверлейной сетью, создаваемой поверх Интернета. Эта P2P блокчейн сеть может быть смоделирована как структурированной, неструктурированной или гибридной на основе нескольких параметров, таких как механизм консенсуса и тип блокчейна. Независимо от представления сети, блокчейн-сеть должна быстро распространить вновь сгенерированный блок, так чтобы общее представление блокчейна оставалось неизменным. Следовательно, необходим протокол синхронизации, а протокол маршрутизации может понадобится, а может, и нет. Традиционная P2P-сеть использует протокол маршрутизации для маршрутизации информация через multihop; однако во многих блокчейнах (например, биткойн) маршрутизация не требуется, потому что одноранговый узел может получать информацию не более чем через один переход, поэтому таблица маршрутизации не поддерживается.
Почти все криптовалюты и блокчейны, такие как Bitcoin [1], Ethereum [11], Litecoin [23] используют неструктурированную P2P-сеть, где идея состоит в том, чтобы иметь равные привилегии для всех узлов и создать эгалитарную сеть. P2P-сеть может иметь единообразную или иерархическую структуру для построения случайного графика среди узлов. Этот график не полностью связан, но для того, чтобы получать все сообщения и вести реестр, каждый узел поддерживает список узлов адреса. Таким образом, если какой-либо одноранговый узел распространяет сообщение в сети, в конечном итоге все одноранговые узлы получают его через их доступные соединения. В неструктурированной сети такие методы, как флудинг и случайное блуждание, используются для установления новых связей с узлами. В неструктурированной сети узлы могут выходить из сети и присоединяться в любое время. Это может быть использовано противником, который может присоединиться и увидеть сообщения, перемещаемые в сети, и могут кроме того выполнять подмену источника, переупорядочивание или внедрение сообщений.
Блокчейн также может использовать структурированную P2P-сеть, в которой узлы организованы по определенной топологии и, таким образом, поиск любого ресурса/информации становится проще. В этой структурированной P2P-сети каждому узлу присваивается идентификатор для маршрутизации сообщений более доступным способом. Каждый узел также поддерживает таблицу маршрутизации. Структурированная P2P-сеть поддерживает распределенную хэш-таблицу (DHT), в которой хранятся пары (ключ, значение), соответствующие узлам, которые помогают в процессе обнаружения ресурсов. Ethereum начал внедрение структурированной P2P-сети с использованием протокола Kademlia [52]. Однако большинство блокчейн-сетей не структурированы, и, более того, если блокчейн является публичным, где не существует ограничений на присоединение к сети или выход из нее, то может произойти множество возможных атак. Таким образом, безопасность блокчейна сильно зависит от сетевой архитектуры. Задержка распространения или проблема синхронизации в P2P-сети могут влиять на протокол консенсуса блокчейна, приводя к несогласованному глобальному представлению блокчейна.
В дополнение к этим проблемам, противник может провести несколько атак в P2P-сети, где некоторые из основных атак следующие:
- Атака Netsplit (Eclipse): противник монополизирует все соединения узла и отделяет этот узел от всей сети. Кроме того, узел не может участвовать в протоколе консенсуса или протоколе проверки подлинности, и это вызывает несогласованность в сети [53].
- Атака маршрутизации: противник изолирует от сети блокчейн множество участников, и таким образом распространение блока по сети задерживается [54].
- DDOS-атака: противник истощает ресурсы сети и нацеливается на честные узлы, чтобы честные узлы не получали услуги или информацию, которые они должны получать [55], [56].