ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 23.11.2023
Просмотров: 86
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
СОДЕРЖАНИЕ
2.2 Содержательная постановка задачи
2.3 Математическая постановка задачи классификации с пересекающимися классами
2.4 Адаптация выбранного математического аппарата для решения задач ВКР
2.6 Выбор IT-инструментария для разработки программного обеспечения
2.8 Разработанное основное алгоритмическое обеспечение
, что делает его более подходящим для мобильных приложений, чем RSA. Цифровые подписи основаны на асимметричной криптографии и могут предоставлять заверения в отношении происхождения, идентификации и статуса электронного документа, транзакции или сообщения, а также подтверждения информированного согласия подписавшего. Для создания цифровой подписи программное обеспечение подписи (например, программа электронной почты) создает односторонний хэш электронных данных, которые должны быть подписаны. Закрытый ключ пользователя используется для шифрования хэша, возвращая значение, уникальное для хешированных данных. Зашифрованный хэш наряду с другой информацией, такой как алгоритм 19 хеширования, формирует цифровую подпись.
Любое изменение данных даже в одном бите приводит к другому значению хэш-функции. Этот атрибут позволяет другим проверять целостность данных, используя открытый ключ подписывающего лица для дешифрования хэша. Если дешифрованный хэш соответствует второму вычисленному хэшу тех же данных, он доказывает, что данные не изменились с момента его подписания. Если эти два хэша не совпадают, данные либо каким-то образом подделаны (что указывает на отказ целостности), либо подпись была создана с помощью закрытого ключа, который не соответствует открытому ключу, представленному подписывающим лицом (с указанием отказа аутентификации). Цифровая подпись также мешает подписавшей стороне отказаться от того, что она что-то подписала (свойство отказоустойчивости). Если подписавшая сторона отрицает действительную цифровую подпись, их секретный ключ либо был скомпрометирован, либо они лгут. Во многих странах, цифровые подписи имеют одинаковую юридическую силу с более традиционными формами подписей[12].
Одна из основных особенностей блокчейна – распределенное хранение информации. База данных сети хранится не на общих серверах, а на миллионах компьютеров, находящихся в разных точках планеты. В блокчейн-сети есть два типа участников.
1. Полные ноды (валидаторы или майнеры). Участники (узлы), которые проверяют подлинность данных, сопоставляя записи новых транзакций с предыдущими.
2. Простые ноды (они же обычные участники, пользователи). Обычные участники осуществляют финансовые или другие операции, например перевод денег. Запись об операции (сумма, адрес получателя, комиссия) направляется в блокчейн сети, где она уже считается транзакцией.
В ходе своей деятельности валидаторы формируют новые блоки из накопленной очереди транзакций, совершаемых пользователями. Блок представляет собой агрегированный набор данных, контейнер, который объединяет транзакции для включения в распределительный реестр. Данные собираются и обрабатываются для размещения в блоке с помощью процесса, называемого майнингом. Скорость создания блока и количество записей транзакций, которые он может содержать, зависит от конкретного блокчейна. Из блоков система формирует упорядоченную «назад» структуру (рисунок 2.3).
Блок в такой структуре может быть идентифицирован с использованием криптографического хеша (также известного как цифровой отпечаток) – алгоритма (секретного ключа, или хеш-ключа) для шифрования данных с помощью криптографии. Расшифровывают данные с помощью этого же ключа или другого, также сгенерированного с помощью криптографии. Таким образом, все данные могут быть связаны через структуру связанного списка.
Рисунок 2.3 – Визуальная иллюстрация блокчейна («цепочки» блоков)
Генерация хеш-ключа происходит случайно с использованием криптографического алгоритма (например, SHA256 в сети Биткоин), а упорядочение «назад» осуществляется через ссылку на родительский блок в поле под названием «хеш предыдущего блока», которая прописывается в заголовок каждого блока (кроме самого первого). Таким образом выходит, что каждый блок содержит хеш своего «отца» внутри собственного заголовка (рисунок 2.4).
Рисунок 2.4 – Визуализация связи блоков через хеш
Последовательность хешей, как правило, создает единую цепочку блоков, которая тянется к самому первому блоку из когда-либо созданных – блоку генезиса. Блок генезиса неизменен в любом блокчейне и является фундаментом для «источника истины» сети (рисунок 1.4).
Рисунок 2.5 – Визуализация блокчейна в виде стопки блоков
Этот фундамент зиждется на том, что, если родительский блок получает любые изменения, меняется его хеш, что также ведет к изменению хеша дочернего блока и изменению ссылки «хеш предыдущего блока». Это, в свою очередь, меняет хеш самого дочернего блока, который, в свою очередь, изменяет ссылки в прежнем блоке, который, в свою очередь, меняет хеш уже своего предыдущего блока и так далее. Этот каскадный эффект гарантирует, что если сеть насчитывает много поколений, то она не может быть изменена (взломана) без изменения всех последующих блоков, поскольку для этого нужно задействовать огромные вычислительные мощности. Или, другими словами, чем длиннее цепочка блоков, тем безопаснее система. Что внутри блока: Блок состоит из заголовка (Head), содержащего метаданные. Далее идет длинный список транзакций (Payload), который занимает большую часть всего объема блока (рисунок 2.6).
Так, на старте блок Биткоина мог вместить более 500 транзакций, поскольку он был объемом 80 байт (сейчас размер больше), а транзакции требовали по 250 байт.
Рисунок 2.6 – Визуализации разделения блока на заголовок и данные транзакции
Содержание блоков, которые были присоединены к цепочке, невозможно изменить или удалить. Вообще, любое изменение данных (например, о переводах криптомонет в сети Биткоин) в блокчейне невозможно в принципе. Система позволяет лишь добавлять новые блоки, которые суммируют итоговый «баланс» информации. Это важная особенность блокчейна, обеспечивающая безопасность истории активов, например, истории транзакций в сети Биткоина. При этом блокчейн гораздо надежнее любой бухгалтерской книги или любого банковского реестра операций,
поскольку копии блокчейна, как уже отмечалось, хранятся на множестве компьютеров (серверов). Чтобы взломать такую сеть, нужно взять под контроль больше половины полных узлов системы. Например, в случае Биткоина это означает, что нужно взломать миллионы компьютеров пользователей. Как блоки связаны друг с другом (рисунок 2.7): Заголовок блока содержит следующую информацию:
• хеш заголовка блока;
• хеш родительского блока;
• хеш всех транзакций, записанных в блоке; • дата и время создания блока;
• параметры bits и nonce;
• версия блока.
Рисунок 2.7 – Содержание блока 20
Хеш заголовка блока – это то, что связывает предыдущий блок с последующим в цепочке блокчейна. Он записывается в следующий блок как хешкод в заголовок родительского блока. Еще в заголовке хранится хеш-код транзакций текущего блока. Он рассчитывается с помощью алгоритма, известного как дерево Меркла (рисунок 2.8) или бинарное дерево хешей (Merkle tree).
Рисунок 2.8 – Структура дерева Меркла
На нижнем уровне дерева каждая транзакция имеет узел, содержащий его хеш-значение. После этого дерево строится таким образом, что родительский узел имеет значение хеша данных, содержащихся в его дочерних элементах, соединяющихся вместе. Структура данных дерева Меркла позволяет проводить быструю проверку посредством построения пути дерева от нижнего уровня до корневого узла. Поскольку каждый вывод транзакции может быть проведен только один раз, пока он расходуется, его можно удалить из структуры дерева с помощью определенных алгоритмов отсечения. Таким образом, можно уменьшить использование дискового пространства без ущерба функции проверки. Работает это так:
1) сначала подсчитываются хеши всех транзакций;
2) затем считается сумма всех хешей пар транзакций;
3) далее считаются хеши от суммы полученных пар хешей и так далее по той же схеме, пока не будет получен один-единственный хеш, который и будет хешем транзакций в блоке. Именно заголовки позволяют отслеживать целостность содержания самих блоков. Как уже говорилось ранее, блокчейн сети биткоин – это база данных, которая записывает и хранит информацию о транзакциях виртуальных монет (биткоинов). Транзакция в такой сети в упрощенном представлении имеет следующий вид (рисунок 2.9):
Рисунок 2.9 – Упрощенное представление транзакции в сети биткоин
В компьютерном коде транзакция, записанная в блок блокчейна, несколько сложнее, поскольку протокол Биткоина оперирует такими понятиями, как Входы (Inputs или In) и Выходы (Outputs или Out).
Любое изменение данных даже в одном бите приводит к другому значению хэш-функции. Этот атрибут позволяет другим проверять целостность данных, используя открытый ключ подписывающего лица для дешифрования хэша. Если дешифрованный хэш соответствует второму вычисленному хэшу тех же данных, он доказывает, что данные не изменились с момента его подписания. Если эти два хэша не совпадают, данные либо каким-то образом подделаны (что указывает на отказ целостности), либо подпись была создана с помощью закрытого ключа, который не соответствует открытому ключу, представленному подписывающим лицом (с указанием отказа аутентификации). Цифровая подпись также мешает подписавшей стороне отказаться от того, что она что-то подписала (свойство отказоустойчивости). Если подписавшая сторона отрицает действительную цифровую подпись, их секретный ключ либо был скомпрометирован, либо они лгут. Во многих странах, цифровые подписи имеют одинаковую юридическую силу с более традиционными формами подписей[12].
2.5 Пример исходных данных
Одна из основных особенностей блокчейна – распределенное хранение информации. База данных сети хранится не на общих серверах, а на миллионах компьютеров, находящихся в разных точках планеты. В блокчейн-сети есть два типа участников.
1. Полные ноды (валидаторы или майнеры). Участники (узлы), которые проверяют подлинность данных, сопоставляя записи новых транзакций с предыдущими.
2. Простые ноды (они же обычные участники, пользователи). Обычные участники осуществляют финансовые или другие операции, например перевод денег. Запись об операции (сумма, адрес получателя, комиссия) направляется в блокчейн сети, где она уже считается транзакцией.
В ходе своей деятельности валидаторы формируют новые блоки из накопленной очереди транзакций, совершаемых пользователями. Блок представляет собой агрегированный набор данных, контейнер, который объединяет транзакции для включения в распределительный реестр. Данные собираются и обрабатываются для размещения в блоке с помощью процесса, называемого майнингом. Скорость создания блока и количество записей транзакций, которые он может содержать, зависит от конкретного блокчейна. Из блоков система формирует упорядоченную «назад» структуру (рисунок 2.3).
Блок в такой структуре может быть идентифицирован с использованием криптографического хеша (также известного как цифровой отпечаток) – алгоритма (секретного ключа, или хеш-ключа) для шифрования данных с помощью криптографии. Расшифровывают данные с помощью этого же ключа или другого, также сгенерированного с помощью криптографии. Таким образом, все данные могут быть связаны через структуру связанного списка.
Рисунок 2.3 – Визуальная иллюстрация блокчейна («цепочки» блоков)
Генерация хеш-ключа происходит случайно с использованием криптографического алгоритма (например, SHA256 в сети Биткоин), а упорядочение «назад» осуществляется через ссылку на родительский блок в поле под названием «хеш предыдущего блока», которая прописывается в заголовок каждого блока (кроме самого первого). Таким образом выходит, что каждый блок содержит хеш своего «отца» внутри собственного заголовка (рисунок 2.4).
Рисунок 2.4 – Визуализация связи блоков через хеш
Последовательность хешей, как правило, создает единую цепочку блоков, которая тянется к самому первому блоку из когда-либо созданных – блоку генезиса. Блок генезиса неизменен в любом блокчейне и является фундаментом для «источника истины» сети (рисунок 1.4).
Рисунок 2.5 – Визуализация блокчейна в виде стопки блоков
Этот фундамент зиждется на том, что, если родительский блок получает любые изменения, меняется его хеш, что также ведет к изменению хеша дочернего блока и изменению ссылки «хеш предыдущего блока». Это, в свою очередь, меняет хеш самого дочернего блока, который, в свою очередь, изменяет ссылки в прежнем блоке, который, в свою очередь, меняет хеш уже своего предыдущего блока и так далее. Этот каскадный эффект гарантирует, что если сеть насчитывает много поколений, то она не может быть изменена (взломана) без изменения всех последующих блоков, поскольку для этого нужно задействовать огромные вычислительные мощности. Или, другими словами, чем длиннее цепочка блоков, тем безопаснее система. Что внутри блока: Блок состоит из заголовка (Head), содержащего метаданные. Далее идет длинный список транзакций (Payload), который занимает большую часть всего объема блока (рисунок 2.6).
Так, на старте блок Биткоина мог вместить более 500 транзакций, поскольку он был объемом 80 байт (сейчас размер больше), а транзакции требовали по 250 байт.
Рисунок 2.6 – Визуализации разделения блока на заголовок и данные транзакции
Содержание блоков, которые были присоединены к цепочке, невозможно изменить или удалить. Вообще, любое изменение данных (например, о переводах криптомонет в сети Биткоин) в блокчейне невозможно в принципе. Система позволяет лишь добавлять новые блоки, которые суммируют итоговый «баланс» информации. Это важная особенность блокчейна, обеспечивающая безопасность истории активов, например, истории транзакций в сети Биткоина. При этом блокчейн гораздо надежнее любой бухгалтерской книги или любого банковского реестра операций,
поскольку копии блокчейна, как уже отмечалось, хранятся на множестве компьютеров (серверов). Чтобы взломать такую сеть, нужно взять под контроль больше половины полных узлов системы. Например, в случае Биткоина это означает, что нужно взломать миллионы компьютеров пользователей. Как блоки связаны друг с другом (рисунок 2.7): Заголовок блока содержит следующую информацию:
• хеш заголовка блока;
• хеш родительского блока;
• хеш всех транзакций, записанных в блоке; • дата и время создания блока;
• параметры bits и nonce;
• версия блока.
Рисунок 2.7 – Содержание блока 20
Хеш заголовка блока – это то, что связывает предыдущий блок с последующим в цепочке блокчейна. Он записывается в следующий блок как хешкод в заголовок родительского блока. Еще в заголовке хранится хеш-код транзакций текущего блока. Он рассчитывается с помощью алгоритма, известного как дерево Меркла (рисунок 2.8) или бинарное дерево хешей (Merkle tree).
Рисунок 2.8 – Структура дерева Меркла
На нижнем уровне дерева каждая транзакция имеет узел, содержащий его хеш-значение. После этого дерево строится таким образом, что родительский узел имеет значение хеша данных, содержащихся в его дочерних элементах, соединяющихся вместе. Структура данных дерева Меркла позволяет проводить быструю проверку посредством построения пути дерева от нижнего уровня до корневого узла. Поскольку каждый вывод транзакции может быть проведен только один раз, пока он расходуется, его можно удалить из структуры дерева с помощью определенных алгоритмов отсечения. Таким образом, можно уменьшить использование дискового пространства без ущерба функции проверки. Работает это так:
1) сначала подсчитываются хеши всех транзакций;
2) затем считается сумма всех хешей пар транзакций;
3) далее считаются хеши от суммы полученных пар хешей и так далее по той же схеме, пока не будет получен один-единственный хеш, который и будет хешем транзакций в блоке. Именно заголовки позволяют отслеживать целостность содержания самих блоков. Как уже говорилось ранее, блокчейн сети биткоин – это база данных, которая записывает и хранит информацию о транзакциях виртуальных монет (биткоинов). Транзакция в такой сети в упрощенном представлении имеет следующий вид (рисунок 2.9):
Рисунок 2.9 – Упрощенное представление транзакции в сети биткоин
В компьютерном коде транзакция, записанная в блок блокчейна, несколько сложнее, поскольку протокол Биткоина оперирует такими понятиями, как Входы (Inputs или In) и Выходы (Outputs или Out).