[go: up one dir, main page]

RU2701716C2 - Электронное вычислительное устройство для выполнения арифметики с обфускацией - Google Patents

Электронное вычислительное устройство для выполнения арифметики с обфускацией Download PDF

Info

Publication number
RU2701716C2
RU2701716C2 RU2017114868A RU2017114868A RU2701716C2 RU 2701716 C2 RU2701716 C2 RU 2701716C2 RU 2017114868 A RU2017114868 A RU 2017114868A RU 2017114868 A RU2017114868 A RU 2017114868A RU 2701716 C2 RU2701716 C2 RU 2701716C2
Authority
RU
Russia
Prior art keywords
integer
ring
list
input
addition
Prior art date
Application number
RU2017114868A
Other languages
English (en)
Other versions
RU2017114868A (ru
RU2017114868A3 (ru
Inventor
Леандро МАРИН
Альфонс Антониус Мария Ламбертус БРЮКЕРС
Паулус Матхиас Хюбертус Мехтилдис Антониус ГОРИССЕН
Original Assignee
Конинклейке Филипс Н.В.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Конинклейке Филипс Н.В. filed Critical Конинклейке Филипс Н.В.
Publication of RU2017114868A publication Critical patent/RU2017114868A/ru
Publication of RU2017114868A3 publication Critical patent/RU2017114868A3/ru
Application granted granted Critical
Publication of RU2701716C2 publication Critical patent/RU2701716C2/ru

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/50Adding; Subtracting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/724Finite field arithmetic
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/16Obfuscation or hiding, e.g. involving white box

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Theoretical Computer Science (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Security & Cryptography (AREA)
  • Complex Calculations (AREA)
  • Error Detection And Correction (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

Группа изобретений относится к области вычислительной техники и может быть использована для выполнения арифметики с обфускацией в коммутативном кольце. Техническим результатом является повышение защищенности. Устройство содержит хранилище, выполненное с возможностью хранения таблицы приращений (
Figure 00000225
), определенной для приращения кольцевого элемента (1;
Figure 00000226
), причем таблица приращений отображает входной кольцевой элемент (
Figure 00000227
) в выходной целочисленный список (
Figure 00000228
), кодирующий выходной кольцевой элемент (
Figure 00000229
), так, что выходной кольцевой элемент равен кольцевому элементу приращения, кольцевым образом сложенному с входным кольцевым элементом (
Figure 00000230
). С использованием таблицы приращений блок кольцевого сложения складывает первый входной для сложения целочисленный список (
Figure 00000231
), кодирующий первый входной для сложения кольцевой элемент, и второй входной для сложения целочисленный список (
Figure 00000232
), кодирующий второй входной для сложения кольцевой элемент. Устройство может содержать блок кольцевого умножения, также использующий таблицу приращений. 6 н. и 11 з.п. ф-лы, 10 ил., 1 табл.

Description

ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
Изобретение относится к электронному вычислительному устройству, устройству кольцевого кодирования, устройству кольцевого декодирования, устройству вычисления таблицы, способу электронного вычисления, компьютерной программе и машиночитаемому носителю.
УРОВЕНЬ ТЕХНИКИ
В криптографии типа "белый ящик" и, в общем, в программной обфускации вычисления часто выполняются над закодированными значениями вместо простых значений. Обратное проектирование программных средств с обфускацией сложнее, если вычисления выполняются над закодированными значениями вместо самих открытых значений.
После кодирования обычные операции, такие как сложение или умножение, больше не могут выполняться с использованием встроенных примитивов компьютера. Прямое сложение закодированных значений в обычном случае не дает в результате кодирования сложения значений. То же самое относится к умножению. В виде формулы:
Figure 00000001
для большинства x и y; E обозначает функцию кодирования.
Решение этой проблемы состоит во введении таблиц сложения (A) и умножения (M). Таблицы получают два закодированных значения в качестве входных данных и производят закодированное значение в качестве выходных данных, которое соответствует кодированию операции сложения или умножения. Таблицы могут быть определены следующим образом:
Figure 00000002
. Эти таблицы обеспечивают возможность арифметике выполняться непосредственно над закодированными значениями.
Сложение и умножение с обфускацией с использованием таблиц страдает по меньшей мере от двух недостатков. Во-первых, таблицы могут стать довольно большими. Если x и y представлены как l бит, каждой таблице требуется
Figure 00000003
бит.
Во-вторых, такие большие таблицы могут быть легко найдены в программных средствах. Что еще хуже, таблицы все еще могут быть идентифицированы как операции сложения или умножения, даже несмотря на то, что они закодированы; например, через свойства этих функций, которые сохраняются в кодировании. Например, таблица умножения удовлетворяет
Figure 00000004
. Злоумышленник может использовать это и подобные свойства, чтобы догадаться, какую операцию таблицы представляют.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
Наличие улучшенного способа для выполнения арифметики с обфускацией обеспечит преимущества. Обеспечено вычислительное устройство, определенное в формуле изобретения.
Изобретатели обнаружили, что в некоторых случаях умножение и сложение над закодированными значениями может выполняться с использованием одной таблицы без необходимости кодирования множества значений в одно закодированное значение. Поскольку одна и та же таблица используется для сложения и умножения, будет сложно увидеть во время обратного проектирования, сложение или же умножение выполняется. Поскольку сложение и умножение выглядят как одна и та же операция при взгляде извне, изобретатели назвали этот способ термином "гомогенная обфускация". Даже если злоумышленнику удалось найти таблицу, которая используется, и даже если ему удалось каким-то образом понять ее функцию как таблицы приращений, ему все еще будет неизвестно, выполняется ли операция сложения или же умножения. То, как таблица действует на элемент целочисленного списка, будет отличаться для сложения и умножения, однако это может быть легко скрыто с использованием традиционной обфускации, такой как обфускация кода, осуществление "белого ящика" и т. д.
Дополнительно, одна таблица, которая используется, также меньше рассмотренной в уровне техники: необходимо приблизительно
Figure 00000005
бит. Даже если используется только сложение, таблица, необходимая для сложения с обфускацией, меньше таблицы, предлагаемой в уровне техники.
Изобретение применяется к множеству различных коммутативных колец R, хотя не все без исключения кольца обеспечивают возможность кодирования в виде целочисленных списков. Коммутативные кольца являются математической концепцией, которая включает в себя множество различных известных математических структур, например целые по модулю некоторого числа (
Figure 00000006
) или многочлены по модулю некоторого числа и многочлена (
Figure 00000007
). Поля являются частным случаем коммутативных колец. Как будет описано здесь, специалист может удостовериться, обеспечивает ли некоторое заданное кольцо возможность обфускации.
Например, кольцевой элемент может быть закодирован в виде двух целых
Figure 00000008
. Арифметика может выполняться непосредственнсо над кодированием с использованием таблицы приращений, которая отображает закодированный кольцевой элемент в закодированный кольцевой элемент плюс значение приращения. Например, таблица может отображать
Figure 00000008
в
Figure 00000009
, если
Figure 00000010
. И сложение, и умножение выполняются путем многократных применений таблицы приращений.
Как будет здесь рассмотрено более полно, существует множество других возможностей и вариантов. Обычно неизвестно злоумышленнику, какой из многих вариантов был выбран в любом конкретном осуществлении.
Вычислительное устройство является электронным устройством и может быть мобильным электронным устройством, например мобильным телефоном, ресивером цифрового телевидения, компьютером, интеллектуальной картой и т. д.
Арифметика с обфускацией, описанная здесь, может применяться в широком диапазоне практических приложений. Такие практические приложения включают в себя безопасные приложения, запущенные на частных аппаратных средствах, например банковские приложения и т.д., причем обратное проектирование должно быть предотвращено. Другие приложения включать в себя приложения, в которых случайная утечка данных должна быть предотвращена. Если программу обманом заставляют раскрыть приватные данные, эта проблема не такая большая, если просочившиеся данные закодированы. Арифметика с обфускацией может также применяться к серверам, на которых запущены приложения. Приватность увеличивается, если пользователи посылают и принимают данные в закодированной форме.
Способ согласно изобретению может осуществляться на компьютере в качестве компьютерно-реализованного способа или в специализированных аппаратных средствах или в комбинации того и другого. Исполняемый код или его части для способа согласно изобретению могут сохраняться в компьютерном программном продукте. Примеры компьютерных программных продуктов включают в себя устройства памяти, оптические устройства хранения, интегральные цепи, серверы, сетевые программные средства и т. д. Предпочтительно, компьютерный программный продукт содержит некратковременные средства программного кода, сохраненные на машиночитаемом носителе, для выполнения способа согласно изобретению, когда упомянутый программный продукт исполняется на компьютере.
В предпочтительном варианте осуществления компьютерная программа содержит средства компьютерного программного кода, выполненные с возможностью выполнения всех этапов способа согласно изобретению, когда компьютерная программа запущена на компьютере. Предпочтительно, компьютерная программа осуществляется на машиночитаемом носителе.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
Эти и другие аспекты изобретения очевидны из и будут освещены со ссылками на варианты осуществления, описанные далее. На чертежах
фиг.1a схематически изображает пример варианта осуществления вычислительного устройства 100,
фиг.1b схематически изображает пример варианта осуществления блока 130 кольцевого сложения,
фиг.1c схематически изображает пример варианта осуществления блока 140 кольцевого умножения,
фиг.2 схематически изображает пример варианта осуществления вычислительного устройства 101,
фиг.3 схематически изображает пример варианта осуществления устройства 200 вычисления таблицы для вычисления таблицы приращений для использования в вычислительном устройстве,
фиг.4 схематически изображает пример варианта осуществления способа 300 вычисления для выполнения арифметики с обфускацией,
фиг.5 схематически изображает пример варианта осуществления способа 400 сложения,
фиг.6 схематически изображает пример варианта осуществления способа 500 умножения,
фиг.7a изображает машиночитаемый носитель, имеющий перезаписываемую часть, содержащую компьютерную программу согласно одному варианту осуществления,
фиг.7b изображает схематическое представление процессорной системы согласно одному варианту осуществления.
Элементы, которые имеют одни и те же ссылочные позиции на различных чертежах, имеют одни и те же структурные признаки и одни и те же функции или являются одними и теми же сигналами. Если функция и/или структура такого элемента уже была объяснена, нет необходимости повторять ее объяснение в подробном описании.
ПОДРОБНОЕ ОПИСАНИЕ
Хотя настоящее изобретение допускает осуществление во множестве различных форм, на чертежах показаны и будут подробно описаны здесь один или несколько конкретных вариантов осуществления с пониманием, что настоящее раскрытие должно рассматриваться в качестве примера принципов изобретения и не предназначено для ограничения изобретения конкретными вариантами осуществления, показанными и описанными.
Далее в целях понимания описаны элементы вариантов осуществления в действии. Однако будет очевидно, что соответственные элементы выполнены с возможностью выполнения функций, описанных как выполняемые ими.
Электронное вычислительное устройство выполняет эффективную арифметику с использованием неожиданно маленьких таблиц. Кроме того, в области техники арифметики с обфускацией считается преимуществом, если операция может выполняться посредством таблицы, поскольку для таких операций может быть легко осуществлена дополнительная обфускация, например с использованием традиционных методик "белого ящика" (см., например, Чоу и др., "Криптография типа "белый ящик" и осуществление AES" ("White-box cryptography and an AES implementation")). Существует, таким образом, необходимость выразить арифметические операции с использованием таблиц. Варианты осуществления осуществляют сложение с использованием меньшей таблицы, чем в предшествующем уровне техники. Даже без дополнительной обфускации, такой как криптография типа "белый ящик", электронное вычислительное устройство участвует в обфускации. Как показано здесь, существует множество способов, которыми таблица кодирования и приращений может осуществляться. То, какое кодирование используется в любом конкретном варианте осуществления, неизвестно злоумышленнику, и, таким образом, наблюдаемое вычисление становится сложнее интерпретировать.
Варианты осуществления обеспечивают возможность операций умножения и сложения, которые должны выполняться с использованием одной и той же таблицы. Это дополнительно способствует обфускации, поскольку из того факта, что таблица приращений используется, уже нельзя определить, какая операция выполняется. Ниже сначала рассматривается некоторое количество возможных архитектур вариантов осуществления вычислительных устройств. Далее рассматривается некоторое количество альтернативных способов для выполнения арифметики с обфускацией.
Фиг.1 схематически изображает пример варианта осуществления вычислительного устройства 100. Вычислительное устройство 100 является электронным устройством для выполнения арифметики с обфускацией в конечном коммутативном кольце. Известно множество примеров коммутативных колец. Ниже даны примеры для двух таких колец: целые по модулю некоторого числа (
Figure 00000006
) и многочлены по модулю некоторого числа и многочлена (
Figure 00000007
). Другой вариант осуществления может использовать другие коммутативные кольца.
Элементы кольца называются кольцевыми элементами. Над кольцевыми элементами определены сложение и умножение, последние называются кольцевым сложением и кольцевым умножением.
Кольцевые элементы могут быть представлены в любой подходящей форме, если это требуется. Например, элементы
Figure 00000006
могут быть представлены как целые; элементы
Figure 00000011
- как многочлены. Однако в вычислительном устройстве 100 кольцевые элементы представляются как целочисленные списки. Например, кольцевой элемент a может быть представлен в вычислительном устройстве 100 списком
Figure 00000012
. Последнее верно даже для нецелочисленных колец, например колец многочленов. Целочисленный список кодирует кольцевой элемент согласно некоторому отображению между кольцевыми элементами и целочисленным списком; при заданном любом кольцевом элементе существует по меньшей мере один целочисленный список, который представляет кольцевой элемент, и при заданном любом целочисленном списке существует ровно один кольцевой элемент, который его представляет. В вариантах осуществления любой кольцевой элемент может быть представлен в виде целочисленного списка.
Целочисленные списки имеют по меньшей мере два элемента. Как оказывается, операции сложения и умножения требуют меньшего количества этапов, если целочисленный список короче. Соответственно, в одном варианте осуществления целочисленные списки всегда имеют два элемента. В основном описании мы будем предполагать, что целочисленные списки являются целочисленными парами, однако примеры целочисленных списков, имеющих более двух элементов, обеспечены. В качестве примера,
Figure 00000012
может отображаться в кольцевой элемент
Figure 00000013
, причем u является особым кольцевым элементом, называемым кольцевым элементом основания. Ниже рассматривается множество вариантов, включающих в себя использование множества элементов основания. Однако в основном рассмотрении мы будем предполагать в качестве "примерного кодирования", что некоторый заданный целочисленный список
Figure 00000012
отображается в кольцевой элемент (
Figure 00000013
).
В одном варианте осуществления целые в целочисленном списке неотрицательны. Это упрощает вычисление, но не является необходимым. Кроме того, в одном варианте осуществления целые в целочисленном списке берутся по модулю порядка элемента основания. Порядком элемента основания u является наименьшее целое k такое, что
Figure 00000014
=1. Удобно хранить значения в целочисленном списке в диапазоне
Figure 00000015
, например путем выполнения операций по модулю k.
Вычислительное устройство 100 может содержать хранилище 150 операндов. Операнды сохраняются в виде целочисленных списков в хранилище 150 операндов. Арифметика может выполняться над операндами, сохраненными в хранилище 150 операндов. Результаты упомянутой арифметики могут сохраняться в хранилище 150 операндов, где они могут быть использованы в новых операциях, или могут выводиться к другому устройству и т. д.
Вычислительное устройство 100 содержит хранилище 110, выполненное с возможностью хранить таблицу приращений
Figure 00000016
, определенную для приращения кольцевого элемента. Таблица приращений отображает входной кольцевой элемент в выходной целочисленный список, кодирующий выходной кольцевой элемент, так, что выходной кольцевой элемент равен кольцевому элементу приращения, кольцевым образом сложенному с входным кольцевым элементом. В одном варианте осуществления входной кольцевой элемент представлен в виде целочисленного списка. Таким образом, таблица
Figure 00000016
отображает целочисленные списки в целочисленные списки; и те, и другие соответствуют одному и тому же кодированию, например одному и тому же отображению. Однако существуют варианты осуществления, в которых входной кольцевой элемент представлен как целочисленный список в альтернативном кодировании. В любом случае входной кольцевой элемент представлен в цифровой форме, обеспечивая возможность таблице отображать входной кольцевой элемент в выходной кольцевой элемент.
Таблица может перечислять входные кольцевые элементы в некотором формате вместе с ассоциированным выходным целочисленным списком. Таблица может также быть представлена в хранилище не включая входное кольцо и перечисляя только выходные целочисленные списки. Например, это может быть сделано, если входное кольцо представлено в каноническом формате.
Например, предполагая примерное кодирование, входной кольцевой элемент
Figure 00000017
может быть отображен таблицей
Figure 00000016
в выходной целочисленный список. В этом случае входной кольцевой элемент может быть представлен в виде целочисленного списка так, что мы можем иметь
Figure 00000018
. Последнее кодирует выходной кольцевой элемент
Figure 00000019
. Выходной кольцевой элемент равен кольцевому элементу приращения, кольцевым образом сложенному с входным кольцевым элементом. Например, если кольцевой элемент приращения равен 1, то
Figure 00000020
. В варианте осуществления элемент приращения может быть равен 1, однако это не необходимо. Например, с использованием примерного кодирования элемент приращения может быть выбран как
Figure 00000021
для некоторого значения t, например любого значения 0<=t<порядок(u).
Таблица приращений гораздо меньше таблиц, описанных в уровне техники. Последние таблицы принимают два элемента входных данных, например два закодированных числа, для производства закодированных выходных данных. Однако таблица
Figure 00000016
получает только один закодированный элемент входных данных для производства одного закодированного элемента выходных данных; кольцевой элемент приращения фиксирован. Предполагая, что кодирования занимают схожее количество места, место для входа T уменьшается примерно до квадратного корня. Это существенное улучшение размера.
Вычислительное устройство 100 содержит блок 130 кольцевого сложения и блок 140 кольцевого умножения. Вычислительное устройство 100 может также содержать блок 120 кольцевого отрицания. В одном варианте осуществления блок 140 кольцевого умножения может использовать блок 130 сложения для выполнения сложения; блок 130 сложения может использовать блок 120 отрицания. Это было указано на фиг.1 линиями между блоками 120, 130 и 140. Однако блоки могут дублироваться; например, блок 130 сложения может осуществлять собственное отрицание, и умножение 140 может осуществлять собственное сложение. Отрицание также называется "изменением знака".
Блок 120 отрицания может принимать входной для отрицания целочисленный список
Figure 00000012
, кодирующий входной для отрицания кольцевой элемент a. Блок 120 отрицания выполнен с возможностью определять выходной для отрицания целочисленный список
Figure 00000022
, кодирующий выходной для отрицания кольцевой элемент b. Выходной для отрицания кольцевой элемент является величиной противоположного знака для входного для отрицания кольцевого элемента, например выходной для отрицания кольцевой элемент равен нейтральному кольцевому элементу для сложения (0) минус входной для отрицания кольцевой элемент. Таким образом,
Figure 00000023
.
В одном варианте осуществления блок отрицания может вычислять выходной целочисленный список путем перестановки входного для отрицания целочисленного списка. С использованием примерного кодирования
Figure 00000024
, выходной целочисленный список может быть
Figure 00000025
. Отрицание путем перестановки может эффективно осуществляться в коде путем изменения адреса, из которого элемент считывается, и не обязательно изменять фактический порядок в памяти.
В одном варианте осуществления блок отрицания может вычислять выходной целочисленный список путем прибавления константы к каждому целому из целочисленного списка. Например, в примерном кодировании с использованием целого m такого, что
Figure 00000026
; например, выходной целочисленный список может быть
Figure 00000027
.
Блок 130 кольцевого сложения выполнен с возможностью принимать первый входной для сложения целочисленный список
Figure 00000012
, кодирующий первый входной для сложения кольцевой элемент, и второй входной для сложения целочисленный список
Figure 00000022
, кодирующий второй входной для сложения кольцевой элемент. Например, блок 130 кольцевого сложения может принимать два операнда из хранилища 150 операндов. Блок 130 кольцевого сложения выполнен с возможностью определять выходной для сложения целочисленный список, кодирующий выходной для сложения кольцевой элемент, путем применения таблицы приращений к кольцевым элементам, определенным из первого и второго входных для сложения целочисленных списков, причем выходной для сложения кольцевой элемент равен кольцевому сложению первого входного для сложения кольцевого элемента и второго входного для сложения кольцевого элемента.
В одном варианте осуществления отображение целочисленного списка в конкретный кольцевой элемент содержит множество подотображений, причем каждое подотображение ассоциировано с целым из целочисленного списка, причем подотображение отображает целое в кольцевой элемент. Отображение является линейной комбинацией, например суммой, подотображений, применяемых к ассоциированному целому. Подотображение может быть возведением элемента основания в степень, определенную ассоциированным целым. Например, в примерном кодировании
Figure 00000012
может считаться суммой подотображений
Figure 00000028
и
Figure 00000029
.
Фиг.1b изображает вариант осуществления блока 130 сложения. Блок 130 сложения принимает первый входной для сложения целочисленный список 131 и второй входной для сложения целочисленный список 132. Блок 130 сложения содержит промежуточный блок 134 сложения, выполненный с возможностью итерационно прибавлять кольцевой элемент, полученный из целого из второго входного для сложения целочисленного списка 132, к первому входному для сложения кольцевому элементу. Например, промежуточный блок 134 сложения может прибавлять к промежуточной сумме 133, которая инициализируется для первого элемента целочисленного списка. Сложение включает в себя применение таблицы приращений из хранилища 110.
Блок 140 кольцевого умножения выполнен с возможностью принимать первый входной для умножения целочисленный список
Figure 00000030
, кодирующий первый входной для умножения кольцевой элемент, и второй входной для умножения целочисленный список
Figure 00000031
, кодирующий второй входной для умножения кольцевой элемент. Например, блок 140 умножения может принимать два операнда из хранилища 150 операндов. Блок 140 кольцевого умножения выполнен с возможностью определять выходной для умножения целочисленный список, кодирующий выходной для умножения кольцевой элемент, путем применения таблицы приращений к кольцевым элементам, определенным из первого и второго входных для умножения целочисленных списков, причем выходной для умножения кольцевой элемент равен кольцевому умножению первого входного для умножения кольцевого элемента и второго входного для умножения кольцевого элемента.
Фиг.1c изображает возможный вариант осуществления блока 140 умножения. Блок 140 умножения принимает первые входные для умножения целочисленные списки 141 и вторые входные для умножения целочисленные списки 142. Блок 140 умножения содержит промежуточный блок 144 умножения, выполненный с возможностью определения из первого и второго входных для умножения целочисленных списков 141, 142 первого промежуточного целочисленного списка 145 умножения
Figure 00000032
и второго промежуточного целочисленного списка 146 умножения
Figure 00000033
, кодирующих первый и второй промежуточный кольцевой элемент умножения соответственно. Блок 140 умножения выполнен с возможностью сложения первого 145 и второго промежуточного целочисленного списка 146 умножения посредством блока 130 кольцевого сложения. Определение промежуточного целочисленного списка может включать в себя арифметические операции над целыми в целочисленном списке, но не требует таблицы приращений.
Вычислительное устройство 100 опционально содержит блок 170 кольцевого кодирования для кодирования кольцевого элемента коммутативного кольца в виде целочисленного списка и блок 160 кольцевого декодирования для декодирования целочисленного списка
Figure 00000008
в кольцевой элемент (x) коммутативного кольца. Блок 170 кодирования и/или блок 160 декодирования может отсутствовать, например, когда вычислительное устройство 100 принимает закодированные входные данные и/или обеспечивает отчет в закодированных выходных данных. Блок 170 кодирования и/или блок 160 декодирования может осуществляться как отдельный блок, например как устройство кодирования и/или устройство 160 декодирования.
Блок 170 кольцевого кодирования может содержать хранилище 172, выполненное с возможностью хранить таблицу кодирования, определенную для одного или нескольких кольцевых элементов основания (u), причем таблица кодирования отображает кольцевой элемент (x) в целочисленный список (
Figure 00000008
) так, что кольцевой элемент равен линейной комбинации степеней одного или нескольких кольцевых элементов основания (
Figure 00000034
), причем степени имеют показатели, определенные целочисленным списком. Блок 170 кодирования может сохранять закодированный кольцевой элемент в хранилище 150 операторов. Блок 170 кодирования обеспечивает возможность системе работать с простой информацией.
Блок 160 кольцевого декодирования выполнен с возможностью определять для одного или нескольких кольцевых элементов основания (u) кольцевой элемент (x) такой, что кольцевой элемент равен линейной комбинации степеней одного или нескольких кольцевых элементов основания (
Figure 00000034
), причем степени имеют показатели, определенные целочисленным списком. Например, блок 160 декодирования может содержать хранилище, хранящее таблицу декодирования, отображающую целочисленные списки в кольцевые элементы. Например, блок 160 декодирования может содержать блок вычисления для вычисления степеней и их линейной комбинации.
Во множестве интересных вариантов осуществления опускается один или оба из блоков 160 и 170 кодирования и декодирования. Например, вычислительное устройство 100 может быть сконфигурировано для приема закодированной информации по компьютерной сети, например Интернет. Владелец системы, в которой устройство 100 вычисления с обфускацией работает, например компьютер, исполняющий программные средства вычисления с обфускацией, может не знать кодирование, используемое для входной информации, а также для информации, выводимой системой 100, например передаваемой обратно по компьютерной сети. Соответственно, даже несмотря на то, что вычисления выполняются в облаке, хозяин информации имеет некоторую гарантию, что его информация защищена. Оперирование над информацией в закодированной форме обычно невозможно с использованием криптографии, например шифрования. Даже если табличная система используется, как очерчено в уровне техники, это требует двойных таблиц.
Обычно вычислительное устройство 100 содержит микропроцессор (не показан), который исполняет надлежащие программные средства, сохраненные в устройстве 100; например, эти программные средства могли быть загружены и/или сохранены в соответствующую память, например энергозависимую память, такую как RAM, или энергонезависимую память, такую как флэш-память (не показана). В качестве альтернативы, устройство 100 может, в целом или частично, осуществляться в программируемой логике, например в качестве программируемой пользователем вентильной матрицы (FPGA). Устройство 100 может осуществляться, в целом или частично, в качестве так называемой специализированной интегральной цепи (ASIC), т. е. интегральной цепи (IC), изготовленной специально для ее конкретного использования.
В одном варианте осуществления электронное вычислительное устройство содержит цепь кольцевого сложения и цепь кольцевого умножения, выполненную с возможностью исполнения функции соответствующего блока. Вычислительное устройство может также содержать цепь отрицания. Цепь может быть интегральными цепями, такими как CMOS, например полученными путем описания функций на языке описания аппаратных средств, таком как Verilog и VHDL. Цепи могут быть процессорной цепью и запоминающей цепью, причем процессорная цепь исполняет инструкции, представленные электронно в запоминающих цепях. Цепи могут также быть FPGA, ASIC или подобным.
Хранилище 110 таблиц и хранилище 150 операндов могут осуществляться в качестве электронного хранилища, например памяти. Оба хранилища могут входить в состав одной и той же памяти, но они могут быть отдельными средствами памяти. Хранилище 110 таблиц может быть энергонезависимой, неперезаписываемой памятью, например ROM, или памятью с однократной записью и многократным считыванием (WORM). Хранилище 150 операндов может быть энергозависимой или энергонезависимой перезаписываемой памятью, например флэш-памятью или RAM.
Фиг.2 схематически изображает пример варианта осуществления вычислительного устройства 101. Вычислительное устройство 101 является усовершенствованием вычислительного устройства 100. В одном варианте осуществления вычислительное устройство 101 содержит множество блоков кольцевого сложения, множество блоков кольцевого умножения и, опционально, множество блоков отрицания. Например, фиг.2 изображает три блока 1401.1, 140.2 и 140.3 умножения и два блока 130.1 и 130.2 сложения. Эти блоки могут иметь то же самое проектирование, что и блоки 140 и 130, соответственно. Блоки умножения и сложения занимают относительно мало места, например, при осуществлении в программных средствах эти блоки не требуют больше чем несколько сотен компьютерных инструкций нижнего уровня. В частности, копия блока сложения и/или умножения может быть использована для каждого умножения или сложения, которое требуется в компьютерной программе. Это обеспечивает возможность традиционных методик обфускации. В качестве примера, фиг.2 изображает, как многочлен
Figure 00000035
может быть вычислен с использованием арифметики с обфускацией.
Операции множества арифметических блоков, например, сложение, умножение, отрицание, могут быть упорядочены в любом порядке, который допускают их зависимости от данных. Например, операция 140.3 может быть внесена в порядок 140.1, 140.2., 130.1 и 130.2 в любом месте перед 130.1. Кроме того, порядок последующих умножений или сложений может быть обращен. Таким образом, схема, такая как схема 2, может быть преобразована в линейный порядок для компьютерной программы множеством способов. Не является необходимым, чтобы блоки были строго раздельными; инструкции для первого блока могут перемежаться с инструкциями для другого блока.
Фиг.3 схематически изображает пример варианта осуществления устройства 200 вычисления таблицы для вычисления таблицы приращений для использования в вычислительном устройстве. Таблица приращений может быть использована в устройстве, таком как вычислительное устройство 100. Таблица приращений может сохраняться на непереходном устройстве хранения, например жестком диске, энергонезависимом кристалле памяти и т.д.
Устройство 200 вычисления таблицы содержит блок 210 создания таблицы, выполненный с возможностью строить таблицу приращений. Например, блок создания таблицы может быть выполнен с возможностью
- многократно выбирать входной кольцевой элемент, например x,
- определять выходной кольцевой элемент, который равен кольцевому элементу приращения, кольцевым образом сложенному с входным кольцевым элементом. Например,
Figure 00000036
, если значение приращения равно 1.
- определять выходной целочисленный список, кодирующий выходной кольцевой элемент. Например, устройство 200 вычисления таблицы может содержать блок кодирования, такой как блок 170 кодирования.
- добавлять запись в таблицу приращений, отображающую входной кольцевой элемент в выходной целочисленный список.
Эти этапы могут выполняться, пока не все кольцевые элементы были отображены в целочисленный список. В некоторых вариантах осуществления элементы могут пропускаться для построения частичной таблицы приращений; например, может быть известно из контекста, что конкретные кольцевые элементы не будут возникать.
При заданном кольце R, потенциальном кольцевом элементе основания u, кодировании, например примерном кодировании, и длине целочисленного списка, например 2, таблица декодирования может генерироваться, как обеспечено ниже. Пусть k имеет порядок u.
- генерировать все целочисленные списки, например путем генерирования всех целочисленных списков длины целочисленного списка и допуская для каждой позиции в списке все целые от 0 до k не включительно. Например, генерировать: (0,0), (0,1), (1,0), (1,1), (0,2), (1,2), (2,2) (2,0), (2,1), (0,3),... и т. д.,
- для каждого сгенерированного целочисленного списка вычислять кольцевой элемент, закодированный целочисленным списком, и добавлять запись в таблицу декодирования, ассоциирующую целочисленный список с декодированием.
Хотя декодирование может использовать или не использовать таблицу декодирования, такая таблица также полезна, поскольку таблица кодирования может генерироваться из таблицы декодирования, например, путем сортировки таблицы для кольцевых элементов. Может случиться так, что кольцевой элемент имеет множество кодирований. Например, кольцевой элемент 0 (нейтральный элемент для сложения) может быть представлен как (a, a) в примерном кодировании для любого a. Такое множество кодирований может удаляться из таблицы, например путем удаления всех кроме одной из множества записей для некоторого заданного кольцевого элемента; или путем оставления множества кодирований в таблице и использования таблицы кодирования для кодирования в случайную запись из множества записей.
Построение таблицы декодирования или кодирования может также быть использовано, чтобы выяснить, является ли кольцевой элемент u кольцевым элементом основания. Если построение таблицы кодирования терпит неудачу, поскольку оказывается, что некоторые кольцевые элементы не имеют кодирования, то u не является кольцевым элементом основания.
Ниже представлено некоторое количество вариантов осуществления кодирований, таблиц приращения, способов кольцевого сложения и способов кольцевого умножения. Блоки отрицания, сложения и умножения вычислительного устройства 100 могут быть сконфигурированы для любого из этих вариантов осуществления. Все примеры применяются к любому коммутативному кольцу, в частности
Figure 00000006
и
Figure 00000007
. Здесь n является положительным целым. Кроме того, очень предпочтительно, чтобы любой элемент коммутативного кольца мог быть представлен в выбранном кодировании. Не все коммутативные кольца обеспечивают возможность всем элементам быть представленными в некотором заданном кодировании, например, в виде некоторого заданного типа представления целочисленного списка. При заданном коммутативном кольце R мы будем считать, что оно обеспечивает возможность полной гомогенной обфускации, если любой элемент в R может быть представлен в виде целочисленного списка с использованием некоторого заданного типа кодирования. Специалист в данной области техники может подтвердить, что если некоторое заданное коммутативное кольцо обеспечивает возможность полной гомогенной обфускации при заданном кодировании, например путем генерирования всех допустимых кодирований и подтверждения, что вместе они представляют все элементы некоторого заданного кольца. Для некоторых приложений может быть обеспечена возможность того, что кодирование имеет некоторые пропуски. Это может иметь следствием то, что арифметика не может выполняться над этими пропусками, по меньшей мере не с использованием кодирования целочисленного списка с обфускацией. Конкретные примеры коммутативных колец, обеспечивающих возможность конкретных типов кодирований, дополнительно представляются ниже.
Ниже сначала дается описание примерного кодирования. Существует множество типов кодирований, которые имеют сходство в том, что кольцевые элементы могут быть представлены в виде списков целых чисел. Эти целые не являются кольцевыми элементами, например, даже если кольцо не является целочисленным кольцом, например кольцом многочленов, то тем не менее элементы могут быть представлены в виде целочисленных списков. В используемом здесь кодировании то, как некоторый заданный целочисленный список отображается в кольцевой элемент, называется кодированием. Обычно целочисленные списки будут всегда одной и той же длины, однако это не необходимо. В общем случае, поскольку кодирование обеспечивает возможность большего количества типов целочисленных списков, например более длинные списки, становится более вероятно, что некоторый заданный кольцевой элемент может быть закодирован в виде целочисленного списка различными способами.
При заданном коммутативном кольце R с примерным кодированием существует особый кольцевой элемент u такой, что любой элемент a из R может быть записан как
Figure 00000013
для некоторых целых
Figure 00000037
и
Figure 00000038
. Мы называем такой особый кольцевой элемент кольцевым элементом основания. Не все коммутативные кольца могут быть закодированы таким образом, но достаточно многие из них, чтобы кодирование было полезным. Целые
Figure 00000037
и
Figure 00000038
сами по себе не являются кольцевыми элементами кольца R; они являются целыми, над которыми выполняются операции по модулю порядка элемента основания. Следует заметить, что кольцевой элемент a равен линейной комбинации степеней элемента основания u, а именно
Figure 00000028
и
Figure 00000039
; в этом случае линейная комбинация получается путем умножения степеней на +1 или -1 и их суммирования, в частности, путем вычитания второй степени из первой степени. Вычислительное устройство оперирует над кольцевыми элементами, закодированными вышеупомянутым образом. Блоки сложения, отрицания и умножения могут оперировать над кольцевыми элементами в этом кодировании.
Таблица приращений
Figure 00000016
играет центральную роль в операции как сложения, так и умножения. Таблица приращений отображает входной кольцевой элемент, в этом случае входной кольцевой элемент может быть представлен в виде целочисленного списка. Например, при заданном входном целочисленном списке
Figure 00000040
, представляющем входной кольцевой элемент
Figure 00000017
, таблица
Figure 00000016
отображает его в выходной целочисленный список, например
Figure 00000041
, кодирующий выходной кольцевой элемент
Figure 00000019
. Выходной кольцевой элемент равен кольцевому элементу приращения, кольцевым образом сложенному с входным кольцевым элементом. В этом примере элемент приращения может быть принят за 1, т. е. кольцевым элементом, который является единичным элементом для кольцевого умножения; в этом случае
Figure 00000042
. Удобно то, что таблица может применяться непосредственно к кольцевым элементам, которые используют то же самое кодирование, и, таким образом, может применяться к кольцевым элементам, имеющим представление целочисленного списка. Тем не менее, существуют варианты осуществления, в которых таблица применяется к кольцевым элементам в альтернативном кодировании. Альтернативное кодирование может также быть целочисленным списком, но альтернативного типа. Кроме того, кольцевой элемент приращения не обязательно должен быть 1.
Ниже описаны операции отрицание, сложение и умножение.
Отрицание. При заданном входном для отрицания целочисленном списке
Figure 00000012
, представляющем входной для отрицания кольцевой элемент
Figure 00000024
, выходной для отрицания целочисленный список может быть получен путем перестановки целочисленного списка, в этом случае путем обращения порядка. Выходным для отрицания целочисленным списком может быть
Figure 00000043
. Предполагая, что существует m такое, что
Figure 00000026
, что случается для многих колец R, отрицание может в качестве альтернативы быть получено путем прибавления константы, например m, к каждому целому из целочисленного списка. В последнем случае выходным для отрицания целочисленным списком может быть
Figure 00000027
. Это срабатывает, поскольку
Figure 00000044
. Арифметика в целочисленном списке предпочтительно выполняется по модулю порядка элемента основания. Здесь целое из целочисленных списков соответствует показателю элемента основания, так что целые, которые являются одними и теми же по модулю порядка элемента основания, кодируют один и тот же кольцевой элемент.
Сложение. Для сложения принятого первого входного для сложения целочисленного списка
Figure 00000012
, кодирующего первый входной для сложения кольцевой элемент
Figure 00000024
, и второго входного для сложения целочисленного списка
Figure 00000022
, кодирующего второй входной для сложения кольцевой элемент
Figure 00000045
, первый промежуточный целочисленный список сложения (
Figure 00000046
), кодирующий промежуточный кольцевой элемент сложения c, определяется.
Кольцевой элемент c может быть первым входным для сложения кольцевым элементом a плюс элемент основания u в степени, определенной из второго входного для сложения целочисленного списка, в частности первого целого из второго входного для сложения целочисленного списка. В этом примере мы можем иметь
Figure 00000047
. Чтобы вычислить последнее, мы делаем наблюдение, что
Figure 00000048
. Выражение в скобках может быть переписано в кодировании с использованием таблицы приращений. Посредством первого применения таблицы приращений к кольцевому элементу
Figure 00000049
получается элемент
Figure 00000050
=
Figure 00000049
+1. Например, посредством
Figure 00000051
. Тогда мы имеем, что
Figure 00000052
и
Figure 00000053
, таким образом, определение промежуточного целочисленного списка сложения (
Figure 00000046
) может дополнительно содержать сложение целого, определенного из вторых входных для сложения целочисленных списков, с целыми в целочисленном списке, возникшем в результате первого применения. Прибавление
Figure 00000054
a к кольцевому элементу в представлении целочисленного списка, в этом случае к a, иногда называется этапом положительного приведения.
Таким образом, блок сложения получил промежуточный кольцевой элемент сложения
Figure 00000055
в виде целочисленного списка
Figure 00000056
. Промежуточный кольцевой элемент сложения, таким образом, является линейной комбинацией степеней одного или нескольких элементов основания, причем степени определяются из первого и второго входных для сложения целочисленных списков. В этом случае таблица приращений применяется к кольцевому элементу
Figure 00000049
, формируемому одним или несколькими кольцевыми элементами основания (u), возведенными в степень первого целого из первого целочисленного списка (
Figure 00000037
) минус первое целое из второго целочисленного списка (
Figure 00000057
), минус кольцевой элемент основания (u), возведенный в степень второго целого из первого целочисленного списка (
Figure 00000038
) минус первое целое из второго целочисленного списка (
Figure 00000057
).
В этом примере, выходной для сложения целочисленный список может быть определен посредством второго применения таблицы приращений к кольцевым элементам, определенным из промежуточного целочисленного списка сложения и второго входного для сложения целочисленного списка. Это может содержать вычисление суммы промежуточного кольцевого элемента сложения c минус элемент основания, возведенный в степень, определенную из второго входного для сложения целочисленного списка, например второго целого из второго входного для сложения целочисленного списка
Figure 00000058
:
Figure 00000059
. Это может быть выполнено путем отрицания промежуточного кольцевого элемента сложения, представленного промежуточным целочисленным списком сложения, перед вторым применением таблицы приращений. Отрицание c может быть выполнено, как указано выше. В качестве примера мы используем перестановку, но та же самая операция может выполняться путем добавления константы к показателю. После отрицания сумма может использовать прибавление (вместо вычитания) элемента основания, возведенного в степень, определенную из второго входного для сложения целочисленного списка:
Figure 00000060
. Последняя операция имеет тот же тип, что и выше, и может выполняться посредством применения таблицы тем же самым образом, что и прибавление
Figure 00000061
. После этого для результата снова выполняется отрицание. Полное сложение может использовать два отрицания и два применения таблицы одной и той же таблицы приращений
Figure 00000016
.
Вычитание
Figure 00000062
из кольцевого элемента в представлении целочисленного списка, в этом случае из c, иногда называется этапом отрицательного приведения. Этап отрицательного приведения может выполняться путем отрицания, выполнения этапа положительного приведения и снова отрицания.
Умножение. Для умножения принятого первого входного для умножения целочисленного списка
Figure 00000030
, кодирующего первый входной для умножения кольцевой элемент
Figure 00000063
, и второго входного для умножения целочисленного списка (
Figure 00000031
), кодирующего второй входной для умножения кольцевой элемент
Figure 00000064
, первый промежуточный целочисленный список умножения
Figure 00000032
и второй промежуточный целочисленный список умножения
Figure 00000033
определяются. Выходной для умножения целочисленный список, кодирующий выходной для умножения кольцевой элемент, определяется из первого и второго промежуточного элемента. В других вариантах осуществления может быть более двух промежуточных целочисленных списков умножения. Мы имеем, что
Figure 00000065
Разбиение выражения в разложенных произведениях по двум выражениям t и u может быть сделано различными способами, например как
Figure 00000066
.
Таким образом, для умножения двух кольцевых элементов, представленных в виде целочисленных списков, они могут быть преобразованы в два новых целочисленных списка, которые могут быть сложены для получения ответа для умножения. Сложение может выполняться, как описано выше. Например, блок умножения может вычислять промежуточные целочисленные списки и посылать их блоку умножения.
Например, первое целое
Figure 00000067
из первого промежуточного целочисленного списка умножения может содержать первое целое
Figure 00000068
из первого входного для умножения целочисленного списка плюс первое целое
Figure 00000069
из второго входного для умножения целочисленного списка, и второе целое
Figure 00000070
из первого промежуточного целочисленного списка умножения может содержать первое целое
Figure 00000068
из первого входного для умножения целочисленного списка плюс второе целое
Figure 00000071
из второго входного для умножения целочисленного списка,
Figure 00000072
; первое целое
Figure 00000073
из второго промежуточного целочисленного списка умножения может содержать второе целое
Figure 00000074
из первого входного для умножения целочисленного списка плюс второе целое
Figure 00000075
из второго входного для умножения целочисленного списка, и второе целое
Figure 00000076
из второго промежуточного целочисленного списка умножения может содержать второе целое
Figure 00000074
из первого входного для умножения целочисленного списка плюс первое целое
Figure 00000069
из второго входного для умножения целочисленного списка,
Figure 00000077
.
В одном варианте осуществления, например в только что раскрытом примере, арифметика выполняется над целочисленными списками, кольцевые элементы не имеют необходимости вычисляться в качестве кольцевых элементов в некотором естественном представлении. Теперь будет рассмотрено некоторое количество вариантов. Многие из вариантов независимы, например вариант для кодирования может комбинироваться с вариантом для выполнения сложения.
Посредством арифметики с обфускацией, когда вычисления выполняются в целочисленном списке, соответствующем, например,
Figure 00000078
и т. д., значение может быть приведено по модулю порядка u. Например, если порядок u равен 30, все вычисления могут выполняться по модулю 30.
Значение приращения. Значение приращения не обязательно должно быть 1. Существует по меньшей мере два способа для использования другого значения приращения. Во-первых, уравнение
Figure 00000048
может быть модифицировано в
Figure 00000079
. Это означает, что может быть построена таблица приращений, которая прибавляет значение
Figure 00000021
. Эта таблица приращений применяется к тем же самым целочисленным спискам, за исключением того что целое t прибавляется. После первого применения таблицы приращений число
Figure 00000080
прибавляется вместо
Figure 00000057
.
Другой способ для изменения значения приращения состоит в том, чтобы взять два элемента g и p из R такие, что многократное прибавление g в кольце дает p. Например, существует целое h такое, что
Figure 00000081
. Предположим, что существует таблица приращений
Figure 00000082
со значением приращения p, например
Figure 00000083
или
Figure 00000084
. Таблица приращений
Figure 00000085
может быть построена для g в качестве значения приращения. Таблица
Figure 00000085
может применяться h раз для получения того же самого эффекта, что и применение
Figure 00000082
непосредственно. Использование различных таблиц приращений с различными значениями приращения может даже комбинироваться в один вариант осуществления, например для увеличения обфускации. Последнее построение имеет преимущество в том, что множество значений приращения может комбинироваться без изменения последующего вычисления сложения.
Построение таблицы приращений может также быть подтверждено. Например, возвращаясь к уравнению для промежуточного кольцевого элемента сложения, но вместо разложения
Figure 00000048
делается следующее наблюдение:
Figure 00000086
. С использованием этой формулы таблица приращений может быть построена для значения приращения -1. Этот тип таблицы приращений применяется к кольцевому элементу
Figure 00000087
. Этот кольцевой элемент не имеет примерного кодирования. Кольцевой элемент может, тем не менее, быть представлен в виде целочисленного списка, например в виде (
Figure 00000088
,
Figure 00000089
), так, что эта таблица приращений получает целочисленный список в качестве входных данных и производит целочисленный список в качестве выходных данных. Однако в отличие от предыдущего примера входной целочисленный список имеет кодирование, отличное от выходного кодирования. Кроме того, хотя очень предпочтительно, чтобы кодирование, используемое на входе в блок сложения, не имело пропусков, т. е. чтобы любой кольцевой элемент мог быть представлен в этом кодировании, нет необходимости, чтобы это альтернативное входное кодирование этой таблицы приращений не имело пропусков; все элементы, которые должны быть представлены в качестве входных данных таблицы, могут быть представлены путем построения.
После применения таблицы приращений к кольцевому элементу
Figure 00000087
, например представленному в виде целочисленного списка (
Figure 00000088
,
Figure 00000089
), целое
Figure 00000038
прибавляется к обоим элементам выходных данных таблицы приращений. Результатом является промежуточное значение c, определенное выше. Для выполнения применения второй таблицы то же самое построение может быть использовано, что и выше: отрицание, прибавление
Figure 00000090
с использованием этой альтернативной таблицы приращений, снова отрицание. С использованием построения, указанного выше, значение приращения может варьироваться от -1 до других значений.
Применение таблицы приращений к кольцевому элементу
Figure 00000087
имеет существенное преимущество, выражение является симметричным, таким образом,
Figure 00000091
с использованием выражения целочисленного списка в качестве входного значения. Это в свою очередь обеспечивает возможность хранить таблицу приращений в сжатой форме, около половины таблицы не обязательно сохранять. Например, можно сохранить только
Figure 00000092
, если
Figure 00000093
. Небольшой потенциальный недостаток этого способа состоит в том, что промежуточный целочисленный список использует другое кодирование.
В качестве дополнительного варианта таблица приращений может также применяться к
Figure 00000094
.
Принципы, изображенные для примерного кодирования, могут применяться к множеству альтернативных кодирований. Первое альтернативное кодирование предназначено для кодирования кольцевого элемента a в качестве целочисленного списка
Figure 00000095
с использованием кодирования
Figure 00000096
. Кольцо, которое имеет кольцевой элемент основания u такой, что любой кольцевой элемент может быть закодирован таким образом, считается обеспечивающим возможность положительной арифметики с обфускацией. Примерное кодирование будет называться отрицательной арифметикой с обфускацией. Может быть доказано математически, что для любого кольца, которое обеспечивает возможность положительной арифметики с обфускацией с кольцевым элементом основания u, существует целое m такое, что
Figure 00000026
. Кроме того, кольцо, которое обеспечивает возможность отрицательной арифметики с обфускацией, обеспечивает возможность положительной арифметики с обфускацией тогда и только тогда, когда такое значение m существует. Любое кольцо, которое обеспечивает возможность положительной арифметики с обфускацией, также обеспечивает возможность отрицательной арифметики с обфускацией, хотя обратное неверно.
Положительная арифметика с обфускацией следует в основном тем же самым линиям, что и для отрицательной арифметики с обфускацией, обрисованной выше. Кратко, изменение знака целочисленного списка может быть выполнено путем добавления значения m ко всем целым в целочисленном списке. При заданных входных для сложения
Figure 00000096
и
Figure 00000097
сложение может выполняться путем вычисления промежуточного
Figure 00000098
, например через
Figure 00000099
. Таблица приращений применяется к
Figure 00000100
со значением приращения 1. Положительное приведение может применяться дважды, для обоих из
Figure 00000054
и
Figure 00000090
, никакое отрицательное приведение не необходимо. Это упрощает сложение. Построение таблицы приращений может варьироваться, как указано выше, путем вынесения за скобку другой степени u. Значение приращения может варьироваться, как указано выше. Положительная арифметика с обфускацией имеет преимущество в том, что таблица приращений всегда симметрична и может сохраняться в сжатой форме. Недостаток положительной обфускации состоит в том, что меньше колец обеспечивает возможность этого типа кодирования.
Кодирования, данные до сих пор, могут быть опционально умножены на постоянный кольцевой элемент
Figure 00000101
для некоторого v. Таким образом, целочисленный список
Figure 00000095
может представлять кольцевой элемент
Figure 00000102
. Этап отрицания неизменен. Этап положительного приведения принимает вид
Figure 00000103
. Таблица приращений может использовать в качестве значения приращения w и применяется к
Figure 00000104
, которое имеет тот же самый тип кодирования. Этап отрицательного приведения может быть найден из этапа положительного приведения, как указано выше. Умножение может перемножать
Figure 00000105
и
Figure 00000106
, представленные в виде целочисленных списков
Figure 00000107
и целочисленных списков
Figure 00000031
, с использованием
Figure 00000108
Дополнительное альтернативное кодирование дается посредством
Figure 00000109
или умноженным на константу ½, то есть
Figure 00000110
. Можно доказать, что для кольца, которое обеспечивает возможность отрицательной арифметики с обфускацией, с кольцевым элементом основания u, который имеет нечетный порядок, что любой кольцевой элемент x может быть записан в виде
Figure 00000110
. Это изменяет кодирование, например отображение из целочисленного списка в кольцевой элемент. Если кольцо имеет отрицательную обфускацию, оно также обеспечивает возможность этого представления, при условии что кольцевой элемент основания имеет нечетный порядок.
Этап сложения и умножения может быть выполнен с возможностью различных кодирований, соответственно. Например, при заданном числе в закодированной форме
Figure 00000109
можно вычислить
Figure 00000111
и
Figure 00000112
в
Figure 00000037
и
Figure 00000038
такие, что
Figure 00000113
, например путем вычисления
Figure 00000114
по модулю порядка u и
Figure 00000088
по модулю порядка u. С использованием последних целых, сложение и умножения, как выше, могут быть использованы.
То, что мы сделали для получения гиперболического представления, может быть обобщено до любого вида линейного преобразования, и новое представление эквивалентно исходному, если преобразование может быть обращено.
Допустим, мы имеем представление
Figure 00000024
и соответствие, записанное в матричной форме:
Figure 00000115
Представление в
Figure 00000116
и
Figure 00000117
эквивалентно другому, если преобразование имеет определитель
Figure 00000118
, который является единицей в кольце
Figure 00000119
; k является порядком u в кольце R. Это истинно тогда и только тогда, когда
Figure 00000120
. Гиперболическое представление является примером (включающим в себя умножение на ½) и требует, чтобы k было нечетным, поскольку в таком случае определитель преобразования равен 2 (или -2).
Мы объясним способ посредством другого примера. Рассмотрим кольцо
Figure 00000121
и возьмем
Figure 00000122
. Этот элемент имеет порядок
Figure 00000123
, и мы знаем, что все элементы в
Figure 00000121
могут быть записаны в виде разницы
Figure 00000013
для некоторых показателей. Рассмотрим преобразование
Figure 00000124
. Определитель равен 5 по модулю 13, так что матрица имеет обратную; которой является
Figure 00000125
.
Мы знаем, что для каждого x в
Figure 00000121
мы может найти
Figure 00000126
и
Figure 00000127
такие, что
Figure 00000128
, но с использованием этого преобразования мы немедленно выводим, что для всех x мы может найти значения
Figure 00000129
и
Figure 00000130
такие, что
Figure 00000131
.
Это показывает, что большой класс представлений эквивалентeн. Линейные преобразования могут быть обобщены до аффинных преобразований, если мы включаем туда две аддитивные постоянные r, s такие, что
Figure 00000132
Это преобразование может быть обращено, если линейное преобразование M может быть обращено.
Количество целых в целочисленном списке. В примере, рассматриваемом до сих пор, количество элементов в целочисленном списке всегда было равно двум. Это количество имеет преимущества, т. е. оно уменьшает количество этапов вычисления. С другой стороны, обеспечение возможности большего количества элементов в целочисленном списке расширяет количество колец, которые обеспечивают возможность обфускации. Пример ниже рассматривает три целых на каждый список, но большее количество возможно и работает аналогично.
Рассмотрим первый целочисленный список
Figure 00000133
и второй целочисленный список
Figure 00000134
, кодирующие элементы
Figure 00000135
и
Figure 00000136
соответственно. Отрицание может быть выполнено путем прибавления константы m к целым в списках. Прибавление может быть выполнено путем применений таблицы приращений для каждого целого во втором целочисленном списке, в этом случае три раза. Первый промежуточный целочисленный список сложения может быть вычислен из
Figure 00000137
. В этом случае значение приращения равно 1, и таблица приращений применяется к
Figure 00000138
. Для умножения делается то же самое количество промежуточных целочисленных списков умножения, что и во втором целочисленном списке, например:
Figure 00000139
),
Figure 00000140
,
Figure 00000141
.
Множество различных кольцевых элементов основания. Рассмотрим два элемента основания u и v с показателями такими, что
Figure 00000142
и
Figure 00000143
. Целочисленный список
Figure 00000095
кодирует кольцевой элемент
Figure 00000144
; аналогично для
Figure 00000022
. Отрицание получается путем отображения
Figure 00000095
в
Figure 00000145
. Этап положительного приведения
Figure 00000146
=(
Figure 00000147
. Значение приращения равно 1, и таблица применяется к целочисленному списку
Figure 00000148
. Отрицательное приведение может быть приведено к положительному приведению с использованием отрицания. Умножение может быть приведено к сложению.
Ниже обеспечиваются примеры для колец, обеспечивающих возможность отрицательной и/или положительной обфускации.
Кольцо R может быть целочисленным кольцом
Figure 00000006
для модуля n.
Например, n может быть равно 13 с кольцевым элементом основания
Figure 00000149
. Этот элемент имеет порядок 6. Ниже все кольцевые элементы 0-6 кодируются в виде целочисленного списка с использованием примерного кодирования. Следует заметить, что здесь все элементы имеют множество кодирований. Для первого перечисленного кодирования был дан пример отображения, который демонстрирует, как для заданного целочисленного списка соответствующий кольцевой элемент может быть найден. Кольцевые элементы 7-12 могут быть найдены путем отрицания кольцевых элементов 1-6.
Кольцевой элемент Целочисленный список Пример отображения
0 (x,x) для любого 0<=x<6 4 x -4 x
1 (1,2), (5,4) 41-42
2 (0,3), (2,0), (3,5) 40-43
3 (1,0), (3,4) 41-40
4 (0,5), (2,3) 40-45
5 (0,4), (1,3), (4,1) 40-44
6 (2,5), (4,2), (5,1) 42-45
Этот пример также обеспечивает возможность положительной обфускации, поскольку
Figure 00000150
в этом кольце.
Другие значения для n и u, которые обеспечивают возможность отрицательной обфускации: n=151, u=2; n=87, u=20; n=79, u=8 и т. д.
Изобретатели обнаружили большое количество примеров колец, которые обеспечивают возможность отрицательных и/или положительных кодирований. Следует заметить, что многие варианты выводимы из некоторого заданного отрицательного и/или положительного кодирования, как описано здесь.
Кольцо R может быть кольцом многочленов
Figure 00000011
для многочлена
Figure 00000151
и модуля n. Многочлен не обязательно должен быть неприводимым. Если f неприводим, мы получаем коммутативное кольцо, которое не является полем. Оказывается, что любое коммутативное кольцо многочленов R обеспечивает возможность обфускации.
Например, дано некоторое количество полей
Поле F(2^6)
Это поле изоморфно F2 [x]/(x^6+x^4+x^3+x+1). Основание u=x^3 имеет порядок 21.
Поле F(2^8)
Это поле изоморфно F2 [x]/(x^8+x^4+x^3+x^2+1).
Основание u=x^3 имеет порядок 85.
Основание u=x+1 имеет порядок 51.
Поле F(2^10)
Это поле изоморфно F2 [x]/(x^10+x^6+x^5+x^3+x^2+x+1).
Основание u=x^3 имеет порядок 341.
Основание u=x^7+x^6+x^4+x^3+x^2+x имеет порядок 93.
Поле F(2^12)
Это поле изоморфно F2 [x]/(x^12+x^7+x^6+x^5+x^3+x+1).
Основание u=x^3 имеет порядок 1365.
Основание u=x^5 имеет порядок 819.
Основание u=x^7 имеет порядок 585.
Основание u=x^9 имеет порядок 455.
Основание u=x^8+x^7+x^6+x^4+x^2+x имеет порядок 315.
Основание u=x^10+x^9+x^8+x^6+x^4+x^3 имеет порядок 273.
Основание u=x^11+x^10+x^7+x^5+x^3+x^2+x+1 имеет порядок 195.
Фиг.4 схематически изображает пример варианта осуществления способа 300 вычисления для выполнения арифметики с обфускацией в коммутативном кольце (например
Figure 00000152
), причем кольцо имеет конечное количество кольцевых элементов, кольцевое сложение и кольцевое умножение определены над кольцевыми элементами, способ вычисления оперирует над целочисленными списками (
Figure 00000012
), кодирующими кольцевые элементы (
Figure 00000013
), целочисленные списки содержат по меньшей мере два целых. Способ вычисления содержит этапы, на которых
- сохраняют таблицу приращений (
Figure 00000016
), определенную для приращения кольцевого элемента (1;
Figure 00000021
), причем таблица приращений отображает входной кольцевой элемент (
Figure 00000017
) в выходной целочисленный список (
Figure 00000041
), кодирующий выходной кольцевой элемент (
Figure 00000019
), так, что выходной кольцевой элемент равен кольцевому элементу приращения, кольцевым образом сложенному с входным кольцевым элементом (
Figure 00000042
),
- осуществляют кольцевое сложение, причем кольцевое сложение содержит этапы, на которых
- принимают 310 первый входной для сложения целочисленный список (
Figure 00000012
), кодирующий первый входной для сложения кольцевой элемент, и второй входной для сложения целочисленный список (
Figure 00000022
), кодирующий второй входной для сложения кольцевой элемент,
- определяют 320 выходной для сложения целочисленный список, кодирующий выходной для сложения кольцевой элемент, путем применения таблицы приращений к кольцевым элементам, определенным из первого и второго входных для сложения целочисленных списков, причем выходной для сложения кольцевой элемент равен кольцевому сложению первого входного для сложения кольцевого элемента и второго входного для сложения кольцевого элемента,
- осуществляют кольцевое умножение, причем кольцевое умножение содержит этапы, на которых
- принимают 330 первый входной для умножения целочисленный список (
Figure 00000030
), кодирующий первый входной для умножения кольцевой элемент, и второй входной для умножения целочисленный список (
Figure 00000031
), кодирующий второй входной для умножения кольцевой элемент,
- определяют 340 выходной для умножения целочисленный список, кодирующий выходной для умножения кольцевой элемент, путем применения таблицы приращений к кольцевым элементам, определенным из первого и второго входных для умножения целочисленных списков, причем выходной для умножения кольцевой элемент равен кольцевому умножению первого входного для умножения кольцевого элемента и второго входного для умножения кольцевого элемента.
Фиг.5 схематически изображает пример варианта осуществления способа 400 сложения, который может быть использован в устройстве 100 или в способе 300 и т. д. Этот пример использует примерное кодирование. Способ может быть выполнен с возможностью других кодирований. Все варианты, описанные здесь, могут применяться; этот пример использует значение приращения 1, и таблица приращений строится путем вынесения за скобку
Figure 00000054
.
Способ 400 содержит прием операндов сложения 410. Это может содержать прием 410 первого входного для сложения целочисленного списка, например
Figure 00000012
, и прием 420 второго входного для сложения целочисленного списка, например
Figure 00000153
.
Способ 400 дополнительно содержит определение 420 промежуточного целочисленного списка сложения, например
Figure 00000154
. Например, это может содержать применение таблицы приращений к кольцевому элементу, определенному из первого и второго входных для сложения целочисленных списков. В частности, таблица приращений может применяться к целочисленному списку, причем элементы в целочисленном списке находятся из элементов во входных целочисленных списках.
Например, определение 420 может содержать применение 422 таблицы приращений к
Figure 00000155
, получая, например,
Figure 00000156
; и прибавление 424 целого
Figure 00000057
, определенного из вторых входных для сложения целочисленных списков, к целым в целочисленном списке, получающемся в результате первого применения, например
Figure 00000157
Figure 00000158
.
Способ 400 дополнительно содержит этап, на котором определяют 430 выходной для сложения целочисленный список посредством второго применения таблицы приращений к кольцевому элементу, определенному из промежуточного целочисленного списка сложения и второго входного для сложения целочисленного списка. Для более длинных целочисленных списков это может включать в себя дополнительные применения таблицы приращений. Например, это может содержать отрицание 431 промежуточного целочисленного списка сложения, например перестановку в
Figure 00000159
. Применение 432 таблицы приращений и сложение 434 являются теми же самыми, что и применение 422 и сложение 424, за исключением того, что входные для сложения целочисленные списки
Figure 00000160
заменяются на промежуточный целочисленный список
Figure 00000159
, а
Figure 00000057
- на
Figure 00000161
. Наконец, для результата 434 выполняется отрицание 453 для получения результата сложения с обфускацией.
Если вместо отрицательной обфускации, как здесь, используется положительная обфускация, то отрицание 431, 435 может опускаться.
Фиг.6 схематически изображает пример варианта осуществления способа 500 умножения, который может быть использован в устройстве 100 или в способе 300 и т. д. Этот пример использует те же самые кодирования и таблицы приращений, что и способ 400.
Способ 500 содержит прием 510 операндов умножения. Это может содержать прием 510 первого входного для умножения целочисленного списка, например
Figure 00000030
, и прием 514 второго входного для умножения целочисленного списка
Figure 00000031
.
Способ 500 дополнительно содержит определение 520 первого и второго промежуточного целочисленного списка умножения. Например, 520 может содержать определение 522 первого промежуточного целочисленного списка умножения и определение 524 второго промежуточного целочисленного списка умножения. Они могут, например, быть выбраны как
Figure 00000162
и
Figure 00000163
, соответственно, хотя существуют и другие варианты выбора. Умножение продолжается путем сложения этих чисел в способе 400 сложения.
Следует заметить, что таблица используется только в применении 422 и применении 432 и больше нигде в способах 400 и 500. И сложение, и умножение используют одну и ту же таблицу, причем и то, и другое использует таблицу одно и то же количество раз (2). Другие операции содержат маленькие арифметические операции над целыми в целочисленном списке, например по модулю порядка кольцевого элемента основания.
Множество различных вариантов исполнения способов возможно, как будет очевидно специалисту в данной области техники. Например, порядок этапов может варьироваться или некоторые этапы могут исполняться параллельно. Кроме того, между этапами могут быть вставлены другие этапы способа. Вставленные этапы могут представлять усовершенствования способа, такие как описанные здесь, или могут не относиться к способу. Кроме того, некоторый заданный этап может быть не полностью завершен перед тем, как начинается следующий этап.
Способ согласно одному варианту осуществления может исполняться с использованием программных средств, которые содержат инструкции для побуждения процессорной системы выполнять любой из способов 300, 400 и 500. Программные средства могут включать в себя только этапы, взятые на себя конкретным подобъектом системы. Программные средства могут сохраняться в подходящем носителе данных, таком как жесткий диск, гибкий диск, память и т. д. Программные средства могут быть посланы в виде сигнала по проводу, или беспроводным образом, или с использованием сети данных, например Интернет. Программные средства могут делаться доступными для скачивания и/или для удаленного использования на сервере. Способ может исполняться с использованием битового потока, выполненного с возможностью конфигурировать программируемую логику, например программируемую пользователем вентильную матрицу (FPGA), для выполнения способа.
Следует понимать, что вариант осуществления также распространяется на компьютерные программы, в частности компьютерные программы на или в носителе, выполненном с возможностью применять вариант осуществления на практике. Программа может иметь форму исходного кода, объектного кода, промежуточного источника кода и объектного кода, например в частично компилированной форме, или в любой другой форме, подходящей для использования в осуществлении способа согласно одному варианту осуществления. Вариант осуществления, относящийся к компьютерному программному продукту, содержит машиноисполняемые инструкции, соответствующие каждому из этапов обработки по меньшей мере одного из изложенных способов. Эти инструкции могут подразделяться на подпрограммы и/или сохраняться в одном или нескольких файлах, на которые может быть сделана ссылка, статически или динамически. Другой вариант осуществления, относящийся к компьютерному программному продукту, содержит машиноисполняемые инструкции, соответствующие каждому из средств по меньшей мере одной из изложенных систем и/или продуктов.
Фиг.7a изображает машиночитаемый носитель 1000, имеющий перезаписываемую часть 1010, содержащую компьютерную программу 1020, причем компьютерная программа 1020 содержит инструкции, чтобы побуждать процессорную систему выполнять способ вычисления для выполнения арифметики с обфускацией согласно одному варианту осуществления. Перезаписываемая часть может быть выполнена с возможностью множественной перезаписи или только единственной перезаписи. Компьютерная программа 1020 может осуществляться на машиночитаемом носителе 1000 в виде физических меток или посредством намагничивания машиночитаемого носителя 1000. Однако любой другой подходящий вариант осуществления также мыслим. Кроме того, следует понимать, что, хотя машиночитаемый носитель 1000 показан здесь как оптический диск, машиночитаемый носитель 1000 может быть любым подходящим машиночитаемым носителем, таким как жесткий диск, твердотельная память, флэш-память и т. д., и может быть неперезаписываемым или перезаписываемым. Компьютерная программа 1020 содержит инструкции, чтобы побуждать процессорную систему выполнять упомянутый способ вычисления для выполнения арифметики с обфускацией.
Машиночитаемый носитель, например машиночитаемый носитель 1000, может содержать таблицу приращений, и/или таблицу декодирования, и/или таблицу кодирования.
Фиг.7b изображает схематическое представление процессорной системы 1100 согласно одному варианту осуществления. Процессорная система содержит одну или несколько интегральных цепей 1110. Архитектура одной или нескольких интегральных цепей 1110 схематически изображена на фиг.7b. Цепь 1110 содержит обрабатывающий блок 1120, например CPU, для запуска компьютерных программных компонентов, чтобы исполнять способ согласно одному варианту осуществления и/или осуществлять его модули или блоки. Цепь 1110 содержит память 1122 для хранения программного кода, данных и т. д. Часть памяти 1122 может быть доступной только для чтения. Цепь 1110 может содержать элемент 1126 связи, например антенну, средства подключения или то и другое, и т. п. Цепь 1110 может содержать специализированную интегральную цепь 1124 для выполнения части или всей обработки, определенной в способе. Процессор 1120, память 1122, специализированная IC 1124 и элемент 1126 связи могут быть соединены друг с другом через средство 1130 взаимного соединения, например шину. Процессорная система 1110 может быть выполнена с возможностью контактной и/или бесконтактной связи с использованием антенны и/или средств подключения, соответственно.
Следует заметить, что вышеупомянутые варианты осуществления иллюстрируют, а не ограничивают изобретение, и что специалисты в данной области техники смогут спроектировать множество альтернативных вариантов осуществления.
В формуле изобретения любые позиционные обозначения, помещенные в скобках, не должны толковаться как ограничивающие пункт формулы. Использование глагола "содержат" и его спряжений не исключает наличия элементов или этапов помимо упомянутых в пункте формулы. Элементы, упомянутые в единственном числе, не исключают наличие множества таких элементов. Изобретение может осуществляться посредством аппаратных средств, содержащих несколько отдельных элементов, и посредством подходящим образом запрограммированного компьютера. В пункте формулы об устройстве, где перечисляется несколько средств, несколько из этих средств может осуществляться одним и тем же элементом аппаратных средств. Сам факт того, что некоторые конкретные меры перечислены во взаимно различных зависимых пунктах формулы изобретения, не указывает, что комбинация этих мер не может быть использована выгодным образом.
В формуле изобретения ссылки в скобках ссылаются на позиционные обозначения на чертежах вариантов осуществления или на формулы вариантов осуществления, таким образом повышая понятность пункта формулы. Эти ссылки не являются исчерпывающими и не должны толковаться как ограничивающие пункт формулы.
СПИСОК ССЫЛОЧНЫХ ПОЗИЦИЙ НА ФИГ.1:
100 вычислительное устройство
110 хранилище, выполненное с возможностью хранить таблицу приращений
120 блок кольцевого отрицания
130 блок кольцевого сложения
140 блок кольцевого умножения
150 хранилище операндов
160 блок декодирования
170 блок кодирования
172 хранилище, выполненное с возможностью хранить таблицу кодирования

Claims (77)

1. Электронное вычислительное устройство (100) для выполнения арифметики с обфускацией в коммутативном кольце (
Figure 00000164
), причем кольцо имеет конечное количество кольцевых элементов, кольцевое сложение и кольцевое умножение определены над кольцевыми элементами, вычислительное устройство оперирует на целочисленных списках (
Figure 00000165
), кодирующих кольцевые элементы (
Figure 00000166
), целочисленные списки содержат по меньшей мере два целых числа, целочисленный список (
Figure 00000167
) кодирует кольцевой элемент (
Figure 00000168
) так, что кольцевой элемент равен линейной комбинации степеней (
Figure 00000169
;
Figure 00000170
) одного или нескольких кольцевых элементов основания (
Figure 00000171
;
Figure 00000172
), степени имеют показатели, определенные целочисленным списком, причем вычислительное устройство содержит
- хранилище (110), выполненное с возможностью хранить таблицу приращений (
Figure 00000173
), определенную для фиксированного приращения кольцевого элемента (1;
Figure 00000174
),
- таблицу приращений, отображающую входной кольцевой элемент (
Figure 00000175
) в выходной целочисленный список (
Figure 00000176
), кодирующий выходной кольцевой элемент (
Figure 00000177
) так, что выходной кольцевой элемент равен кольцевому элементу приращения, кольцевым образом сложенному с входным кольцевым элементом (
Figure 00000178
),
- блок (130) кольцевого сложения, выполненный с возможностью
- принимать первый входной для сложения целочисленный список (
Figure 00000165
), кодирующий первый входной для сложения кольцевой элемент, и второй входной для сложения целочисленный список (
Figure 00000179
), кодирующий второй входной для сложения кольцевой элемент, причем кольцевой элемент приращения не зависит от первого и второго входного для сложения кольцевого элемента,
- определять выходной для сложения целочисленный список, кодирующий выходной для сложения кольцевой элемент путем применения таблицы приращений к кольцевым элементам, определенным из первого и второго входных для сложения целочисленных списков, причем входной для сложения кольцевой элемент равен кольцевому сложению первого входного для сложения кольцевого элемента и второго входного для сложения кольцевого элемента, причем определение выходного для сложения целочисленного списка содержит этапы, на которых
- определяют промежуточный целочисленный список сложения (
Figure 00000180
), кодирующий промежуточный кольцевой элемент сложения, путем первого применения таблицы приращений к кольцевому элементу (
Figure 00000181
), который является линейной комбинацией степеней одного или нескольких элементов основания, причем степени определяются из первого и второго входных для сложения целочисленных списков, (
Figure 00000182
),
- определяют выходной для сложения целочисленный список, содержащий второе применение таблицы приращений к кольцевым элементам, определенным из промежуточного целочисленного списка сложения и определенным из второго входного для сложения целочисленного списка.
2. Вычислительное устройство по п.1, содержащее
- блок (140) кольцевого умножения, выполненный с возможностью
- принимать первый входной для умножения целочисленный список (
Figure 00000183
), кодирующий первый входной для умножения кольцевой элемент, и второй входной для умножения целочисленный список (
Figure 00000184
), кодирующий второй входной для умножения кольцевой элемент,
- определять выходной для умножения целочисленный список, кодирующий выходной для умножения кольцевой элемент, путем применения таблицы приращений к кольцевым элементам, определенным из первого и второго входных для умножения целочисленных списков, причем выходной для умножения кольцевой элемент равен кольцевому умножению первого входного для умножения кольцевого элемента и второго входного для умножения кольцевого элемента.
3. Вычислительное устройство по п.1 или 2, в котором целочисленный список (
Figure 00000165
) кодирует кольцевой элемент (
Figure 00000185
) так, что
- кольцевой элемент равен элементу основания, возведенному в степень, определенную первым целым из целочисленного списка, минус элемент основания, возведенный в степень, определенную вторым целым из целочисленного списка (
Figure 00000186
), опционально умноженному на константу (
Figure 00000187
), или
- кольцевой элемент равен элементу основания, возведенному в степень, определенную первым целым из целочисленного списка, плюс элемент основания, возведенный в степень, определенную вторым целым из целочисленного списка (
Figure 00000188
), опционально умноженному на константу, или
- кольцевой элемент равен элементу основания, возведенному в степень, определенную первым целым из целочисленного списка, умноженному на результат элемента основания, возведенного в степень, определенную вторым целым из целочисленного списка, минус элемент основания, возведенный в степень, определенную противоположным числом второго целого из целочисленного списка (
Figure 00000189
), опционально умноженному на константу, (
Figure 00000190
), или
- кольцевой элемент равен элементу основания, возведенному в степень, которая является первой линейной комбинацией первого целого и второго целого из целочисленного списка, плюс или минус элемент основания, возведенный в степень, которая является второй линейной комбинацией первого целого и второго целого из целочисленного списка, (
Figure 00000191
или
Figure 00000192
при заданной матрице
Figure 00000193
такой, что
Figure 00000194
), опционально умноженному на константу.
Figure 00000180
Figure 00000181
Figure 00000182
4. Вычислительное устройство по п.1, в котором
- определение промежуточного целочисленного списка сложения (
Figure 00000180
) дополнительно содержит этап, на котором прибавляют целое, определенное из первого и второго входных для сложения целочисленных списков, к целым в целочисленном списке, получаемом из первого применения.
5. Вычислительное устройство по п. 1, в котором
- таблица приращений применяется к кольцевому элементу (
Figure 00000181
;
Figure 00000195
), формируемому одним или несколькими кольцевыми элементами основания (
Figure 00000196
), возведенными в степень первого целого из первого целочисленного списка (
Figure 00000197
) минус первое целое из второго целочисленного списка (
Figure 00000198
), плюс или минус
кольцевой элемент основания (
Figure 00000196
), возведенный в степень второго целого из первого целочисленного списка (
Figure 00000199
) минус первое целое из второго целочисленного списка (
Figure 00000198
); или
- таблица приращений применяется к кольцевому элементу (u
Figure 00000200
;
Figure 00000200
), формируемому одним или несколькими кольцевыми элементами основания (
Figure 00000196
), возведенными в степень первого целого из первого целочисленного списка (
Figure 00000197
) минус второе целое из первого целочисленного списка (
Figure 00000199
), плюс или минус
кольцевой элемент основания (
Figure 00000196
), возведенный в степень первого целого из второго целочисленного списка (
Figure 00000198
) минус второе целое из первого целочисленного списка (
Figure 00000199
); или
- таблица приращений применяется к кольцевому элементу (
Figure 00000201
;
Figure 00000202
), формируемому одним или несколькими кольцевыми элементами основания (
Figure 00000196
), возведенными в степень второго целого из первого целочисленного списка (
Figure 00000199
) минус первое целое из первого целочисленного списка (
Figure 00000197
) плюс или минус
кольцевой элемент основания (
Figure 00000196
), возведенный в степень первого целого из второго целочисленного списка (
Figure 00000198
) минус первое целое из первого целочисленного списка (
Figure 00000197
).
6. Вычислительное устройство по п. 1, в котором
- для промежуточного кольцевого элемента сложения, представленного промежуточным целочисленным списком сложения, выполняется отрицание перед вторым применением таблицы приращений.
7. Вычислительное устройство по п. 1, в котором
- для кольцевого элемента, представленного целочисленным списком, выполняется отрицание путем перестановки целочисленного списка, и/или
- для кольцевого элемента, представленного целочисленным списком, выполняется отрицание путем прибавления константы к каждому целому из целочисленного списка, и/или
- для кольцевого элемента, представленного целочисленным списком (
Figure 00000203
), выполняется отрицание путем перестановки целочисленного списка и умножения одного или нескольких целых из целочисленного списка на константу (
Figure 00000204
.
8. Вычислительное устройство по п. 1, в котором таблица приращений получает в качестве входных данных входной целочисленный список (
Figure 00000205
), представляющий входной кольцевой элемент (
Figure 00000175
).
9. Вычислительное устройство по п.2, в котором определение выходного для умножения целочисленного списка содержит этапы, на которых
- определяют из первого и второго входных для умножения целочисленных списков первый промежуточный целочисленный список умножения (
Figure 00000206
) и второй промежуточный целочисленный список умножения (
Figure 00000207
), кодирующие первый и второй промежуточный кольцевой элемент умножения соответственно,
- складывают первый и второй промежуточный целочисленный список умножения посредством блока кольцевого сложения.
10. Вычислительное устройство по п.9, в котором
- первое целое (
Figure 00000208
) из первого промежуточного целочисленного списка умножения содержит
первое целое (
Figure 00000209
) из первого входного для умножения целочисленного списка плюс
первое целое (
Figure 00000210
) из второго входного для умножения целочисленного списка, и
- второе целое (
Figure 00000211
) из первого промежуточного целочисленного списка умножения содержит
первое целое (
Figure 00000209
) из первого входного для умножения целочисленного списка плюс
второе целое (
Figure 00000212
) из второго входного для умножения целочисленного списка (
Figure 00000213
), и
- первое целое (
Figure 00000214
) из второго промежуточного целочисленного списка умножения содержит
второе целое (
Figure 00000215
) из первого входного для умножения целочисленного списка плюс
второе целое (
Figure 00000216
) из второго входного для умножения целочисленного списка, и
- второе целое (
Figure 00000217
) из второго промежуточного целочисленного списка умножения содержит
второе целое (
Figure 00000215
) из первого входного для умножения целочисленного списка плюс
первое целое (
Figure 00000210
) из второго входного для умножения целочисленного списка (
Figure 00000218
).
11. Вычислительное устройство по п. 1, в котором
- коммутативное кольцо является кольцом, формируемым целыми по модулю целочисленного модуля (
Figure 00000219
), или
- коммутативное кольцо является кольцом, формируемым целочисленными многочленами по модулю целочисленного многочленного модуля (
Figure 00000220
).
12. Устройство (170) кольцевого кодирования
Figure 00000164
, причем устройство кольцевого кодирования содержит
- хранилище (172), выполненное с возможностью хранить таблицу кодирования, определенную для одного или нескольких кольцевых элементов основания (
Figure 00000196
), причем таблица кодирования отображает кольцевой элемент (
Figure 00000221
) в целочисленный список (
Figure 00000222
) так, что кольцевой элемент равен линейной комбинации степеней одного или нескольких кольцевых элементов основания (
Figure 00000223
), причем степени имеют показатели, определенные целочисленным списком, причем устройство (170) кольцевого кодирования сконфигурировано с возможностью
- кодировать кольцевой элемент коммутативного кольца (
Figure 00000224
) в качестве целочисленного списка для использования с вычислительным устройством по п.1, сконфигурированным с возможностью принимать закодированную информацию по компьютерной сети.
13. Устройство (160) кольцевого декодирования
Figure 00000222
Figure 00000221
Figure 00000164
, причем устройство кольцевого декодирования выполнено с возможностью
- декодировать целочисленный список (
Figure 00000222
) в кольцевой элемент (
Figure 00000221
) коммутативного кольца (
Figure 00000164
) для использования с вычислительным устройством по п.1, сконфигурированным с возможностью принимать закодированную информацию по компьютерной сети, причем декодирование содержит этап, на котором
- определяют для одного или нескольких кольцевых элементов основания (
Figure 00000196
) кольцевой элемент (
Figure 00000221
) так, что кольцевой элемент равен линейной комбинации степеней одного или нескольких кольцевых элементов основания (
Figure 00000223
), причем степени имеют показатели, определенные целочисленным списком.
14. Устройство (200) вычисления таблицы для вычисления таблицы приращений для использования в вычислительном устройстве для выполнения арифметики с обфускацией в коммутативном кольце (
Figure 00000164
), причем кольцо имеет конечное количество кольцевых элементов, кольцевое сложение и кольцевое умножение определены над кольцевыми элементами, вычислительное устройство оперирует над целочисленными списками (
Figure 00000165
), кодирующими кольцевые элементы (
Figure 00000166
), целочисленные списки содержат по меньшей мере два целых, причем устройство вычисления таблицы содержит
- блок (210) создания таблицы, выполненный с возможностью строить таблицу приращений, причем блок создания таблицы выполнен с возможностью
- многократно выбирать входной кольцевой элемент,
- определять выходной кольцевой элемент, который равен фиксированному кольцевому элементу приращения, кольцевым образом сложенному с входным кольцевым элементом,
- определять выходной целочисленный список, кодирующий выходной кольцевой элемент,
- добавлять в таблицу приращений запись, отображающую входной кольцевой элемент в выходной целочисленный список, причем устройство (200) вычисления таблицы выполнено с возможностью хранить построенную таблицу приращений в вычислительном устройстве.
15. Способ электронного вычисления для выполнения арифметики с обфускацией в коммутативном кольце (
Figure 00000164
), причем кольцо имеет конечное количество кольцевых элементов, кольцевое сложение и кольцевое умножение определены над кольцевыми элементами, способ вычисления оперирует над целочисленными списками (
Figure 00000165
), кодирующими кольцевые элементы (
Figure 00000166
), целочисленные списки содержат по меньшей мере два целых, целочисленный список (
Figure 00000167
) кодирует кольцевой элемент (
Figure 00000168
) так, что кольцевой элемент равен линейной комбинации степеней (
Figure 00000169
;
Figure 00000170
) одного или нескольких кольцевых элементов основания (
Figure 00000171
;
Figure 00000172
), причем степени имеют показатели, определенные целочисленным списком, причем способ вычисления содержит этапы, на которых
- сохраняют таблицу приращений (
Figure 00000173
), определенную для фиксированного приращения кольцевого элемента (1;
Figure 00000174
), причем таблица приращений отображает входной кольцевой элемент (
Figure 00000175
) в выходной целочисленный список (
Figure 00000176
), кодирующий выходной кольцевой элемент (
Figure 00000177
), так, что выходной кольцевой элемент равен кольцевому элементу приращения, кольцевым образом сложенному с входным кольцевым элементом (
Figure 00000178
),
- осуществляют кольцевое сложение, причем кольцевое сложение содержит этапы, на которых
- принимают первый входной для сложения целочисленный список (
Figure 00000165
), кодирующий первый входной для сложения кольцевой элемент, и второй входной для сложения целочисленный список (
Figure 00000179
), кодирующий второй входной для сложения кольцевой элемент,
- определяют выходной для сложения целочисленный список, кодирующий выходной для сложения кольцевой элемент, путем применения таблицы приращений к кольцевым элементам, определенным из первого и второго входных для сложения целочисленных списков, причем выходной для сложения кольцевой элемент равен кольцевому сложению первого входного для сложения кольцевого элемента и второго входного для сложения кольцевого элемента, причем определение выходного для сложения целочисленного списка содержит этапы, на которых
- определяют промежуточный целочисленный список сложения (
Figure 00000180
), кодирующий промежуточный кольцевой элемент сложения, путем первого применения таблицы приращений к кольцевому элементу (
Figure 00000181
), который является линейной комбинацией степеней одного или нескольких элементов основания, причем степени определяются из первого и второго входных для сложения целочисленных списков, (
Figure 00000182
),
- определяют выходной для сложения целочисленный список, содержащий второе применение таблицы приращений к кольцевым элементам, определенным из промежуточного целочисленного списка сложения и определенным из второго входного для сложения целочисленного списка.
16. Способ электронного вычисления по п.15, содержащий этап, на котором
- осуществляют кольцевое умножение, причем кольцевое умножение содержит этапы, на которых
- принимают первый входной для умножения целочисленный список (
Figure 00000183
), кодирующий первый входной для умножения кольцевой элемент, и второй входной для умножения целочисленный список (
Figure 00000184
), кодирующий второй входной для умножения кольцевой элемент,
- определяют выходной для умножения целочисленный список, кодирующий выходной для умножения кольцевой элемент путем применения таблицы приращений к кольцевым элементам, определенным из первого и второго входных для умножения целочисленных списков, причем выходной для умножения кольцевой элемент равен кольцевому умножению первого входного для умножения кольцевого элемента и второго входного для умножения кольцевого элемента.
17. Машиночитаемый носитель, содержащий компьютерную программу, содержащую компьютерные программные инструкции, выполненные с возможностью выполнять способ по п.15 или 16, когда компьютерная программа запущена на программируемом устройстве.
RU2017114868A 2014-09-30 2015-09-30 Электронное вычислительное устройство для выполнения арифметики с обфускацией RU2701716C2 (ru)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP14186951.1 2014-09-30
EP14186951 2014-09-30
PCT/EP2015/072635 WO2016050884A1 (en) 2014-09-30 2015-09-30 Electronic calculating device for performing obfuscated arithmetic

Publications (3)

Publication Number Publication Date
RU2017114868A RU2017114868A (ru) 2018-11-07
RU2017114868A3 RU2017114868A3 (ru) 2019-04-24
RU2701716C2 true RU2701716C2 (ru) 2019-09-30

Family

ID=51625935

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2017114868A RU2701716C2 (ru) 2014-09-30 2015-09-30 Электронное вычислительное устройство для выполнения арифметики с обфускацией

Country Status (7)

Country Link
US (1) US10496372B2 (ru)
EP (1) EP3201758A1 (ru)
JP (1) JP6621813B2 (ru)
CN (1) CN106716345A (ru)
BR (1) BR112017006236A2 (ru)
RU (1) RU2701716C2 (ru)
WO (1) WO2016050884A1 (ru)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016050884A1 (en) 2014-09-30 2016-04-07 Koninklijke Philips N.V. Electronic calculating device for performing obfuscated arithmetic
BR112017010906A2 (pt) 2014-11-27 2018-02-06 Koninklijke Philips Nv dispositivo de cálculo eletrônico, dispositivo de codificação de anel, dispositivo de cálculo de tabela, dispositivo de configuração eletrônico, método de cálculo eletrônico, programa de computador, e, mídia legível por computador
JP6368051B2 (ja) 2014-12-12 2018-08-01 コーニンクレッカ フィリップス エヌ ヴェKoninklijke Philips N.V. 電子生成装置
RU2698763C2 (ru) * 2014-12-22 2019-08-29 Конинклейке Филипс Н.В. Электронное вычислительное устройство
WO2018015325A1 (en) * 2016-07-21 2018-01-25 Koninklijke Philips N.V. Device and method for performing obfuscated arithmetic
WO2018115143A1 (en) 2016-12-20 2018-06-28 Koninklijke Philips N.V. A calculation device for encoded addition

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SU1667059A2 (ru) * 1989-07-11 1991-07-30 Научно-Исследовательский Институт Бытовой Радиоэлектронной Аппаратуры Устройство дл умножени двух чисел
US5270956A (en) * 1991-03-18 1993-12-14 University Of Maryland System and method for performing fast algebraic operations on a permutation network
WO2004112307A2 (en) * 2003-06-13 2004-12-23 Koninklijke Philips Electronics N.V. Multiplication in a finite field
WO2009076669A1 (en) * 2007-12-13 2009-06-18 Massachusetts Institute Of Technology Private data processing
RU2467389C1 (ru) * 2011-06-07 2012-11-20 Антон Андреевич Краснопевцев Способ защиты программно-информационного обеспечения от несанкционированного использования
WO2014016795A2 (en) * 2012-07-26 2014-01-30 Nds Limited Method and system for homomorphicly randomizing an input

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US1418394A (en) 1921-01-27 1922-06-06 Joseph W Parks Tipping hand tool
FR2622713A1 (fr) * 1987-10-30 1989-05-05 Thomson Csf Circuit de calcul utilisant une arithmetique residuelle
US5069547A (en) 1988-11-23 1991-12-03 The Boeing Company Multitrack multilevel sensing system with error detecting
US6760742B1 (en) 2000-02-18 2004-07-06 Texas Instruments Incorporated Multi-dimensional galois field multiplier
CA2327911A1 (en) 2000-12-08 2002-06-08 Cloakware Corporation Obscuring functions in computer software
US7218734B2 (en) 2001-05-02 2007-05-15 Nciper Corporation Limited Ring arithmetic method, system, and apparatus
CA2369304A1 (en) 2002-01-30 2003-07-30 Cloakware Corporation A protocol to hide cryptographic private keys
CN100555213C (zh) * 2003-10-14 2009-10-28 松下电器产业株式会社 数据转换器
KR20060134992A (ko) * 2004-03-31 2006-12-28 마츠시타 덴끼 산교 가부시키가이샤 정수를 가산하는 컴퓨터 시스템
CN101167114A (zh) * 2005-04-28 2008-04-23 松下电器产业株式会社 程序转换装置、加密处理装置以及加密处理方法
IE20050277A1 (en) 2005-05-04 2006-11-29 Nat Univ Ireland Method and apparatus for generating error-correcting and error-detecting codes using zero-divisors and units in group rings
US8106463B2 (en) 2005-12-06 2012-01-31 Arm, Inc. Memory cells for read only memories
CN101432755B (zh) * 2006-04-28 2011-01-12 松下电器产业株式会社 程序难破解化系统、程序难破解化装置及程序难破解化方法
CN1909555A (zh) * 2006-08-25 2007-02-07 华为技术有限公司 一种实现生成树协议局部计算的方法和交换环网系统
US8090097B2 (en) * 2006-10-11 2012-01-03 Frank Rubin Device, system and method for cryptographic key exchange
GB0621951D0 (en) * 2006-11-03 2006-12-13 Univ Oxford Brookes Polynonomial synthesis
US8752032B2 (en) 2007-02-23 2014-06-10 Irdeto Canada Corporation System and method of interlocking to protect software-mediated program and device behaviours
JP5599728B2 (ja) 2008-03-05 2014-10-01 イルデト・コーポレート・ビー・ヴイ ホワイトボックス実装
US8667301B2 (en) 2010-04-01 2014-03-04 Apple Inc. Obfuscating transformations on data array content and addresses
CN101969374B (zh) * 2010-10-27 2012-06-20 北京航空航天大学 分组密码算法中混淆层的实现方法
FR2968104B1 (fr) 2010-11-30 2013-07-12 Logiways France Procede et systeme de protection d'un dispositif de cryptographie
US8817974B2 (en) * 2011-05-11 2014-08-26 Nxp B.V. Finite field cryptographic arithmetic resistant to fault attacks
CN104662549B (zh) 2012-03-30 2019-02-19 爱迪德技术有限公司 使用交叉链接来保护可访问的系统
US9313028B2 (en) 2012-06-12 2016-04-12 Kryptnostic Method for fully homomorphic encryption using multivariate cryptography
US8880204B2 (en) 2012-06-27 2014-11-04 Ubiquiti Networks, Inc. Method and apparatus for monitoring and processing sensor data in an interfacing-device network
US20150324199A1 (en) * 2012-07-06 2015-11-12 Koninklijke Philips N.V. Computer processor and system without an arithmetic and logic unit
KR102050732B1 (ko) 2012-09-28 2019-12-02 삼성전자 주식회사 컴퓨팅 시스템 및 컴퓨팅 시스템의 데이터 관리 방법
WO2014095772A1 (en) * 2012-12-21 2014-06-26 Koninklijke Philips N.V. Computing device comprising a table network
US9576116B2 (en) * 2013-12-26 2017-02-21 Nxp B.V. Secure software components anti-reverse-engineering by table interleaving
EP3127269B1 (en) 2014-03-31 2018-07-11 Irdeto B.V. Protecting an item of software
WO2016050884A1 (en) 2014-09-30 2016-04-07 Koninklijke Philips N.V. Electronic calculating device for performing obfuscated arithmetic
BR112017010906A2 (pt) 2014-11-27 2018-02-06 Koninklijke Philips Nv dispositivo de cálculo eletrônico, dispositivo de codificação de anel, dispositivo de cálculo de tabela, dispositivo de configuração eletrônico, método de cálculo eletrônico, programa de computador, e, mídia legível por computador
US9288039B1 (en) 2014-12-01 2016-03-15 Xerox Corporation Privacy-preserving text language identification using homomorphic encryption

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SU1667059A2 (ru) * 1989-07-11 1991-07-30 Научно-Исследовательский Институт Бытовой Радиоэлектронной Аппаратуры Устройство дл умножени двух чисел
US5270956A (en) * 1991-03-18 1993-12-14 University Of Maryland System and method for performing fast algebraic operations on a permutation network
WO2004112307A2 (en) * 2003-06-13 2004-12-23 Koninklijke Philips Electronics N.V. Multiplication in a finite field
WO2009076669A1 (en) * 2007-12-13 2009-06-18 Massachusetts Institute Of Technology Private data processing
RU2467389C1 (ru) * 2011-06-07 2012-11-20 Антон Андреевич Краснопевцев Способ защиты программно-информационного обеспечения от несанкционированного использования
WO2014016795A2 (en) * 2012-07-26 2014-01-30 Nds Limited Method and system for homomorphicly randomizing an input

Also Published As

Publication number Publication date
US20170220320A1 (en) 2017-08-03
WO2016050884A1 (en) 2016-04-07
RU2017114868A (ru) 2018-11-07
BR112017006236A2 (pt) 2017-12-12
JP2017533458A (ja) 2017-11-09
CN106716345A (zh) 2017-05-24
US10496372B2 (en) 2019-12-03
EP3201758A1 (en) 2017-08-09
RU2017114868A3 (ru) 2019-04-24
JP6621813B2 (ja) 2019-12-18

Similar Documents

Publication Publication Date Title
RU2701716C2 (ru) Электронное вычислительное устройство для выполнения арифметики с обфускацией
RU2698764C2 (ru) Электронное вычислительное устройство для выполнения замаскированных арифметических действий
CN112200713B (zh) 一种联邦学习中的业务数据处理方法、装置以及设备
Abu Dalhoum et al. Digital image scrambling based on elementary cellular automata
JP2020515093A (ja) 符号化加算のための計算デバイス
CN106464484A (zh) 预定函数的混淆执行
AU2017100438A4 (en) Methods and Apparatus for Encrypting Multimedia Information
JP6387466B2 (ja) 電子計算装置
RU2710310C2 (ru) Электронное устройство формирования
CN111480140B (zh) 计算设备和方法
CN116915383A (zh) 不经意键值存储编解码方法、系统、装置和介质
CN112989421A (zh) 一种安全选择问题处理方法和系统
US20180373672A1 (en) Calculating device and method
CN109952558B (zh) 用于将余数系统表示转换为基数表示的电子计算装置
JP5157018B2 (ja) ガロア体上の元の除算演算回路
CN116301710A (zh) 数据处理方法及装置
CN115765966A (zh) 应用于同态加密系统的数据编码方法及装置
JP2010217922A (ja) ガロア体上の元の除算演算回路

Legal Events

Date Code Title Description
MM4A The patent is invalid due to non-payment of fees

Effective date: 20201001