Способ определения подлинности передаваемых командных слов
Иллюстрации
Показать всеИзобретение относится к вычислительной технике и может быть использовано для аутентифицированной передачи данных между управляющей программой и аппаратным средством ЭВМ. Техническим результатом является обеспечение подлинности передачи командных слов от легального источника в устройство при одновременном обеспечении защиты от перехвата и «подмены» передаваемых командных слов. Способ заключается в передаче командных слов, объединенных в пулы, передаваемые в ограниченные промежутки времени. Каждый пул анализируется, и в случае обнаружения командных слов, выданных посторонними источниками, формируется запрос на повторную передачу всего пула. Это, с одной стороны, повышает надежность информационного обмена между источником и приемником, а с другой - повышает вероятность так называемых атак типа «отказ в обслуживании». Для предотвращения возможности осуществления таких атак настоящий способ предусматривает возможность выделения из множества получаемых приемником командных слов тех, которые выданы легальным источником для снижения вероятности запроса на повторную передачу пулов командных слов. 5 ил.
Реферат
Изобретение относится к вычислительной технике и может быть применено для аутентифицированной передачи данных между управляющей программой и аппаратным средством электронной вычислительной машины (ЭВМ).
Во время работы на ЭВМ пользователя необходимо, чтобы аппаратная компонента получала данные только от соответствующего ему программного обеспечения. В противном случае данные, получаемые от посторонних программ (неважно, является ли это случайным событием или действием каких-либо деструктивных программ), могут быть восприняты и обработаны устройством, что может привести к ошибкам в работе устройства или даже полной утрате им своей функциональности. Изобретение позволяет осуществлять аутентифицированную передачу данных между управляющей программой и аппаратным средством в условиях, когда на канал связи накладываются некоторые ограничения, связанные с тем, что длина слова, передаваемого в аппаратное средство, обычно ограничена разрядностью портов контроллера и стандартом интерфейса.
Известен способ передачи и приема сообщения с обеспечением подлинности (патент №2027311, МПК 6 H04K 1/00, опубликован 20.01.1995). Для обеспечения подлинности в нем предусматривается перед отправлением сообщения по каналу связи разделение сообщения на несколько блоков определенной длины, получение проверочной последовательности путем шифрования и преобразования сообщения в соответствии с секретным ключом и функцией преобразования, отправление сообщения и проверочной последовательности адресату по каналу связи, получение адресатом сообщения и проверочной последовательности, формирование на стороне адресата проверочной последовательности путем преобразования принятого сообщения в соответствии с секретным ключом и функцией преобразования, в случае совпадения сформированной проверочной последовательности с принятой проверочной последовательностью сообщение принимается как достоверное.
Недостатком данного способа является необходимость применения алгоритма шифрования DES в процессе выработки проверочной последовательности, что влечет за собой большие временные затраты на операции шифрования/дешифрования. Другим недостатком является необходимость дополнительной информационной избыточности при передаче контрольной последовательности.
В качестве прототипа выбран способ передачи и приема с обеспечением подлинности сообщения без его шифрования (патент №2027310, МПК 6 H04K 1/00, опубликован 20.01.1995). Для обеспечения подлинности в нем предусматривается перед отправлением сообщения по каналу связи разделение сообщения на несколько блоков определенной длины, формирование двух псевдослучайных последовательностей (ПСП) с их разделением на блоки такой же длины, как и длина блоков сообщения, формирования аутентификатора путем необратимого преобразования результата поразрядного сложения блоков сообщения, блоков первой ПСП и второй ПСП, отправки сообщения и аутентификатора адресату, получение адресатом сообщения и аутентификатора, формирование на стороне адресата аутентификатора из полученного сообщения и, в случае совпадения сформированного аутентификатора с принятым аутентификатором сообщение принимается как достоверное.
Недостатком данного способа является необходимость формирования дополнительных ПСП, которые не несут в себе никакой «полезной информации». Другим недостатком является необходимость дополнительной информационной избыточности, соизмеримой с длиной одного блока при передаче аутентификатора.
Целью изобретения является обеспечение подлинности передачи командных слов (КС) от легального источника в устройство при одновременном обеспечении защиты от перехвата и «подмены» передаваемых КС. Настоящий способ заключается в передаче КС, объединенные в пулы, передаваемые в ограниченные промежутки времени. Каждый пул анализируется, и если в нем были найдены КС, выданные посторонними источниками, то формируется запрос на повторную передачу всего пула. Это, с одной стороны, повышает надежность информационного обмена между источником и приемником, а с другой - повышает вероятность так называемых атак типа «отказ в обслуживании». Для предотвращения возможности осуществления таких атак настоящий способ предусматривает возможность выделения из множества получаемых приемником КС тех, которые выданы легальным источником для снижения вероятности запроса на повторную передачу пулов КС.
На этапе передачи КС из источника в приемник формируется пул командных слов, которые обозначим как Si. Каждое КС легального источника Si состоит из информационной части - данных, непосредственно обрабатываемых приемником, и небольшой по объему имитоприставки , сформированной из всех переданных ранее информационных частей КС, :
где Fхеш - функция криптографического хеширования нескольких слов и формирования из произвольного объема данных заданной по размеру имитоприставки. Формат КС, воспринимаемого приемником, выглядит, как показано на фиг. 1. Для каждого КС вычисляется его порядковый номер i в пуле КС. Каждое КС перед отправкой в приемник подлежит преобразованию в соответствии с секретным словом Ssec для исключения возможности перехвата Si и i в открытом виде. Перед отправкой КС в приемник источник выполняет следующую последовательность действий:
1) формирует слово i′ = F A (S sec , i);
2) формирует слово ;
3) формирует слово ;
4) отправляет в приемник слово
Приемник, в свою очередь, выполняет следующие операции:
1) определяет номер ;
2) определяет слово ;
3) определяет содержимое полученного КС ;
где: FA (В, А) - необратимое преобразование; FB (А, В) и FC (В, А) - обратимые преобразования слова А в соответствии с ключом В, в результате которых длина получаемого слова равна длине слова А.
и - преобразования, обратные FB (А, В) и FC (В, А) соответственно.
Все получаемые приемником слова буферизируются до того момента, пока приемник не получит стоп-слово, получение которого означает, что весь пул КС был передан. Назовем номер iпр, выделенный приемником из поступившего КС, ярусом командного слова. В случае, если полученное КС выдано легальным источником, то iпр=i. В то же время в буфере командных слов может одновременно присутствовать несколько слов с одинаковым ярусом. Причиной этому может послужить отправка приемнику КС посторонним источником. Для каждого слова, поступающего в буфер, запоминается его порядковый номер j с начала текущего пула. В случае, когда посторонние источники командных слов отсутствуют, выполняется равенство j=iпр=m, где m - максимальный ярус слов, записанных в буфере. В общем же случае (когда в буфере есть посторонние КС) j ≥ iпр, j ≥ m, m ≥ iпр. Условие записи вновь поступившего КС в буфер на ярус iпр выглядит следующим образом:
В противном же случае слово игнорируется. Описываемая ситуация представлена на фиг. 2.
После распределения всех полученных КС по ярусам с каждого из ярусов приемник выбирает по одному слову и составляет из него пул КС, выданных легальным источником.
Пусть Sj,r - слово, поступившее в приемник j-м с начала текущего пула и определенное на r-й ярус, - его информационная часть, - его имитоприставка. Тогда необходимо построить цепочку из М слов при одновременном соблюдении условий:
;
, где r = 2…М.
Из данных условий выводится алгоритм выбора из буфера слов легального источника, который сводится к поочередному выбору слов с ярусов буфера и проверки их номеров и имитоприставок.
Все М слов, выданные легальным источником в текущем пуле, при условии отсутствия сбоев в интерфейсных линиях всегда образуют цепочку, удовлетворяющую вышеописанному условию. При условии отсутствия коллизий все КС легального источника будут опознаны и обработаны, то есть невозможна потеря отдельных слов цепочки и замена их словами посторонних источников. Коллизией при выборе КС называется ситуация, при которой помимо цепочки из легальных КС будет сформирована альтернативная цепочка, в которой КС, выданные посторонним источником, могут быть приняты за КС, выданные легальным источником. Простейшая коллизия, когда при выполнении алгоритма выбора КС из буфера образуется 2 цепочки, приведена на фиг. 3, где - КС легального источника, j(1)-j(M) - номера, под которыми 1-e … М - e КС легального источника были записаны в буфер, e - номер яруса, на котором возникла коллизия, - слово постороннего источника, p - номер, под которым постороннее слово поступило в буфер.
Подобная коллизия может возникнуть при выполнении следующих условий:
;
где k=(e+1)…M;
j(e-1) < p < j(e+1).
В этом случае результатом работы алгоритма выбора КС из буфера будут две цепочки КС:
- первая (правильная) - ;
- вторая (ложная) - .
Следует отметить, что слова, принятые приемником, не рассматриваются по отдельности, а только как неотъемлемая часть цепочки из М слов. Поэтому обе цепочки имеют все основания быть опознанными как выданные легальным источником. Поэтому в случае, если алгоритм выявил две или более конкурирующие цепочки сообщений, требуется повторная передача источником всего пула КС. В случае же, если будет выявлена только одна цепочка КС, данные сообщения будут приняты как сообщения, выданные легальным источником.
На фиг. 4 представлен один из возможных вариантов функциональной схемы устройства, реализующего предлагаемый способ. Пунктирными линиями обозначены информационные сигналы, а сплошными - сигналы данных. Устройство содержит блоки 1 установки начальных параметров, блок 2 проверки входящих КС заданным параметрам, блок 3 объединения КС в пул, блок 4 вычисления имитоприставки КС, блок 5 выполнения преобразований над КС, блок 6 отправки преобразованного КС в приемник, блок 7 анализа принятых КС, блок 8 управления записью КС в буфер, блок 9 хранения принятых КС, блок 10 анализа дополнительных параметров КС, блок 11 вычисления и сравнения имитоприставок КС, блок 12 управления, блок 13 хранения цепочки легальных КС, блок 14 передачи легальных КС.
Устройство работает следующим образом.
При подготовке к передаче пула командных слов необходимо выполнить ряд преобразований над каждым командным словом. Чтобы выполнить данные преобразования, в блоках 1 установки начальных параметров выставляются следующие параметры:
- размер пула КС;
- количество бит имитоприставки КС;
- количество бит информативной части;
- секретное слово, известное и источнику, и приемнику.
В блоке 2 проверки входящих КС заданным параметрам проверяется длина каждого поступающего КС на соответствие размеру информативной части, который устанавливается в предыдущем блоке 1 установки начальных параметров. В случае, если длина входящего КС больше установленного размера информативной части, формируется информационный сигнал о недопустимости передачи такого командного слова. Если же длина входящего командного слова меньше размера информативной части, к такому командному слову слева добавляется такое количество 0, которое необходимо, чтобы длина входящего КС стала равной установленному размеру информативной части. В блоке 3 объединения КС в пул входящие КС буферизируются и объединяются в пул для возможности вычисления имитоприставки командного слова, зависящей от информативных частей КС, предшествующих данному слову в пуле. В блоке 4 вычисления имитоприставки КС для каждого КС вычисляется имитоприставка в соответствии с заранее выбранной функцией Fхеш. Полученная имитоприставка каждого КС, во-первых, дописывается к соответствующему ей КС, во-вторых, записывается в память блока 4 вычисления имитоприставки КС для вычисления с ее помощью имитоприставки следующего КС для того, чтобы имитоприставка каждого командного слова зависела от содержания предыдущих ему в пуле командных слов, как это описано выше. После того, как каждому КС дописывается соответствующая ему имитоприставка, указанное КС отправляется обратно в блок 3 объединения КС в пул. После окончания процесса формирования всех имитоприставок КС и получения последнего КС пула из блока 4 вычисления имитоприставки КС блок 3 объединения КС в пул к каждому КС добавляет последовательность бит, которая представляет собой порядковый номер КС в пуле КС.
В блоке 5 выполнения преобразований над КС каждое поступившее в данный блок КС подвергается вышеописанным преобразованиям FA (В, А), FB (А, В) и FC (В, А) с целью исключения передачи КС в открытом виде. Блок 6 отправки преобразованного КС в приемник после получения пула КС отправляет в приемник первое КС, после чего переходит в режим ожидания запроса от приемника на отправку следующего КС. По окончании передачи последнего КС из пула данный блок формирует стоп-слово, размерность которого равна размерности простого КС, и состоящее из 0, получение которого сообщит приемнику о том, что все КС были переданы.
Блок 7 анализа принятых КС после получения каждого КС от блока 6 отправки преобразованного КС в приемник сохраняет полученное КС во внутреннее запоминающее устройство (ОЗУ), после чего отправляет запрос блоку 6 отправки преобразованного КС в приемник на передачу следующего КС из пула КС. Данный процесс продолжается до тех пор, пока блок 7 анализа принятых КС не получает стоп-слово. После окончания процесса приема-передачи всего пула КС и сохранения принятых КС во внутреннее ОЗУ блок 7 анализа принятых КС из внутреннего ОЗУ выбирает первое принятое КС, над которым выполняет преобразования FA (В, А), и с целью получения исходного КС, после чего блок 7 анализа принятых КС переходит в режим ожидания запроса следующего принятого КС от блока 8 управления записью КС в буфер. Полученное КС отправляется в блок 8 управления записью КС в буфер, который вычисляет порядковый номер КС j с начала текущего пула. Данный процесс происходит путем увеличения счетчика на единицу после поступления каждого последующего КС. Указанный номер записывается в конец КС с целью его последующего анализа при построении цепочки КС, выданных легальным источником. После выполнения указанных действий блок 8 управления записью КС в буфер определяет, подходит ли данное КС под условие записи КС в блок 9 хранения принятых КС и, если подходит, то на какой ярус необходимо поместить данное КС. Под условием записи КС в буфер понимается следующее условие, которое уже было описано выше:
В случае, если порядковый номер КС меньше или равен максимальному ярусу блока 9 хранения принятых КС плюс единица, данное КС записывается в буфер. В противном случае не прошедшее проверку КС игнорируется. После записи в блок 9 хранения принятых КС или игнорирования КС блок 8 управления записью КС в буфер отправляет блоку 7 анализа принятых КС сигнал о готовности обработать следующее КС.
Блок 7 анализа принятых КС и блок 8 управления записью КС в буфер работают по вышеописанному алгоритму до тех пор, пока не будут обработаны все КС, записанные во внутреннее ОЗУ. В этом случае блок 7 анализа принятых КС отправляет в блок 12 управления сигнал о том, что все КС получены, и блок 9 хранения принятых КС содержит все принятые КС, удовлетворяющие условию записи командных слов в буфер.
Блок 12 управления после получения сигнала от блока 7 анализа принятых КС выбирает из блока 9 хранения принятых КС пару командных слов и отправляет их на проверку в блок 10 анализа дополнительных параметров КС, запоминая при этом номера ярусов КС из пары и их порядковые номера на ярусе. Общий алгоритм выбора пары проверяемых КС блоком 12 управления представлен на фиг. 5. Итогом выполнения данного алгоритма будет полный перебор всех КС, находящихся в блоке 9 хранения принятых КС. Блок 10 анализа дополнительных параметров КС, получив пару КС, сравнивает их порядковые номера j относительно начала пула, которые были высчитаны в блоке 8 управления записью КС в буфер. Данная проверка выполняется для того, чтобы предотвратить лишние вычисления имитоприставок и появление цепочек, которые могут быть приняты приемником, как легальные, но содержать при этом заведомо ложные КС. Легальное КС, находящееся на i-ом ярусе, не может иметь порядковый номер относительно начала пула j больше, чем легальное слово, находящееся на ярусе (i+1). В противном случае одно из КС не является легальным. В случае, если сравниваемые порядковые номера не проходят проверку, блок 10 анализа дополнительных параметров КС подает сигнал блоку 12 управления о том, что он готов принять новую пару КС, которая выбирается по вышеописанному алгоритму. Если порядковые номера КС удовлетворяют условиям проверки, данная пара КС отправляется в блок 11 вычисления и сравнения имитоприставок КС. Блок 11 вычисления и сравнения имитоприставок КС, получая пару КС, вычисляет их имитоприставки по обратному алгоритму, заложенному в блоке 4 вычисления имитоприставки КС для каждого КС, и сравнивает их зависимости одной от другой. В случае, если имитоприставки не удовлетворяют условиям проверки, блок 11 вычисления и сравнения имитоприставок КС подает сигнал блоку 12 управления о необходимости передачи следующей пары КС. В случае же, если имитоприставки удовлетворили условиям проверки, в блок 12 управления подается сигнал о том, что проверяемые КС можно считать легальными. Стоит отметить, что если при выполнении проверки на одном ярусе окажутся хотя бы два КС, которые блок 11 вычисления и сравнения имитоприставок КС посчитает легальными, в блок 12 управления будет подан сигнал об обнаружении коллизии, который в свою очередь подаст сигнал о необходимости повторной передачи пула КС. При получении сигнала о том, что проверяемые слова можно считать легальными, блок 12 во внутреннюю память записывает «координаты» командных слов, то есть ярус КС и его порядковый номер на ярусе для дальнейшего построения цепочки легальных слов.
После выполнения вышеописанного алгоритма и прохождения последней парой КС через блок 11 вычисления и сравнения имитоприставок КС в памяти блока 12 управления будут содержаться «координаты» всех легальных КС. Блок 12 управления в соответствии с этими «координатами» выбирает из блока 9 хранения принятых КС легальные КС и отправляет их в блок 13 хранения цепочки легальных КС. После успешного заполнения блока 13 хранения цепочки легальных КС блок 12 управления подает сигнал блоку 14 передачи легальных КС о том, что цепочка успешно построена. При получении такого сигнала блок 14 передачи легальных КС осуществляет доступ к блоку 13 хранения цепочки легальных КС и считывает из нее по одному КС. Блок 14 передачи легальных КС после получения КС выделяет из него информативную часть, то есть непосредственно саму команду, и отправляет ее в устройство назначения. Данный алгоритм повторяется, пока не будут прочитаны и отправлены все КС из блока 13 хранения цепочки легальных КС.
Способ определения подлинности передаваемых командных слов, заключающийся в передаче управляемой программой аппаратному средству вычислительной техники командных слов, состоящих из информативной части и сформированной имитоприставки, в защищенном виде, преобразованных в соответствии с секретным словом, известным и отправителю, и получателю, в целях предотвращения несанкционированного доступа к передаваемым командным словам и приеме командных слов аппаратным средством вычислительной техники и однозначного определения путем проверки сформированных имитоприставок среди общего количества принятых командных слов тех командных слов, которые выданы легальным источником, отличающийся тем, что на стороне отправителя передаваемые командные слова группируют в пул, вычисляют в соответствии с заранее определенной функцией хеширования имитоприставку каждого командного слова, зависящую от содержания информативных частей всех командных слов в пуле, предшествующих командному слову, для которого формируют имитоприставку, каждому командному слову присваивают порядковый номер в пуле, путем выполнения необратимого преобразования над порядковым номером командного слова в пуле в соответствии с секретным словом, известным и отправителю, и получателю, получают промежуточную последовательность, длина которой равна длине порядкового номера, путем выполнения обратимого преобразования над командным словом в соответствии с полученной промежуточной последовательностью получают преобразованное командное слово, путем выполнения обратимого преобразования над порядковым номером командного слова в пуле в соответствии с преобразованным командным словом получают преобразованный порядковый номер командного слова в пуле, после чего каждое полученное преобразованное командное слово дополняют преобразованным порядковым номером, соответствующим данному командному слову, последовательно, начиная с первого командного слова в пуле, передают по одному сообщению, полученному в результате конкатенации преобразованного командного слова и его преобразованного порядкового номера в пуле, в приемник, в приемнике в свою очередь сохраняют во внутреннем оперативном запоминающем устройстве все получаемые сообщения, начиная с первого и заканчивая последним сообщением пула, и после выделения приемником из каждого полученного сообщения, во-первых, порядкового номера командного слова в пуле путем выполнения преобразования, обратного последнему выполненному преобразованию на стороне отправителя, над полученным преобразованным командным словом в соответствии с полученным преобразованным порядковым номером командного слова в пуле, во-вторых, информативной части командного слова и имитоприставки путем выполнения сначала необратимого преобразования, полностью соответствующего необратимому преобразованию, выполненному на стороне отправителя, над только что выделенным приемником порядковым номером командного слова в пуле в соответствии с секретным словом, известным и отправителю, и получателю, получая промежуточную последовательность, длина которой равна длине порядкового номера командного слова в пуле, затем преобразования, обратного второму выполненному преобразованию на стороне отправителя, над полученным преобразованным командным словом в соответствии с полученной промежуточной последовательностью, присваивают каждому полученному командному слову его порядковый номер при получении, после чего из всех полученных приемником командных слов на основании сопоставления значений имитоприставок, значения порядкового номера командного слова в пуле командных слов и значения порядкового номера при получении выбирают упорядоченное множество командных слов, равное по мощности количеству командных слов в пуле, для каждого из которых выполняют проверку на условие совпадения имитоприставки командного слова и имитоприставки, формируемой из предшествующих командных слов множества, и увеличения на единицу порядкового номера командного слова в пуле командных слов у каждого последующего командного слова множества, и в случае, если после проверки на выполнение всех вышеописанных условий получают лишь одно множество, то именно оно опознается приемником как пул переданных отправителем командных слов, в противном же случае, если получают число указанных множеств, отличное от единицы, фиксируют ошибку передачи данных и отправляют запрос на повторную передачу всего пула командных слов.