Алгоритм RSA был изобретен Ривестом, Шамиром и Альде-маном в 1976 году и представляет собой значительный шаг в криптографии. Этот алгоритм также был принят в качестве стандарта Национальным Бюро Стандартов.
DES, технически, является СИММЕТРИЧНЫМ алгоритмом, а RSA — АСИММЕТРИЧНЫМ, то есть он использует разные ключи при шифровании и дешифровании. Пользователи имеют два ключа и могут широко распространять свой открытый ключ. Открытый ключ используется для шифрования сообщения пользователем, но только определенный получатель может дешифровать его своим секретным ключом; открытый ключ бесполезен для дешифрования. Это делает ненужными секретные соглашения о передаче ключей между корреспондентами. DES определяет длину данных и ключа в битах, а RSA может быть реализован при любой длине ключа. Чем длиннее ключ, тем выше уровень безопасности (но становится длительнее и процесс шифрования и дешифрования). Если ключи DES можно сгенерировать за микросекунды, то примерное время генерации ключа RSA — десятки секунд. Поэтому открытые ключи RSA предпочитают разработчики программных средств, а секретные ключи DES — разработчики аппаратуры.
Некоторые решения
Примером архитектуры клиент/сервер, которую хорошо дополняют средства шифрования, могут служить Oracle Server, сетевые продукты (SQMNet) и программное обеспечение клиента.
Сетевая служба безопасности (SNS — Secure Network Services) предлагает стандартный, оптимизированный алгоритм шифрования DES с ключом длиной 56 бит для организаций, от которых требуется использовать стандарт DES. Для заказчиков вне пределов США или Канады SNS предлагает DES40, в котором комбинируется использование алгоритма шифрования DES с общепринятым ключом длиной 40 бит (экспорт технологий шифрования в США законодательно ограничен). Наряду с DES возможно также использование алгоритма шифрования RSA RC4.
Секретный, генерируемый случайным образом ключ для каждой сессии SQL* Net сохраняет весь сетевой трафик — включая пароли, значения данных, SQL-утверждения и сохраняемые вызовы и результаты.
Для обнаружения модификации или подмены данных во время передачи SNS генерирует криптографически защищенное значение, вычисляемое по содержимому сообщения, и включает его в каждый пакет, передаваемый по сети. При получении пакета в пункте назначения SNS немедленно производит проверку целостности каждого пакета.
Устойчивость к искажению данных обеспечивается следующим образом:
1) криптографически защищенная контрольная сумма в каждом пакете SQL* Net обеспечивает защиту от модификации данных и замены операции;
2) при обнаружении нарушений операции незамедлительно автоматически завершаются;
3) информация о всех нарушениях регистрируется в журнале.
Наряду с этим обеспечивается многопротокольная перекодировка данных, т.е. полностью поддерживается Oracle Multiprotocol Interchange — при работе с зашифрованной сессией можно начинать работу с одним сетевым протоколом, а заканчивать с другим, при этом не требуется дешифрование или перешифрование информации. SNS полностью поддерживается сквозными шлюзами, Oracle Transparent Gateways, и процедурными шлюзами, Oracle Procedural Gateways, которые дают возможность организовывать полностью зашифрованные сессии клиент/сервер к отличным от Oracle источникам данных, включая Adabas, CA-Datacom, DB2, DRDA, FOCUS, IDMS, IMS, ISAM, MUMPS, QSAM, Rdb, RMS, SAP, SQL/DS, SQL/400, SUPRA, Teradata, TOTAL, VSAM и другие.
SNS работает со всеми основными протоколами, поддерживаемыми SQL* Net, включая AppleTalk, Banyan, DECnet, LU6.2, MaxSix, NetBIOS, SPX/IPX, TCP/IP, X.25 и другие.
Обеспечивается независимость от топологии сети — SNS работает во всех основных сетевых средах, поддерживаемых SQL-Net.
SNS представляет собой дополнительный продукт к стандартному пакету SQL* Net, то есть требуется предварительно приобрести лицензию на SQL* Net. Продукт надо покупать и для клиента, и для сервера.
Вместе тем СУБД Oracle, начиная с версии 7.1, пароль передается по сети в зашифрованном виде.
Это означает, что при организации связи клиент/сервер используется новый протокол установления связи, в котором применяется сеансовый ключ, пригодный только для единственной попытки соединения с базой данных и используемый в качестве ключа для шифрования пароля, прежде чем он будет передан клиентам. Oracle-сервер находит зашифрованный пароль для этого пользователя и использует его в качестве ключа, которым он зашифровывает сеансовый ключ. Затем сервер пересылает этот зашифрованный сеансовый ключ клиенту. Клиент шифрует (применяя тот же самый односторонний алгоритм, который используется сервером) пароль, введенный пользователем, и с его помощью дешифрует зашифрованный сеансовый ключ. Обнаружив этот сеансовый ключ, он использует его — это становится совместным секретом клиента и сервера — для шифрования пароля пользователя. Этот зашифрованный пароль затем передается через сеть серверу. Сервер дешифрует пароль и затем зашифровывает его, используя односторонний алгоритм сервера; результат этих вычислений сверяется со значением, хранимым в словаре данных. Если они совпадают, клиенту предоставляется доступ. Такой подход реализуется как в соединениях типа клиент/сервер, так и сервер/сервер, где сеансы устанавливаются через так называемые полномочные звенья баз данных (т.е. звенья баз данных без вложенных имен пользователей и паролей).
Понятия идентификации и аутентификации в достоверных системах
Известны большие выгоды, которые дает переход к открытым системам. Но среди них не значится безопасность информации. Это и понятно — центр обработки данных передает некоторые из своих функций по контролю за системой отделам и пользователям и тем самым рассеивает объект безопасности.
Сохранить требуемый уровень безопасности системы возможно при использовании операционных систем класса В1 (Trusted), которые позволяют администратору системы присвоить каждому пользователю уровень доступности объектов системы (Secret, Confidential, Unclassified).
Обработка секретной и конфиденциальной информации требует от системы использовать механизм гарантии соответствующей идентификации и аутентификации пользователей. Все возможные подходы к идентификации и аутентификации' должны быть идентифицированы, рассмотрены и сравнены с Критерием Оценки Достоверности Вычислительных Систем (TCSEC), или с “Оранжевой Книгой” (в Европе — Критерием Оценки Безопасности Информационных Технологий, или “Белой Книгой”).
TCSEC делится на четыре класса: D, С, В и А. Эти классы упорядочены, причем самый высокий класс (А) зарезервирован за системами, имеющими наивысший уровень защиты информации. Внутри классов В и С имеются подклассы, которые тоже упорядочены в соответствии с обеспечиваемым уровнем защиты. Коротко говоря, принадлежность к классу D означает, что система не имеет средств защиты информации (неклассифицированная), к классу С — что она имеет некоторые средства избирательной защиты (классифицированная), к классу В — что к упомянутым ранее средствам добавляются гарантии безопасности и они описываются как “полномочные” (секретная информация), ну а если система отнесена к классу А, значит, средства защиты ранее проверены (совершенно секретная информация). Многие популярные операционные системы (например, различные варианты PС UNIX, Sun Solaris 2.3 и т.п.) соответствуют классу С.