RU2666303C1 - Способ и устройство для вычисления хэш-функции - Google Patents
Способ и устройство для вычисления хэш-функции Download PDFInfo
- Publication number
- RU2666303C1 RU2666303C1 RU2017143805A RU2017143805A RU2666303C1 RU 2666303 C1 RU2666303 C1 RU 2666303C1 RU 2017143805 A RU2017143805 A RU 2017143805A RU 2017143805 A RU2017143805 A RU 2017143805A RU 2666303 C1 RU2666303 C1 RU 2666303C1
- Authority
- RU
- Russia
- Prior art keywords
- block
- data
- input
- output
- blocks
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 23
- 238000004364 calculation method Methods 0.000 claims abstract description 46
- 230000006870 function Effects 0.000 claims abstract description 40
- 238000009825 accumulation Methods 0.000 claims abstract description 38
- 239000000872 buffer Substances 0.000 claims description 45
- 238000002360 preparation method Methods 0.000 claims description 39
- 238000003860 storage Methods 0.000 claims description 6
- 238000005516 engineering process Methods 0.000 abstract description 2
- 230000000694 effects Effects 0.000 abstract 1
- 238000007781 pre-processing Methods 0.000 abstract 1
- 239000000126 substance Substances 0.000 abstract 1
- 238000007792 addition Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- XPYGGHVSFMUHLH-UUSULHAXSA-N falecalcitriol Chemical compound C1(/[C@@H]2CC[C@@H]([C@]2(CCC1)C)[C@@H](CCCC(O)(C(F)(F)F)C(F)(F)F)C)=C\C=C1\C[C@@H](O)C[C@H](O)C1=C XPYGGHVSFMUHLH-UUSULHAXSA-N 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/06—Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
- G06F5/10—Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor having a sequence of storage locations each being individually accessible for both enqueue and dequeue operations, e.g. using random access memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods 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/72—Methods 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/724—Finite field arithmetic
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic 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/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0637—Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic 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/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3242—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details relating to cryptographic hardware or logic circuitry
- H04L2209/125—Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Power Engineering (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Databases & Information Systems (AREA)
- Algebra (AREA)
- Computing Systems (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
Группа изобретений относится к вычислительной технике и может быть использована для вычисления хэш-функции. Техническим результатом является повышение быстродействия вычислений, расширение возможности выбора конфигурации устройства. Устройство содержит блок предварительной подготовки, имеющий М входов размерностью k бит, при этом М>1; М блоков конвейерного вычисления, работающих параллельно, каждый из которых содержит модуль памяти, модуль отключения обратной связи, сумматор, конвейерный перемножитель, имеющий L каскадов, блок обратной связи и блок накопления; блок объединения. 2 н. и 4 з.п. ф-лы, 2 ил.
Description
Область техники, к которой относится изобретение
Предполагаемое изобретение относится к вычислительной технике и, в частности, к устройствам и способам вычисления хэш-функции.
Уровень техники
В современных цифровых устройствах для обеспечения аутентичности информации используются различные ключевые хэш-функции. Одной из таких хэш-функций является функция GHASH, описанная в стандарте ISO/IEC 19772:2009 А.8.
Данная функция определяется как
где S - данные кадра данных,
Н - полином хэш-функции, являющийся ключом данной хэш-функции,
Ускорение вычисления данной функции позволяет уменьшить время обработки каждого кадра данных и, как следствие, снижает задержку данных в устройстве обработки данных и увеличивает скорость его работы.
Так, известны способ и устройство вычисления хэш-функции для режима Galois Counter Mode (GCM; патент США №7970130, приоритет от 21.09.2007 г.), причем в способе для входных данных, включающих ассоциированные данные А, шифротекст С, полином Н, вычисляют сначала промежуточное значение
затем промежуточное значение
а также значения Нn+1, после чего вычисляется величина
являющаяся искомым значением функции GHASH.
Устройство, осуществляющее вычисления, состоит из первого, второго и третьего вычислительных модулей, вычисляющих значения XA, XC и Hn+1 соответственно, а также четвертого вычислительного модуля, вычисляющего значение Это устройство позволяет вычислить значение GHASH (A, С, Н) за max(m, n)+1 циклов, где m - количество блоков данных в А, а n - количество блоков данных в С, при этом - это количество блоков, подаваемых на вход функции GHASH.
Известные способ и устройство приняты за прототипы.
Недостатками известных устройства и способа являются невысокое быстродействие и отсутствие возможности выбора конфигурации устройства перед его изготовлением. Так, наилучшего быстродействия в известном устройстве и способе удается добиться, если m=n. В этом случае удается получить ускорение в 2 раза по сравнению с последовательным вычислением.
Раскрытие изобретения
Техническим результатом является
1) повышение быстродействия вычислений,
2) расширение возможности выбора конфигурации устройства.
Для этого предлагается устройство для вычисления хэш-функции для кадра цифровых данных, причем кадр данных состоит из блоков данных длиной k бит, включающее
М блоков конвейерного вычисления, входы которых являются соответствующими выходами блока предварительной подготовки, и которые используют конвейерные перемножители, содержащие L каскадов;
блока объединения, имеющего М входов, причем каждый вход подключен к соответствующему выходу блока конвейерного вычисления, а выход блока объединения является выходом устройства в целом;
при этом блок предварительной подготовки также имеет М буферных регистров FIFO и выполнен с возможностью
записывать поступающие одновременно на М входов блоки данных в концы соответствующих буферных регистров FIFO;
определять количество блоков данных, записанных в буферные регистры FIFO блока предварительной подготовки;
определять наличие в буферных регистрах FIFO блока предварительной подготовки последнего блока данных кадра данных;
считывать из соответствующих буферных регистров FIFO блоки данных во все М выходов блока предварительной подготовки при условии наличия в буферных регистрах FIFO блока предварительной подготовки L×М блоков данных или наличия в буферных регистрах FIFO блока предварительной подготовки последнего блока данных кадра данных;
помечать выходы блока, как не имеющие данных, при условии отсутствия в буферных регистрах FIFO блока предварительной подготовки L×M блоков данных и отсутствия в буферных регистрах FIFO блока предварительной подготовки последнего блока данных кадра данных;
нумеровать считываемые из буферных регистров FIFO блока предварительной подготовки блоки данных, причем
при наличии последнего блока данных в буферных регистрах FIFO блока предварительной подготовки, нумерация блоков данных осуществляется, начиная с конца кадра данных и производится, начиная с нуля,
при отсутствии последнего блока данных в буферных регистрах FIFO блока предварительной подготовки, каждому считываемому блоку присваивается номер L×М;
каждый из М блоков конвейерного вычисления, работающих параллельно, содержит
выдавать на выход модуля памяти данные, хранящиеся в тех ячейках модуля памяти, номер которых равен номерам блоков данных, поступающих на вход модуля памяти;
сумматор содержит 1-й и 2-й входы и один выход и выполнен с возможностью суммировать в поле GF(2k) приходящие на 1-й и 2-й входы блоки данных и передавать результат на выход сумматора;
модуль отключения обратной связи содержит 1-й и 2-й входы, счетчик и выход и выполнен с возможностью
конвейерный перемножитель содержит
L каскадов конвейера перемножения, подключенные друг за другом, работающие одновременно и каждый из которых выполняет свою часть вычислений произведения двух блоков, при этом входы первого каскада конвейера перемножения подключены к входам конвейерного перемножителя,
при этом конвейерный перемножитель выполнен с возможностью нумеровать выходные блоки так, что выходному блоку данных присваивается номер соответствующего блока данных, взятого с 1-го входа;
блок обратной связи содержит
буферный регистр FIFO, в который записываются блоки данных, поступающие на 1-й вход блока обратной связи,
при этом блок обратной связи выполнен с возможностью считывать блоки данных из буферного регистра FIFO на выход лишь при поступлении блоков данных на 2-й вход;
блок накопления содержит ячейку памяти накопления и выполнен с возможностью
если номер входящего блока данных меньше L×М, то суммировать входящий блок данных в поле GF(2k) со значением, содержащемся в ячейке памяти накопления и записывать результат обратно в ячейку памяти накопления;
при этом вход каждого блока конвейерного вычисления, подключен к 1-му входу сумматора, ко входу модуля памяти, 2-му входу модуля отключения обратной связи и 2-му входу блока обратной связи;
при этом 1-й вход конвейерного перемножителя подключен к выходу модуля памяти, а 2-й вход конвейерного перемножителя подключен к выходу сумматора;
при этом выход конвейерного перемножителя подключен ко входу блока накопления и к 1-му входу блока обратной связи, а выход блока обратной связи подключен к 1-му входу модуля отключения обратной связи;
выход модуля отключения обратной связи подключен ко 2-му входу сумматора;
выход блока накопления является выходом блока конвейерного вычисления;
блок объединения содержит М входов и выполнен с возможностью производить сложение блоков данных в поле GF(2k) от всех М входов и выдавать результат этого сложения на свой выход.
Также предлагается способ работы этого устройства, заключающийся в том, что
записывают вычисленные значения степеней полинома Н в модули памяти всех блоков конвейерного вычисления, причем в ячейку памяти с номером i записывается Hi+1, причем 0≤i<L×M, а в ячейку с номером L×М записывается НLM;
записывают L блоков данных, содержащих нули во всех битах, в блоки обратной связи всех блоков конвейерного вычисления;
обнуляют значение счетчиков в модулях отключения обратной связи всех блоков конвейерного вычисления;
подают одновременно на М входов блока предварительной подготовки очередные М блоков данных кадра данных;
если есть входящие блоки данных, записывают очередные блоки данных в соответствующие М буферные регистры FIFO в блоке предварительной подготовки;
присваивают каждому блоку данных порядковый номер, начиная с нуля и считая с последнего блока данных кадра, находящегося в буферных регистрах FIFO;
передают блоки данных с выходов блока предварительной подготовки на входы соответствующих блоков конвейерного вычисления;
передают входящие блоки данных на вход модуля памяти, на 1-й вход сумматора, на 2-й вход модуля отключения обратной связи, на 2-й вход блока обратной связи в каждом блоке конвейерного вычисления;
используют номер входящего блока данных как адрес модуля памяти в модуле памяти, извлекают заранее записанную в память модуля памяти значение степени Н в поле GF(2k);
вычисляют произведение блоков данных в поле GF(2k) в конвейерном перемножителе, передают его на выход конвейерного перемножителя, при этом присваивают результирующему блоку номер, равный номеру соответствующего входящего блока данных, взятого со 2-го входа конвейерного перемножителя;
передают блок данных с выхода конвейерного перемножителя на вход блока накопления и на 1-й вход блока обратной связи;
если имеется входящий блок данных на 1-м входе блока обратной связи, то записывают его в буферные регистры FIFO блока обратной связи;
производят суммирование в поле GF(2k) входящего блока данных и содержимого ячейки памяти блока накопления,
производят суммирование в поле GF(2k) входящего блока данных и содержимого ячейки памяти блока накопления,
если на входе блока накопления отсутствует блок данных или если имеется блок данных, но его номер равен L×M, то не передают данные на выход блока накопления;
Учитывая линейность производимых операций, можно раскрыть скобки и собрать М групп членов, сгруппировав по j все члены содержащие SiM+j, причем 0≤j<М. При этом М может быть любым положительным натуральным числом. Применив правило Горнера к каждой из групп отдельно, получим
Если правильным образом сгруппировать входящие данные, то можно вычислять М слагаемых (частичных сумм) данного выражения независимо друг от друга, при этом умножать нужно не на H, а на НM, а последний раз в каждом выражении нужно умножать на значения различных степеней Н в зависимости от номера блока данных, который был прибавлен перед умножением - после прибавления последнего блока данных нужно умножать на Н1, после прибавления предпоследнего блока данных - Н2 и т.д.
Различные слагаемые данного выражения можно вычислять на различных параллельно работающих вычислителях, что дает прирост в производительности в М раз за счет увеличения количества устройств в М раз.
Также следует обратить внимание, что различные слагаемые данного выражения можно вычислять не только на различных вычислителях, но и на одном конвейерном вычислителе, в котором различные частичные суммы одновременно обрабатываются в одном вычислителе, но при этом в каждый момент времени находятся на различных каскадах конвейера.
Использование М блоков конвейерной обработки, работающих параллельно, позволяет повысить быстродействие предлагаемого устройства в М раз.
Еще одним методом повышения быстродействия предлагаемого устройства является повышение тактовой частоты работы устройства в L раз за счет применения конвейерного перемножителя, содержащего L каскадов перемножения.
Поскольку сложение в поле Галуа является простейшим побитовым исключающим "или", требует немного ресурсов и быстро выполняется, то основным ограничением на повышение тактовой частоты является перемножитель. Таким образом, если разбить вычисление произведения на несколько каскадов конвейера, тем самым уменьшив длину критических путей распространения сигнала, то можно значительно повысить рабочую тактовую частоту устройства.
Разбиение процедуры перемножения на несколько частей не представляет большой сложности - при перемножении "в столбик" можно разбить суммирование результатов поразрядного перемножения на несколько частей, а при перемножении рекурсивным методом Карацубы, можно, например, завершать очередной каскад конвейера после выполнения сложений алгоритма для более мелких блоков алгоритма и перед началом сложения более крупных. Можно применять и другие разбиения и алгоритмы.
При удачном разбиении критические пути распространения электрических сигналов в схеме будут поделены на L примерно равных частей, и можно добиться повышения частоты в L раз. После разбиения каждому загруженному блоку данных понадобиться L тактов, чтобы пройти всю схему, однако это обстоятельство нивелируется тем фактом, что мы можем загружать в устройство одновременно L блоков данных.
Комбинация описанных приемов повышает быстродействие устройства в L×M раз по сравнению с последовательным вычислением. Таким образом, предложенное устройство вычисляет значение искомой функции за
тактов (округление вверх до ближайшего целого значения), каждый из который в L раз короче.
Предложенное устройство допускает возможность выбора целесообразной конфигурации, так, при проектировании устройства для конкретных условий применения, можно выбрать значения М и L, наиболее выгодные для заданных конкретных условий. Например, для достижения заданного быстродействия можно увеличивать количество L каскадов конвейерного перемножителя, увеличивая, тем самым, максимально возможную частоту работы устройства, до тех пор, пока другие технологические факторы не станут ограничивать дальнейший рост частоты. Затем можно увеличивать количество блоков конвейерного вычисления М до достижения требуемой производительности.
Частный случай выполнения устройства предусматривает, что на вход подаются блоки данных, дополнительно содержащие флаг K, причем для блоков данных, принадлежащих первому обрабатываемому кадру данных, флаг K имеет нулевое значение, а для блоков данных всех последующих кадров данных флаг K установлен по следующему правилу:
если хэш-функция для следующего кадра данных должна быть рассчитана на том же значении полинома Н, что и хэш-функция для предыдущего кадра данных, то значение флага K для всех блоков данных следующего кадра данных установлено в то же значение, что и значение флага K для блоков данных предыдущего кадра данных;
иначе, значение флага K для всех блоков данных следующего кадра данных установлено в значение, противоположное значению флага K для блоков данных предыдущего кадра данных;
при этом в устройстве
имеется дополнительный независимый модуль памяти в каждом блоке конвейерного вычисления, подключенный параллельно имеющемуся модулю памяти;
в каждом блоке конвейерного вычисления блоки данных поступают в модуль памяти, если флаг K равен нулю, или в дополнительный модуль памяти, если флаг K равен единице.
Наличие дополнительного модуля памяти позволяет в предложенном частном случае выполнения устройства обрабатывать различные кадры данных, используя различные значения полинома Н хэш-функции без остановки работы устройства для загрузки нового полинома Н хэш-функции в модули памяти блока конвейерного вычисления, поскольку, в то время как для обработки блоков данных кадра данных используется модуль памяти блока конвейерного вычисления, значения нового полинома Н хэш-функции может быть загружено в дополнительный модуль памяти блока конвейерного вычисления и наоборот.
Это позволяет повысить быстродействие устройства в случае, когда от устройства требуется обработка кадров данных с использованием различных полиномов хэш-функции Н.
Разработчик, проектирующий предложенное устройство, может принять решение о целесообразности введения дополнительного модуля памяти на основе данных об увеличении стоимости устройства из-за наличия дополнительного модуля памяти, а также из анализа необходимой частоты смены полинома Н хэш-функции и анализа того, насколько простой устройства во время смены полинома Н хэш-функции снижает производительность устройства.
При наличии дополнительных модулей памяти в каждом блоке конвейерного вычисления реализуется также частный случай способа, в котором, на этапе передачи входящих блоков данных на вход модуля памяти выполняют следующие действия:
записывают вычисленные значения степеней полинома Н для следующего кадра данных, в дополнительный модуль памяти блока конвейерного вычисления, причем в ячейку памяти с номером i записывается Нi+1 причем 0≤i<L×М, а в ячейку с номером L×М записывается HLM;
записывают вычисленные значения степеней полинома Н для следующего кадра данных, в модуль памяти блока конвейерного вычисления, причем в ячейку памяти с номером i записывают Нi+1, причем 0≤i<L×М, а в ячейку с номером L×М записывают НLM.
Описанный частный случай выполнения способа позволяет повысить быстродействие устройства в случае, когда от устройства требуется обработка кадров данных с использованием различных полиномов хэш-функции Н. Блоки данных кадров данных, поступают на вход устройства и содержат флаг K, заранее установленный в соответствии с учетом того, для какого полинома хэш-функции Н требуется обработать данный кадр. В то время, когда кадры данных обрабатываются с одним полиномом хэш-функции Н, используется один из модулей памяти, а в другой модуль памяти загружают значения степеней полинома Н для следующего кадра данных. Это позволяет не останавливать устройство для смены полинома хэш-функции Н.
Еще в одном частном случае выполнения устройства выход блока конвейерного перемножителя подключается напрямую к 1-му входу модуля отключения обратной связи, минуя блок обратной связи.
Такой частный случай выполнения устройства целесообразно применять, если заранее известно, что блоки данных кадров данных поступают на предлагаемое устройство на каждый такт тактовой частоты без промежутков. В этом случае также возникает возможность отключать питание от неиспользуемого блока обратной связи, что позволяет снизить энергопотребление устройства.
Если уже на этапе проектирования устройства известно, что блоки данных кадров данных всегда поступают на предлагаемое устройство на каждый такт тактовой частоты без промежутков, то блок обратной связи можно исключить из состава устройства, что экономит аппаратные ресурсы и снижает стоимость устройства.
Для реализации такого частного случая выполнения устройства также предлагается частный случай способа, согласно которому передают блок данных с выхода конвейерного перемножителя на вход блока накопления и на 1-й вход модуля отключения обратной связи вместо 1-го входа блока обратной связи.
Передача блока данных с выхода конвейерного перемножителя на вход блока накопления и на 1-й вход модуля отключения обратной связи вместо 1-го входа блока обратной связи позволяет снизить количество выполняемых операций, что также может снизить энергопотребление и повысить быстродействие устройства.
Краткое описание чертежей
На фиг. 1 показана блок-схема устройства.
На фиг. 2 показана блок-схема блока конвейерного вычисления.
Осуществление изобретения
Для изготовления предложенного устройства необходимо определить исходные данные: количество бит в каждом блоке данных k, количество каскадов в конвейерных перемножителях L, количество блоков конвейерного вычисления М.
Количество бит в каждом блоке данных k выбирают исходя из размера блока данных в используемом для аутентификации алгоритме.
Количество каскадов в конвейерных перемножителях L выбирают достаточным для того, что бы максимальная частота работы конвейерного перемножителя достигла максимальной тактовой частоты Fmax для других компонентов схемы.
Количество блоков конвейерного вычисления М выбирают достаточным, для достижения требуемого быстродействия, исходя из следующей формулы
Р=FmaxkM, бит/с
Если М-1 блоков конвейерного вычисления недостаточно для достижения требуемого быстродействия, а М блоков конвейерного вычисления обеспечивают быстродействие, превышающее требуемое, то для снижения энергопотребления выбирают частоту работу устройства по формуле
F=P/(k⋅M)
Далее проектируют устройство согласно описанию, содержащим все составные элементы, с учетом связей между ними и согласно их назначению.
Предпочтительно выполнять предлагаемое устройство в виде блока, входящего в состав вычислительной системы, выполняющей функции обеспечения аутентичности данных, подготавливающей данные для обработки предлагаемым устройством и использующей вычисленные предлагаемым устройством значения хэш-функции GHASH для целей подтверждения их аутентичности.
Например, предлагаемое устройство может быть выполнено в виде блока интегральной схемы специального назначения, выполняющей функции обеспечения аутентичности данных и содержащей интерфейс для получения и отправки данных, блок подготовки данных для работы предлагаемого устройства, предлагаемое устройство для вычисления хэш-функции, и блок, использующий вычисленную хэш-функцию для обеспечения аутентичности данных. Предлагаемое устройство может также входить в состав других вычислительных систем, в которых требуется вычислять указанную хэш-функцию.
Реализовать предложенное устройство в виде блока интегральной схемы или в виде блока устройства для обеспечения аутентичности данных, выполненного на базе программируемой логической интегральной схемы (ПЛИС) или базового матричного кристалла может специалист в области проектирования цифровых интегральных схем.
Для реализации предложенного способа изготавливают устройство согласно описанию. Затем определяют битовое представление значения полинома Н, являющегося ключом хэш-функции и значение которого должно храниться в секрете. Например, 128 бит битового представления значения полинома Н может быть получено из генератора случайных чисел. В зависимости, от применяемого алгоритма, значение H может определяться и другими способами.
После этого обнуляют содержимое всех буферных регистров FIFO блока предварительной подготовки, вычисляют в поле GF(2k) значения степеней полинома Н вплоть до НLM, записывают их битовые представления в модули памяти всех блоков конвейерного вычисления, причем в ячейку памяти с номером i записывается Hi+1 причем 0≤i<L×М, а в ячейку с номером L×М записывают НLM, записывают L блоков данных, содержащих нули во всех битах, в блоки обратной связи всех блоков конвейерного вычисления, обнуляют значение счетчиков в модулях отключения обратной связи всех блоков конвейерного вычисления.
После этого приступают к обработке кадров данных. Для этого разделяют кадры данных на блоки по k бит, причем последний блок снабжен метаинформацией о том, что это последний блок кадра данных. Подают одновременно по М очередных блоков данных на М входов блока предварительной подготовки. В блоке предварительной подготовки нумеруют блоки данных (снабжают метаинформацией). Затем передают блоки данных с выходов блока предварительной подготовки на входы соответствующих М блоков конвейерного вычисления. В каждом блоке конвейерного вычисления, используя хранящиеся в модулях памяти значения степеней Н, вычисляют L частичных сумм и суммируют их в блоке накопления блока конвейерного вычисления.
После этого блоки данных с выходов блоков конвейерного вычисления передают на М входов блока объединения, суммируют в блоке объединения блоки данных, поступивших на его входы, и передают результат, являющийся искомым значением, на выход устройства.
При реализации частного случая выполнения устройства, предусматривающего наличие дополнительного независимого модуля памяти в каждом блоке конвейерного вычисления, подключенный параллельно имеющемуся модулю памяти, возникает возможность ускорить обработку данных за счет исключения простоев устройства во время загрузки значений степеней полинома Н во время смены ключа хэш-функции.
Наличие двух модулей памяти в каждом блоке конвейерного вычисления позволяет загружать значения степеней Н для нового ключа в один из модулей памяти, без остановки работы устройства, пока происходит обработка данных с использованием степеней Н для старого ключа, хранящихся в другом модуле памяти. При этом на вход устройства подаются блоки данных, дополнительно содержащие флаг K, причем для блоков данных, принадлежащих первому обрабатываемому кадру данных, флаг K имеет нулевое значение, а для блоков данных всех последующих кадров данных флаг K установлен по следующему правилу:
если хэш-функция для следующего кадра данных должна быть рассчитана на том же значении полинома Н, что и хэш-функция для предыдущего кадра данных, то значение флага K для всех блоков данных следующего кадра данных установлено в то же значение, что и значение флага K для блоков данных предыдущего кадра данных;
иначе, значение флага K для всех блоков данных следующего кадра данных установлено в значение, противоположное значению флага K для блоков данных предыдущего кадра данных;
при этом в устройстве в каждом блоке конвейерного вычисления блоки данных поступают в модуль памяти, если флаг K равен нулю, или в дополнительный модуль памяти, если флаг K равен единице.
Для реализации частного случая выполнения устройства блоки данных текущего кадра данных дополнительно снабжают флагом K, при этом значение флага K заранее устанавливают в соответствии с описанным выше правилом. Дополнительно, в каждом блоке конвейерного вычисления, на этапе передачи входящих блоков данных на вход модуля памяти выполняют следующие действия:
записывают вычисленные значения степеней полинома Н для следующего кадра данных, в дополнительный модуль памяти блока конвейерного вычисления, причем в ячейку памяти с номером i записывается Hi+1 причем 0≤i<L×M, а в ячейку с номером L×М записывается HLM.
записывают вычисленные значения степеней полинома Н для следующего кадра данных, в модуль памяти блока конвейерного вычисления, причем в ячейку памяти с номером i записывается Нi+1, причем 0≤i<L×М, а в ячейку с номером L×М записывается НLM;
Возможен еще один частного случая выполнения устройства, согласно которому в устройстве выход конвейерного перемножителя имеет возможность подключаться напрямую к 1-му входу модуля отключения обратной связи, минуя блок обратной связи. При этом устройство может корректно работать, только если блоки данных кадра данных подаются на вход устройства на каждый такт без промежутков до конца каждого кадра.
Данный частный случай возможно осуществить, например, с использованием электронных ключей, отключающих выход конвейерного перемножителя от блока обратной связи и подключающих к 1-му входу модуля отключения обратной связи. При этом возникает возможность для экономии электроэнергии отключить питание блока обратной связи, когда выход конвейерного перемножителя подключен напрямую к 1-му входу модуля отключения обратной связи.
Если же заранее известно, что блоки данных кадра данных подаются на вход устройства на каждый такт без промежутков до конца каждого кадра, то возможно осуществление данного частного случая реализации устройства вообще без изготовления блока обратной связи. В этом случае выход конвейерного перемножителя подключают напрямую к 1-му входу модуля отключения обратной связи. Такое исполнение позволяет экономить электроэнергию и аппаратные ресурсы, например, место на кристалле микросхемы, на которой реализовано устройство.
Для осуществления способа в этом случае на вход устройства подают по М блоков данных на каждый такт до окончания текущего кадра данных. Дополнительно, в каждом блоке конвейерного вычисления передают блок данных с выхода конвейерного перемножителя на вход блока накопления и на 1-й вход модуля отключения обратной связи вместо 1-го входа блока обратной связи.
Claims (124)
1. Устройство для вычисления хэш-функции для кадра цифровых данных, причем кадр данных состоит из блоков данных длиной k бит, включающее
блок предварительной подготовки, имеющий М входов размерностью k бит, при этом М>1;
М блоков конвейерного вычисления, входы которых являются соответствующими выходами блока предварительной подготовки, и которые используют конвейерные перемножители, содержащие L каскадов;
блока объединения, имеющего М входов, причем каждый вход подключен к соответствующему выходу блока конвейерного вычисления, а выход блока объединения является выходом устройства в целом;
при этом блок предварительной подготовки также имеет М буферных регистров FIFO и выполнен с возможностью
записывать поступающие одновременно на М входов блоки данных в концы соответствующих буферных регистров FIFO;
определять количество блоков данных, записанных в буферные регистры FIFO блока предварительной подготовки;
определять наличие в буферных регистрах FIFO блока предварительной подготовки последнего блока данных кадра данных;
считывать из соответствующих буферных регистров FIFO блоки данных во все М выходов блока предварительной подготовки при условии наличия в буферных регистрах FIFO блока предварительной подготовки L×M блоков данных или наличия в буферных регистрах FIFO блока предварительной подготовки последнего блока данных кадра данных;
помечать выходы блока, как не имеющие данных, при условии отсутствия в буферных регистрах FIFO блока предварительной подготовки L×M блоков данных и отсутствия в буферных регистрах FIFO блока предварительной подготовки последнего блока данных кадра данных;
нумеровать считываемые из буферных регистров FIFO блока предварительной подготовки блоки данных, причем
при наличии последнего блока данных в буферных регистрах FIFO блока предварительной подготовки, нумерация блоков данных осуществляется, начиная с конца кадра данных, и производится, начиная с нуля,
при отсутствии последнего блока данных в буферных регистрах FIFO блока предварительной подготовки, каждому считываемому блоку присваивается номер L×М;
каждый из М блоков конвейерного вычисления, работающих параллельно, содержит
модуль памяти,
модуль отключения обратной связи,
сумматор,
конвейерный перемножитель, имеющий L каскадов,
блок обратной связи,
блок накопления;
при этом модуль памяти выполнен с возможностью
хранить записанные в него данные;
выдавать на выход модуля памяти данные, хранящиеся в тех ячейках модуля памяти, номер которых равен номерам блоков данных, поступающих на вход модуля памяти;
сумматор содержит 1-й и 2-й входы и один выход и выполнен с возможностью суммировать в поле GF(2k) приходящие на 1-й и 2-й входы блоки данных и передавать результат на выход сумматора;
модуль отключения обратной связи содержит 1-й и 2-й входы, счетчик и выход и выполнен с возможностью
увеличивать значение счетчика, при поступлении блока данных на 2-й вход;
передавать на выход блок данных с 1-го входа, если значение счетчика больше или равно М;
передавать на выход блок данных, содержащий нули во всех битах, если значение счетчика меньше М;
обнулять значение счетчика, если номер блока данных, поступившего на 2-й вход, меньше М;
конвейерный перемножитель содержит
1-й и 2-й входы,
L каскадов конвейера перемножения, подключенные друг за другом, работающие одновременно, и каждый из которых выполняет свою часть вычислений произведения двух блоков, при этом входы первого каскада конвейера перемножения подключены к входам конвейерного перемножителя,
один выход, который является выходом последнего каскада конвейера перемножения;
при этом конвейерный перемножитель выполнен с возможностью нумеровать выходные блоки так, что выходному блоку данных присваивается номер соответствующего блока данных, взятого с 1-го входа;
блок обратной связи содержит
1-й и 2-й входы и один выход,
буферный регистр FIFO, в который записываются блоки данных, поступающие на 1-й вход блока обратной связи;
при этом блок обратной связи выполнен с возможностью считывать блоки данных из буферного регистра FIFO на выход лишь при поступлении блоков данных на 2-й вход;
блок накопления содержит ячейку памяти накопления и выполнен с возможностью
получать на вход блоки данных и их номера;
сравнивать номер входящего блока данных со значением L×М;
если номер входящего блока данных больше или равен L×М, то обнулять ячейку памяти накопления;
если номер входящего блока данных меньше L×М, то суммировать входящий блок данных в поле GF (2k) со значением, содержащемся в ячейке памяти накопления, и записывать результат обратно в ячейку памяти накопления;
при этом вход каждого блока конвейерного вычисления, подключен к 1-му входу сумматора, к входу модуля памяти, 2-му входу модуля отключения обратной связи и 2-му входу блока обратной связи;
при этом 1-й вход конвейерного перемножителя подключен к выходу модуля памяти, а 2-й вход конвейерного перемножителя подключен к выходу сумматора;
при этом выход конвейерного перемножителя подключен ко входу блока накопления и к 1-му входу блока обратной связи, а выход блока обратной связи подключен к 1-му входу модуля отключения обратной связи;
выход модуля отключения обратной связи подключен ко 2-му входу сумматора;
выход блока накопления является выходом блока конвейерного вычисления;
блок объединения содержит М входов и выполнен с возможностью производить сложение блоков данных в поле GF (2k) от всех М входов и выдавать результат этого сложения на свой выход.
2. Устройство, по п. 1, на вход которого подаются блоки данных, дополнительно содержащие флаг K, причем для блоков данных, принадлежащих первому обрабатываемому кадру данных, флаг K имеет нулевое значение, а для блоков данных всех последующих кадров данных флаг K установлен по следующему правилу:
если хэш-функция для следующего кадра данных должна быть рассчитана на том же значении полинома Н, что и хэш-функция для предыдущего кадра данных, то значение флага K для всех блоков данных следующего кадра данных установлено в то же значение, что и значение флага K для блоков данных предыдущего кадра данных;
иначе, значение флага K для всех блоков данных следующего кадра данных установлено в значение, противоположное значению флага K для блоков данных предыдущего кадра данных;
при этом в устройстве
имеется дополнительный независимый модуль памяти в каждом блоке конвейерного вычисления, подключенный параллельно имеющемуся модулю памяти;
в каждом блоке конвейерного вычисления блоки данных поступают в модуль памяти, если флаг K равен нулю, или в дополнительный модуль памяти, если флаг K равен единице.
3. Устройство по п. 1 или 2, в котором выход блока конвейерного перемножителя имеет возможность подключаться напрямую к 1-му входу модуля отключения обратной связи, минуя блок обратной связи.
4. Способ вычисления хэш-функции для кадра цифровых данных, причем кадр данных состоит из блока данных длиной k бит, заключающийся в том, что
определяют полином Н хэш-функции;
обнуляют содержимое всех буферных регистров FIFO блока предварительной подготовки;
обнуляют ячейку памяти блоков накопления всех блоков конвейерного вычисления;
вычисляют значения степеней полинома Н, вычисленные в поле GF (2k);
записывают вычисленные значения степеней полинома Н в модули памяти всех блоков конвейерного вычисления, причем в ячейку памяти с номером i записывается Hi+1, причем 0≤i<L×М, а в ячейку с номером L×М записывается НLM;
записывают L блоков данных, содержащих нули во всех битах, в блоки обратной связи всех блоков конвейерного вычисления;
обнуляют значение счетчиков в модулях отключения обратной связи всех блоков конвейерного вычисления;
подают одновременно на М входов блока предварительной подготовки очередные М блоков данных кадра данных;
если есть входящие блоки данных, записывают очередные блоки данных в соответствующие М буферные регистры FIFO в блоке предварительной подготовки;
если в каком либо из буферных регистров FIFO есть последний блок данных кадра данных, то
считывают очередные блоки данных из каждого буферного регистра FIFO;
передают их на выход блока предварительной подготовки;
присваивают каждому блоку данных порядковый номер, начиная с нуля и считая с последнего блока данных кадра, находящегося в буферных регистрах FIFO;
иначе, если очереди имеют длину L и не содержат последнего блока данных кадра данных, то
считывают очередные блоки данных из каждого буферного регистра FIFO;
передают их на выход блока предварительной подготовки;
присваивают каждому блоку данных номер L×М;
передают блоки данных с выходов блока предварительной подготовки на входы соответствующих блоков конвейерного вычисления;
передают входящие блоки данных на вход модуля памяти, на 1-й вход сумматора, на 2-й вход модуля отключения обратной связи, на 2-й вход блока обратной связи в каждом блоке конвейерного вычисления;
используют номер входящего блока данных как адрес модуля памяти в модуле памяти, извлекают заранее записанную в память модуля памяти значение степени Н в поле GF (2k);
подают извлеченное значение на выход модуля памяти;
выполняют в сумматоре следующие действия
суммируют в поле GF(2k) входящие с 1-го и 2-го входа блоки данных;
присваивают результату сложения номер блока данных со 1-го входа;
передают этот результат на выход сумматора;
передают с выхода модуля памяти блок данных на 1-й вход конвейерного перемножителя;
передают с выхода сумматора очередной блок данных на 2-й вход конвейерного перемножителя;
вычисляют произведение блоков данных в поле GF (2k) в конвейерном перемножителе, передают его на выход конвейерного перемножителя, при этом присваивают результирующему блоку номер, равный номеру соответствующего входящего блока данных, взятого со 2-го входа конвейерного перемножителя;
передают блок данных с выхода конвейерного перемножителя на вход блока накопления и на 1-й вход блока обратной связи;
если имеется входящий блок данных на 1-м входе блока обратной связи, то записывают его в буферные регистры FIFO блока обратной связи;
если имеется входящий блок данных на 2-м входе блока обратной связи, то
считывают из буферного регистра FIFO блока обратной связи очередной блок данных;
передают его на выход блока обратной связи;
передают блок данных с выхода блока обратной связи на 1-й вход модуля отключения обратной связи;
выполняют в модуле отключения обратной связи следующие действия
если на 2-й вход поступает блок данных, увеличивают значение счетчика;
если значение счетчика больше или равно М, передают на выход блок данных с 1-го входа;
если значение счетчика меньше М, передают на выход блок данных, содержащий нули во всех битах;
если номер блока данных, поступившего на 2-й вход меньше М, обнуляют значение счетчика;
передают блоки данных с выхода модуля отключения обратной связи на 2-й вход сумматора;
проверяют наличие данных на входе блока накопления,
если на входе имеется блок данных, то
если его номер меньше L×М, но больше или равен М, то
производят суммирование в поле GF (2k) входящего блока данных и содержимого ячейки памяти блока накопления;
записывают результат обратно в ячейку памяти накопления;
иначе, если номер входящего блока данных меньше М, то
производят суммирование в поле GF (2k) входящего блока данных и содержимого ячейки памяти блока накопления;
записывают результат в выход блока накопления;
обнуляют содержимое ячейки памяти блока накопления;
если на входе блока накопления отсутствует блок данных или если имеется блок данных, но его номер равен L×M, то не передают данные на выход блока накопления;
передают блок данных с выхода блока накопления на выход блока конвейерного вычисления;
передают блоки данных с выхода блоков конвейерного вычисления на входы блока объединения;
проверяют наличие входящих блоков данных в блоке объединения
если на входе отсутствуют блоки данных, то помечают выход блока объединения, как не имеющий данных;
иначе, если на входе имеются блоки данных, то
суммируют в поле GF (2k) блоки данных со всех входов;
передают результат суммирования, являющийся значением хэш-функции, на выход блока объединения.
5. Способ по п. 4 в котором, при наличии дополнительных модулей памяти в каждом блоке конвейерного вычисления, на этапе передачи входящих блоков данных на вход модуля памяти выполняют следующие действия:
если входящий блок данных помечен флагом K, равным нулю, то
передают входящий блок данных на вход модуля памяти;
вычисляют значения степеней следующего полинома Н в поле GF (2k) для следующего кадра данных;
записывают вычисленные значения степеней полинома Н для следующего кадра данных, в дополнительный модуль памяти блока конвейерного вычисления, причем в ячейку памяти с номером i записывается Нi+1, причем 0≤i<L×М, а в ячейку с номером L×М записывается НLM;
если входящий блок данных помечен флагом K, равным единице, то
передают входящий блок данных на вход дополнительного модуля памяти;
вычисляют значения степеней следующего полинома Н в поле GF (2k) для следующего кадра данных;
записывают вычисленные значения степеней полинома Н для следующего кадра данных, в модуль памяти блока конвейерного вычисления, причем в ячейку памяти с номером i записывается Нi+1, причем 0≤i<L×М, а в ячейку с номером L×М записывается HLM.
6. Способ по п. 4 или п. 5, в котором передают блок данных с выхода конвейерного перемножителя на вход блока накопления и на 1-й вход модуля отключения обратной связи вместо 1-го входа блока обратной связи.
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
RU2017143805A RU2666303C1 (ru) | 2017-12-14 | 2017-12-14 | Способ и устройство для вычисления хэш-функции |
DE112018006405.0T DE112018006405T5 (de) | 2017-12-14 | 2018-10-23 | Verfahren und Vorrichtung zur Berechnung der Hashfunktion |
PCT/RU2018/050130 WO2019117758A1 (ru) | 2017-12-14 | 2018-10-23 | Способ и устройство для вычисления хэш-функции |
US16/954,061 US11522680B2 (en) | 2017-12-14 | 2018-10-23 | Method and apparatus for computing hash function |
BR112020011520-7A BR112020011520A2 (pt) | 2017-12-14 | 2018-10-23 | método e aparelho para computação da função hash |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
RU2017143805A RU2666303C1 (ru) | 2017-12-14 | 2017-12-14 | Способ и устройство для вычисления хэш-функции |
Publications (1)
Publication Number | Publication Date |
---|---|
RU2666303C1 true RU2666303C1 (ru) | 2018-09-06 |
Family
ID=63460165
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
RU2017143805A RU2666303C1 (ru) | 2017-12-14 | 2017-12-14 | Способ и устройство для вычисления хэш-функции |
Country Status (5)
Country | Link |
---|---|
US (1) | US11522680B2 (ru) |
BR (1) | BR112020011520A2 (ru) |
DE (1) | DE112018006405T5 (ru) |
RU (1) | RU2666303C1 (ru) |
WO (1) | WO2019117758A1 (ru) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11301418B2 (en) * | 2019-05-02 | 2022-04-12 | EMC IP Holding Company LLC | Method and system for provenance-based data backups |
CN110245756B (zh) * | 2019-06-14 | 2021-10-26 | 第四范式(北京)技术有限公司 | 用于处理数据组的可编程器件及处理数据组的方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070081668A1 (en) * | 2004-10-20 | 2007-04-12 | Mcgrew David A | Enciphering method |
US20090080646A1 (en) * | 2007-09-21 | 2009-03-26 | Chih-Hsu Yen | Method And Architecture For Parallel Calculating Ghash Of Galois Counter Mode |
US20100115017A1 (en) * | 2008-10-30 | 2010-05-06 | Chih-Hsu Yen | Semi-Sequential Galois Field Multiplier And The Method For Performing The Same |
US7970130B2 (en) * | 2007-05-10 | 2011-06-28 | Industrial Technology Research Institute | Low-latency method and apparatus of GHASH operation for authenticated encryption Galois Counter Mode |
RU2598781C1 (ru) * | 2015-07-31 | 2016-09-27 | Открытое Акционерное Общество "Информационные Технологии И Коммуникационные Системы" | Способ линейного преобразования (варианты) |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7085988B1 (en) * | 2002-04-08 | 2006-08-01 | Maxtor Corporation | Hashing system utilizing error correction coding techniques |
US7827384B2 (en) * | 2007-07-16 | 2010-11-02 | Cisco Technology, Inc. | Galois-based incremental hash module |
US9519807B1 (en) * | 2014-10-14 | 2016-12-13 | Altera Corporation | Hash generation circuitry and methods for multi-channel, multi-lane encryption and authentication |
US10110376B1 (en) * | 2016-03-28 | 2018-10-23 | Secturion Systems, Inc. | Systolic parallel Galois hash computing device |
US10855443B2 (en) * | 2016-07-29 | 2020-12-01 | Cryptography Research Inc. | Protecting polynomial hash functions from external monitoring attacks |
CN109791517B (zh) * | 2016-12-21 | 2023-09-08 | 密码研究公司 | 保护并行乘法运算免受外部监测攻击 |
-
2017
- 2017-12-14 RU RU2017143805A patent/RU2666303C1/ru active
-
2018
- 2018-10-23 BR BR112020011520-7A patent/BR112020011520A2/pt unknown
- 2018-10-23 US US16/954,061 patent/US11522680B2/en active Active
- 2018-10-23 WO PCT/RU2018/050130 patent/WO2019117758A1/ru active Application Filing
- 2018-10-23 DE DE112018006405.0T patent/DE112018006405T5/de active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070081668A1 (en) * | 2004-10-20 | 2007-04-12 | Mcgrew David A | Enciphering method |
US7970130B2 (en) * | 2007-05-10 | 2011-06-28 | Industrial Technology Research Institute | Low-latency method and apparatus of GHASH operation for authenticated encryption Galois Counter Mode |
US20090080646A1 (en) * | 2007-09-21 | 2009-03-26 | Chih-Hsu Yen | Method And Architecture For Parallel Calculating Ghash Of Galois Counter Mode |
US20100115017A1 (en) * | 2008-10-30 | 2010-05-06 | Chih-Hsu Yen | Semi-Sequential Galois Field Multiplier And The Method For Performing The Same |
RU2598781C1 (ru) * | 2015-07-31 | 2016-09-27 | Открытое Акционерное Общество "Информационные Технологии И Коммуникационные Системы" | Способ линейного преобразования (варианты) |
Also Published As
Publication number | Publication date |
---|---|
WO2019117758A1 (ru) | 2019-06-20 |
US11522680B2 (en) | 2022-12-06 |
US20210167944A1 (en) | 2021-06-03 |
BR112020011520A2 (pt) | 2020-11-17 |
DE112018006405T5 (de) | 2020-09-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP0566498B1 (en) | Digital signature device and process | |
US8392692B2 (en) | Determining index values for bits of binary vector by processing masked sub-vector index values | |
Chung et al. | A high-performance elliptic curve cryptographic processor over GF (p) with SPA resistance | |
GB2323457A (en) | A finite field multiplication system | |
Asif et al. | High‐throughput multi‐key elliptic curve cryptosystem based on residue number system | |
US20170302440A1 (en) | Secure hash algorithm in digital hardware for cryptographic applications | |
CN113031920B (zh) | 一种芯片和用于芯片的批量模运算方法 | |
US20190146756A1 (en) | Segment divider, segment division operation method, and electronic device | |
Kesava et al. | Low power and area efficient Wallace tree multiplier using carry select adder with binary to excess-1 converter | |
Khan et al. | High speed ECC implementation on FPGA over GF (2 m) | |
CN115344237A (zh) | 结合Karatsuba和蒙哥马利模乘的数据处理方法 | |
US10498532B2 (en) | Parallel computation techniques for accelerated cryptographic capabilities | |
RU2666303C1 (ru) | Способ и устройство для вычисления хэш-функции | |
Ding et al. | Broken-Karatsuba multiplication and its application to Montgomery modular multiplication | |
US7046800B1 (en) | Scalable methods and apparatus for Montgomery multiplication | |
Hossain et al. | Efficient fpga implementation of modular arithmetic for elliptic curve cryptography | |
US7912886B2 (en) | Configurable exponent FIFO | |
KR20080050226A (ko) | 모듈러 곱셈 장치 및 설계 방법 | |
Piestrak | Design of multi-residue generators using shared logic | |
CN108255463B (zh) | 一种数字逻辑运算方法、电路和fpga芯片 | |
US8745476B1 (en) | Systems and methods for cyclic redundancy check implementation | |
CN115270155A (zh) | 一种获取大数拓展最大公约数的方法及硬件架构 | |
Zimmermann et al. | High-performance integer factoring with reconfigurable devices | |
KR100481586B1 (ko) | 모듈러 곱셈 장치 | |
US5948051A (en) | Device improving the processing speed of a modular arithmetic coprocessor |