Способ обеспечения передачи зашифрованных данных в цифровой системе передачи данных (варианты)
METHOD OF PROVIDING TRANSMISSION OF ENCRYPTED DATA IN A DIGITAL DATA TRANSMISSION SYSTEM (VERSIONS)

Область техники, к которой относится изобретение
Предполагаемое изобретение относится к вычислительной технике и, в частности, к способам обеспечения правильности расшифрования данных, передающихся через цифровую систему передачи данных.
Уровень техники
Широко используемые режимы шифрования, такие как режим простой замены с зацеплением, режим гаммирования с обратной связью по шифротексту, режим обратной связи по выходу и режим счетчика с аутентификацией Галуа (GCM) требуют знания синхропосылки для правильного расшифрования сообщения. Синхропосылку также называют начальным значением, значением криптосинхронизации или инициализационным вектором. Синхропосылка используется для инициализации начального состояния шифратора, и использование неправильного значения синхропосылки при расшифровании приводит к тому, что данные будут расшифрованы неправильно. В случае совмещенных режимов, например, GCM, при использовании неправильной синхропосылки сообщение будет неправильно расшифровано, и у него не сойдется имитовставка. Сообщения, у которых не совпали имитовставки, должны быть удалены как не прошедшие проверку на аутентичность.
При этом синхропосылка не является секретной информацией и может передаваться по открытым каналам связи, поскольку знание синхропосылки не дает атакующему возможности расшифровать сообщение без знания ключа шифрования.
Передача синхропосылки вместе с зашифрованным сообщением занимает ресурс канала передачи данных и снижает объем полезных данных, который можно передать по этому каналу.
Известен способ передачи переменных параметров аутентификации от передающей стороны к принимающей стороне (патент РФ №2273102, приоритет от 30.09.1999 г.), включающий
генерирование значения криптосинхронизации на передающей стороне,
генерирование первой сигнатуры для аутентификации из значения криптосинхронизации и ключа шифрования на передающей стороне,
передачу значения криптосинхронизации и первой сигнатуры для аутентификации к принимающей стороне,
генерирование второй сигнатуры для аутентификации из значения криптосинхронизации и ключа шифрования на принимающей стороне,
приращение значения криптосинхронизации на принимающей стороне, если первая сигнатура для аутентификации и вторая сигнатура для аутентификации совпадают, и
запрос обмена ключами шифрования, если первая сигнатура для аутентификации и вторая сигнатура для аутентификации не совпадают.
В соответствии с известным способом требуется передача значения криптосинхронизации для ее проверки на принимающей стороне, что приводит к увеличению объема данных, передаваемых с каждым кадром.
Некоторым видоизменением описанного выше является способ синхронизации значений криптосинхронизации алгоритма шифрования на передающей стороне и на принимающей стороне, включающий
передачу кадра зашифрованного сообщения к принимающей стороне,
проверку текущего значения криптосинхронизации, связанного с кадром зашифрованного сообщения, на принимающей стороне,
приращение текущего значения криптосинхронизации на передающей стороне и принимающей стороне, если текущее значение криптосинхронизации прошло проверку, и
передачу от принимающей стороны к передающей стороне сообщения отказа, если текущее значение криптосинхронизации не прошло проверку.
При этом этап проверки текущего значения криптосинхронизации может содержать
декодирование множества битов проверки циклическим избыточным кодом (ЦИК) передачи, где биты ЦИК передачи предназначены для определения ошибок передачи, и
декодирование множества кодированных битов ЦИК, где закодированные биты ЦИК предназначены для определения, совпадает ли текущее значение криптосинхронизации, генерированное на принимающей стороне со значением криптосинхронизации, генерированным на передающей стороне.
В этом способе к каждому кадру данных необходимо добавлять дополнительное поле, содержащее биты ЦИК, что тоже увеличивает объем передаваемых данных.
Также оба описанных способа требуют отправки сообщения отказа, если значение криптосинхронизации не прошло проверку, поскольку значение криптосинхронизации может быть увеличено, только если текущее значение криптосинхронизации прошло проверку на приемной стороне. Это накладывает ограничение на возможную скорость передачи данных, поскольку передающая сторона должна убедиться в отсутствии сообщения отказа на предыдущее посланное сообщение перед посылкой следующего сообщения и является еще одним недостатком известных способов.
Известен также способ передачи сигнала в системе связи (патент РФ №2384000, приоритет от 11.01.2005 г.), содержащий этапы
генерации второй информации шифрования с использованием первой информации шифрования, когда генерируются данные для передачи; шифрования данных с использованием второй информации шифрования и третьей информации шифрования; и
генерации и передачи сигнала, который включает в себя зашифрованные данные и первую информацию шифрования, при этом первая информация шифрования соответствует счетчику прокрутки, причем счетчик прокрутки получает приращение при увеличении номера кадра системы связи, и третья информация шифрования представляет собой ключ шифрования трафика (МТК) услуги групповой и широковещательной передачи (MBS).
Известный способ неустойчив к потере кадров данных во время передачи по системе связи, а также к добавлению кадров данных в канал передачи данных другими устройствами.
При потере кадра данных счетчик прокрутки увеличивается на передающей стороне после передачи кадра, но не увеличивается на принимающей стороне, поскольку кадр данных переданный передающей стороной не дошел до принимающей стороны. Во время передачи следующего кадра данных счетчики прокрутки на принимающей стороне и на передающей стороне будут отличаться, и кадр данных будет расшифрован неверно.
Также возможна ситуация, когда в системе связи, через которую производится передача зашифрованных кадров, работают другие устройства. В этом случае если принимающая сторона примет кадр данных, предназначенный не ей, или широковещательный кадр, или специально сформированный атакующей стороной кадр данных, который не был послан передающей стороной, то на принимающей стороне счетчик прокрутки будет увеличен, в то время как на передающей стороне счетчик прокрутки останется прежним. В этом случае принимающая сторона неверно расшифрует следующий кадр данных, отправленный передающей стороной, поскольку счетчики прокрутки на принимающей и передающей сторонах отличаются, что является еще одним недостатком известного способа.
Известный способ принимается за прототип.
Раскрытие изобретения
Техническим результатом является
1) отсутствие необходимости передавать дополнительные биты данных с каждым кадром данных для обеспечения правильности расшифрования кадров данных,
2) сохранение устойчивости компьютера, принимающего зашифрованные кадры, к приему посторонних кадров, не являющихся кадрами, отправленными компьютером, отправляющим защищенные сообщения,
3) возможность восстановления правильности приема кадров после потери кадра в системе передачи данных.
Дополнительным техническим результатом для второго варианта предложенного способа является повышение производительности при обработке принятых кадров.
Для этого предлагается способ обеспечения передачи зашифрованных данных в цифровой системе передачи данных.
Согласно первому варианту способа обеспечения передачи зашифрованных данных в цифровой системе передачи данных, содержащей
по крайней мере, один компьютер, отправляющий защищенные сообщения в виде последовательности кадров цифровых данных через сеть передачи данных, содержащий таймер для формирования значений текущего времени и выполненный с возможностью
считывать из таймера текущее значение времени,
зашифровывать кадры,
вычислять имитовставку для кадров;
по крайней мере, один компьютер, принимающий защищенные сообщения через сеть передачи данных, содержащий таймер для формирования значений текущего времени и выполненный с возможностью
считывают из таймера текущее значение времени,
расшифровывать кадры,
проверять имитовставку для кадров; при этом размер кадров данных не может быть меньше определенного ненулевого значения L;
способ, заключающийся в том, что
если в компьютере, отправляющем защищенные сообщения, инициализация переменных не проведена, то инициализируют переменные, выполняя следующие действия
выбирают начальное значение синхропосылки М;
присваивают текущему значению синхропосылки служебного кадра IVsf значение М;
присваивают текущему значению синхропосылки кадра данных IVdf значение М;
обнуляют значение С счетчика объема отправленных данных;
задают значение промежутка времени Tm между служебными кадрами;
считывают из таймера текущее значение времени Тс;
вычисляют время отправки предыдущего служебного кадра Ts=Тс - Tm;
выбирают максимальный объем данных Cmax между посылками служебных кадров;
вычисляют максимально возможное количество Z0 кадров данных между служебными кадрами
Z0=max(s*Tm/L, Cmax/L),
где s - максимальная скорость передачи данных через сеть;
вычисляют
Z=Z0+1;
считывают текущее значение времени Тс из таймера компьютера, отправляющего защищенные сообщения;
если
Тс≥Ts+Tm или С≥Cmax,
то отправляют служебный кадр, выполняя следующие действия:
увеличивают значение IVsf на величину Z;
присваивают IVdf значение IVsf;
формируют служебный кадр, содержащий значение IVsf;
вычисляют имитовставку для служебного кадра, используя IVsf в качестве синхропосылки;
добавляют имитовставку к служебному кадру;
передают по назначению служебный кадр через сеть передачи данных;
присваивают Ts=Тс;
обнуляют С;
иначе, если присутствует кадр данных требующий отправки, то обрабатывают этот кадр, выполняя следующие действия
увеличивают значение IVdf на единицу;
зашифровывают кадр данных с использованием IVdf в качестве синхропосылки;
вычисляют имитовставку с использованием IVdf в качестве синхропосылки;
добавляют имитовставку к кадру данных;
увеличивают значение С на объем данных в кадре данных;
передают по назначению зашифрованный кадр данных через сеть передачи данных;
если в компьютере, принимающем защищенные сообщения, инициализация переменных не проведена, то сбрасывают флаг S;
принимают очередной кадр от компьютера, отправляющего защищенные сообщения;
определяют тип кадра;
если кадр на входе компьютера, принимающего защищенные сообщения, является служебным кадром, то
извлекают из служебного кадра значение синхропосылки IVe;
проверяют имитовставку служебного кадра, используя IVe;
если имитовставка служебного кадра совпала, то
присваивают текущему значению синхропосылки служебных кадров IVsr значение IVe;
присваивают текущему значению синхропосылки кадров данных IVdr значение IVsr;
устанавливают флаг S;
удаляют служебный кадр;
иначе, если кадр на входе компьютера, принимающего защищенные сообщения, не является служебным кадром и S=0, то удаляют кадр;
иначе проверяют имитовставку кадра, используя в качестве синхропосылки значение IVx=IVdr+1 и выполняя следующие действия:
если имитовставка не совпала, то удаляют кадр;
иначе, если имитовставка совпала, то
присваивают IVdr значение IVx;
расшифровывают кадр данных с использованием IVdr в качестве синхропосылки;
передают по назначению расшифрованный кадр из компьютера, принимающего защищенные сообщения. Согласно этому способу компьютер, отправляющий защищенные сообщения, отправляет компьютеру, принимающему защищенные сообщения, служебные кадры, содержащие значение синхропосылки для этого служебного кадра, при этом служебные кадры посылаются после отправки определенного объема данных или по истечении определенного времени с отправки предыдущего служебного кадра.
При этом служебные кадры, как и кадры с данными, защищены имитовставкой, обеспечивающей аутентичность этих кадров.
Поскольку компьютер, принимающий защищенные сообщения в соответствии с описанным способом, может вычислить значение синхропосылки для следующего кадра, то он может принять следующий кадр без необходимости передавать дополнительные данные о синхропосылке в каждом кадре данных. Компьютер, принимающий защищенные сообщения, проверяет имитовставки принимаемых кадров, и, поскольку правильную имитовставку можно вычислить, только зная правильный ключ, то при приеме кадра, который был отправлен не компьютером, отправляющим защищенные сообщения, у этого кадра не совпадет имитовставка, и данный кадр будет удален без увеличения значения ожидаемой синхропосылки. Таким образом, обеспечивается устойчивость к приему кадров, отправленным не компьютером, отправляющим защищенные сообщения, и такие кадры не нарушают приема аутентичных кадров.
Предлагаемый способ позволяет восстановить возможность принимать кадры данных после потери одного из них. После потери кадра данных компьютер, принимающий защищенные сообщения, будет использовать неверные синхропосылки при проверке имитовставки у последующих кадров данных и отбрасывать их, поскольку у них не будет совпадать имитовставка. По истечении определенного времени или после передачи определенного объема данных компьютер, отправляющий защищенные сообщения, пошлет очередной служебный кадр, и компьютер, принимающий защищенные сообщения, сможет принять его, поскольку в служебном кадре содержится значение синхропосылки. После этого компьютер, принимающий защищенные сообщения, сможет принимать последующие кадры.
Предложенный способ позволяет не добавлять данные в каждый кадр данных и поэтому позволяет увеличить пропускную способность системы передачи данных по сравнению со способами, требующими добавления дополнительной информации в каждый кадр данных. При этом компьютеру, отправляющему защищенные сообщения, не нужно ожидать в течении установленного промежутка времени подтверждения приема предыдущего кадра или сообщения об отказе, что позволяет повысить скорость передачи данных.
Поскольку после потери кадра компьютер, принимающий защищенные сообщения, может неправильно принять еще некоторое количество кадров, то данный способ предпочтительно применять в системах передачи данных, в которых потеря кадра данных маловероятна.
Согласно второму варианту, предлагается способ обеспечения передачи зашифрованных данных в цифровой системе передачи данных, содержащей
по крайней мере, один компьютер, отправляющий защищенные сообщения в виде последовательности кадров цифровых данных через сеть передачи данных, содержащий таймер для формирования значений текущего времени и выполненный с возможностью
считывать из таймера текущее значение времени,
зашифровывать кадры с использованием режима GCM,
вычислять имитовставку для кадров с использованием режима GCM;
по крайней мере, один компьютер, принимающий защищенные сообщения через сеть передачи данных, содержащий
таймер для формирования значений текущего времени,
блок вычисления хэш-функции GHASH
блок шифрования, выполненный в виде многоступенчатого конвейера;
регистр Q типа FIFO; и выполненный с возможностью
считывают из таймера текущее значение времени,
расшифровывать кадры; при этом размер кадров данных не может быть меньше определенного ненулевого значения L;
способ, заключающийся в том, что
если в компьютере, отправляющем защищенные сообщения, инициализация переменных не проведена, то инициализируют переменные, выполняя следующие действия:
вычисляют А=U+1, где U - максимально возможное количество кадров минимально возможного размера, одновременно находящихся на обработке в блоке шифрования;
выбирают начальное значение синхропосылки М;
присваивают текущему значению синхропосылки служебного кадра IVsf значение М;
присваивают текущему значению синхропосылки кадра данных IVdf значение М;
обнуляют значение С счетчика объема отправленных данных;
задают значение промежутка времени Tm между служебными кадрами;
считывают из таймера текущее значение времени Тс;
вычисляют время отправки предыдущего служебного кадра
Ts=Тс - Tm;
выбирают максимальный объем данных Cmax между посылками служебных кадров;
вычисляют максимально возможное количество Z0 кадров данных между служебными кадрами
Z0 = max(s*Tm/L, Cmax/L),
где s - максимальная скорость передачи данных через сеть;
вычисляют
Z=Z0+1;
считывают текущее значение времени Тс из таймера компьютера, отправляющего защищенные сообщения;
если
Тс≥Ts+Tm или С≥Cmax,
то отправляют служебный кадр, выполняя следующие действия:
увеличивают значение IVsf на величину Z;
присваивают IVdf значение IVsf;
формируют служебный кадр, содержащий значение IVsf;
вычисляют имитовставку для служебного кадра, используя IVsf в качестве синхропосылки;
добавляют имитовставку к служебному кадру;
передают по назначению служебный кадр через сеть передачи данных;
присваивают Ts=Тс;
обнуляют С;
иначе, если присутствует кадр данных, требующий отправки, то обрабатывают этот кадр, выполняя следующие действия:
увеличивают значение IVdf на единицу;
зашифровывают кадр данных с использованием IVdf в качестве синхропосылки;
вычисляют имитовставку с использованием IVdf в качестве синхропосылки;
добавляют имитовставку к кадру данных;
увеличивают значение С на объем данных в кадре данных;
передают по назначению зашифрованный кадр данных через сеть передачи данных;
если в компьютере, принимающем защищенные сообщения, инициализация переменных не проведена, то инициализируют переменные, выполняя следующие действия:
считывают из таймера текущее значение времени Тс;
присваивают значению времени приема предыдущего служебного кадра Tr значение Тс;
выбирают значение промежутка времени Tw;
сбрасывают флаг G;
сбрасывают флаг Р;
считывают из таймера текущее значение времени Тс;
присваивают Tr=Тс;
если Tr≥Tw и G=1, то сбрасывают флаг G;
иначе, если на входе компьютера, принимающего защищенные сообщения, имеется кадр данных, то
определяют тип кадра;
если кадр на входе компьютера, принимающего защищенные сообщения, является служебным кадром и G=0, то
извлекают значение синхропосылки IVe из служебного кадра;
присваивают IVsr значение IVe;
вычисляют
IVsn=IVsr+Z;
устанавливают флаг G;
сбрасывают флаг Р;
вычисляют
32
Es=Е (IVsn || 0),
где Е () - функция зашифрования,
|| - операция конкатенации, причем нижний индекс означает разрядность двоичной записи значения;
если кадр на входе компьютера, принимающего защищенные сообщения, является служебным кадром и G=1, то
вычисляют значение хэш-функции GHASH для служебного кадра;
вычисляют
R=GHASH XOR Ir,
где Ir - значение имитовставки, принятого вместе с кадром,
XOR - операция побитового исключающего "или";
если R=Es, то
присваивают IVsr значение IVsn;
присваивают IVdr значение IVsr;
вычисляют
IVsn=IVsr+Z;
вычисляют
32
Es=Е (IVsn || 0);
если флаг Р сброшен, то
вычисляют
32
Qi=Е (IVdr+i || 0),
где i=1…А;
записывают Qi в регистр Q типа FIFO по мере вычисления;
устанавливают флаг Р;
удаляют служебный кадр;
иначе если кадр на входе компьютера, принимающего защищенные сообщения, не является служебным кадром и при этом G=0 или Р=0, то удаляют кадр;
иначе
вычисляют значение хэш-функции GHASH для кадра;
вычисляют
R=GHASH XOR Ir;
если значение R не равно значению, содержащемуся в начале регистра Q, то удаляют кадр;
иначе
удаляют значение из начала регистра Q;
увеличивают значение IVdr на 1;
вычисляют
32
B=E(IVdr+A || 0);
записывают В в конец регистра Q;
расшифровывают кадр, используя значение IVdr в качестве синхропосылки;
передают по назначению расшифрованный кадр из компьютера, принимающего защищенные сообщения.
Предложенный второй вариант способа предпочтительно применять в случае использования режима шифрования GSM (Morris Dworkin Recommendation for Block Cipher Modes of Operation: Galois/Counter Mode (GCM) and GMAC, 2007, URL: http://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-38d.pdf) и при наличии блока шифрования, выполненного в виде многоступенчатого конвейера (Shylashree N., Nagarjun Bhat and V. Shridhar. FPGA implementations of advanced encryption standard: A survey. International Journal of Advances in Engineering & Technology, May 2012).
Согласно второму варианту предлагаемого способа, компьютер, принимающий защищенные сообщения, после приема служебного кадра вычисляет значение синхропосылки для следующего служебного кадра и использует его для вычисления значения Es, которое потребуется для проверки имитовставки следующего служебного кадра. Компьютер, принимающий защищенные сообщения, после приема кадра данных проверяет имитовставку этого кадра, используя заранее вычисленное значение, хранящееся в регистре Q, и вычисляет синхропосылку одного из следующих кадров данных в соответствии с действиями способа и значение, которое потребуется для проверки имитовставки этого кадра данных. Вычисленное значение записывается в регистр Q.
Для проверки имитовставки в режиме GCM над синхропосылкой необходимо произвести преобразования, включающие вычислительно сложную операцию зашифрования, которая занимает значительное время. При этом для обеспечения устойчивости к приему кадров, отправленных не компьютером, отправляющим защищенные сообщения, необходимо проверять аутентичность каждого принятого кадра данных до того, как увеличивать значение синхропосылки и использовать ее для обработки следующего кадра.
Согласно этому варианту предлагаемого способа, компьютер, принимающий защищенные сообщения, проверяет имитовставку принятого кадра, используя вычисленные заранее значения. Предварительные вычисления позволяют быстро принимать решение об аутентичности принятого кадра и вычислять значение синхропосылки для следующего кадра сразу после этого, избавляя от необходимости ждать окончания процесса шифрования перед началом обработки следующего кадра. Такой прием повышает производительность способа при реализации его в многопроцессорных компьютерах или компьютерах с блоком шифрования в виде многоступенчатого конвейера, где обработка следующего кадра может начаться до полного окончания обработки предыдущего кадра.
Таким образом, второй вариант предложенного способа имеет дополнительный технический результат - повышенная производительность способа при реализации его в многопроцессорных компьютерах или компьютерах с блоком шифрования в виде многоступенчатого конвейера, где обработку следующего кадра можно начать до полного окончания обработки предыдущего кадра.
Осуществление изобретения
Рассмотрим осуществление вариантов предложенного способа.
Способ в первом варианте допускает реализацию как на компьютере, являющимся источником кадров данных, так и на внешнем по отношению к нему устройстве, выполняющем, таким образом, функции криптошлюза. В последнем случае устройство, осуществляющее предложенный способ, может содержать два сетевых интерфейса и принимать кадры данных на один интерфейс, обрабатывать их в соответствии с предложенным способом и отправлять их через другой интерфейс.
В общем случае, в цифровой системе передачи данных может быть несколько компьютеров, одновременно отправляющих разные защищенные сообщения по разным сетевым адресам, и несколько компьютеров, одновременно принимающих разные защищенные сообщения от разных сетевых адресов.
Устройство, реализующее способ, в любом варианте может обслуживать несколько источников кадров данных, подключенных к интерфейсу, принимающему незашифрованные кадры данных.
Компьютер, отправляющий защищенные сообщения, должен содержать таймер для формирования значений текущего времени, что обычно выполняется в любом современном компьютере.
Для реализации всех вычислений и операций, обеспечивающих возможность
считывать из таймера текущее значение времени,
зашифровывать кадры,
вычислять имитовставку для кадров;
в компьютере, отправляющем защищенные сообщения, необходимо предварительно сформировать программу (комплекс программ). Такую программу может сформировать специалист по программированию (программист) на любом известном универсальном языке программирования (например, языке С) на основе приведенных выше соотношений. Затем эта программа устанавливается на компьютере.
Для обеспечения работы по передаче данных, на основе известных характеристик используемой сети передачи данных, определяют максимальную скорость s передачи данных через сеть и минимальный размер L>0 кадров данных, которые могут быть переданы через систему передачи данных. Определяют начальное значение синхропосылки М, задают значение промежутка времени Tm между служебными кадрами и выбирают максимальный объем данных Cmax между посылками служебных кадров в соответствии с желаемым балансом между дополнительной нагрузкой на канал передачи данных и скоростью восстановления приема данных после потери кадра.
Значение промежутка времени Tm и объема данных Cmax между служебными кадрами выбирают в зависимости от вероятности потери кадра в системе передачи данных и в соответствии с требуемым соотношением между возможным количеством потерянных кадров и объемом служебных данных, передаваемом по системе передачи данных. При этом необходимо учитывать, что увеличение значений Tm и Cmax приводит к снижению объема служебных данных, передаваемого по системе передачи данных, однако, при потере кадра в системе передачи данных, это может приводить к потере большего количества кадров данных до восстановления нормального приема кадров. Для оценки можно исходить из того, что при потере кадра данных прием кадров нарушатся в среднем на Tm/2 при низкой занятости системы передачи данных или на Cmax/(2s) при высокой занятости системы передачи данных. Также учитывают, что значение Tm не следует выбирать меньше разброса времени доставки кадров в системе передачи данных, поскольку иначе возможны сбои передачи, вызванные преждевременным сбросом флага S.
При осуществлении второго варианта способа не следует выбирать Tm меньше, чем время прохождения блока данных через блок шифрования, а выбирать Cmax следует таким образом, что бы Cmax/s было больше, чем время прохождения блока данных через блок шифрования.
Например, если планируется передача защищенных данных через локальную сеть типа Ethernet, то могут быть выбраны значения L=86 байта (64 байта - минимальный кадр Ethernet, 8 байт - преамбула кадра, 12 байт - минимальный промежуток между кадрами), М=0, Cmax=262144 байта, Tm=20 мс при максимальной скорости передачи данных s=10 Гбит/с. Значение L выбрано в соответствии со спецификацией Ethernet, причем учитываются все байты, занятые в системе передачи данных кадром, включая обязательный промежуток между кадрами и преамбулу кадра. Значение М выбрано равным нулю, это значение допустимо, но важно, чтобы оно было выбрано одинаковым для компьютера, передающего защищенные сообщения, и компьютера принимающего защищенные сообщения. Значение Cmax выбрано опытным путем, значение Tm выбрано равным 20 мс, потому что передача данных с задержкой кадров больше 20 мс оценивается как маловероятная, и при этом данное время является приемлемым временем восстановления приема кадров.
Выбранные значения заносятся в программу определенного компьютера, отправляющего защищенные сообщения. Для другого компьютера, отправляющего защищенные сообщения, в системе, в зависимости от планируемой передачи защищенных данных, начальные значения могут быть другими.
Компьютеры, отправляющий защищенные сообщения, работают независимо от компьютеров, принимающих защищенные сообщения, и могут не иметь информации о том, происходит ли прием отправленных кадров данных. При этом компьютер, отправляющий защищенные сообщения, может отправлять кадры по нескольким адресам, если в системе передачи данных присутствует несколько компьютеров, принимающих защищенные сообщения. Кроме того, компьютер, отправляющий защищенные сообщения, может отправлять широковещательные кадры, если количество компьютеров, принимающих защищенные сообщения в системе передачи данных неизвестно или неизвестны их адреса. В этом случае каждый из компьютеров, принимающих защищенные сообщения, должен независимо выполнять действия способа, относящиеся к компьютеру, принимающему защищенные сообщения.
Для реализации всех вычислений и операций, обеспечивающих возможность
считывать из таймера текущее значение времени,
зашифровывать кадры,
расшифровывать кадры,
вычислять имитовставку для кадров,
проверять имитовставку для кадров,
в компьютере, принимающем защищенные сообщения, необходимо также предварительно сформировать программу (комплекс программ). Такую программу может сформировать специалист по программированию (программист) на любом известном универсальном языке программирования (например, языке С) на основе приведенных выше соотношений. Затем эта программа устанавливается на компьютере.
Также для обеспечения работы по передаче данных в компьютере, принимающем защищенные сообщения, при инициализации сбрасывают флаг S. Флаг представляет собой, в самом простом случае, значение единицы (если флаг установлен) или нуля (если флаг сброшен).
Затем запускают программы в компьютерах, отправляющих и принимающих защищенные сообщения, и начинают выполнение действий способа, заключающегося в том, что
если в компьютере, отправляющем защищенные сообщения, инициализация переменных не проведена, то инициализируют переменные, выполняя следующие действия
выбирают начальное значение синхропосылки М;
присваивают текущему значению синхропосылки служебного кадра IVsf значение М;
присваивают текущему значению синхропосылки кадра данных IVdf значение М;
обнуляют значение С счетчика объема отправленных данных;
задают значение промежутка времени Tm между служебными кадрами;
считывают из таймера текущее значение времени Тс, при этом таймер компьютера отправляющего защищенные сообщения может быть не синхронизирован с таймером компьютера принимающего защищенные сообщения, поскольку таймеры используются не для определения времени, а для определения промежутков времени;
вычисляют время отправки предыдущего служебного кадра
Ts=Тс - Tm;
выбирают максимальный объем данных Cmax между посылками служебных кадров;
вычисляют максимально возможное количество Z0 кадров данных между служебными кадрами
Z0=max(s*Tm/L, Cmax/L),
где s - максимальная скорость передачи данных через сеть;
вычисляют
Z=Z0+1;
считывают текущее значение времени Тс из таймера компьютера, отправляющего защищенные сообщения;
если
Тс≥Ts+Tm или С≥Cmax,
то отправляют служебный кадр, выполняя следующие действия:
увеличивают значение IVsf на величину Z, при этом увеличение IVsf на Z гарантирует, что ни один из предыдущих кадров данных не использовал синхропосылку, равную увеличенному значению IVsf, поскольку Z выбрано большим, чем максимально возможное количество кадров между двумя служебными кадрами;
присваивают IVdf значение IVsf, при этом данное действие обеспечивает то, что синхропосылки кадров данных, следующих за данным служебным кадром, будут больше, чем IVsf;
формируют служебный кадр, содержащий значение IVsf;
вычисляют имитовставку для служебного кадра, используя IVsf в качестве синхропосылки;
добавляют имитовставку к служебному кадру, при этом предпочтительно добавлять имитовставку к концу служебного кадра;
передают по назначению служебный кадр через сеть передачи данных;
присваивают Ts=Тс;
обнуляют С;
иначе, если присутствует кадр данных требующий отправки, то обрабатывают этот кадр, выполняя следующие действия
увеличивают значение IVdf на единицу, что обеспечивает уникальность синхропосылок и их предсказуемость;
зашифровывают кадр данных с использованием IVdf в качестве синхропосылки;
вычисляют имитовставку с использованием IVdf в качестве синхропосылки;
добавляют имитовставку к кадру данных, при этом предпочтительно добавлять имитовставку к концу кадра данных;
увеличивают значение С на объем данных в кадре данных;
передают по назначению зашифрованный кадр данных через сеть передачи данных.
В компьютере, принимающем защищенные сообщения, независимо от компьютера, отправляющего защищенные сообщения, производят следующие действия:
если в компьютере, принимающем защищенные сообщения, инициализация переменных не проведена, то сбрасывают флаг S, при этом сброшенный флаг S гарантирует, что кадры данных будут отбрасываться до тех пор, пока компьютер, принимающий защищенные сообщения, не будет полностью готов к приему кадров;
принимают очередной кадр от компьютера, отправляющего защищенные сообщения;
определяют тип кадра;
если кадр на входе компьютера, принимающего защищенные сообщения, является служебным кадром, то
извлекают из служебного кадра значение синхропосылки IVe;
проверяют имитовставку служебного кадра, используя IVe;
если имитовставка служебного кадра совпала, то
присваивают текущему значению синхропосылки служебных кадров IVsr значение IVe;
присваивают текущему значению синхропосылки кадров данных IVdr значение IVsr;
устанавливают флаг S;
удаляют служебный кадр;
иначе, если кадр на входе компьютера, принимающего защищенные сообщения, не является служебным кадром и S=0, то удаляют кадр;
иначе проверяют имитовставку кадра, используя в качестве синхропосылки значение IVx=IVdr+1 и выполняя следующие действия:
если имитовставка не совпала, то удаляют кадр;
иначе, если имитовставка совпала, то
присваивают IVdr значение IVx;
расшифровывают кадр данных с использованием IVdr в качестве синхропосылки;
передают по назначению расшифрованный кадр из компьютера, принимающего защищенные сообщения.
Способ во втором варианте предпочтительно реализовать на специализированном компьютере, содержащего блок вычисления функции GHASH (Morris Dworkin Recommendation for Block Cipher Modes of Operation: Galois/Counter Mode (GCM) and GMAC, 2007,
URL: http://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-38d.pdf), таймер, блок шифрования, выполненный в виде многоступенчатого конвейера, регистр Q типа FIFO.
Блок шифрования реализован в виде многоступенчатого конвейера с возможностью подавать в него блоки данных для зашифровывания на каждый такт. Данное устройство блока шифрования позволяет зашифровывать в данном блоке шифрования одновременно Z блоков данных, где Z - количество ступеней в конвейере блока шифрования. Блок шифрования реализован таким образом, что бы в нем одновременно могли обрабатываться блоки данных различных кадров. Для этого можно, например, снабжать блоки данных метаинформацией о принадлежности данного блока данных к конкретному кадру данных или реализовать внешний по отношению к блоку шифрования блок, ведущий учет блоков данных, переданных в блок шифрования, и определяющий на основе этой информации принадлежность блоков данных, выходящих из блока шифрования.
Предложенный способ во втором варианте не использует для проверки имитовставки принятого кадра значений, полученных путем зашифрования данных, извлеченных из проверяемого кадра. Вместо этого используются заранее вычисленные и хранящиеся в регистре Q значения. Это снижает требования к времени зашифрования блоков данных в блоке шифрования и позволяет использовать блок шифрования, выполненный в виде многоступенчатого конвейера, что, в свою очередь, позволяет повысить производительность блока шифрования за счет конвейеризации и одновременного зашифрования нескольких блоков данных на различных ступенях конвейера.
Для реализации всех вычислений и операций, обеспечивающих возможность
считывать из таймера текущее значение времени,
зашифровывать кадры с использованием режима GCM,
вычислять имитовставку для кадров с использованием режима GCM;
зашифровывать кадры
расшифровывать кадры,
вычислять хэш-функцию GHASH выбирают компьютер, содержащий
таймер для формирования значений текущего времени,
блок вычисления хэш-функции GHASH
блок шифрования, выполненный в виде многоступенчатого конвейера,
регистр Q типа FIFO;
в компьютере, принимающем защищенные сообщения, необходимо также предварительно сформировать программу (комплекс программ). Такую программу может сформировать специалист по программированию (программист) на любом известном универсальном языке программирования (например, языке С) на основе приведенных выше соотношений. Затем эта программа устанавливается на специализированном компьютере.
Затем запускают программы в компьютерах, отправляющих и принимающих защищенные сообщения, и начинают выполнение действий способа, заключающегося в том, что
если в компьютере, отправляющем защищенные сообщения, инициализация переменных не проведена, то инициализируют переменные, выполняя следующие действия:
вычисляют А=U+1, где U - максимально возможное количество кадров минимально возможного размера, одновременно находящихся на обработке в блоке шифрования;
выбирают начальное значение синхропосылки М;
присваивают текущему значению синхропосылки служебного кадра IVsf значение М;
присваивают текущему значению синхропосылки кадра данных IVdf значение М;
обнуляют значение С счетчика объема отправленных данных;
задают значение промежутка времени Tm между служебными кадрами;
считывают из таймера текущее значение времени Тс;
вычисляют время отправки предыдущего служебного кадра
Ts=Тс - Tm;
выбирают максимальный объем данных Cmax между посылками служебных кадров;
вычисляют максимально возможное количество Z0 кадров данных между служебными кадрами
Z0=max(s*Tm/L, Cmax/L),
где s - максимальная скорость передачи данных через сеть;
вычисляют
Z=Z0+1;
считывают текущее значение времени Тс из таймера компьютера, отправляющего защищенные сообщения;
если
Тс≥Ts+Tm или С≥Cmax,
то отправляют служебный кадр, выполняя следующие действия:
увеличивают значение IVsf на величину Z;
присваивают IVdf значение IVsf;
формируют служебный кадр, содержащий значение IVsf;
вычисляют имитовставку для служебного кадра, используя IVsf в качестве синхропосылки;
добавляют имитовставку к служебному кадру;
передают по назначению служебный кадр через сеть передачи данных;
присваивают Ts=Тс;
обнуляют С;
иначе, если присутствует кадр данных, требующий отправки, то обрабатывают этот кадр, выполняя следующие действия:
увеличивают значение IVdf на единицу;
зашифровывают кадр данных с использованием IVdf в качестве синхропосылки;
вычисляют имитовставку с использованием IVdf в качестве синхропосылки;
добавляют имитовставку к кадру данных;
увеличивают значение С на объем данных в кадре данных;
передают по назначению зашифрованный кадр данных через сеть передачи данных;
В компьютере, принимающем защищенные сообщения, независимо от компьютера, отправляющего защищенные сообщения, производят следующие действия:
если в компьютере, принимающем защищенные сообщения, инициализация переменных не проведена, то инициализируют переменные, выполняя следующие действия:
считывают из таймера текущее значение времени Тс;
присваивают значению времени приема предыдущего служебного кадра Tr значение Тс;
выбирают значение промежутка времени Tw;
сбрасывают флаг G;
сбрасывают флаг Р;
считывают из таймера текущее значение времени Тс;
присваивают Tr=Тс;
если Tr≥Tw и G=1, то сбрасывают флаг G;
иначе, если на входе компьютера, принимающего защищенные сообщения, имеется кадр данных, то
определяют тип кадра;
если кадр на входе компьютера, принимающего защищенные сообщения, является служебным кадром и G=0, то
извлекают значение синхропосылки IVe из служебного кадра;
присваивают IVsr значение IVe;
вычисляют IVsn=IVsr+Z;
устанавливают флаг G;
сбрасывают флаг Р;
вычисляют
32
Es=E(IVsn || 0),
где Е () - функция зашифрования,
|| - операция конкатенации, причем нижний индекс означает разрядность двоичной записи значения.
При этом значение Es не используется для обработки данного служебного кадра, а будет использовано при обработке следующего служебного кадра, при этом блок шифрования успеет зашифровать значение IVsn || 032, поскольку компьютер, отправляющий защищенные сообщения, отправляет служебные кадры только по истечению времени Tm с момента отправки предыдущего служебного кадра или после отправки Cmax байт данных.
Затем
если кадр на входе компьютера, принимающего защищенные сообщения, является служебным кадром и G=1, то
вычисляют значение хэш-функции GHASH для служебного кадра, при этом хэш-функция может вычисляться на отдельном процессоре или специализированном блоке вычисления функции GHASH;
вычисляют
R=GHASH XOR Ir,
где Ir - значение имитовставки, принятого вместе с кадром,
XOR - операция побитового исключающего "или";
если R=Es, то данный кадр прошел проверку имитовставки и данные из этого кадра используются следующим образом:
присваивают IVsr значение IVsn;
присваивают IVdr значение IVsr;
вычисляют значение синхропосылки для следующего ожидаемого служебного кадра
IVsn=IVsr+Z;
вычисляют
32
Es=Е (IVsn || 0)
(при этом значение Es не используется для обработки данного служебного кадра, что позволяет обработать данный кадр и начать обработку следующих кадров данных до того, как блок шифрования закончит вычисление значения Es; далее Es будет использовано при обработке следующего служебного кадра, при этом блок шифрования успеет зашифровать значение IVsn || 032 к тому времени);
если флаг Р сброшен, то
вычисляют
32
Qi=Е (IVdr+i || 0),
где i=1…А;
записывают Qi в регистр Q типа FIFO по мере вычисления (при этом значения из регистра Q не используются для обработки данного служебного кадра, что позволяет обработать данный кадр и начать обработку следующих кадров данных до того, как блок шифрования закончит вычисление значения Qi; значения, хранящиеся в регистре Q, являются «запасом» значений, которые понадобятся для проверки имитовставок следующих А кадров данных);
устанавливают флаг Р;
удаляют служебный кадр;
иначе если кадр на входе компьютера, принимающего защищенные сообщения, не является служебным кадром и при этом G=0 или Р=0, то удаляют кадр (данное действие гарантирует, что кадры данных не будут приняты, если компьютер, принимающий защищенные сообщения, не готов проверить аутентичность кадров и правильно их расшифровать); иначе
вычисляют значение хэш-функции GHASH для кадра;
вычисляют R=GHASH XOR Ir;
если значение R не равно значению, содержащемуся в начале регистра Q, то удаляют кадр;
иначе
удаляют значение из начала регистра Q;
увеличивают значение IVdr на 1;
вычисляют
32
B=E(IVdr+A || 0);
записывают В в конец регистра Q (при этом значения В не используются для обработки данного кадра данных, что позволяет обработать данный кадр и начать обработку следующих кадров данных до того, как блок шифрования закончит вычисление значения В; значения В являются значением, которое понадобятся в будущем, для проверки имитовставки кадра данных, следующего через А-1 кадров данных);
расшифровывают кадр, используя значение IVdr в качестве синхропосылки;
передают по назначению расшифрованный кадр из компьютера, принимающего защищенные сообщения.
Реализовать предложенный способ с помощью устройства в виде специализированного компьютера, выполняющего данный способ, или в виде интегральной схемы, выполняющей данный способ в составе специализированного компьютера, или в виде блока, выполненного на базе программируемой логической интегральной схемы (ПЛИС), может специалист в области вычислительной техники и/или проектирования цифровых интегральных схем.
Необходимо отметить, что возможны и другие варианты реализации предложенного способа, отличающиеся от описанной выше и зависящие от экономических соображений, доступности электронных компонентов, требований к исполнению устройства с точки зрения устойчивости к внешним воздействиям и предпочтений разработчиков.