Программное обеспечение для шифрования — это программное обеспечение , которое использует криптографию для предотвращения несанкционированного доступа к цифровой информации. [1] [2] Криптография используется для защиты цифровой информации на компьютерах , а также цифровой информации, которая отправляется на другие компьютеры через Интернет . [3]
Существует множество программных продуктов, обеспечивающих шифрование. Программное шифрование использует шифр для преобразования содержимого в зашифрованный текст . Одним из способов классификации этого типа программного обеспечения является тип используемого шифрования. Шифры можно разделить на две категории: шифры с открытым ключом (также известные как асимметричные шифры) и шифры с симметричным ключом . [4] Программное обеспечение для шифрования может быть основано на шифровании с открытым ключом или с симметричным ключом.
Другой способ классифицировать программное шифрование — это классифицировать его назначение. Используя этот подход, программное шифрование можно разделить на программное обеспечение, которое шифрует « данные при передаче » и программное обеспечение, которое шифрует « данные в состоянии покоя ». При передаче данных обычно используются шифры с открытым ключом, а в хранящихся данных обычно используются шифры с симметричным ключом.
Шифры с симметричным ключом можно разделить на поточные шифры и блочные шифры. Потоковые шифры обычно шифруют открытый текст побитно или побайтно и чаще всего используются для шифрования сообщений в реальном времени, таких как аудио- и видеоинформация. Ключ используется для установления начального состояния генератора потока ключей, а выходные данные этого генератора используются для шифрования открытого текста. Алгоритмы блочного шифрования разбивают открытый текст на блоки фиксированного размера и шифруют по одному блоку за раз. Например, AES обрабатывает 16-байтовые блоки, а его предшественник DES шифрует блоки по восемь байт.
Также известен случай, когда PKI используется для передачи данных в состоянии покоя.
Передаваемые данные — это данные, которые передаются по компьютерной сети . Когда данные находятся между двумя конечными точками, любая конфиденциальная информация может быть уязвимой. Полезная нагрузка (конфиденциальная информация) может быть зашифрована для обеспечения ее конфиденциальности, а также целостности и достоверности. [5]
Часто данные передаются между двумя объектами, которые не знают друг друга, например, в случае посещения веб-сайта. Для установления отношений и безопасного обмена ключом шифрования для защиты информации, которой будет обмениваться, был разработан набор ролей, политик и процедур для достижения этой цели; она известна как инфраструктура открытых ключей или PKI. Как только PKI установит безопасное соединение, конечные точки могут совместно использовать симметричный ключ. Симметричный ключ предпочтительнее закрытого и открытого ключей, поскольку симметричный шифр гораздо более эффективен (использует меньше циклов ЦП), чем асимметричный шифр. [6] [7] Существует несколько методов шифрования данных при передаче, например IPsec , SCP , SFTP , SSH , OpenPGP и HTTPS .
Неактивные данные — это данные, которые были сохранены в постоянном хранилище . Хранящиеся данные обычно шифруются симметричным ключом .
Шифрование может применяться на разных уровнях стека хранилища. Например, шифрование можно настроить на уровне диска , на подмножестве диска, называемом разделом , на томе , который представляет собой комбинацию дисков или разделов, на уровне файловой системы или в приложениях пользовательского пространства , таких как базу данных или другие приложения, работающие в операционной системе хоста .
При полном шифровании диска шифруется весь диск (за исключением битов, необходимых для загрузки или доступа к диску, если не используется незашифрованный загрузочный/предзагрузочный раздел). [8] Поскольку диски можно разделить на несколько разделов, шифрование разделов можно использовать для шифрования отдельных разделов диска. [9] Тома, созданные путем объединения двух или более разделов, можно зашифровать с помощью шифрования тома . [10] Файловые системы, также состоящие из одного или нескольких разделов, могут быть зашифрованы с использованием шифрования на уровне файловой системы . Каталоги называются зашифрованными, если файлы внутри каталога зашифрованы. [11] [12] Шифрование файлов шифрует один файл. Шифрование базы данных действует в отношении сохраняемых данных, принимая незашифрованную информацию и записывая эту информацию в постоянное хранилище только после того, как оно зашифрует данные. Шифрование на уровне устройства (несколько расплывчатый термин, включающий в себя ленточные накопители с возможностью шифрования) может использоваться для разгрузки задач шифрования с ЦП.
Когда возникает необходимость безопасно передавать данные в состоянии покоя, без возможности создания безопасного соединения, были разработаны инструменты пользовательского пространства, поддерживающие эту потребность. Эти инструменты полагаются на то, что получатель публикует свой открытый ключ, а отправитель может получить этот открытый ключ. Затем отправитель может создать симметричный ключ для шифрования информации, а затем использовать открытый ключ получателя для надежной защиты передачи информации и симметричного ключа. Это обеспечивает безопасную передачу информации от одной стороны к другой. [ нужна цитата ]
Производительность программного обеспечения для шифрования измеряется относительно скорости процессора. Таким образом, обычная единица измерения — циклы на байт (иногда сокращенно cpb ), единица, указывающая количество тактовых циклов, которые микропроцессору потребуется на один байт обработанных данных . [13] Число циклов на байт служит частичным индикатором реальной производительности криптографических функций . [14] Приложения могут предлагать собственное шифрование, называемое собственным шифрованием, включая приложения баз данных, такие как Microsoft SQL, Oracle и MongoDB, и обычно полагаются на прямое использование циклов ЦП для повышения производительности. Это часто влияет на желательность шифрования в компаниях, стремящихся к большей безопасности и простоте соблюдения требований, влияя на скорость и масштаб передачи данных внутри организаций их партнерам. [15]