Целостность данных – термин, означающий, что информация действительна. Это определение применяется в криптографии и алгоритмах блокчейна, теории баз данных и компьютерной безопасности. Контроль целостности позволяет убедиться, что представленная в электронном виде информация не была случайно (программный сбой) или намеренно (хакерская атака, вирус) изменена при хранении, выводе на экран или передаче. Поговорим о том, что представляет собой целостность данных на практике и почему она важна.
Целостность данных идет рука об руку с безопасностью информации и ее идентификацией. Наиболее наглядно это проявляется в хэш-функциях, алгоритмах преобразования входного массива данных в уникальный набор символов. Так, помимо контроля целостности данных, хеш служит для:
- шифрования паролей,
- удостоверения цифровой подписи,
- идентификации торрентов в P2P-сетях,
- аутентификации пользователей,
- защиты файлов,
- обнаружения вирусов и другого вредоносного программного обеспечения.
Целостность данных в файлах проверяется по контрольным суммам, которые, с математической точки зрения, также являются хешем. Изменение контрольной суммы говорит о том, что файл поврежден в результате программного сбоя, вирусного заражения или постороннего вмешательства.
Целостность данных в СУБД
В общем случае целостность данных – сохранение информации в том виде, в каком она была создана. В теории же баз данных под этим определением понимается не только корректность записей, но и их непротиворечивость.
Примеры нарушения целостности в СУБД:
- Наличие одинаковых идентификаторов (первичных ключей).
- Наличие «дочерних» записей, не связанных с «родительскими».
В первом случае пользователь может запросить одну запись, а получить совсем другую. Если, например, будут одинаковыми первичные ключи у записей «Товарные позиции > Переходник HDMI – VGA» и «Контрагенты > ООО «Электроника», то вместо технических характеристик адаптера пользователь может получить реквизиты поставщика.
В приведенном выше примере «Товарные позиции» (как и «Контрагенты») – это родительская запись. Она связана с дочерними записями, каждая из которых представляет собой массив данных об одном товаре. Если дочерняя запись «Переходник HDMI – VGA» не будет связана с родительской, то она попросту не отобразится в списке товаров. Контроль целостности данных позволяет избежать «потери родственных связей» и появления дублирующихся идентификаторов.