КРИПТОГРАФИЧЕСКАЯ ИНТЕГРАЛЬНАЯ СХЕМА СПЕЦИАЛЬНОГО НАЗНАЧЕНИЯ, ВКЛЮЧАЮЩАЯ В СЕБЯ ЗАКОДИРОВАННУЮ В ЦЕПИ ФУНКЦИЮ ПРЕОБРАЗОВАНИЯ
SPECIAL-PURPOSE CRYPTOGRAPHIC INTEGRATED CIRCUIT, WHICH INCLUDES ENCODED IN THE CIRCUIT CONVERSION FUNCTION

Область техники, к которой относится настоящее изобретение
Настоящее изобретение относится к конструкции интегральных электронных схем и, более конкретно, некоторые варианты осуществления настоящего изобретения относятся к конструкции криптографических интегральных схем.
Предшествующий уровень техники настоящего изобретения
Интегральные схемы специального назначения (ASIC) представляют собой интегральные схемы, разработанные и сконструированные для конкретной цели или конкретного практического применения. ASIC обеспечивают большую скорость вычислений по сравнению с более медленными, более общими решениями, такими как программные решения, выполняемые процессорами общего назначения или программируемыми пользователем вентильными матрицами (FPGA). Как следует из их названия, ASIC обычно разрабатывают только для одного конкретного назначения, что приводит к компромиссу между гибкостью и скоростью вычислений. ASIC приобретают все большее значение в областях, связанных с криптографией, таких как системы доказательства выполнения работы, системы управления правами на электронные продукты и другие приложения, которые, как правило, характеризуются жесткими требованиями к скорости и эффективности.
Краткое описание фигур
Раскрытое в настоящем документе изобретение будет более подробно описано на примере одного или нескольких различных вариантов осуществления со ссылками на следующие фигуры. Фигуры предоставлены лишь в иллюстративных целях и просто изображают типичные или приведенные в качестве примера варианты осуществления настоящего изобретения. Более того, они предоставлены для облегчения понимания настоящего изобретения и не должны рассматриваться в качестве ограничения его сути, объема или применимости. Следует отметить, что в целях наглядности и упрощения иллюстрации фигуры не обязательно выполнены с соблюдением масштаба.
На фиг. 1 представлена приведенная в качестве примера система криптографической обработки, в которой могут быть реализованы варианты осуществления раскрытого в настоящем документе изобретения.
на фиг. 2 представлена приведенная в качестве примера интегральная схема с поддержкой преобразования в соответствии с вариантами осуществления раскрытого в настоящем документе изобретения, которая содержит программируемый блок преобразования, расположенный в одной из точек вдоль тракта данных интегральной схемы, который рассматривается как часть раскрытого в настоящем документе изобретения.
на фиг. 3 представлена приведенная в качестве примера интегральная схема с поддержкой преобразования в соответствии с вариантами осуществления раскрытого в настоящем документе изобретения, которая содержит программируемый блок преобразования, расположенный в другой точке вдоль тракта данных интегральной схемы, который рассматривается как часть раскрытого в настоящем документе изобретения.
на фиг. 4 представлена приведенная в качестве примера интегральная схема с поддержкой преобразования в соответствии с вариантами осуществления раскрытого в настоящем документе изобретения, которая содержит два программируемых блока преобразования, каждый из которых расположен в некоторой точке вдоль тракта данных интегральной схемы, который рассматривается как часть раскрытого в настоящем документе изобретения.
на фиг. 5A представлена приведенная в качестве примера конфигурация программируемого блока преобразования перед кодированием функции преобразования в соответствии с вариантами осуществления раскрытого в настоящем документе изобретения.
на фиг. 5B представлен приведенный в качестве примера программируемый блок преобразования, закодированный в соответствии с двоичным ключом, в соответствии с вариантами осуществления раскрытого в настоящем документе изобретения.
На фиг. 6 представлен приведенный в качестве примера процесс кодировки функции в соответствии с вариантами осуществления раскрытого в настоящем документе изобретения.
На фиг. 7 представлена блок схема базовой системы криптографической обработки, в которой реализована криптографическая интегральная схема с несколькими ядрами криптографической обработки, в соответствии с вариантами осуществления раскрытого в настоящем документе изобретения.
На фиг. 8 представлена приведенная в качестве примера интегральная схема с поддержкой преобразования, характеризующаяся наличием нескольких ядер криптографической обработки, в соответствии с вариантами осуществления раскрытого в настоящем документе изобретения.
На фиг. 9 представлена другая приведенная в качестве примера интегральная схема с поддержкой преобразования, характеризующаяся наличием нескольких ядер криптографической обработки, при этом каждое ядро криптографической обработки имеет программируемый блок преобразования, в соответствии с вариантами осуществления раскрытого в настоящем документе изобретения.
На фиг. 10 представлена приведенная в качестве примера интегральная схема двойного назначения с поддержкой преобразования в соответствии с вариантами осуществления раскрытого в настоящем документе изобретения.
На фиг. 11 представлен приведенный в качестве примера вычислительный компонент, который может быть использован при реализации различных признаков вариантов осуществления раскрываемого изобретения.
На фиг. 12 представлен приведенный в качестве примера криптографический валидатор результатов с поддержкой преобразования, содержащий одно криптографическое ядро хеширования с поддержкой преобразования и один конфигурационный ключ.
На фиг. 13 представлен приведенный в качестве примера криптографический валидатор результатов с поддержкой преобразования, содержащий два отдельных криптографических ядра хеширования с поддержкой преобразования и два отдельных конфигурационных ключа.
Фигуры не должны рассматриваться в качестве исчерпывающих или ограничивающих настоящее изобретение точно раскрытой формой. Следует понимать, что настоящее изобретение может быть реализовано на практике с модификациями и изменениями, и что раскрываемое изобретение ограничивается только прилагаемой формулой изобретения и ее эквивалентами.
Подробное раскрытие вариантов осуществления настоящего изобретения
В соответствии с различными вариантами осуществления раскрываемого изобретения предоставляется интегральная схема для применения в процессах криптографической проверки на основе доказательства выполнения работы, включая, кроме прочего, системы криптографической проверки сетевых транзакций, как правило, используемые в зарождающейся области технологии блокчейн. Интегральная схема содержит один или несколько блоков цепей, реализующих криптографическую функцию, как правило, криптографическую одностороннюю функцию (ОСФ), которая является труднообратимой, например, защищенный алгоритм хеширования. Одна или несколько функций преобразования, выбранных одним или несколькими пользователями и воплощенных в качестве блоков цепи тракта данных, находятся в тракте данных интегральной схемы в точке перед по меньшей мере одним из блоков цепей, реализующих описанную выше криптографическую функцию. Каждый блок цепи, реализующей функцию преобразования, может быть запрограммирован пользователем путем предоставления конфигурационного ключа, например, ключа, состоящего из строки двоичных чисел. Такой ключ затем воплощается в качестве цепи тракта данных внутри блока преобразования.
После такого программирования цепь внутри блока преобразования будет осуществлять конкретное программируемое преобразование, отражающее ключ, запрограммированный пользователем, данных, которые она получает от цепи, расположенной перед ней вдоль тракта данных интегральной схемы, и передавать преобразованные данные в последующую цепь вдоль тракта данных. Таким образом, независимо от содержимого данных, полученных блоком преобразования, осуществляемое им преобразование будет непосредственно и последовательно влиять на конечное значение, вычисленное цепью, расположенной далее вдоль тракта данных, включая блок или блоки цепей, реализующей описанную выше криптографическую функцию.
За счет взаимодействия преобразования с математическими свойствами используемых криптографических алгоритмов, особенно присущего им характера односторонних функций, которые являются труднообратимыми (здесь, а также в других местах настоящего документа, термины, такие как «трудно» и «легко», должны пониматься с точки зрения теории сложности вычислений, в частности теории полиномиального времени), комбинированный эффект заключается в выполнении системного преобразования битов, содержащихся в конечном значении, вычисленном цепью, которое нелегко расшифровывается, нелегко отличимо от шума и нелегко воспроизводимо стороной, не имеющей полного предварительного знания ключа или ключей пользователя, но которое является полностью последовательным, легко воспроизводимым и, следовательно, поддающимся проверке стороной с предварительным знанием ключей или доступом к средствам для их применения в вычислении даже при отсутствии знания о них (например, стороной, обладающей ASIC, запрограммированной для реализации ключей в своей цепи тракта данных).
Применение вышеуказанного в вычислениях доказательства выполнения работы, обычно используемых в области технологии блокчейн, позволяет значительно расширить гибкость его внедрения. В частности, это позволяет пользователям фактически создавать практически неограниченное количество ортогональных блокчейнов. Каждый из таких блокчейнов может полностью отличаться и отделяться от любого другого, поскольку он характеризуется уникальным набором достоверных решений проблемы доказательства выполнения работы, при этом все такие блокчейны полностью внутренне когерентны в отношении криптографических ссылок каждого блока на предыдущий блок и полностью наглядны любой стороне с доступом к ASIC, сконфигурированной для работы в рамках криптографической платформы данного блокчейна.
Таким образом, различные варианты осуществления описанного в настоящем документе изобретения обеспечивают создание нового поколения ASIC, предназначенных для проверки сетевых транзакций связанных с блокчейнами операций, которые способны проверять транзакции среди практически неограниченного количества отличающихся и полностью ортогональных блокчейнов, публичных или частных. Такие блокчейны могут безопасно эксплуатироваться в непосредственной близости друг к другу и среди различных или одинаковых сетей.
Дополнительно, предусмотрены различные реализации описанного в настоящем документе изобретения, которые описывают различные способы воплощения ключа или ключей функции преобразования в виде цепи тракта данных внутри интегральной схемы таким образом, чтобы вызывать очень ограниченные непроизводительные издержки в процессе эксплуатации, сохраняя тем самым основные преимущества ASIC над другими типами решений в отношении скорости и эффективности.
Кроме того, предусмотрены различные способы для дополнительной защиты ключа или ключей, воплощенных в виде цепи тракта данных внутри интегральной схемы. К таким способам, кроме прочего, относится следующее: различные способы предотвращения обнаружения ключа или ключей путем анализа входных и выходных данных интегральной схемы; применение одной или нескольких плавких блокировочных перемычек в соединительной цепи между интерфейсом настройки конфигурации, при помощи которого пользователь может запрограммировать функцию преобразования, и блоком или блоками цепей, осуществляющих преобразование в качестве цепи; применение многокомпонентных ключей; применение нескольких функций преобразования; применение функций преобразования, доступ к которым возможен только во время процесса производства интегральной схемы; и т.п.
Другие признаки и аспекты раскрываемого изобретения будут очевидны из нижеследующего подробного раскрытия, выполненного в сочетании с прилагаемыми фигурами, на которых в качестве примера проиллюстрированы признаки в соответствии с вариантами осуществления раскрываемого изобретения.
Системы проверки доказательства выполнения работы – это класс систем проверки, основанный на решении сложных вычислительных задач, причем полученный ответ не имеет какой-либо внутренней ценности, а имеет доказательную ценность того, что значительный объем вычислительной работы был проведен для получения результата. Отсюда и название. Системы проверки доказательства выполнения работы находят применение в широком диапазоне современных вычислительных систем, включая, кроме прочего, системы, используемые для сдерживания сетевых атак типа отказ в обслуживании (DoS); системы, используемые для предотвращения отправки нежелательной коммерческой почты (спама); и системы, используемые для других практических применений.
Одним из таких других применений проверки доказательства выполнения работы является процесс криптографической проверки сетевых транзакций, лежащий в основе зарождающейся области технологии блокчейн. Технология блокчейн включает в себя различные базовые технологии, обеспечивающие системы децентрализованных транзакций, не требующих доверия, например, которые лежат в основе криптовалют, наиболее известной из которых является биткоин.
В качестве средства для обеспечения контекста, в котором могут функционировать некоторые реализации описанного в настоящем документе изобретения, полезно кратко обсудить принципы работы блокчейн-систем, прежде чем приводить описание каждой иллюстрации.
Блокчейн представляет собой список упорядоченных по времени, нередактируемых записей, идентифицирующих все предыдущие транзакции внутри системы, начиная с момента времени первоначального блока транзакций (который может именоваться первичным блоком) до настоящего времени. Блоки транзакций, содержащие подробную информацию, относящуюся к одной или нескольким достоверными транзакциям, которые произошли в сети, но не были включены в какой-либо блок транзакций, ранее добавленный в блокчейн, непрерывно добавляются к концу блокчейна.
Каждый блок транзакций идентифицируется при помощи одного или нескольких уникальных заголовков блока, которые содержат ссылку на все транзакции, включенные в указанный блок транзакций, а также другую релевантную информацию. В качестве примера, ссылка на различные транзакции, включенные в блок транзакций, может быть включена в заголовок блока транзакций при помощи структуры Меркла-Дамгарда или при помощи других средств.
Заголовки блока транзакций и информация, содержащаяся в них, являются основным организационным принципом блокчейна. Например, кроме прочего, заголовки блоков транзакций могут включать в себя криптографически проверяемую ссылку на заголовок блока транзакций непосредственно предшествующего достоверного блока транзакций в блокчейне. Таким образом, такие ссылки криптографически связывают друг с другом все соседние блоки. Это приводит к организации всех блоков в единую непрерывную цепь блоков, или блокчейн, приблизительно таким же путем, как и в случае набора звеньев физической цепи, где каждое звено соединено с предыдущим элементом физической цепи.
Блоки транзакций, которые должны быть добавлены к концу блокчейна, могут быть идентифицированы при помощи системы доказательства выполнения работы, как описано ранее. Такая система доказательства выполнения работы может быть основана на криптографических ОСФ, как описано ранее. ОСФ иногда именуют криптографическими операциями хеширования. В области технологии блокчейн они иногда могут именоваться операциями хеширования.
В области технологии блокчейн процесс проверки доказательства выполнения работы обычно выполняют по заголовкам блоков транзакций, а не по самим транзакциям. По этой причине, пока выполняется процесс проверки доказательства выполнения работы, один блок транзакций может упоминаться во множестве заголовков блоков транзакций, хотя, в конечном счете, подавляющее большинство из них будет отброшено. Таким образом, для любой группы транзакций вполне нормально быть упомянутой в большом количестве заголовков блоков транзакций, каждый из которых надлежащим образом образован в соответствии с протоколом и каждый из которых содержит достоверную и точную информацию, при этом все они являются немного отличающимися друг от друга.
Такие заголовки блоков транзакций иногда именуют потенциальными заголовками блоков транзакций. Вполне нормально, что количество потенциальных заголовков блоков транзакций является большим, в частности, если используются высокопроизводительные ASIC. Например, одна высокопроизводительная ASIC может компоновать, хешировать, оценивать и отбрасывать несколько сотен миллиардов потенциальных заголовков блоков транзакций каждую секунду.
Как правило, потенциальные заголовки блоков транзакций будут подвергнуты одной или нескольким операциям хеширования, и результирующее хеш-значение будет сравниваться с определенными существующими критериями достоверности. В случае биткоина конкретными используемыми операциями хеширования являются два последовательных применения 256-битной версии 2-й версии безопасного алгоритма хеширования (SHA), как определено Национальным Институт Стандартов и Технологий (NIST). Эту версию алгоритма иногда именуют SHA-256, и два его последовательных применения иногда именуют двойным SHA-256. Для упрощения алгоритм могут иногда называть двойным SHA. Однако следует отметить, что это просто специализированный алгоритм, который используется в случае биткоина; при этом другие блокчейны могут использовать и используют другие алгоритмы. Аналогично, различные варианты осуществления описанного в настоящем документе изобретения могут использовать различные алгоритмы в области технологии блокчейн, при этом другие варианты осуществления применимы в областях, отличных от технологии блокчейн.
Как и в других применениях систем проверки доказательства выполнения работы, сравнение потенциальных результатов с критериями достоверности определяет дальнейшую обработку. Если потенциальный заголовок блока транзакций не удовлетворяет критериям достоверности, он отбрасывается, и система переходит к обработке следующего потенциального заголовка блока транзакций. Если потенциальный заголовок блока транзакций удовлетворяет критериям достоверности, то он считается достоверным заголовком блока транзакций.
При нахождении достоверного заголовка блока транзакций осуществляется ряд других операций. В области технологии блокчейн такие операции, как правило, завершаются путем добавления достоверного заголовка блока транзакций к концу блокчейна вместе с блоком транзакций, с которым он связан. Кроме того, могут происходить и другие операции, такие как выплата вознаграждения стороне, которая первая сообщила о нахождении достоверного заголовка блока транзакций. После этого поиски нового достоверного заголовка блока транзакций начинаются заново, и процесс повторяется.
Вышеизложенное в целом описывает определенные аспекты области технологии блокчейн, в частности некоторые аспекты, связанные с сущностью технологии блокчейн, а именно процесс добавления новых блоков транзакций к цепи, роль и состав заголовков блоков транзакций, работа процесса доказательства выполнения работы и другие. Однако множество других аспектов технологии блокчейн не были описаны. Например, вышеизложенное не описывает то, что можно охарактеризовать как другую половину этого процесса, то есть процесс генерирования транзакций, а не процесс группирования и обработки транзакций. Как правило, подробно описанные аспекты технологии блокчейн являются наиболее перспективными для описанного в настоящем документе изобретения и некоторых его применений в криптографических интегральных схемах, используемых в этой области, тогда как аспекты, которые обычно реализуются программным обеспечением, выполняемым микропроцессорами общего назначения, или иным образом менее перспективны для описанного в настоящем документе изобретения, описаны менее подробно или вообще не описаны.
Основные принципы работы всех аспектов блокчейна определяются протоколом, который обычно именуют блокчейн-протоколом. Это включает в себя те аспекты, которые более подробно описаны выше. В свою очередь, блокчейн-протоколы разработаны для удовлетворения конкретных требований специализированного приложения, для обслуживания которого блокчейн был разработан, как интерпретируется разработчиком или разработчиками протокола. Эти требования могут значительно варьировать от случая к случаю, и, следовательно, не все блокчейн-протоколы должны быть одинаковыми. Фактически, они могут значительно отличаться друг от друга.
Блокчейн-протокол, который управляет операциями блокчейна, лежащего в основе биткоина, иногда именуют просто биткоин-протоколом. Биткоин-протокол является основополагающей работой в узком смысле этого термина; большая часть, если не все то, что мы теперь именуем технологией блокчейн, является производным, основанным на биткоин-протоколе, в той, или иной степени.
Каждый блокчейн поддерживается блокчейн-сетью, которая в области технологии блокчейн иногда именуется просто сетью. В сущности, определение блокчейн-сети является простым; это совокупность аппаратного и программного обеспечения, которое поддерживает блокчейн путем реализации политик, определенных протоколом. На практике блокчейн-сети могут быть сложными. Они представляют собой распределенные неоднородные сочетания самых различных устройств, которые постоянно или периодически подключены к сети, используют различное программное обеспечение, написанное в различное время различными разработчиками, осуществляют различные операции и совместно работают в системе, не требующей доверия. Некоторые блокчейн-сети могут быть обширными и могут использовать значительно продвинутые технологии, включая криптографические ASIC высокой сложности.
В целом, в последние годы технология для решения вычислительно-трудоемких расчетов доказательства выполнения работы, связанных с блокчейн-системами, быстро развивается. Например, в случае транзакций биткоинов процесс доказательства выполнения работы, связанный с определением достоверных заголовков блока транзакций, изначально проводился с использованием программных приложений, выполняемых процессорами общего назначения. Однако скорость и эффективность имеют первостепенное значение в системах доказательства выполнения работы, включая системы, используемые в контексте блокчейн-систем. Соответственно, операции по «майнингу» биткоинов перешли к специализированным аппаратным решениям, включая ASIC. ASIC обеспечивают значительное увеличение скорости и эффективности по причине линейной скорости, с которой могут производиться вычисления. Как следует из их названия, ASIC разработаны и изготовлены для осуществления одного конкретного назначения, в этом случае математических операций, связанных с реализацией определенного криптографического протокола.
Успех платежной сети биткоин свидетельствует о безопасной природе технологии блокчейн. Соответственно, со временем приобрело интерес использование блокчейнов в других релевантных областях. Однако ASIC предназначены для узкого соответствия определенным элементам протокола, в котором они должным быть реализованы, в частности элементам протокола, описывающего особенности системы доказательства выполнения работы согласно протоколу. Для платежной сети биткоин каждая ASIC спроектирована компоновать с большой скоростью заголовки блоков, как описано биткоин-протоколом, подвергать их двум последовательным воздействиям 256-битной версии протокола безопасного алгоритма хеширования (SHA-256) и, наконец, проверять достоверность результирующего 256-битного двоичного хеш-значения путем его сравнения с заранее заданным критерием достоверности, который в случае биткоин-протокола реализован в качестве уровня сложности, что рассматривалось ранее.
Это ограничивает гибкость и возможность распространять технологию блокчейн за пределами платежной сети биткоин или сетей, основанных на ней или «привязанных» к ней, в той или иной степени, поскольку для высокопроизводительных реализаций доказательства выполнения работы обычно требуется использование ASIC, при этом ASIC текущего поколения способны реализовывать только одну высоко специализированную систему доказательства выполнения работы. Более того, из-за характера процесса доказательства выполнения работы любой частный блокчейн, который основан на той же системе доказательства выполнения работы, которая используется биткоином для его собственного процесса доказательства выполнения работы, может легко быть нарушен третьей стороной, использующей коммерчески доступное оборудование, разработанное для решения системы доказательства выполнения работы согласно биткоин-протоколу.
Варианты осуществления раскрытого в настоящем документе изобретения направлены на разработку, изготовление и применение интегральных схем специального назначения (ASIC) для практических применений в области криптографии. Более конкретно, различные варианты осуществления раскрытого в настоящем документе изобретения относятся к ASIC с одной или несколькими программируемыми функциями преобразования, воплощенными в качестве цепи, встроенной в высокоскоростной тракт данных интегральной схемы. Посредством кодирования функции преобразования в качестве цепи тракта данных варианты осуществления раскрытого в настоящем документе изобретения позволяют ASIC реализовывать любую систему из очень широкого диапазона систем доказательства выполнения работы в соответствии с выбором пользователя.
Это, в свою очередь, позволяет безопасно эксплуатировать блокчейн-системы даже при наличии большого количества других ASIC, специально разработанных для решения вычислений доказательства выполнения работы, связанных с криптографической проверкой сетевых блокчейн-транзакций, включая, кроме прочего, ASIC для «майнинга» биткоина, которые иначе могут угрожать безопасности или целостности систем на основе технологи блокчейн, в которых не используется раскрытое в настоящем документе изобретение.
Таким образом, варианты осуществления описанного в настоящем документе изобретения позволяют создать полностью новое поколение ASIC, специально разработанных для блокчейн-применений, которые обеспечивают в настоящее время невообразимый уровень гибкости и безопасности. Кроме того, реализации описанного в настоящем документе изобретения позволяют обеспечить такую гибкость за счет пренебрежимо малого снижения производительности обработки.
Прежде чем перейти к подробному рассмотрению вариантов осуществления раскрытого в настоящем документе изобретения, полезно обсудить общую последовательность выполняемых действий, включенных в обработку операций доказательства выполнения работы, связанных с проверкой сетевых блокчейн-транзакций при помощи систем, использующих ASIC, которые разработаны для этого применения.
На фиг. 1 представлен пример системы 100 криптографической проверки сетевых транзакций общего типа, обычно используемой для блокчейн-применений и содержащей интегральную схему 103, разработанную для этого применения, в которой могут быть реализованы варианты осуществления раскрытого в настоящем документе изобретения.
Для удобства рассмотрения элементы и общее функционирование приведенной в качестве примера системы 100 криптографической обработки будут описаны в отношении биткоин-протокола и сети, поддерживающей блокчейн биткоина. Несмотря на подобное описание, специалисту в данной области техники, читающему настоящее раскрытие, будет понятно, что приведенная в качестве примера система 100 криптографической проверки сетевых транзакций подходит для применений, отличающихся от платежной сети биткоин.
Примеры других практических применений могут включать в себя как частные, так и публичные блокчейны, используемые для практических применений, отличающихся от применений, обычно связанных с биткоином. К другим примерам практических применений, которые отличаются от применений, связанных с биткоином, и в которых может быть использована технология блокчейн, относятся, кроме прочего: системы межбанковских расчетов; системы фондовых бирж; системы товарных бирж; системы управление правами на электронные продукты; системы регистрации прав на физическое имущество; системы регистрации объектов интеллектуальных прав; системы контроля расхода материальных средств; системы комплекса услуг по обработке заказов; системы отслеживания пакетов; системы расчета зарплаты; защищенные системы распознавания; системы для контроля прозрачности и отслеживания использования средств; системы учета в целом; платежные системы в целом; системы регистрации в целом; финансовые системы в целом; и т.п.
Приведенная в качестве примера система 100 криптографической проверки сетевых транзакций содержит интегральную схему 103. Согласно различным вариантам осуществления интегральная схема 103 может включать в себя один или несколько компонентов обработки, включая интерфейс 104 настройки конфигурации, формирователь 105 заголовка блока транзакций, буфер 106, криптографическое ядро 107 хеширования, оцениватель 111 и механизм 112 принятия решений. Согласно некоторым вариантам осуществления один или несколько компонентов могут быть объединены в одну интегральную схему, как представлено на фиг. 1, где все компоненты, представленные внутри интегральной схемы 103, являются физической частью одной интегральной схемы (то есть все компоненты выполнены внутри одного кристалла). Согласно другим вариантам осуществления некоторые из них могут быть выполнены на различных кристаллах и объединены друг с другом при помощи соединительной цепи. Каждый из компонентов будет подробно рассмотрен в отношении приведенной в качестве примера системы 100 криптографической обработки.
Пользователь 101 может настроить один или несколько параметров интегральной схемы при помощи интерфейса 104 настройки конфигурации. К неограничивающим примерам параметров интегральной схемы, которые могут быть настроены пользователем 101, относится, среди прочего: инициализация; внутренняя тактовая частота; или режим связи с другими сетевыми системами. Согласно некоторым вариантам осуществления пользователем 101 может быть человек, обменивающийся данными с интегральной схемой 103 при помощи терминала. Согласно другим вариантам осуществления пользователем 101 может быть автоматизированный процесс, выполняемый в системе или сети. Согласно различным вариантам осуществления интерфейс 104 настройки конфигурации также может быть использован пользователем 101 для осуществления мониторинга рабочих характеристик интегральной схемы 103. Неограничивающие примеры рабочих характеристик, за которыми пользователь 101 может осуществлять мониторинг и которые могут быть предоставлены ему, могут включать в себя, кроме прочего: текущую деятельность; рабочую температуру; рабочее напряжение; или состояние отказа.
Каждый потенциальный заголовок блока транзакций, который последовательно обрабатывается интегральной схемой 103, скомпонован формирователем 105 заголовка блока транзакций с использованием сочетания данных, генерируемых самим формирователем, и данных, полученных из транзакционных и системных данных 102b. Согласно различным вариантам осуществления транзакционные и системные данные 102b скомпилированы предыдущим процессом – программным обеспечением 102a для «майнинга». В любом случае программное обеспечение 102а для «майнинга» является частью программного обеспечения, выполняемого процессором общего назначения и обменивающегося данными с остальной блокчейн-сетью при помощи соединения с общедоступной частью сети Интернет, которое используется для компиляции транзакционных и системных данных 102b.
Определенные свойства общей архитектуры блокчейн-систем, в частности хорошо продуманное обособление различных аспектов системы, обеспечивают эффективную изоляцию между операциями интегральной схемы 103 и сведениями об операциях программного обеспечения 102a для «майнинга». В результате этого почти все сведения об операциях программного обеспечения для «майнинга», включая его физическое местоположение, используемые им процедуры для связи с остальной сетью, используемые им процедуры для компиляции сетевых данных в транзакционные и системные данные 102b, а также другие сведения, являются прозрачными для операций интегральной схемы 103. Аналогично, является ли сеть, к которой подключено программное обеспечение 102а для «майнинга», платежной сетью биткоина или другой сетью, ответственной за поддержания другого блокчейна, также прозрачно для интегральной схемы 103 и различных вариантов осуществления описанной в настоящем документе технологии.
К транзакционным и системным данным 102b могут относиться, например: системная дата и время; версия протокола; структура Меркла-Дамгарда, представляющая группу индивидуальных транзакций, включенных в блок транзакций; уникальный идентификатор самого последнего на данный момент блока, который должен быть добавлен к блокчейну; и аналогичные данные. После приема транзакционных и системных данных 102b формирователь 105 заголовка блока транзакций дополнительно обрабатывает их, чтобы генерировать один или несколько потенциальных заголовков блока транзакций.
Согласно различным вариантам осуществления формирователь 105 заголовка блока транзакций может анализировать транзакционные и системные данные 102b и добавить к ним некоторые другие элементы, такие как последовательный счетчик, чтобы генерировать серию заголовков блока транзакций, все из которых достоверно сформированы и должным образом представляют один и тот же набор транзакций, но немного отличаются друг от друга.
Согласно различным вариантам осуществления скорость, с которой формирователь 105 заголовка блока транзакций может формировать заголовки блока транзакций, все из которых точно представляют блок транзакций на основе транзакционных и системных данных 102b, но немного отличаются друг от друга, может быть достаточно высокой (т.е. составлять от нескольких миллиардов до сотен миллиардов отдельных потенциальных заголовков блока транзакций в секунду). В зависимости от реализации буфер 106 может хранить созданные потенциальные заголовки блока транзакций, ожидающие обработки ядром 107 хеширования.
Каждая интегральная схема 103 может содержать одно или несколько ядер хеширования или других ядер криптографической обработки. Для упрощения представленная в качестве примера система 100 криптографической обработки показана с одним ядром 107 хеширования. Согласно различным вариантам осуществления может быть реализовано несколько параллельных ядер хеширования или других ядер криптографической обработки, как представлено на фиг. 7. Ядро 107 хеширования включает в себя один или несколько блоков хеширования. В примере, представленном на фиг. 1, ядро 107 хеширования содержит два блока 108, 110 хеширования. Блок хеширования может быть сконфигурирован в качестве набора цепей, который выполняет математические операции, определенные применимым стандартом хеширования. Согласно различным вариантам осуществления ядро 107 хеширования может реализовывать общий стандарт хеширования, такой как, например, безопасный алгоритм хеширования (SHA). Согласно некоторым вариантам осуществления может быть использована 256-битная версия SHA (SHA-256). Согласно другим вариантам осуществления ядро 107 хеширования может включать в себя один блок хеширования. Различные варианты осуществления могут включать в себя больше двух блоков хеширования.
Согласно варианту осуществления, представленному на фиг. 1, каждый блок 108, 110 хеширования разработан для выполнения последовательности математических операций в соответствии со стандартом SHA-256. Ядро 107 хеширования обрабатывает каждый потенциальный заголовок блока транзакций в соответствии с реализуемым криптографическим стандартом. Согласно некоторым вариантам осуществления первый блок 108 хеширования может принимать потенциальные заголовки блока транзакций, генерируемые формирователем 105 заголовка блока транзакций, в качестве входных данных и подвергать их математическим операциям, определенным стандартным алгоритмом хеширования. Первый блок 108 хеширования выдает первое хеш-значение 109 для каждого потенциального заголовка блока транзакций, получаемого им от формирователя 105 заголовка блока транзакций. Каждое первое хеш-значение 109 связывается с данным потенциальным заголовком блока транзакций, действуя как тип «цифровой подписи». Согласно различным вариантам осуществления первое хеш-значение 109 может быть дополнительно обработано вторым блоком 110 хеширования. Это является представлением двойной операции хеширования, такой как используется в платежной сети биткоин. Согласно некоторым вариантам осуществления второй блок 110 хеширования может выполнять такую же криптографическую операцию, как и первый блок хеширования 108. Согласно различным вариантам осуществления второй блок 110 хеширования может выполнять криптографическую операцию, которая отличается от операции, выполняемой первым криптографическим блоком 108 хеширования.
Выходные данные из ядра 107 хеширования сравнивают с заданными критериями для идентификации достоверного блока. Согласно различным вариантам осуществления выходные данные из ядра 107 хеширования могут представлять собой выходные данные из второго блока 110 хеширования. Оцениватель 111 интегральной схемы 103 берет конечное хеш-значение, выданное ядром 107 хеширования для каждого потенциального заголовка блока транзакций, и проверяет, соответствуют ли обработанные выходные данные заранее определенным критериям достоверности. В конкретном случае платежной сети биткоин критерии достоверности выражены определенным числовым значением (часто именуемым уровнем сложности), которое не может превышаться числовым значением 256-битного числа, которое получено при помощи выходных данных конечного хеша, если оно считается достоверным. Таким образом, если числовое значение или конечный хеш превышает уровень сложности на любую величину, потенциальный заголовок блока транзакций не проходит проверку достоверности, а если не превышает уровень сложности, то проходит проверку достоверности. В блокчейн-системах, отличающихся от системы, связанной с платежной сетью биткоин, некоторые варианты осуществления могут использовать такие же критерии для определения достоверности, при этом другие варианты осуществления могут использовать отличающиеся критерии для определения достоверности.
Если оцениватель 111 определяет, что конечное хеш-значение не соответствует критерию достоверности, механизм 112 принятия решений может отбросить потенциальный заголовок блока транзакций, связанный с обработанными выходными данными, оцененными при помощи оценивателя 111. Если оцениватель 111 определяет, что конечное хеш-значение соответствует критериям достоверности, то механизм 112 принятия решений сообщит об этом внешнему окружению при помощи отчета 113b об успехе, переданного получателю 113a отчета об успехе. Отчет 113b об успехе наряду с другой информацией, связанной с ним, такой как связанные с ним заголовки блоков транзакций и другие элементы, является криптографическим доказательством выполнения работы, для получения которого система в целом и разработана.
Согласно различным вариантам осуществления получатель 113b отчета об успехе может представлять собой одно целое с программным обеспечением 102а для «майнинга». Согласно другим вариантам осуществления получатель 113b отчета об успехе может представлять собой процесс, отличный от программного обеспечения 102а для «майнинга». После того как отчет 113b об успехе получен, получатель 113a отчета об успехе может выполнить ряд последующих действий. Согласно различным вариантам осуществления такие действия, как правило, связаны с сообщением о нахождении достоверного заголовка блока транзакций остальным членам сети, и, как правило, завершаются добавлением нового блока транзакций к концу блокчейна и началом поиска нового достоверного блока транзакций. В конкретном случае платежной сети биткоин такие действия могут дополнительно включать в себя другие аспекты, такие как начисление вознаграждения первой стороне, сообщившей о нахождении нового достоверного заголовка блока транзакций, и другие.
Однако, как и в предыдущем описании, связанном с операциями программного обеспечения 102а для «майнинга», стоит отметить, что точный характер получателя 113b отчета об успехе и подробности, связанные с тем, какие действия он может или не может предпринять после получения отчета об успехе 113a, являются прозрачными для различных вариантов осуществления описанного в настоящем документе изобретения. Аналогично, обменивается ли получатель 113b отчета об успехе данными с сетью, связанной с поддержанием блокчейна, лежащего в основе биткоина, или сетью, связанной с поддержанием другого блокчейна, является прозрачным для некоторых вариантов осуществления описанного в настоящем документе изобретения.
Совместно с базовой последовательностью выполняемых действий технологии блокчейн, которая описана в отношении приведенной в качестве примера реализации, будут рассмотрены варианты осуществления раскрытого в настоящем документе изобретения со ссылками на приведенную в качестве примера систему 100 криптографической обработки, которая изображена на фиг. 1. В целях упрощения рассмотрения варианты осуществления будут рассмотрены на примере биткоина и связанной с ним реализации блокчейна. Однако, как рассмотрено выше, специалисту в данной области техники, читающему настоящее описание, будет понятно, что описанные в нем варианты осуществления применимы во многих других релевантных областях.
На фиг. 2 представлена приведенная в качестве примера интегральная схема 203 с поддержкой преобразования в соответствии с вариантами осуществления раскрытого в настоящем документе изобретения. Приведенная в качестве примера интегральная схема 203 с поддержкой преобразования реализована в системе 200 криптографической обработки, которая подобна системе 100, описанной со ссылкой на фиг. 1. Интегральная схема 203 с поддержкой преобразования может включать в себя интерфейс 204 настройки конфигурации, формирователь 205 заголовка блока транзакций, буфер 206, ядро 207 криптографической обработки, оцениватель 211 и механизм 212 принятия решений, которые аналогичны компонентам, рассмотренным выше в отношении интегральной схемы 103, которая представлена на фиг. 1.
Как рассмотрено ранее, варианты осуществления раскрытого в настоящем документе изобретения помещают функцию преобразования, воплощенную в виде цепи, в криптографический тракт данных интегральной схемы 203. Согласно примеру, представленному на фиг. 2, ядро 207 криптографической обработки интегральной схемы 203 с поддержкой преобразования содержит два блока 208, 210 хеширования и программируемый блок 215 преобразования. Блоки 208, 210 хеширования могут быть реализованы таким образом, чтобы включать в себя хеширование или другую криптографическую функцию, такую как, например, цепь для выполнения процесса хеширования в соответствии со стандартом SHA-256.
Согласно проиллюстрированному примеру программируемый блок 215 преобразования представляет собой блок электронной цепи, которая специально разработана таким образом, чтобы подходить для интегрирования непосредственно в тракт данных с линейной скоростью высокопроизводительной криптографической интегральной схемы, при этом блок пригоден для программирования для осуществления любой операции из узкого диапазона возможных математических операций преобразования над входными данными, получаемыми от цепи, которая расположена перед ним в тракте данных интегральной схемы, и выдачи результирующих преобразованных данных в цепь, которая расположена после него в тракте данных интегральной схемы, с максимальной линейной скоростью.
Согласно некоторым вариантам осуществления, таким как варианты осуществления, изображенные на фиг. 2, программируемый блок 215 преобразования интегрирован в тракт данных ядра 207 криптографической обработки. Согласно этому примеру ASIC сконфигурирована таким образом, чтобы все компоненты в ядре 207 криптографической обработки располагались вдоль одного высокоскоростного тракта данных, при этом существует одна точка входа и одна точка выхода с каждого конца тракта данных, и отсутствует внешний доступ к сигналам, перемещающимся между компонентами, составляющими ядро 207 криптографической обработки.
Интегрирование программируемого блока 215 преобразования в высокоскоростной тракт данных внутри ядра 207 криптографической обработки позволяет ядру 207 криптографической обработки функционировать с линейной скоростью, и, таким образом, схема в целом претерпевает очень небольшое снижение производительности по сравнению с ядром криптографической обработки без программируемого блока 215 преобразования. Это достигается путем воплощения функции преобразования в виде цепи тракта данных (т.е. программируемого блока 215 преобразования) путем, который более подробно будет рассмотрен ниже.
Аналогично, расположение цепи в ядре 207 криптографической обработки на унифицированном тракте данных защищает от обнаружения конфигурационный ключ 214 (более подробно рассмотренный со ссылками на фиг. 5A, 5B, и 6). Ядро 207 криптографической обработки содержит одну точку входа и одну точку выхода с каждого конца и не имеет внешнего доступа к сигналам, перемещающимся между компонентами, составляющими ядро 207 криптографической обработки. Таким образом, цепь внутри ядра 207 криптографической обработки (например, программируемый блок 215 преобразования) защищена в отношении раскрытия или обнаружения конфигурационного ключа 214, воплощенного в программируемом блоке 215 преобразования, путем сравнения входных и выходных данных, производимых различными компонентами, расположенными вдоль тракта данных.
В конкретном случае приведенного в качестве примера варианта осуществления, который показан на фиг. 2, тракт данных внутри ядра 207 криптографической обработки сконфигурирован таким образом, чтобы единственной точкой входа всех данных, обрабатываемых ядром 207 криптографической обработки, являлся первый блок 208 хеширования. Исходя из этого, данные, такие как заголовки блока транзакций, проходят по тракту данных, перемещаясь через программируемый блок 215 преобразования, а затем через второй блок 210 хеширования. Второй блок 210 хеширования является единственной точкой выхода, после которой данные покидают ядро 207 криптографической обработки и направляются к оценивателю 211. Расположение программируемого блока 215 преобразования перед по меньшей мере одним блоком хеширования (в этом примере перед блоком 210 хеширования) предотвращает обнаружение конфигурационного ключа 214, воплощенного в программируемом блоке 215 преобразования, при помощи аналитических методик. Например, такое расположение предотвращает обнаружение конфигурационного ключа 214 путем вставки данных, которые обеспечивают получение определенного результата при осуществлении над ними конкретного набора криптографических процессов (например, двойного хеширования SHA-256), а затем сравнения результата, полученного при помощи ядра 207 криптографической обработки с поддержкой преобразования, для выведения конфигурационного ключа 214.
Согласно другим вариантам осуществления, как будет более подробно рассмотрено ниже со ссылкой на фиг. 3, программируемый блок 215 преобразования может быть расположен перед первым блоком 208 хеширования, так что единственной точкой входа ядра 207 криптографической обработки является программируемый блок 215 преобразования.
Согласно различным вариантам осуществления программируемый блок 215 преобразования может быть запрограммирован после изготовления интегральной схемы 203 с поддержкой преобразования, чтобы впоследствии выполнять какое-либо одно преобразование из широкого диапазона возможных математических преобразований над данными, проходящими через него с линейной скоростью благодаря расположению на тракте данных интегральной схемы 203.
Согласно некоторым вариантам осуществления механизм, при помощи которого программируемый блок 215 преобразования способен принимать и сохранять такое программирование, может быть реализован при помощи некоторого типа энергонезависимой постоянной памяти (энергонезависимого ОЗУ), включая, кроме прочего, флэш-память или другие типы энергонезависимой памяти. Согласно различным вариантам осуществления средства настройки программируемого блока 215 преобразования могут быть реализованы при помощи однократно программируемых компонентов (OTP) цепи, включая, кроме прочего, плавкие микроперемычки или другие типы однократно программируемых компонентов цепи. Как правило, плавкие микроперемычки используют в простых аспектах изготовления интегральных схем, таких как запись производственной информации в интегральные схемы во время изготовления или устранение неисправных блоков памяти, идентифицированных во время тестирования. Для удобства рассмотрения раскрытое в настоящем документе изобретение будет рассмотрено со ссылками на программируемый блок 215 преобразования, содержащий плавкие микроперемычки, который будет более подробно описан со ссылками на фиг. 5 и 6.
Различные варианты осуществления интегральной схемы 203 с поддержкой преобразования могут позволить выполнить настройку программируемого блока 215 преобразования при помощи конфигурационного ключа 214. Согласно различным вариантам осуществления конфигурационный ключ 214 может быть закодирован в программируемый блок 215 преобразования пользователем 201, использующим интерфейс 204 настройки конфигурации. Согласно таким вариантам осуществления раскрытое в настоящем документе изобретение предусматривает несколько различных сторон, потенциально выполняющих роль пользователя 201 с целью кодирования конфигурационного ключа 214 в программируемый блок 215 преобразования. К таким сторонам могут относиться, например: изготовитель ИС на заводе-изготовителе; один или несколько конечных пользователей; или какое-либо сочетание перечисленного.
Согласно другим вариантам осуществления, в которых пользователь 201 является единственной стороной, пользователь 201 может предоставить конфигурационный ключ 104, который определяет, какое преобразование будет применено к каждому биту, содержащему данные, получаемые программируемым блоком 215 преобразования. Например, когда программируемый блок 215 преобразования разработан для 256-битной системы, пользователь 201 может ввести конфигурационный ключ 214, определяющий, какое преобразование (если таковое имеется) программируемый блок 215 преобразования применяет ко всем 256 битам принятых данных. Таким образом, указанная сторона будет иметь возможность запрограммировать какую-либо одну из 2^256 математических операций, на выполнение которых программируемый блок 215 преобразования настраивается при помощи 256-битного ключа.
Аналогично, продолжая вышеизложенный 256-битный пример, согласно вариантам осуществления, в которых пользователь 201 включает в себя одну или несколько сторон, настройка программируемого блока 215 преобразования может быть осуществлена каждым из одного или нескольких пользователей 201, каждый из которых вносит часть конфигурационного ключа 214. Такая схема может иногда именоваться многоключевой схемой, и результирующий ключ может иногда именоваться многокомпонентным ключом. Согласно некоторым вариантам осуществления каждый из одного или нескольких пользователей 201 может настраивать, какое преобразование (если таковое имеется) программируемый блок 215 преобразования применяет к подгруппе битов получаемых им данных, и согласно другим вариантам осуществления каждый из одного или нескольких пользователей может вносить частичный ключ, который впоследствии будет преобразован в ключ способом, который не позволяет какому-либо одному пользователю определить, какое преобразование (если таковое имеется) программируемый блок 215 преобразования применяет к какому-либо одному конкретному биту или битам принимаемых им данных.
Согласно различным вариантам осуществления описанного в настоящем документе изобретения, в которых программируемый блок 215 преобразования размещен перед по меньшей мере одним блоком цепи, реализующей криптографическую ОСФ, таким как второй блок 210 хеширования, реализующий стандартный криптографический алгоритм на представленной иллюстрации, комбинированный эффект взаимодействия программируемой функции 215 преобразования и определенных математических свойств используемых криптографических алгоритмов, в частности, присущего им характера односторонних функций, которые являются труднообратимыми (здесь термины, такие как «трудно» и «легко» должны пониматься с точки зрения теории сложности вычислений, в частности теории полиномиального времени), производит определенные специальные результаты. В частности, комбинированный эффект заключается в том, что даже небольшое изменение, внесенное программируемым блоком 215 преобразования, такое как изменение одного бита, приведет к полному преобразованию битов, содержащихся в конечном значении, вычисленном ядром 207 хеширования, которое нелегко расшифровывается, нелегко отличимо от шума и нелегко воспроизводимо стороной, не имеющей полного предварительного знания конфигурационного ключа 214 и специальных аспектов конфигурации программируемой функции 215 преобразования, но которое по-прежнему является полностью последовательным, легко воспроизводимым и, следовательно, поддающимся проверке стороной с такими знаниями или доступом к средствам для их применения в вычислении даже при отсутствия знания о них (например, стороной, обладающей такой же ASIC или другой ASIC, включающей в себя идеи описанного в настоящем документе изобретения и запрограммированной на такой же конфигурационный ключ 214 в своей цепи тракта данных).
Эффекты от использования описанного в настоящем документе изобретения, изложенные в предыдущем абзаце, находят применения в области технологии блокчейн, что обеспечивает множество инновационных и ценных применений во множестве различных областей. Такие применения были вкратце рассмотрены ранее и будут дополнительно рассмотрены ниже.
Согласно некоторым вариантам осуществления программируемый блок 215 преобразования может быть сконфигурирован таким образом, чтобы предоставить возможность конечному пользователю программировать различные схемы преобразования, такие как схемы перестановки, которые переставляют положение во входе и выходе некоторых конкретных битов, оставляя другие биты без изменений. Согласно различным вариантам осуществления программируемый блок 215 преобразования может быть сконфигурирован таким образом, чтобы осуществлять схему преобразования на основе прямой инверсии битов, при которой некоторые биты инвертируют, тогда как другие биты оставляют без изменений.
Для удобства рассмотрения раскрытое в настоящем документе изобретение будет рассмотрено в отношении схемы преобразования на основе прямой инверсии битов, где 256-битный конфигурационный ключ 204 определяет, какое преобразование будет применено к каждому из 256 битов программируемым блоком 215 преобразования, при помощи следующего кода: биты, полученные в положениях, где 256-битный конфигурационный ключ имеет значение «0», будут обработаны одним способом (например, оставлены без изменений), тогда как биты, полученные в положениях, где 256-битный конфигурационный ключ имеет значение «1», будут обработаны отличным способом (например, инвертированы). Такое преобразование более подробно рассмотрено в разделах описания, относящихся к фиг. 5A, 5B и 6.
После того как получено конечное хеш-значение при помощи второго блока 210 хеширования, следует процесс оценки, выполняемый оценивателем 211, и механизмом 212 принятия решений на фиг. 2 аналогичен процессу, описанному со ссылкой на фиг. 1. Первая стадия этого процесса заключается в том, что оцениватель 211 будет определять, действительно ли конечное хеш-значение, созданное конкретным заголовком блока транзакций, отвечает критерию достоверности.
Если конечное хеш-значение не соответствует критериям достоверности (как правило, это относится к подавляющему большинству случаев), конечное хеш-значение и заголовок блока транзакций, создавший это значение, будут отбракованы. Если конечное хеш-значение соответствует критерию достоверности, конечное хеш-значение и заголовок блока транзакций, создавший конечное хеш-значение, будут переданы в механизм 212 принятия решений. После того как уведомление об успехе получено, механизм 212 принятия решений может выдать отчет 213b об успехе в получатель 213а отчета об успехе. Дополнительно, а также как рассмотрено в отношении фиг. 1, получатель 213а отчета об успехе может представлять собой одно целое с программным обеспечением 202а для «майнинга».
Отличие состоит в том, что включение программируемого блока 215 преобразования, его последующее программирование пользователем при помощи определенного конфигурационного ключа 214 и взаимодействие результирующих преобразованных данных со вторым ядром 210 хеширования могут привести к изменению конечного хеш-значения, вычисленного ядром 203 хеширования, для одного или более заголовков блока транзакций, сгенерированных формирователем 205 заголовка блока транзакций и переданных оценивателю 211. Дополнительно, и как рассматривалось ранее, таким изменениям присущи определенные уникальные и полезные математически свойства. В связи с тем, что задача оценивателя 211 заключается в сравнении хеш-значений, полученных от ядра 203 хеширования, с конкретными заранее определенными критериями достоверности и, исходя из этого сравнения, оценке того, проходят ли хеш-значения проверку достоверности или нет, может быть сделан вывод о том, что изменение хеш-значения, полученного оценивателем 211, может привести к изменению оценки, которую выносит оцениватель в отношении достоверности или недостоверности полученного хеш-значения.
Далее, в связи с тем, что функционирование системы доказательства выполнения работы основано на обнаружении достоверного доказательства работы в форме хеш-значения, которое соответствует критерию достоверности, и в связи с тем, что работа системы криптографической проверки сетевых транзакций основана на системе доказательства выполнения работы, и в связи с тем, что построение блокчейна путем добавления новых блоков к концу блокчейна основано на системе криптографической проверки сетевых транзакций, а также в связи с тем, что изменения, вносимые функцией преобразования, полностью когерентны и легко воспроизводимы, даже если они могут казаться внешнему наблюдателю неотличимыми от шума, может быть сделан вывод о том, что, если применять последовательно по всей блокчейн-сети, даже самое незначительное изменение в конфигурационном ключе 214 привело бы к системному изменению операций блокчейн-системы.
Таким образом, определенные варианты осуществления раскрытого в настоящем документе изобретения позволяют создать множество ортогональных блокчейнов, каждый из которых присваивает достоверность полностью отличному набору заголовков блока транзакций в соответствии с конфигурационным ключом 214, который каждым пользователь 201 решит применить к программируемому блоку 215 преобразования.
Согласно различным вариантам осуществления может быть одно или несколько значений нулевого конфигурационного ключа 214, причем, если указанные значения запрограммированы в программируемый блок 215 преобразования, указанный блок не будет вносить изменение в информацию, проходящую через него, в результате чего наличие программируемого блока 215 преобразования не будет вызывать изменений в конечном хеш-значении, вычисляемом ядром 207 криптографической обработки для каждого из заголовков блоков транзакций, принятых от формирователя 205 заголовка блока транзакций и переданных в оцениватель 211. Согласно некоторым вариантам осуществления нулевой (пустой) конфигурационный ключ может быть представлен строкой из нулей, которая характеризуется такой же длиной, как и конфигурационный ключ, и которая согласно некоторым вариантам осуществления может иметь длину в 256 бит.
Согласно различным вариантам осуществления, включающим в себя один или несколько нулевых ключей, общий эффект от программирования программируемой функции преобразования при помощи нулевого ключа заключается в том, что набор хешей заголовков блока транзакций, считающийся достоверным оценивателем, не будет изменяться, что делает выходные данные из ядра 207 криптографической обработки функционально идентичными выходным данным из ядра 107 хеширования, рассмотренного со ссылкой на фиг. 1. Иначе говоря, интегральная схема с поддержкой преобразования, включающая в себя идеи описанного в настоящем документе изобретения и запрограммированная при помощи нулевого ключа, будет производить такие же результаты, как и интегральная схема, которая не включает в себя идеи описанного в настоящем документе изобретения, и, следовательно, будет пригодна для осуществления вычислений доказательства выполнения работы в контексте одних и тех же систем доказательства выполнения работы, включая, кроме прочего, криптографическую проверку сетевых транзакций биткоина (что также именуется «майнингом» биткоина). Этот аспект описанного в настоящем документе изобретения имеет коммерческие последствия, поскольку он позволяет использовать интегральные схемы, включающие в себя варианты осуществления описанного в настоящем документе изобретения, для «майнинга» биткоина в дополнение к использованию в широком диапазоне других применений.
Согласно таким вариантам осуществления и согласно другим вариантам осуществления, которые не включают в себя форму нулевого конфигурационного ключа, программирование программируемого блока 215 преобразования при помощи конфигурационного ключа 214, отличающегося от нулевого конфигурационного ключа, будет вызывать изменение конечного хеш-значения, вычисленного криптографическим ядром 207 хеширования для каждого из потенциальных заголовков блока транзакций, созданных формирователем 205 заголовка блока транзакций и переданных в оцениватель 211. Это, в свою очередь, приведет к изменению того, какое подмножество из всех потенциальных заголовков блока транзакций считается оценивателем 211 в качестве достоверного и, следовательно, направится далее в механизм 212 принятия решений, а также будет передано в форме отчета 213b об успехе за пределы интегральной схемы 203.
Кроме того, как описано выше, по причине взаимодействия программируемой функции 215 преобразования с некоторыми математическими функциями ОСФ, примерами которых является большинство стандартных современных криптографических функций хеширования, любое изменение (включая одну цифру) во входных данных криптографической функции хеширования вызывает значительное изменение в результирующем хеш-значении, которое нелегко отличимо от шума.
Как отмечено выше, согласно некоторым вариантам осуществления программируемый блок 215 преобразования может быть расположен перед первым блоком хеширования, так что единственной точкой входа ядра криптографической обработки является программируемый блок преобразования. Один из таких примеров представлен на фиг. 3. Рассмотрим фиг. 3, согласно этой приведенной в качестве примера компоновке функция преобразования, воплощенная программируемым блоком 315 преобразования, применяется к заголовкам блока транзакций перед применением какой-либо операции хеширования блоками 308, 310 хеширования. Хотя в приведенном в качестве примера варианте осуществления, представленном на фиг. 3, программируемый блок 315 преобразования расположен в другом местоположении, местоположение указанного блока в тракте данных по-прежнему удовлетворяет условию его расположения перед по меньшей мере одним блоком хеширования (в этом случае он располагается перед первым блоком 308 хеширования и вторым блоком 310 хеширования). Таким образом, вариант осуществления, представленный на фиг. 3, функционально аналогичен варианту осуществления, представленному на фиг. 2, и предоставляет одинаковые существенные характеристики как в отношении свойств получаемых результатов, так и в отношении предоставляемой защиты от обнаружения конфигурационного ключа 314, воплощенного в программируемом блоке 315 преобразования, при помощи аналитических методик, что описано выше.
Согласно некоторым вариантам осуществления одна интегральная схема может включать в себя более одного программируемого блока 215 преобразования. На фиг. 4 представлена такая приведенная в качестве примера интегральная схема 400 с поддержкой преобразования. В этих случаях варианты осуществления могут быть реализованы таким образом, чтобы предоставить более чем одному пользователю возможность программировать полный конфигурационный ключ.
Такие варианты осуществления реализуют процесс, который имеет некоторые характеристики как каскадных шифров, так и схем с несколькими подписями, но отличается от них. В частности, каскадные шифры предусматривают последовательное применение шифров, то есть процессы, которые зашифровывают данные таким образом, что позднее они могут быть расшифрованы, то есть снова стать разборчивыми. Различные варианты осуществления описанного в настоящем документе изобретения, как представлено на фиг. 4, включают в себя аналогичную концепцию каскадирования, то есть последовательного применения, криптографических операций, но без использования шифров любого типа. Точнее, они включают в себя последовательное применение преобразований и ОСФ (таких как криптографические процессы хеширования). ОСФ отличаются от шифров, среди прочего, тем, что их определяющей характеристикой является то, что они будут нерасшифровываемыми, нежели расшифровываемыми. Аналогично, различные варианты осуществления описанного в настоящем документе изобретения, как представлено на фиг. 4, характеризуются тем, что их конечный продукт является строкой символов, представляющих то, что можно рассматривать в качестве нескольких цифровых подписей, поставленных под цифровым документом. Однако определяющей характеристикой цифровых подписей любого типа является то, что они могут быть удостоверены стороной, отличающейся от стороны, имеющей право подписи, или держателем ключа стороны, имеющей право подписи. Это не относится к различным вариантам осуществления описанного в настоящем документе изобретения, которые в этом контексте могут рассматриваться в качестве подписи, которая может быть только проверена стороной, имеющей право подписи. Кроме того, схемы с несколькими подписями, как правило, разработаны таким образом, что каждая подпись отличается от других и может быть индивидуально проверена. Это опять не относится к различным вариантам осуществления описанного в настоящем документе изобретения, которые специально разработаны таким образом, чтобы ни одна из исходных сторон, имеющих право подписи, не могла удостоверить подпись без присутствия другой.
Таким образом, различные варианты осуществления описанного в настоящем документе изобретения отличаются от каскадных шрифтов, схем с несколькими цифровыми подписями и других существующих криптографических технологий. Несмотря на отсутствие общего названия по причине ее новизны, такая система может быть описана как многоключевая каскадная система на основе преобразованной односторонней функции.
Согласно некоторым вариантам осуществления криптографический алгоритм хеширования, воплощенный в качестве цепи по меньшей мере во втором блоке 410 хеширования, может быть проверенным стандартным криптографическим алгоритмом хеширования, включающим в себя, кроме прочего: SHA-2 в его различных реализациях; Keccak/SHA-3 в его различных реализациях; Skein в его различных реализациях; Grøstl в его различных реализациях; JH в его различных реализациях; и другие алгоритмы, или может быть нестандартным алгоритмом хеширования, который, хоть и является нестандартными, по-прежнему представляет собой ОСФ, которая является труднообратимой (при этом термин «трудно» должен пониматься с точки зрения теории полиномиального времени). Согласно таким вариантам осуществления описанное в настоящем документе изобретение, как представлено на фиг. 4, позволяет реализовать безопасную многоключевую каскадную систему на основе преобразованной односторонней функции, как описано ранее.
Согласно некоторым вариантам осуществления первый и второй программируемые блоки 418, 415 преобразования могут быть запрограммированы при помощи первого и второго конфигурационных ключей 417, 414, которые характеризуются длиной 256 бит, тогда как согласно другим вариантам осуществления один или оба ключа могут характеризоваться отличающейся длиной в зависимости от специфики реализации.
Согласно различным вариантам осуществления описанного в настоящем документе изобретения, которые представлены на фиг. 4, первая сторона, которая может именоваться первичным источником, может использовать интерфейс 404 настройки конфигурации для программирования первого конфигурационного ключа 417, который может именоваться первичным ключом, в первый блок 418 преобразования, что может именоваться первичным преобразованием. В отдельности, вторая сторона, которая может именоваться вторичным источником, может использовать интерфейс 404 настройки конфигурации для программирования второго конфигурационного ключа 414, который может именоваться вторичным ключом, во второй программируемый блок 415 преобразования, что может именоваться вторичным преобразованием.
Согласно определенным вариантам осуществления описанного в настоящем документе изобретения, которые также представлены на фиг. 4, первичный источник и/или вторичный источник могут состоять из нескольких различных сторон. Согласно некоторым вариантам осуществления первичная сторона в целом может программировать первичный ключ в качестве многокомпонентного ключа, при этом вторичная сторона в целом может программировать вторичный ключ в качестве многокомпонентного ключа. Согласно другим вариантам осуществления каждый или оба ключа могут совместно настраиваться первичной и вторичной сторонами в качестве многокомпонентных ключей. Согласно определенным вариантам осуществления ключи, запрограммированные первичной стороной и/или вторичной стороной, могут представлять собой нулевые ключи. Согласно другим вариантам осуществления первый и второй программируемые блоки 418, 415 преобразования могут быть запрограммированы при помощи единственного конфигурационного ключа, вводимого пользователем 401 посредством интерфейса 404 настройки конфигурации.
Согласно другим вариантам осуществления описанного в настоящем документе изобретения, которые не представлены на фиг. 4, процесс может быть в целом схожим, за исключением того, что интерфейс настройки конфигурации, используемый первичным источником, может отличаться от интерфейса настройки конфигурации, используемого вторичным источником. Согласно некоторым таким вариантам осуществления интерфейс настройки конфигурации, используемым первичным источником, может быть создан таким образом, чтобы быть доступным во время процесса изготовления интегральной схемы и, вместе с тем, быть недоступным в полученных в результате готовых изделиях, при этом интерфейс настройки конфигурации, используемый вторичным источником, может быть структурированным таким образом, чтобы быть доступным как во время процесса изготовления, так и в полученных в результате готовых изделиях. Согласно другим вариантам осуществления описанного в настоящем документе изобретения относительная доступность или недоступность каждого интерфейса настройки конфигурации может быть структурирована различным образом.
Согласно некоторым вариантам осуществления описанного в настоящем документе изобретения, которые также не представлены на фиг. 4, процесс может быть в целом сходным с процессом, представленным на фиг. 4, за исключением того, что указанная конструкция может включать в себя более двух циклов хеширования и/или более двух программируемых функций преобразования.
На фиг. 5A представлена конфигурация приведенного в качестве примера программируемого блока 515 преобразования перед кодированием в соответствии с вариантами осуществления раскрытого в настоящем документе изобретения. Программируемый блок 515 преобразования включает в себя наборы программируемых цепей, определяющих функцию преобразования, представленную конфигурационным ключом 514 (представленным на фиг. 5B). Согласно различным вариантам осуществления программируемый блок 515 преобразования может быть сконфигурирован таким образом, чтобы обеспечивать одну из множества операций перестановки, посредством чего один или большее количество битов входных данных (например, 1a1, 1b1 и т.п.) меняют местами с другим битом входных данных для генерирования модифицированных выходных данных (например, 5a1, 5b1 и т.п.). Согласно другим вариантам осуществления программируемый блок 515 преобразования может быть сконфигурирован таким образом, чтобы обеспечивать одну из множества операций прямой инверсии битов или инвертирования битов, посредством чего один или несколько битов входных данных инвертированы для генерирования модифицированных выходных данных.
Различные варианты осуществления, использующие схему преобразования на основе прямой инверсии битов, как описано в настоящем документе, могут быть реализованы таким образом, чтобы воспользоваться тем фактом, что 256-битный двоичный конфигурационный ключ предоставляет лаконичное средство для обеспечения доступа к полному ключевому пространству, предоставляемому программируемой функцией 215 преобразования. Иными словами, 256 битов являются минимальной длиной, необходимой для того, чтобы пользователь могу указать на то, какое из 256 отличных преобразований должно выполняться программируемой функцией 215 преобразования на первом хеш-значении 209. Применение схемы преобразования на основе прямой инверсии битов может также позволить использовать минимальное количество новых элементов цепи для воплощения функции преобразования в качестве цепи тракта данных. Это является важным, поскольку тот факт, что функция преобразования воплощена в качестве цепи тракта данных, означает, что любая дополнительная цепь, размещенная на тракте данных, будет работать с линейной скоростью и вызовет общее снижение производительности интегральной схемы 203 с поддержкой преобразования в целом.
Согласно различным вариантам осуществления конфигурация программируемого блока 515 преобразования может добавить всего лишь один логический элемент НЕ в цепь тракта данных интегральной схемы с поддержкой преобразования. Для сравнения, каждый блок хеширования может, в зависимости от особенностей его конструкции, содержать приблизительно 4000 логических элементов. Следовательно, программируемый блок 515 преобразования может добавить всего 128 логических элементов (при условии 256-битного ключа) к криптографическому тракту данных, который ранее содержал приблизительно 8000 логических элементов (при условии процесса двойного хеширования SHA-256). Соответственно, снижение производительности, обусловленное программируемым блоком 515 преобразования согласно различным вариантам осуществления, может быть настолько небольшим, что на практике разница в производительности будет затмеваться другими факторами до такой степени, что очень трудно дать точную количественную оценку в отдельности.
Схема преобразования на основе прямой инверсии битов может также предоставить эффективное средство для отмены всех эффектов программируемой функции 215 преобразования путем простого приравнивания к нулю всех значений в 256-битном конфигурационном ключе. Такой ключ может именоваться нулевым (пустым) ключом. Одним из результатов этого является упрощение процесса настройки интегральной схемы 203 с поддержкой преобразования так, что она работает неотличимо от аналогичной интегральной схемы, которая не содержит программируемую функцию 215 преобразования. Практический результат этого состоит в том, что интегральные схемы, включающие в себя описанное в настоящем документе изобретение, могут быть легко сконфигурированы таким образом, чтобы работать аналогично стандартным ASIC для «майнинга» биткоина, и могут использоваться для «майнинга» биткоинов без особых трудностей (помимо и в дополнение к возможности работать способом, который не может быть воспроизведен ASIC для «майнинга» биткоина, которые не включают в себя идеи описанного в настоящем документе изобретения).
Для удобства рассмотрения фиг. 5B и 6 будут рассмотрены со ссылкой на конфигурацию на основе прямой инверсии битов.
Кодирование программируемого блока преобразования изображено на фиг. 5B. Приведенный в качестве примера программируемый блок 520 преобразования показан кодированным в соответствии с конфигурационным ключом 514. Для обозначения конфигурационного ключа 514, воплощенного в программируемом блоке 520 преобразования, используются темные прямоугольники, чтобы указать на то, что плавкая микроперемычка была повреждена (т.е. заблокирован поток данных через поврежденную плавкую микроперемычку). Например, согласно проиллюстрированному примеру при повреждении плавкой микроперемычки 3a2 входной бит 1a2 проходит через программируемый блок 520 преобразования без изменений. Когда плавкая микроперемычка 2b2 повреждена, входной бит 1b2 инвертируется посредством блока 4b2 инвертирования битов при прохождении через программируемый блок 520 преобразования.
На фиг. 6 представлен приведенный в качестве примера процесс кодировки функции в соответствии с вариантами осуществления раскрытого в настоящем документе изобретения. На этапе 1 программируемый блок 15 преобразования представлен в некодированном состоянии, что аналогично программируемому блоку 515 преобразования, изображенном на фиг. 5A. Как изображено на фигуре, программируемый блок 15 преобразования настроен на 6-битное сообщение. Согласно другим вариантам осуществления программируемый блок 15 преобразования может быть сконфигурирован для входных строк любой длины, такой как длина в 256 битов.
На этапе 2 программируемый блок 15 преобразования характеризуется кодированием, которое воплощает конфигурационный ключ 14, предоставленный пользователем. Как изображено на фигуре, конфигурационный ключ 14 содержит строку «011000». Соответствующие плавкие микроперемычки повреждены в соответствии с конфигурационным ключом 14, что показано темными прямоугольниками в программируемом блоке 15 преобразования. На этапе 3 плавкая блокировочная перемычка 16 может быть повреждена после кодирования программируемого блока 15 преобразования, что защищает конфигурационный 14 ключ от обнаружения. Плавкая блокировочная перемычка 16 может быть расположена в программирующей цепи, при помощи которой программирующий блок 15 преобразования программируется пользователем. Путем повреждения (вывода из строя) плавкой блокировочной перемычки 16 ядро криптографической обработки, включающее в себя программируемый блок 15 преобразования, возвращается к состоянию с одной точкой входа и одной точкой выхода, что обеспечивает тип защиты, подробно рассмотренный выше в отношении фиг. 2.
Согласно различным вариантам осуществления несколько ядер криптографической обработки могут быть включены параллельно внутри одной интегральной схемы. На фиг. 7 представлена блок схема базовой системы 700 криптографической обработки, включающей в себя несколько ядер криптографической обработки. Интегральная схема 703 и соответствующие процессы и компоненты аналогичны схеме, процессам и компонентам, рассмотренным выше в отношении базовой конструкции системы, показанной на фиг. 1. Заголовки блока транзакций, генерируемые формирователем 705 заголовка блока транзакций, могут быть направлены в одно из нескольких параллельных ядер 707, 708, 709, 710 криптографической обработки. Следовательно, множество заголовков блока транзакций могут обрабатываться параллельно, что повышает общую скорость системы.
Если реализовано несколько ядер криптографической обработки, некоторые варианты осуществления могут реализовывать программируемый блок преобразования для предоставления возможности генерировать уникальные блокчейны, как рассмотрено выше. На фиг. 8 представлена приведенная в качестве примера интегральная схема 803 с поддержкой преобразования, характеризующаяся наличием нескольких ядер криптографической обработки, в соответствии с вариантами осуществления раскрытого в настоящем документе изобретения. Интегральная схема 803 с поддержкой преобразования является подобной базовой интегральной схеме 703, рассмотренной со ссылкой на фиг. 7. Программируемый блок 815 преобразования расположен в цепи тракта данных интегральной схемы 803 с поддержкой преобразования. Хотя программируемый блок 815 преобразования изображен расположенным снаружи ядер 807, 808, 809, 810 криптографической обработки, указанный блок фактически находится между двумя блоками хеширования ядер 807, 808, 809, 810 криптографической обработки. Для удобства просмотра программируемый блок 815 преобразования изображен в качестве находящегося снаружи, чтобы проиллюстрировать то, что согласно различным вариантам осуществления один и тот же конфигурационный ключ 814 может быть воплощен в каждом из ядер 807, 808, 809, 810 криптографической обработки. Согласно другим вариантам осуществления каждое ядро криптографической обработки может иметь свою собственную программирующую цепь, как изображено на фиг. 9. Таким образом, один или несколько пользователей 901 могут запрограммировать один или несколько конфигурационных ключей 914a, 914b, 914c, 914d.
Согласно различным вариантам осуществления интегральная схема может включать в себя дополнительные некриптографические процессы. На фиг. 10 представленная приведенная в качестве примера интегральная схема 1006 двойного назначения, реализованная в системе 1000 обработки, в соответствии с некоторыми вариантами осуществления раскрытого в настоящем документе изобретения. Интегральная схема 1006 двойного назначения включает в себя криптографическую часть, включающую в себя ядро 1004 криптографической обработки. Ядро 1004 криптографической обработки может быть сконфигурировано аналогично ядру 207 криптографической обработки, рассмотренному выше в отношении фиг. 2. На фиг. 10 пользователь 1001 может настроить программируемый блок преобразования ядра 1004 криптографической обработки при помощи конфигурационного ключа 1003, введенного через интерфейс 1002 настройки конфигурации.
Часть 1007 общего назначения интегральной схемы 1006 двойного назначения может включать в себя компоненты, разработанные для общих целей, такие как центральный процессор (ЦП) или система на кристалле (СнК), разработанные для осуществления множества дополнительных функций (например, графической обработки, аудио обработки, обработки данных, поступающих по линии связи, и т.п.). Резервные ячейки памяти также могут быть включены в часть 1007 общего назначения согласно некоторым вариантам осуществления, чтобы обеспечить возможность замены вышедших из строя компонентов памяти. Согласно некоторым вариантам осуществления часть 1007 общего назначения может иметь свой собственный интерфейс 1009, при помощи которого пользователь 1008 может настраивать компоненты части 1007 общего назначения. Кроме того, согласно некоторым вариантам осуществления пользователь 1008 может записывать системную информацию 1010 в постоянную память части 1007 общего назначения. Согласно различным вариантам осуществления интерфейс 1002 настройки конфигурации и интерфейс 1009 могут представлять собой один набор электрических цепей, и пользователь 1001 и пользователь 1008 могут быть одним и тем же пользователем. Двухсторонний канал 1005 связи может соединять ядро 1004 криптографической обработки с частью 1007 общего назначения, позволяя ЦП или СнК посылать задания, которые должны выполняться ядром 1004 криптографической обработки, и получать результаты вычислений. Интегральная схема 1006 может взаимодействовать с локальными (внутренними) ресурсами 1011 и внешними ресурсами 1012. Внутренним ресурсом 1011 может быть, кроме прочего, пользователь 1001 или 1008, локальная память или программные приложения, выполняемые локально интегральной схемой 1006 двойного назначения. Внешние ресурсы 1012 могут включать в себя внешнюю память или другие узлы в сети, к которой подключена интегральная схема 1006.
Иногда, интегральная схема 1006 двойного назначения может быть подключена к другим узлам в ненадежной цепи, например, при помощи незащищенного проводного или беспроводного соединения. Согласно некоторым вариантам осуществления часть 1007 общего назначения может быть сконфигурирована для выполнения нескольких процессов, разработанных для безопасной идентификации интегральной схемы, содержащей блок преобразования в соответствии с описанным в настоящем документе изобретением, в ненадежной сети. Генератор 1013 строк может получить доступ к системной информации 1010, записанной в интегральную схему 1006 пользователем 1008, и объединить указанную системную информацию 1010 с информацией о транзакции, такой как транзакционные и системные данные 102b, рассмотренные в отношении фиг. 1. После этого генератор 1013 строк может отправить данные в генератор 1014 сообщений.
Генератор 1014 сообщений может отправить данные в ядро 1004 криптографической обработки по двухстороннему каналу 1005 связи. Таким образом, данные могут быть обработаны для генерирования кодированной преобразованием строки, которую ядро 1004 криптографической обработки может отослать обратно в генератор 1014 сообщений. Затем генератор 1014 сообщений может создать сетевое сообщение 1015. Сетевое сообщение 1015 может включать в себя исходные данные, выдаваемые генератором 1013 строк. Согласно различным вариантам осуществления в сетевое сообщение 1015 может быть включена дополнительная информация, к которой относится, кроме прочего, следующее: системная дата и время; ранее полученные внешние сообщения; или кодированная преобразованием строка; и т.п. Затем сетевое сообщение 1015 отправляется в компонент 1016 ввода-вывода. Согласно различным вариантам осуществления компонент 1016 ввода-вывода может включать в себя протоколы локальной связи, протоколы внешней связи или их сочетание.
Рассмотрим теперь фиг. 12, на которой показана иллюстрация того, что можно назвать криптографический валидатор результатов с поддержкой преобразования. На представленной иллюстрации показана реализация описанного в настоящем документе изобретения, где интегральная схема 1203 содержит интерфейс 1204 программирования и настройки конфигурации, ядро 1205 хеширования с поддержкой преобразования и конфигурационный ключ 1206. Два пользователя 1201, 1202 осуществляют доступ к интегральной схеме, при этом пользователь 1201 осуществляет доступ к интерфейсу 1204 программирования и настройки конфигурации, а пользователь 1202 осуществляет доступ к ядру хеширования с поддержкой преобразования.
Как видно с представленной иллюстрации, схема, изображенная на фиг. 12, в целом проще схем, изображенных на предыдущих иллюстрациях. Согласно некоторым вариантам осуществления схема, изображенная на фиг. 12, также является схемой с более низким потреблением энергии и меньшей производительностью по сравнению с некоторыми из вариантов осуществления, изображенных на предыдущих иллюстрациях. Согласно определенным вариантам осуществления общая цель этой схемы заключается в том, чтобы обеспечить проверку результатов, полученных некоторыми вариантами осуществления раскрытого в настоящем документе изобретения, например, некоторыми из вариантов осуществления, изображенных на предыдущих иллюстрациях. Общий режим работы заключается в том, что пользователь 1 1201 может использовать интерфейс 1204 программирования и настройки конфигурации для того, чтобы настроить различные параметры работы интегральной схемы, такие как тактовая частота, внешний обмен данными и другие, и запрограммировать один или несколько конфигурационных ключей 1204 в программируемую функцию или функции преобразования внутри ядра 1205 хеширования с поддержкой преобразования, где они будут воплощены в качестве цепи тракта данных. В некоторых реализациях определенные вопросы, такие как способ, при помощи которого осуществляют программирование; механизм, посредством которого конфигурационный ключ или ключи 1204 воплощены в качестве цепи тракта данных; механизмы, используемые для защиты ключа, который был запрограммирован в программируемую функцию преобразования; а также другие вопросы, как правило, реализуются способом, который в целом аналогичен способу, посредством которого они были реализованы в некоторых других реализациях, изображенных на представленных ранее иллюстрациях.
В некоторых реализациях, после того как программируемый блок преобразования внутри ядра 1205 хеширования с поддержкой преобразования запрограммирован, пользователь 2 может просто ввести некоторые входные значения, которые затем непосредственно передаются в качестве входных данных в ядро 1205 хеширования с поддержкой преобразования, при этом после завершения вычислений ядро 1205 хеширования с поддержкой преобразования вернет вычисленное конечное хеш-значение пользователю 2. Если реализация описанного в настоящем документе изобретения в ядре 1205 хеширования с поддержкой преобразования является в целом такой же, как и в другой схеме с поддержкой преобразования, которая ранее выполняла такие операции, входные данные, такие как, например, заголовок блока транзакций, являются одинаковыми в обоих случаях, и конфигурационный ключ или ключи, запрограммированные в обе схемы, также являются одинаковыми в обоих случаях, то конечное хеш-значение, вычисленное при помощи обеих интегральных схем, также будет одинаковым. Таким образом, может быть подтверждена достоверность некоторых объектов, которые могут, например, включать в себя заголовки блока транзакций из блокчейна, другие заголовки блока транзакций, другие потенциальные заголовки блока транзакций и т. п. Кроме того, путем использования такой схемы, как некоторые варианты осуществления схемы, представленной на фиг. 12, такая проверка может быть осуществлена без пользователя 2, требующего знание ключа или ключей, запрограммированных в программируемый блок преобразования.
Согласно некоторым вариантам осуществления пользователь может быть человеком, тогда как согласно другим вариантам осуществления пользователь может быть автоматизированным процессом, таким как программное обеспечение электронных кошельков, программное обеспечение для «майнинга» или другие типы автоматизированных процессов. Согласно определенным вариантам осуществления пользователь 2 также может иметь доступ к настройке различных аспектов функционирования интегральной схемы, как описано выше. Согласно определенным вариантам осуществления может быть предусмотрен один интерфейс для настройки различных аспектов функционирования интегральной схемы в целом, программирования ключей и получения конечных хеш-значений с поддержкой преобразования, вычисленных на основе данных, направленных пользователем, и согласно другим вариантам осуществления некоторые или все из этих функций могут быть отдельными. Согласно определенным вариантам осуществления интегральная схема, представленная на фиг. 12, может быть частью более крупной компьютерной системы, такой как система для «майнинга», аппаратный кошелек, токен или электронный защитный ключ или т. п. Согласно некоторым вариантам осуществления различные реализации интегральной схемы, представленные на фиг. 12, могут быть частью системы, включающей в себя одну или несколько интегральных схем, содержащих другие реализации описанного в настоящем документе изобретения, такие как некоторые реализации, показанные на предыдущих фигурах.
Согласно определенным вариантам осуществления различные реализации интегральной схемы, представленной на фиг. 12, могут быть физически интегрированы в один и тот же кристалл, что другие варианты осуществления описанного в настоящем документе изобретения. Согласно некоторым таким вариантам осуществления интегральная схема, представленная на фиг. 12, может быть дополнительно соединена с другими вариантами осуществления описанного в настоящем документе изобретения. Например, в таких случаях интегральная схема, представленная на фиг. 12, может иметь коллективно используемый доступ к программируемому блоку преобразования, как и в случае других схем в этой же интегральной схеме, что может быть аналогично тому, как несколько различных ядер хеширования имеют доступ к одной функции преобразования, как показано на фиг. 8 и 9. Согласно различным другим вариантам осуществления схема, представленная на фиг. 12, может быть физически интегрирована в один кристалл с другими интегральными схемами, выполняющими другие задачи, такими как микропроцессор, сетевой процессор, система на кристалле и другие. Согласно определенным вариантам осуществления программируемый блок преобразования может воплощать конфигурационный ключ в качестве цепи при помощи однократно программируемых элементов схемы, таких как плавкие микроперемычки, тогда как согласно определенным вариантам осуществления могут быть использованы перезаписываемые элементы схемы, такие как энергонезависимые ОЗУ, и согласно другим вариантам осуществления могут быть использованы другие способы.
Рассмотрим теперь фиг. 13, на которой представлено изображение, демонстрирующее интегральную схему 1303, которая в целом схожа с интегральной схемой на фиг. 12, но включает в себя два отдельных ядра 1305, 1309 хеширования с поддержкой преобразования, каждое из которых запрограммировано различным конфигурационным ключом 1306, 1307. Дополнительно, на изображении, представленном на фиг. 13, также представлены три пользователя 1301, 1302 и 1308, которые имеют доступ к интерфейсу 1304 программирования и настройки конфигурации, первому ядру 1305 хеширования с поддержкой преобразования и второму ядру 1309 хеширования с поддержкой преобразования, соответственно.
Способ работы и общее назначение интегральной схемы, показанной на фиг. 13, аналогичны способу работы и общему назначению интегральной схемы, показанной на фиг. 12, при этом согласно некоторым вариантам осуществления интегральная схема, показанная на фиг. 13, может быть использована для хранения множества ключей, а не одного ключа. Согласно некоторым вариантам осуществления конфигурация, такая как представлена на фиг. 13, может быть использована для поддержки двух отдельных ключей в одном криптографическом валидаторе результатов с поддержкой преобразования. Согласно другим вариантам осуществления могут использоваться более двух конфигурационных ключей 1306, 1307, и согласно некоторым таким вариантам осуществления могут использоваться более двух криптографических ядер с поддержкой преобразования. Согласно описанию к фиг. 12 различные варианты осуществления могут предусматривать различные изменения, в рамках которых различные пользователи имеют доступ к функциональным возможностям, поддерживаемым интегральной схемой; выбор способов программирования конфигурационного ключа в программируемую функцию или функции преобразования; выбор различных типов аппаратных средств, в которые может быть интегрирована описанная схема; и т. п.
В этом документе явная отсылка была сделана только к определенным криптографическим алгоритмам хеширования, в частности ко второй итерации семейства безопасных алгоритмов хеширования (SHA-2), а именно 256-битной версии. Однако описанная в настоящем документе технология является полностью применимой в случае других криптографических алгоритмов хеширования, включая, кроме прочего: SHA-2 в его различных реализациях; Keccak/SHA-3 в его различных реализациях; Skein в его различных реализациях; Grøstl в его различных реализациях; JH в его различных реализациях; и т. п.
В контексте настоящего документа термин «набор» может относиться к любому множеству элементов, будь то конечное или бесконечное множество. Термин «поднабор» может относиться к любому множеству элементов, где элементы взяты из исходного набора; при этом поднабор может представлять собой весь исходный набор. Термин «истинный поднабор» относится к поднабору, содержащему меньшее количество элементов, чем исходный набор. Термин «последовательность» может относиться к упорядоченному набору или поднабору. Термины «менее», «менее или равно», «более» и «более или равно» могут использоваться в настоящем документе для описания отношений между различными объектами или членами упорядоченных наборов или последовательностей; причем эти термины следует понимать в качестве относящихся к любому соответствующему отношению упорядочения, применимому к упорядочиваемым объектам.
Термин «инструмент» может быть использован для отсылки к любому устройству, сконфигурированному для выполнения упомянутой функции. Например, инструменты могут включать в себя группу из одного или нескольких компонентов, а также могут состоять из аппаратного обеспечения, программного обеспечения или их сочетания. Таким образом, например, инструмент может быть группой из одного или нескольких программных компонентов, аппаратных компонентов, программно/аппаратных компонентов или любого их сочетания или перестановки. В качестве другого примера инструмент может представлять собой вычислительное устройство или другое устройство, на котором выполняется программное обеспечение или в котором реализовано аппаратное обеспечение.
В контексте настоящего документа термин «компонент» может описывать заданную функциональную единицу, которая может быть выполнена в соответствии с одним или несколькими вариантами осуществления раскрытого в настоящем документе изобретения. В контексте настоящего документа компонент может быть реализован с использованием любой формы аппаратного обеспечения, программного обеспечения или их сочетания. Например, один или несколько процессоров, контроллеров, интегральных схем специального назначения (ASIC), программируемых логических матриц (PLA), программируемых компонентов логики массива (PLA), сложных программируемых логических ИС (CPLD), программируемых пользователем вентильных матриц (FPGA), логических элементов, программных процедур или других механизмов могут быть реализованы, чтобы образовать компонент. При реализации различные компоненты, описанные в настоящем документе, могут быть реализованы в качестве дискретных компонентов, или описанные функциональные возможности и признаки могут быть распределены частично или полностью среди одного или нескольких компонентов. Иначе говоря, как должно быть очевидно специалисту в данной области техники после прочтения настоящего описания, различные признаки и функции, описанные в настоящем документе, могут быть реализованы в любом заданном применении и могут быть реализованы в одном или нескольких отдельных или совместно используемых компонентах в сочетаниях и перестановках. Несмотря на то, что различные признаки или элементы функциональных возможностей могут быть отдельно описаны или заявлены в качестве отдельных компонентов, специалисту в данной области техники будет понятно, что эти признаки и функциональные возможности могут быть разделены между одним или несколькими распространенными программными и аппаратными элементами, причем из этого не следует, что для реализации таких признаков или функциональных возможностей используются отдельные аппаратные или программные компоненты.
Когда компонент или компоненты настоящего изобретения реализуются в целом или частично при помощи программного обеспечения, согласно одному варианту осуществления эти программные элементы могут быть реализованы для работы с вычислительным компонентом или компонентом обработки данных, способным выполнять функциональные возможности, описанные в отношении них. Один такой приведенный в качестве примера вычислительный компонент показан на фиг. 11. Различные варианты осуществления описаны на основании этого приведенного в качестве примера вычислительного компонента 1100. После прочтения этого описания специалисту в данной области техники станет очевидным, как реализовать настоящее изобретение при помощи других вычислительных компонентов или архитектур.
Рассмотрим теперь фиг. 11, вычислительный компонент 1100 может предоставлять, например, вычислительные возможности или возможности обработки данных, присутствующие в настольных компьютерах, компьютерах типа «лаптоп» и компьютерах типа «ноутбук»; портативных вычислительных устройствах (ПЦА, интеллектуальных телефонах, сотовых телефонах, КПК и т.п.); мейнфреймах, суперкомпьютерах, рабочих станция или серверах; или любом другом типе вычислительных устройств специального или общего назначения, которые могут быть желательными или подходящими для данного применения или среды. Вычислительный компонент 1100 может также предоставлять вычислительные возможности, воплощенные или иным образом доступные для данного устройства. Например, вычислительный компонент может присутствовать в других электронных устройствах, таких как, например, цифровые камеры, навигационные системы, сотовые телефоны, портативные вычислительные устройства, модемы, роутеры, веб-телефоны, терминалы и другие электронные устройства, которые могут характеризоваться некоторой формой возможности обработки данных.
Вычислительный компонент 1100 может включать в себя, например, один или несколько процессоров, контроллеров, компонентов системы управления или другие устройства обработки данных, такие как процессор 1104. Процессор 1104 может быть реализован при помощи механизма обработки данных общего назначения или специального назначения, такого как, например, микропроцессор, контроллер или другая логика управления. Согласно показанному примеру процессор 1104 соединен с шиной 1102, при этом любая среда передачи данных может быть использована для обеспечения взаимодействия с другими составляющими вычислительного компонента 1100 или обмена данными с внешней средой.
Вычислительный компонент 1100 также может включать в себя один или несколько компонентов памяти, которые именуются в настоящем документе основной памятью 1108. Например, предпочтительно оперативная память (ОЗУ) или другая динамическая память может быть использована для хранения информации и инструкций, предназначенных для выполнения процессором 1104. Основная память 1108 также может быть использована для хранения временных переменных или другой промежуточной информации во время выполнения инструкций, предназначенных для выполнения процессором 1104. Вычислительный компонент 1100 также может включать в себя постоянную память (ПЗУ) или другое статическое запоминающее устройство, соединенное с шиной 1102, для хранения статической информации и инструкций для процессора 1104.
Вычислительный компонент 1100 также может включать в себя одну или несколько различных форм механизма 1110 хранения информации, который может включать в себя, например, медиа-накопитель 1112 и интерфейс 1120 блока памяти. Медиа-накопитель 1112 может включать в себя накопитель или другой механизм для поддержки стационарного или сменного носителя 1114 данных. Например, могу предусматриваться накопитель на жестких магнитных дисках, накопитель на гибких дисках, накопитель на магнитной ленте, накопитель на оптических дисках, накопитель на CD или DVD (R или RW) или другой накопитель с фиксированными или сменными носителями. Соответственно, носитель 1114 данных может включать в себя, например, жесткий диск, гибкий диск, магнитную ленту, картридж, оптический диск, CD или DVD или другие фиксированные или съемные носители, которые считываются, записываются или доступ к которым обеспечивается при помощи медиа-накопителя 1112. Как проиллюстрировано этими примерами, носитель 1114 данных может включать в себя используемый компьютером носитель данных, на котором сохранены компьютерное программное обеспечение или данные.
Согласно альтернативным вариантам осуществления механизм 1110 хранения информации может включать в себя другие аналогичные технические средства для обеспечения загрузки компьютерных программ или других инструкций или данных в вычислительный компонент 1100. Такие технические средства могут включать в себя, например, фиксированный или сменный блок 1122 памяти и интерфейс 1120. Примеры таких блоков 1122 памяти и интерфейсов 1120 могут включать в себя картридж с программами и интерфейс картриджа, съемную память (например, флэш-память или другой съемный компонент памяти) и разъем памяти, разъем и карту PCMCIA, а также другие фиксированные или сменные блоки 1122 памяти и интерфейсы 1120, которые позволяют передавать программное обеспечение и данные из блока 1122 памяти в вычислительный компонент 1100.
Вычислительный компонент 1100 также может включать в себя интерфейс 1124 передачи данных. Интерфейс 1124 передачи данных может быть использован для обеспечения передачи программного обеспечения и данных между вычислительным компонентом 1100 и внешними устройствами. Примеры интерфейса 1124 передачи данных могут включать в себя модем или программный модем, сетевой интерфейс (такой как интерфейс Ethernet, плата сетевого интерфейса, WiMedia, IEEE 802.XX или другой интерфейс), порт связи (такой как, например, порт-USB, ИК-порт, порт RS232, интерфейс Bluetooth или другой порт), или другие интерфейсы передачи данных. Программное обеспечение и данные, переданные через интерфейс 1124 передачи данных, могут обычно передаваться сигналами, которые могут быть электронными, электромагнитными (включая оптические) или другими сигналами, которыми может обмениваться данный интерфейс 1124 передачи данных. Эти сигналы могут быть направлены в интерфейс 1124 передачи данных через канал 1128. Этот канал 1128 может нести сигналы и может быть реализован при помощи проводной или беспроводной среды передачи данных. Некоторые примеры канала могут включать в себя телефонную линию, сотовый канал связи, радиочастотный канал связи, оптический канал связи, сетевой интерфейс, локальную или глобальную сеть и другие проводные или беспроводные каналы обмена данными.
В этом документе термины «носитель компьютерных программ» и «используемый компьютером носитель» используют, как правило, для обозначения носителей, таких как, например, память 1108, блок 1120 памяти, носитель 1114 и канал 1128. Эти и другие различные формы носителей компьютерных программ или используемых компьютером носителей могут использоваться для переноса одной или нескольких последовательностей из одной или нескольких инструкций в устройство обработки данных для исполнения. Такие инструкции, реализованные на носителе, обычно именуют «компьютерным программным кодом» или «компьютерным программным продуктом» (который может быть сформированы в виде компьютерных программ или других структур). При выполнении такие инструкции могут позволить вычислительному компоненту 1100 исполнять признаки или функции настоящего изобретения, как рассмотрено в настоящем документе.
Хотя различные варианты осуществления настоящего изобретения были описаны выше, следует понимать, что они были представлены лишь в качестве примера, а не для какого-либо ограничения. Аналогично, на различных схемах может быть изображена представленная в качестве примера архитектурная или другая конфигурация настоящего изобретения, что выполнено с целью облегчения понимания признаков и функциональных возможностей, которые могут быть включены в настоящее изобретения. Настоящее изобретение не ограничивается приведенными в качестве примера вариантами архитектуры или конфигурации, при этом требуемые признаки могут быть реализованы при помощи множества различных вариантов архитектуры и конфигурации. Фактически, специалисту в данной области техники будет очевидно то, каким образом альтернативные функциональные, логические или физические разделения и конфигурации могут быть осуществлены для реализации требуемых признаков раскрытого в настоящем документе изобретения. Кроме того, множество различных названий составляющих компонентов, отличающихся от названий, использованных в настоящем документе, могут быть применены к различным вариантам разделения. Дополнительно, что касается схем последовательности операций, функционального описания и пунктов формулы изобретения на способ, порядок, в котором стадии представлены в настоящем документе, не требует, чтобы различные варианты осуществления были реализованы для выполнения указанных функций в таком же порядке, если иное не следует из контекста.
Хотя настоящее изобретение описано выше с точки зрения различных иллюстративных вариантов осуществления и реализаций, следует отметить, что различные признаки, аспекты и функциональные возможности, описанные в одном или нескольких индивидуальных вариантах осуществления, не ограничены в своем применении конкретным вариантом осуществления, при помощи которого они описаны, при этом они могут быть применены, отдельно или в различных сочетаниях, к одному или нескольким другим вариантам осуществления настоящего изобретения, не зависимо от того, описаны или нет такие варианты осуществления, и, представлены или нет такие признаки в качестве части описанного варианта осуществления. Таким образом, сущность и объем раскрытого в настоящем документе изобретения не должны ограничиваться любыми из описанных выше иллюстративных вариантов осуществления.
Термины и фразы, используемые в этом документе, а также их вариации, если прямо не указано иное, должны истолковываться как открытые, а не как ограничивающие. В качестве примеров приведенного выше рассмотрим следующее: термин «включающий в себя» следует истолковывать в качестве означающего «включающий, кроме прочего» или аналогичным образом; термин «иллюстративный (приведенный в качестве примера)» используется для приведения иллюстративных экземпляров рассматриваемого предмета, а не для его ограничения или исчерпывающего описания; формы единственного числа следует истолковывать в качестве означающих «по меньшей мере один», «один или несколько» или аналогичным образом; прилагательные, такие как «обычный», «традиционный», «нормальный», «стандартный», «известный», и термины со сходным значением не должны истолковываться в качестве ограничивающих предмет, описанный для определенного периода времени, или предмет, доступный в определенный период времени, а должны истолковываться для охвата обычных, традиционных, нормальных или стандартных технологий, которые могут быть доступны или известны сейчас или в будущем. Аналогично, если в настоящем документе приводятся отсылки к технологиям, которые будут очевидны или известны специалисту в данной области техники, такие технологии охватывают технологии, очевидные или известные специалисту в данной области техники сейчас или в будущем.
Наличие в некоторых примерах расширяющих слов и фраз, таких как «один или несколько», «по меньшей мере», «кроме прочего» или другие подобные фразы, не следует понимать в качестве означающих, что более узкий случай должен иметь место или необходим в тех случаях, когда такие расширяющие слова могут отсутствовать. Использование термина «компонент» не означает, что все компоненты или функциональные возможности, описанные или заявленные в качестве части определенного компонента, реализованы в общем пакете. Фактически, любые или все различные компоненты, входящие в состав определенного компонента, будь то логика управления или другие компоненты, могут быть объединены в один пакет или располагаться отдельно, а также могут быть дополнительно распределены в нескольких группах или пакетах, или среди нескольких мест.
Кроме того, различные варианты осуществления, изложенные в настоящем документе, описаны со ссылками на иллюстративные блок-схемы, графики последовательности операций и другие иллюстрации. Как станет понятно специалисту в данной области техники после прочтения этого документа, проиллюстрированные варианты осуществления и их различные альтернативы могут быть реализованы без ограничения представленными примерами. Например, блок-схемы и их сопроводительное описание не должны истолковываться в качестве необходимости использования лишь конкретной архитектуры или конфигурации.