СПОСОБ ОБЕСПЕЧЕНИЯ ЦЕЛОСТНОСТИ НАБОРА ЗАПИСЕЙ ДАННЫХ
METHOD FOR PROVISION OF DATA RECORDS SET INTEGRITY

ОБЛАСТЬ ТЕХНИКИ
Изобретение касается способа, системы и компьютерной программы для обеспечения целостности набора записей данных, хранящихся в базе данных или аналогичном средстве хранения информации.
УРОВЕНЬ ТЕХНИКИ
Многие компьютеризированные приложения производят огромные количества данных, которые должны сохраняться. Обычно события компьютеризированных приложений заносятся в файл протокола. Файлы протокола - один из наиболее важных источников информации для системных операторов, разработчиков программного обеспечения, персонала службы безопасности и других различных групп.
Традиционно данные файлов протокола последовательно записываются в файл протокола. Основные элементы большинства файлов протокола - записи протокола, которые в файле протокола часто представляются как строки. Очень важно, чтобы структура и содержание файла протокола оставались аутентичными. В частности, для соблюдения безопасности особенно важно, чтобы строки не могли быть изменены или удалены любым способом без уведомления администратора о сделанных изменениях.
Широко известны способы обеспечения целостности файла протокола. Например, могут использоваться коды аутентификации сообщения (message authentication codes, MAC) или цифровые подписи, чтобы связать криптографический код с каждым файлом протокола. Более поздние неавторизованные модификации могут быть обнаружены, поскольку если содержимое файла изменяется, то изменяется цифровая подпись или код аутентификации. Однако эти разновидности способов не защищают целостность данных до тех пор, пока защищаемому файлу не назначены цифровая подпись или другой вид аутентифицирующего кода.
Однако во многих приложениях количество сохраняемых данных огромно. Таким образом, возникает потребность в хранении данных протокола или подобных им данных в реляционной базе данных. В этом случае задача защиты целостности несколько изменяется. В реляционных базах данных данные хранятся в таблицах, состоящих из кортежей признаков, так называемых записей. Обычно записи протокола сохраняются в базе данных так, чтобы каждая строка протокола соответствовала записи конкретной таблицы базы данных.
Защита целостности в реляционных базах данных традиционно основывается на ограничении прав доступа для пользователей базы данных, чтобы неавторизованные пользователи не могли изменять содержание базы данных. Управление доступом производится системой управления реляционной базой данных (relational database management system, RDBMS). Другой путь обеспечения целостности базы данных состоит в сохранении ее в виде файла на диске и приложении к нему криптографического кода, как было описано выше.
Этот подход часто неудобен, так как многие таблицы базы данных динамичны по их природе и должны обновляться очень часто. В базе данных протокола, например, записи протокола, производимые в течение дня, должны все время вставляться в соответствующую таблицу базы данных, тогда как количество сохраняемых данных может быть огромным, как в случае банковских транзакций. Замораживание содержимого таблиц базы данных и защита ее целостности криптографической контрольной суммой полезны только тогда, когда можно быть уверенным, что содержимое таблицы больше не будет обновляться. Применительно к базе данных протокола это означает, что для накопления информации должны использоваться ежедневные таблицы базы данных. Недостаток такого решения состоит в том, что запросы, которые требуют доступа к данным за несколько дней, должны для исполнения запроса выполнять поиск в нескольких таблицах.
Патент США 5978475 описывает способ верификации целостности файла протокола. Однако вышеупомянутый патент не раскрывает никаких средств для размещения данных в базе данных, в которой администратор имеет все возможности изменять данные в записях данных.
Большой недостаток традиционных решений состоит также в том, что они не могут применяться в ситуации, когда используется система баз данных, и администратору базы данных нельзя полностью доверять. В большинстве систем управления базами данных администратор базы данных имеет близкие к неограниченным права на изменение базы данных и ее содержимого. Любые данные, которые вставлены в базу данных, могут быть злонамеренно изменены администратором, даже прежде чем данные будут криптографически защищены от неавторизованных модификаций.
Главный недостаток известных решений состоит в проблеме управления правами доступа к базе данных. Следующий недостаток состоит в том, что данные не могут быть сохранены в файлах с цифровой подписью, поскольку они постоянно изменяются. Третий главный недостаток состоит в том, что необходимо полагаться на администратора базы данных. В настоящее время администратор - это обычно технический работник, который фактически даже не должен знать информацию, хранящуюся в базе данных. Таким образом, имеется потребность в способе, который позволяет множеству людей следить за целостностью содержимого базы данных и проверять эту целостность, имея права доступа к данным, хранимым в базе данных.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
Изобретение раскрывает способ обеспечения целостности данных в системах баз данных. Изобретение раскрывает решение для создания доступных общему просмотру баз данных с публично доступными контрольными суммами, которые могут использоваться для верификации целостности. Согласно настоящему изобретению контрольная сумма проверки целостности вычисляется криптографическим способом по хранимым данным, контрольной сумме предыдущей записи и ключу хранения. Ключ хранения известен только лицам, которые имеют право подписывать данные в базе данных. Лицо, имеющее право подписи, может и должно отличаться от администратора базы данных. Одно из решений состоит в том, чтобы использовать криптографию с открытым ключом, в которой подписывающее лицо вычисляет контрольную сумму проверки целостности с помощью своего секретного ключа, а лицо, желающее проверить целостность, может использовать свой открытый ключ для верификации. Вычисленная контрольная сумма присоединяется к записи данных. Первая запись может быть генерируемой начальной записью, либо может использовать предварительно согласованную предыдущую контрольную сумму, которая необходима, чтобы вычислить ее собственную контрольную сумму. При верификации контрольная сумма проверки целостности вычисляется аналогично и сравнивается с предварительно вычисленной контрольной суммой, присоединенной к определенной записи данных.
Преимущество изобретения состоит в получении аутентичной базы данных с проверкой целостности. С помощью способа согласно изобретению база данных может быть подписана так, что содержимое базы данных могут изменять только уполномоченные лица, имеющие право подписи. Согласно изобретению записи данных, хранящиеся в базе данных, не могут быть удалены или изменены любым способом без нарушения цепочки вычисленных контрольных сумм проверки целостности.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
Сопровождающие чертежи, которые приложены, чтобы обеспечить лучшее понимание изобретения, и составляют часть данного описания, иллюстрируют варианты выполнения изобретения и вместе с описанием помогают пояснить принципы изобретения. На чертежах:
фиг.1 - блок-схема, иллюстрирующая основной принцип верификации целостности согласно изобретению,
фиг.2 - схема последовательности операций, иллюстрирующая вариант сохранения записи данных согласно изобретению,
фиг.3 - блок-схема, иллюстрирующая вариант выполнения системы согласно схеме, представленной на фиг.2.
ПОДРОБНОЕ ОПИСАНИЕ ИЗОБРЕТЕНИЯ
Ниже подробно описаны варианты выполнения настоящего изобретения, примеры которых проиллюстрированы на сопровождающих чертежах.
Фиг.1 представляет блок-схему основного принципа верификации целостности. Согласно фиг.1 входные данные могут быть приняты в любой подходящей форме. Однако изобретение наиболее полезно в случаях, когда имеется большое количество записей данных, поступающих в быстром темпе. Подобными записями могут быть, например, записи данных файлов протокола транзакций банка, которые обычно хранятся в больших базах данных. Эти файлы протокола должны быть аутентичны, и они должны включать каждое событие, чтобы они при необходимости могли быть приняты в гражданском суде.
Согласно фиг.1, данные поступают в подписывающий компонент 10. Подписывающий компонент 10 имеет своего собственного администратора, имеющего полномочия для подписывания записей данных. Подписывание может осуществляться в форме цифровой подписи, шифрования или одностороннего хеширования. В данном описании под подписыванием понимается вычисление контрольной суммы и присоединение вычисленной контрольной суммы к записи данных. Далее ключ подписывания упоминается как ключ хранения, который может быть любым типом ключа подписывания. С другой стороны, может быть полезным использовать традиционный способ шифрования с открытым ключом, позволяющий включать имя подписавшей стороны в каждую подписанную запись. Ключ может быть введен в систему подобно тому, как это делается в системах безопасной почты, в которых ключ включает секретный файл ключа и секретную часть пароля, которая вводится с клавиатуры в устройство шифрования. Ключ также может быть введен посредством смарт-карты или подобным образом, или посредством любого другого подходящего устройства.
Способ согласно изобретению состоит в подписывании каждой записи данных контрольной суммой проверки целостности, которая вычисляется исходя из записи данных, которая должна быть подписана, контрольной суммы проверки целостности предыдущей записи и ключа хранения. Вычисленная контрольная сумма проверки целостности затем присоединяется к записи данных. Она может быть присоединена непосредственно к данным, либо база 11 данных может содержать отдельное поле для контрольной суммы проверки целостности. Поскольку вычисленная контрольная сумма проверки целостности зависит от предыдущей контрольной суммы проверки целостности, невозможно удалить одну или более строку из середины записей, без того чтобы не нарушить целостность, так как для верификации необходима полная цепочка контрольных сумм проверки целостности. Подписанные данные с контрольными суммами проверки целостности будут храниться в базе 11 данных. Администратор базы данных может выполнять различные задания в отношении хранимых данных, но он не может тайно изменять содержимое данных или удалять записи данных.
Верификация целостности последовательности записей данных выполняется так же, как и подписывание. Верифицирующий компонент 12 вычисляет контрольную сумму проверки целостности на основе подписываемой записи данных, предыдущей контрольной суммы проверки целостности и ключа хранения. Вычисленная контрольная сумма проверки целостности затем сравнивается с контрольной суммой, хранящейся в базе 11 данных. Если контрольные суммы не равны, то база данных была изменена и не является аутентичной. Способ имеет то преимущество, что целостность записи данных может быть быстро проверена без необходимости проверять целостность всей базы данных. Верификация может быть начата в любой точке потока последовательных записей данных. Следует отметить, что аутентичность записи, из которой была извлечена предыдущая контрольная сумма проверки целостности, не может гарантироваться. Таким образом, процесс верификации должен быть начат с извлечения контрольной суммы проверки целостности записи данных, предшествующей верифицируемой записи данных.
Если для подписывания используется криптография с открытым ключом, то уполномоченное лицо, обладающее правом подписи, подписывает записи в подписывающем компоненте 10 с помощью своего секретного ключа. Ключ может быть создан для подписывания определенной базы данных и может быть разделен с доверенной группой, имеющей право подписи. При верификации целостности открытый ключ лица, обладающего правом подписи, используется для расшифровки контрольной суммы.
Имеются различные способы начального создания базы данных. Поскольку не имеется никакой предыдущей доступной контрольной суммы проверки целостности, вместо предыдущей контрольной суммы проверки целостности для первой строки базы данных может использоваться вектор инициализации. Первая строка может включать фактические данные или данные, связанные с инициализацией. Например, вектор инициализации может включать информацию, касающуюся инициализации, такую как дату, и цифровую подпись ответственного лица в качестве контрольной суммы. Таким образом, имеется предыдущая контрольная сумма для первой реальной записи данных. Вектор или строка инициализации могут использоваться также в середине базы данных, что позволяет распределять данные по блокам. Распределение данных по блокам не изменяет процедуру верификации.
Фиг.2 иллюстрирует последовательность операций для одного варианта сохранения записи данных. На шаге 20 принимаются данные от любой подходящей информационной системы. Данные аналогичны тем, которые принимаются в варианте выполнения, показанном на фиг.1. После приема данных на шаге 21 вычисляется контрольная сумма проверки целостности. Контрольная сумма проверки целостности может быть вычислена любым общеизвестным способом, как рассмотрено при описании варианта выполнения изобретения, показанного на фиг.1. Вычисление контрольной суммы проверки целостности основывается на предыдущей контрольной сумме, т.е. контрольной сумме, приложенной к предыдущей записи данных, на подписываемых данных и на ключе хранения. Только лица, имеющие право подписывать записи данных, знают ключ хранения. Предыдущая контрольная сумма читается из памяти подписывающего устройства. Если контрольная сумма проверки целостности всегда читается из базы данных, то администратор базы данных может злонамеренно удалить последнюю строку базы данных без особых проблем, поскольку цепь контрольных сумм проверки целостности не будет нарушена. Имеются также другие средства обеспечения аутентичности последней строки, например использование текущего последовательного номера как части параметров контрольной суммы.
Запись данных подписывается путем присоединения вычисленной контрольной суммы проверки целостности к записи данных, как показано на шаге 22. Подписанные данные будут сохранены в базе данных. База данных может содержать отдельные поля для данных и контрольной суммы проверки целостности. База данных может также содержать дополнительные информационные поля, которые также могут использоваться для вычисления контрольной суммы проверки целостности, например имя подписавшей стороны. После сохранения данных в базе данных контрольная сумма проверки целостности сохраняется в памяти подписывающего устройства, как показано на шаге 24. Этим гарантируется, что предыдущая контрольная сумма проверки целостности, используемая позже, не изменяется после того, как она была вычислена.
Фиг.3 иллюстрирует блок-схему одного из вариантов выполнения изобретения. На фиг.3 все компоненты показаны в виде отдельных блоков, но для специалиста очевидно, что компоненты могут быть реализованы также в программной форме. Система функционирует согласно способу, представленному на фиг.2. Поэтому ее функционирование подробно не описывается.
Система согласно изобретению включает источник 30 данных, подписывающий компонент 31, базу 32 данных, консоль 33 администрирования базы данных и верифицирующий компонент 34. Источником 30 данных может быть любая информационная система, которая производит данные, которые нужно сохранить в базе 32 данных. Подписывающий компонент 31 реализован, например посредством компьютерной программы, выполняемой в компьютере, который связан с системой 32 базы данных, или посредством программного модуля в системе 32 базы данных. Базой 32 данных и консолью 33 администрирования базы данных может быть любая система баз данных общего назначения, например система управления базами данных Oracle. Верифицирующий компонент 34 аналогичен подписывающему компоненту 31. Если используется инфраструктура шифрования с открытым ключом, то подписывающий компонент 31 имеет секретный ключ, а верифицирующий компонент 34 имеет соответствующий открытый ключ.
Для специалиста очевидно, что с развитием техники основная идея изобретения может быть осуществлена различными путями. Таким образом, изобретение и его реализация не ограничиваются примерами, описанными выше, а могут изменяться в рамках пунктов формулы изобретения.