RU2666303C1 - Способ и устройство для вычисления хэш-функции - Google Patents

Способ и устройство для вычисления хэш-функции Download PDF

Info

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
Application number
RU2017143805A
Other languages
English (en)
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 Открытое Акционерное Общество "Информационные Технологии И Коммуникационные Системы"
Priority to RU2017143805A priority Critical patent/RU2666303C1/ru
Application granted granted Critical
Publication of RU2666303C1 publication Critical patent/RU2666303C1/ru
Priority to DE112018006405.0T priority patent/DE112018006405T5/de
Priority to PCT/RU2018/050130 priority patent/WO2019117758A1/ru
Priority to US16/954,061 priority patent/US11522680B2/en
Priority to BR112020011520-7A priority patent/BR112020011520A2/pt

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods 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/10Methods 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • 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
    • H04L9/0637Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
    • 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/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • 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/32Cryptographic 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/3236Cryptographic 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
    • 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/32Cryptographic 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/3236Cryptographic 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/3242Cryptographic 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
    • 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/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/125Parallelization 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.
Данная функция определяется как
Figure 00000001
где S - данные кадра данных,
Н - полином хэш-функции, являющийся ключом данной хэш-функции,
Figure 00000002
- количество блоков данных в S,
Figure 00000003
Ускорение вычисления данной функции позволяет уменьшить время обработки каждого кадра данных и, как следствие, снижает задержку данных в устройстве обработки данных и увеличивает скорость его работы.
Так, известны способ и устройство вычисления хэш-функции для режима Galois Counter Mode (GCM; патент США №7970130, приоритет от 21.09.2007 г.), причем в способе для входных данных, включающих ассоциированные данные А, шифротекст С, полином Н, вычисляют сначала промежуточное значение
Figure 00000004
затем промежуточное значение
Figure 00000005
а также значения Нn+1, после чего вычисляется величина
Figure 00000006
являющаяся искомым значением функции GHASH.
Устройство, осуществляющее вычисления, состоит из первого, второго и третьего вычислительных модулей, вычисляющих значения XA, XC и Hn+1 соответственно, а также четвертого вычислительного модуля, вычисляющего значение
Figure 00000007
Это устройство позволяет вычислить значение GHASH (A, С, Н) за max(m, n)+1 циклов, где m - количество блоков данных в А, а n - количество блоков данных в С, при этом
Figure 00000008
- это количество блоков, подаваемых на вход функции GHASH.
Известные способ и устройство приняты за прототипы.
Недостатками известных устройства и способа являются невысокое быстродействие и отсутствие возможности выбора конфигурации устройства перед его изготовлением. Так, наилучшего быстродействия в известном устройстве и способе удается добиться, если m=n. В этом случае удается получить ускорение в 2 раза по сравнению с последовательным вычислением.
Раскрытие изобретения
Техническим результатом является
1) повышение быстродействия вычислений,
2) расширение возможности выбора конфигурации устройства.
Для этого предлагается устройство для вычисления хэш-функции для кадра цифровых данных, причем кадр данных состоит из блоков данных длиной k бит, включающее
Figure 00000009
блок предварительной подготовки, имеющий М входов размерностью k бит, при этом М>1;
Figure 00000009
М блоков конвейерного вычисления, входы которых являются соответствующими выходами блока предварительной подготовки, и которые используют конвейерные перемножители, содержащие L каскадов;
Figure 00000009
блока объединения, имеющего М входов, причем каждый вход подключен к соответствующему выходу блока конвейерного вычисления, а выход блока объединения является выходом устройства в целом;
при этом блок предварительной подготовки также имеет М буферных регистров FIFO и выполнен с возможностью
Figure 00000009
записывать поступающие одновременно на М входов блоки данных в концы соответствующих буферных регистров FIFO;
Figure 00000009
определять количество блоков данных, записанных в буферные регистры FIFO блока предварительной подготовки;
Figure 00000009
определять наличие в буферных регистрах FIFO блока предварительной подготовки последнего блока данных кадра данных;
Figure 00000009
считывать из соответствующих буферных регистров FIFO блоки данных во все М выходов блока предварительной подготовки при условии наличия в буферных регистрах FIFO блока предварительной подготовки L×М блоков данных или наличия в буферных регистрах FIFO блока предварительной подготовки последнего блока данных кадра данных;
Figure 00000009
помечать выходы блока, как не имеющие данных, при условии отсутствия в буферных регистрах FIFO блока предварительной подготовки L×M блоков данных и отсутствия в буферных регистрах FIFO блока предварительной подготовки последнего блока данных кадра данных;
Figure 00000009
нумеровать считываемые из буферных регистров FIFO блока предварительной подготовки блоки данных, причем
Figure 00000010
при наличии последнего блока данных в буферных регистрах FIFO блока предварительной подготовки, нумерация блоков данных осуществляется, начиная с конца кадра данных и производится, начиная с нуля,
Figure 00000010
при отсутствии последнего блока данных в буферных регистрах FIFO блока предварительной подготовки, каждому считываемому блоку присваивается номер L×М;
каждый из М блоков конвейерного вычисления, работающих параллельно, содержит
Figure 00000009
модуль памяти,
Figure 00000009
модуль отключения обратной связи,
Figure 00000009
сумматор,
Figure 00000009
конвейерный перемножитель, имеющий L каскадов,
Figure 00000009
блок обратной связи,
Figure 00000009
блок накопления;
Figure 00000009
при этом модуль памяти выполнен с возможностью
Figure 00000009
хранить записанные в него данные;
Figure 00000009
выдавать на выход модуля памяти данные, хранящиеся в тех ячейках модуля памяти, номер которых равен номерам блоков данных, поступающих на вход модуля памяти;
сумматор содержит 1-й и 2-й входы и один выход и выполнен с возможностью суммировать в поле GF(2k) приходящие на 1-й и 2-й входы блоки данных и передавать результат на выход сумматора;
модуль отключения обратной связи содержит 1-й и 2-й входы, счетчик и выход и выполнен с возможностью
Figure 00000009
увеличивать значение счетчика, при поступлении блока данных на 2-й вход
Figure 00000009
передавать на выход блок данных с 1-го входа, если значение счетчика больше или равно М;
Figure 00000009
передавать на выход блок данных, содержащий нули во всех битах, если значение счетчика меньше М;
Figure 00000009
обнулять значение счетчика, если номер блока данных, поступившего на 2-й вход меньше М;
конвейерный перемножитель содержит
Figure 00000009
1-й и 2-й входы,
Figure 00000009
L каскадов конвейера перемножения, подключенные друг за другом, работающие одновременно и каждый из которых выполняет свою часть вычислений произведения двух блоков, при этом входы первого каскада конвейера перемножения подключены к входам конвейерного перемножителя,
Figure 00000009
один выход, который является выходом последнего каскада конвейера перемножения;
при этом конвейерный перемножитель выполнен с возможностью нумеровать выходные блоки так, что выходному блоку данных присваивается номер соответствующего блока данных, взятого с 1-го входа;
блок обратной связи содержит
Figure 00000009
1-й и 2-й входы и один выход,
Figure 00000009
буферный регистр FIFO, в который записываются блоки данных, поступающие на 1-й вход блока обратной связи,
при этом блок обратной связи выполнен с возможностью считывать блоки данных из буферного регистра FIFO на выход лишь при поступлении блоков данных на 2-й вход;
блок накопления содержит ячейку памяти накопления и выполнен с возможностью
Figure 00000009
получать на вход блоки данных и их номера;
Figure 00000009
сравнивать номер входящего блока данных со значением L×М;
Figure 00000009
если номер входящего блока данных больше или равен L×М, то обнулять ячейку памяти накопления;
Figure 00000009
если номер входящего блока данных меньше L×М, то суммировать входящий блок данных в поле GF(2k) со значением, содержащемся в ячейке памяти накопления и записывать результат обратно в ячейку памяти накопления;
при этом вход каждого блока конвейерного вычисления, подключен к 1-му входу сумматора, ко входу модуля памяти, 2-му входу модуля отключения обратной связи и 2-му входу блока обратной связи;
при этом 1-й вход конвейерного перемножителя подключен к выходу модуля памяти, а 2-й вход конвейерного перемножителя подключен к выходу сумматора;
при этом выход конвейерного перемножителя подключен ко входу блока накопления и к 1-му входу блока обратной связи, а выход блока обратной связи подключен к 1-му входу модуля отключения обратной связи;
выход модуля отключения обратной связи подключен ко 2-му входу сумматора;
выход блока накопления является выходом блока конвейерного вычисления;
блок объединения содержит М входов и выполнен с возможностью производить сложение блоков данных в поле GF(2k) от всех М входов и выдавать результат этого сложения на свой выход.
Также предлагается способ работы этого устройства, заключающийся в том, что
Figure 00000009
определяют полином Н хэш-функции;
Figure 00000009
обнуляют содержимое всех буферных регистров FIFO блока предварительной подготовки;
Figure 00000009
обнуляют ячейку памяти блоков накопления всех блоков конвейерного вычисления;
Figure 00000009
вычисляют значения степеней полинома Н, вычисленные в поле GF(2k);
Figure 00000009
записывают вычисленные значения степеней полинома Н в модули памяти всех блоков конвейерного вычисления, причем в ячейку памяти с номером i записывается Hi+1, причем 0≤i<L×M, а в ячейку с номером L×М записывается НLM;
Figure 00000009
записывают L блоков данных, содержащих нули во всех битах, в блоки обратной связи всех блоков конвейерного вычисления;
Figure 00000009
обнуляют значение счетчиков в модулях отключения обратной связи всех блоков конвейерного вычисления;
Figure 00000009
подают одновременно на М входов блока предварительной подготовки очередные М блоков данных кадра данных;
Figure 00000009
если есть входящие блоки данных, записывают очередные блоки данных в соответствующие М буферные регистры FIFO в блоке предварительной подготовки;
Figure 00000009
если в каком либо из буферных регистров FIFO есть последний блок данных кадра данных, то
Figure 00000010
считывают очередные блоки данных из каждого буферного регистра FIFO,
Figure 00000010
передают их на выход блока предварительной подготовки,
Figure 00000010
присваивают каждому блоку данных порядковый номер, начиная с нуля и считая с последнего блока данных кадра, находящегося в буферных регистрах FIFO;
Figure 00000009
иначе, если очереди имеют длину L и не содержат последнего блока данных кадра данных, то
Figure 00000011
считывают очередные блоки данных из каждого буферного регистра FIFO,
Figure 00000011
передают их на выход блока предварительной подготовки,
Figure 00000011
присваивают каждому блоку данных номер L×M;
Figure 00000009
передают блоки данных с выходов блока предварительной подготовки на входы соответствующих блоков конвейерного вычисления;
Figure 00000009
передают входящие блоки данных на вход модуля памяти, на 1-й вход сумматора, на 2-й вход модуля отключения обратной связи, на 2-й вход блока обратной связи в каждом блоке конвейерного вычисления;
Figure 00000009
используют номер входящего блока данных как адрес модуля памяти в модуле памяти, извлекают заранее записанную в память модуля памяти значение степени Н в поле GF(2k);
Figure 00000009
подают извлеченное значение на выход модуля памяти;
Figure 00000009
выполняют в сумматоре следующие действия
Figure 00000011
суммируют в поле GF(2k) входящие с 1-го и 2-го входа блоки данных,
Figure 00000011
присваивают результату сложения номер блока данных со 1-го входа,
Figure 00000011
передают этот результат на выход сумматора;
Figure 00000009
передают с выхода модуля памяти блок данных на 1-й вход конвейерного перемножителя;
Figure 00000009
передают с выхода сумматора очередной блок данных на 2-й вход конвейерного перемножителя;
Figure 00000009
вычисляют произведение блоков данных в поле GF(2k) в конвейерном перемножителе, передают его на выход конвейерного перемножителя, при этом присваивают результирующему блоку номер, равный номеру соответствующего входящего блока данных, взятого со 2-го входа конвейерного перемножителя;
Figure 00000009
передают блок данных с выхода конвейерного перемножителя на вход блока накопления и на 1-й вход блока обратной связи;
Figure 00000009
если имеется входящий блок данных на 1-м входе блока обратной связи, то записывают его в буферные регистры FIFO блока обратной связи;
Figure 00000009
если имеется входящий блок данных на 2-м входе блока обратной связи, то
Figure 00000011
считывают из буферного регистра FIFO блока обратной связи очередной блок данных,
Figure 00000011
передают его на выход блока обратной связи;
Figure 00000009
передают блок данных с выхода блока обратной связи на 1-й вход модуля отключения обратной связи;
Figure 00000009
выполняют в модуле отключения обратной связи следующие действия
Figure 00000011
если на 2-й вход поступает блок данных, увеличивают значение счетчика;
Figure 00000011
если значение счетчика больше или равно М, передают на выход блок данных с 1-го входа;
Figure 00000011
если значение счетчика меньше М, передают на выход блок данных, содержащий нули во всех битах;
Figure 00000011
если номер блока данных, поступившего на 2-й вход меньше М, обнуляют значение счетчика;
Figure 00000009
передают блоки данных с выхода модуля отключения обратной связи на 2-й вход сумматора;
Figure 00000009
проверяют наличие данных на входе блока накопления,
Figure 00000011
если на входе имеется блок данных, то
Figure 00000012
если его номер меньше L×М, но больше или равен М, то
Figure 00000013
производят суммирование в поле GF(2k) входящего блока данных и содержимого ячейки памяти блока накопления,
Figure 00000014
записывают результат обратно в ячейку памяти накопления;
Figure 00000012
иначе, если номер входящего блока данных меньше М, то
Figure 00000015
производят суммирование в поле GF(2k) входящего блока данных и содержимого ячейки памяти блока накопления,
Figure 00000016
записывают результат в выход блока накопления,
Figure 00000017
обнуляют содержимое ячейки памяти блока накопления;
Figure 00000009
если на входе блока накопления отсутствует блок данных или если имеется блок данных, но его номер равен L×M, то не передают данные на выход блока накопления;
Figure 00000009
передают блок данных с выхода блока накопления на выход блока конвейерного вычисления;
Figure 00000009
передают блоки данных с выхода блоков конвейерного вычисления на входы блока объединения,
Figure 00000009
проверяют наличие входящих блоков данных в блоке объединения
Figure 00000011
если на входе отсутствуют блоки данных, то помечают выход блока объединения, как не имеющий данных;
Figure 00000011
иначе, если на входе имеются блоки данных, то
Figure 00000012
суммируют в поле GF(2k) блоки данных со всех входов,
Figure 00000012
передают результат суммирования, являющийся значением хэш-функции, на выход блока объединения.
Следует обратить внимание на то, что выражение для
Figure 00000018
можно переписать в следующем виде
Figure 00000019
Учитывая линейность производимых операций, можно раскрыть скобки и собрать М групп членов, сгруппировав по j все члены содержащие SiM+j, причем 0≤j<М. При этом М может быть любым положительным натуральным числом. Применив правило Горнера к каждой из групп отдельно, получим
Figure 00000020
Если правильным образом сгруппировать входящие данные, то можно вычислять М слагаемых (частичных сумм) данного выражения независимо друг от друга, при этом умножать нужно не на H, а на НM, а последний раз в каждом выражении нужно умножать на значения различных степеней Н в зависимости от номера блока данных, который был прибавлен перед умножением - после прибавления последнего блока данных нужно умножать на Н1, после прибавления предпоследнего блока данных - Н2 и т.д.
Различные слагаемые данного выражения можно вычислять на различных параллельно работающих вычислителях, что дает прирост в производительности в М раз за счет увеличения количества устройств в М раз.
Также следует обратить внимание, что различные слагаемые данного выражения можно вычислять не только на различных вычислителях, но и на одном конвейерном вычислителе, в котором различные частичные суммы одновременно обрабатываются в одном вычислителе, но при этом в каждый момент времени находятся на различных каскадах конвейера.
Использование М блоков конвейерной обработки, работающих параллельно, позволяет повысить быстродействие предлагаемого устройства в М раз.
Еще одним методом повышения быстродействия предлагаемого устройства является повышение тактовой частоты работы устройства в L раз за счет применения конвейерного перемножителя, содержащего L каскадов перемножения.
Поскольку сложение в поле Галуа является простейшим побитовым исключающим "или", требует немного ресурсов и быстро выполняется, то основным ограничением на повышение тактовой частоты является перемножитель. Таким образом, если разбить вычисление произведения на несколько каскадов конвейера, тем самым уменьшив длину критических путей распространения сигнала, то можно значительно повысить рабочую тактовую частоту устройства.
Разбиение процедуры перемножения на несколько частей не представляет большой сложности - при перемножении "в столбик" можно разбить суммирование результатов поразрядного перемножения на несколько частей, а при перемножении рекурсивным методом Карацубы, можно, например, завершать очередной каскад конвейера после выполнения сложений алгоритма для более мелких блоков алгоритма и перед началом сложения более крупных. Можно применять и другие разбиения и алгоритмы.
При удачном разбиении критические пути распространения электрических сигналов в схеме будут поделены на L примерно равных частей, и можно добиться повышения частоты в L раз. После разбиения каждому загруженному блоку данных понадобиться L тактов, чтобы пройти всю схему, однако это обстоятельство нивелируется тем фактом, что мы можем загружать в устройство одновременно L блоков данных.
Комбинация описанных приемов повышает быстродействие устройства в L×M раз по сравнению с последовательным вычислением. Таким образом, предложенное устройство вычисляет значение искомой функции за
Figure 00000021
тактов (округление вверх до ближайшего целого значения), каждый из который в L раз короче.
Предложенное устройство допускает возможность выбора целесообразной конфигурации, так, при проектировании устройства для конкретных условий применения, можно выбрать значения М и L, наиболее выгодные для заданных конкретных условий. Например, для достижения заданного быстродействия можно увеличивать количество L каскадов конвейерного перемножителя, увеличивая, тем самым, максимально возможную частоту работы устройства, до тех пор, пока другие технологические факторы не станут ограничивать дальнейший рост частоты. Затем можно увеличивать количество блоков конвейерного вычисления М до достижения требуемой производительности.
Частный случай выполнения устройства предусматривает, что на вход подаются блоки данных, дополнительно содержащие флаг K, причем для блоков данных, принадлежащих первому обрабатываемому кадру данных, флаг K имеет нулевое значение, а для блоков данных всех последующих кадров данных флаг K установлен по следующему правилу:
Figure 00000009
если хэш-функция для следующего кадра данных должна быть рассчитана на том же значении полинома Н, что и хэш-функция для предыдущего кадра данных, то значение флага K для всех блоков данных следующего кадра данных установлено в то же значение, что и значение флага K для блоков данных предыдущего кадра данных;
Figure 00000009
иначе, значение флага K для всех блоков данных следующего кадра данных установлено в значение, противоположное значению флага K для блоков данных предыдущего кадра данных;
при этом в устройстве
Figure 00000009
имеется дополнительный независимый модуль памяти в каждом блоке конвейерного вычисления, подключенный параллельно имеющемуся модулю памяти;
Figure 00000009
в каждом блоке конвейерного вычисления блоки данных поступают в модуль памяти, если флаг K равен нулю, или в дополнительный модуль памяти, если флаг K равен единице.
Наличие дополнительного модуля памяти позволяет в предложенном частном случае выполнения устройства обрабатывать различные кадры данных, используя различные значения полинома Н хэш-функции без остановки работы устройства для загрузки нового полинома Н хэш-функции в модули памяти блока конвейерного вычисления, поскольку, в то время как для обработки блоков данных кадра данных используется модуль памяти блока конвейерного вычисления, значения нового полинома Н хэш-функции может быть загружено в дополнительный модуль памяти блока конвейерного вычисления и наоборот.
Это позволяет повысить быстродействие устройства в случае, когда от устройства требуется обработка кадров данных с использованием различных полиномов хэш-функции Н.
Разработчик, проектирующий предложенное устройство, может принять решение о целесообразности введения дополнительного модуля памяти на основе данных об увеличении стоимости устройства из-за наличия дополнительного модуля памяти, а также из анализа необходимой частоты смены полинома Н хэш-функции и анализа того, насколько простой устройства во время смены полинома Н хэш-функции снижает производительность устройства.
При наличии дополнительных модулей памяти в каждом блоке конвейерного вычисления реализуется также частный случай способа, в котором, на этапе передачи входящих блоков данных на вход модуля памяти выполняют следующие действия:
Figure 00000009
если входящий блок данных помечен флагом K, равным нулю, то
Figure 00000010
передают входящий блок данных на на вход модуля памяти
Figure 00000010
вычисляют значения степеней следующего полинома Н в поле GF(2k) для следующего кадра данных
Figure 00000010
записывают вычисленные значения степеней полинома Н для следующего кадра данных, в дополнительный модуль памяти блока конвейерного вычисления, причем в ячейку памяти с номером i записывается Нi+1 причем 0≤i<L×М, а в ячейку с номером L×М записывается HLM;
Figure 00000009
если входящий блок данных помечен флагом K, равным единице, то
Figure 00000010
передают входящий блок данных на вход дополнительного модуля памяти,
Figure 00000010
вычисляют значения степеней следующего полинома Н в поле GF(2k) для следующего кадра данных
Figure 00000010
записывают вычисленные значения степеней полинома Н для следующего кадра данных, в модуль памяти блока конвейерного вычисления, причем в ячейку памяти с номером 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 установлен по следующему правилу:
Figure 00000022
если хэш-функция для следующего кадра данных должна быть рассчитана на том же значении полинома Н, что и хэш-функция для предыдущего кадра данных, то значение флага K для всех блоков данных следующего кадра данных установлено в то же значение, что и значение флага K для блоков данных предыдущего кадра данных;
Figure 00000022
иначе, значение флага K для всех блоков данных следующего кадра данных установлено в значение, противоположное значению флага K для блоков данных предыдущего кадра данных;
при этом в устройстве в каждом блоке конвейерного вычисления блоки данных поступают в модуль памяти, если флаг K равен нулю, или в дополнительный модуль памяти, если флаг K равен единице.
Для реализации частного случая выполнения устройства блоки данных текущего кадра данных дополнительно снабжают флагом K, при этом значение флага K заранее устанавливают в соответствии с описанным выше правилом. Дополнительно, в каждом блоке конвейерного вычисления, на этапе передачи входящих блоков данных на вход модуля памяти выполняют следующие действия:
Figure 00000022
если входящий блок данных помечен флагом K, равным нулю, то
Figure 00000010
передают входящий блок данных на вход модуля памяти,
Figure 00000010
вычисляют значения степеней следующего полинома Н в поле GF(2k) для следующего кадра данных
Figure 00000010
записывают вычисленные значения степеней полинома Н для следующего кадра данных, в дополнительный модуль памяти блока конвейерного вычисления, причем в ячейку памяти с номером i записывается Hi+1 причем 0≤i<L×M, а в ячейку с номером L×М записывается HLM.
Figure 00000023
если входящий блок данных помечен флагом K, равным единице, то
Figure 00000010
передают входящий блок данных на вход дополнительного модуля памяти,
Figure 00000010
вычисляют значения степеней следующего полинома Н в поле GF(2k) для следующего кадра данных
Figure 00000010
записывают вычисленные значения степеней полинома Н для следующего кадра данных, в модуль памяти блока конвейерного вычисления, причем в ячейку памяти с номером 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-го входа блока обратной связи.
RU2017143805A 2017-12-14 2017-12-14 Способ и устройство для вычисления хэш-функции RU2666303C1 (ru)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 密码研究公司 保护并行乘法运算免受外部监测攻击

Patent Citations (5)

* Cited by examiner, † Cited by third party
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