учебник хахаева. Хахаев_ИТТ. Информационные таможенные технологии
Скачать 1.27 Mb.
|
Запросы на выборку являются самым часто используемым вариантом запросов. Самый простой вариант 33 SELECT * FROM tovary; выводит все данные, содержащиеся в таблице (в данном примере возвращаемся к базе данных по импортируемым товарам). Запрос SELECT * FROM tovary WHERE group='18' ORDER BY tov_country DESC; выводит товары группы 18 по ТН ВЭД, отсортированные по странам происхождения в обратном алфавитном порядке. Запрос SELECT COUNT(tov_pack) FROM tovary WHRER tov_country LIKE '%Франция%' AND tov_pack LIKE '%Ящик%'; выведет количество ящиков с товарами, импортированными из Франции. В реализациях SQL в качестве символа подстановки «любая последовательность символов» используется знак «%». Запросы на изменение позволяют добавлять данные в таблицы и изменять (обновлять) некоторые значения атрибутов. Для добавления, как правило, используется вариант INSERT INTO tovary (group, tn_code, ....) VALUES ('18','18302100',...); (требуется указание всех имён полей и всех соответствующих значений, поэтому поставлены многоточия). При использовании запроса INSERT нужно быть уверенным, что запись не будет продублирована. Поэтому в качестве варианта запроса на добавления данных можно использовать конструкцию REPLACE INTO tovary (id, group, tn_code, ....) VALUES (211, '18','18302100',...); В этом случае, если запись с таким значением id (ключа) существует, значения атрибутов буду заменены, а если не существует, запись будет добавлена. Для обновления значений отдельных атрибутов используется команда UPDATE, например UPDATE tovary SET price=4523 WHERE id=208; (изменение значения атрибута price для записи с указанным значением ключевого поля id). Банки данных: Понятие и структура Банк данных – совокупность баз данных, а также программные, языковые и другие средства, предназначенные для централизованного накопления данных и их использования с помощью ЭВМ. В широком смысле Банк данных (БнД) – это некоторая автоматизированная информационная система (АИС), включающая в себя все все виды обеспечения информационных систем (см. главу «Понятие АИС, обеспечивающие подсистемы АИС»). 34 Обобщённая структура банка данных показана на рис. 23. Рис. 23. Состав банка данных. • Администратор банка данных: управляет БнД • Словарь данных: специальная система в составе БнД, предназначенная для хранения единообразной информации обо всех ресурсах данных конкретного банка. В словаре содержатся сведения об объектах, их свойствах и отношениях для данной ПО, сведения о данных, хранимых в базе (наименования данных, их структуре, связи с другими данными), об их возможных значениях и форматах представления, об источниках их возникновения, о кодах защиты, разграничениях доступа к данным со стороны пользователей • СУБД: реализует централизованное управление данными, хранимыми в базе, доступ к ним, поддерживает их в состоянии, соответствующем состоянию ПО Среди задач, которые решаются при использовании банков данных, можно выделить следующие: • Удовлетворение актуальных информационных потребностей внешних пользователей, обеспечение возможности хранения и модификации больших объёмов многоаспектной информации • Обеспечение заданного уровня достоверности хранимой информации • Обеспечение доступа к данным только пользователям с соответствующими полномочиями • Обеспечение возможности поиска информации по произвольной группе признаков • Соответствие заданным требованиям по производительности при обработке запросов • Возможность реорганизации и расширения при изменении границ предметной области • Выдача информации пользователю в различной форме • Обеспечение простоты и удобство обращения внешних 35 пользователей за информацией • Возможность одновременного обслуживания большого числа внешних пользователей. Информационное взаимодействие АИС. Web-сервисы. Обмен данными между базами данных различных информационных системам — необходимое условие работы современных АИС. Для обеспечения такого обмена могут использоваться различные технологии. Ниже рассмотрим основные варианты организации информационного обмена с кратким анализом их особенностей. Обмен данными в виде структурированных текстовых файлов (comma separated values — CSV). Результаты запроса или таблица БД в одной АИС экспортируются (выгружаются) в такой файл, затем файл пересылается в другую АИС, после чего импортируется в целевую базу данных. При такой технологии обеспечиваются минимальные накладные расходы в виде избыточного объёма данных, но можно работать только с атомарными атрибутами. Выгрузка и загрузка требуют либо участия оператора, либо создания дополнительных сценариев для автоматизации этих действий. Обмен данными в виде файлов электронных таблиц (ЭТ) принципиально не отличается от предыдущего варианта, однако возрастают накладные расходы, поскольку в файле ЭТ содержится информация о форматировании и структуре документа. Соответственно, усложняется автоматизация процессов выгрузки и загрузки данных (особенно при использовании нестандартных форматов фалов ЭТ). SQL-запросы к внешним базам данных обеспечивают прямое получение данных с помощью командной оболочки СУБД одной АИС из таблиц баз данных другой АИС с помощью запросов типа CONNECT и SELECT (при наличии соответствующих прав доступа). Соответственно, требуются организационные меры по обеспечению удалённого доступа к БД и соответствующие настройки сервера БД. Кроме того, поскольку при подключении пароль передаётся в открытом виде, требуется обеспечить информационную безопасность. Однако данная технология является достаточно эффективной и может быть использована в изолированных сетях. XML-RPC (сокращение от Extensible Markup Language Remote Procedure Call — XML-вызов удалённых процедур) — стандарт/протокол вызова удалённых процедур, использующий представление информации в виде XML-описаний для кодирования сообщений и протокол HTTP для передачи сообщений. В качестве сообщений могут использоваться запросы к базам данных, доступ к которым осуществляется с помощью трансляции инструкций, получаемых в виде сообщений Web-сервером с помощью языков сценариев Web-сервера к серверу баз данных. XML-сообщение, передаваемое в виде HTTP-запроса, декодируется языком сценариев, и получившийся в результате 36 декодирования SQL-запрос обрабатывается сервером баз данных. Результаты выполнения SQL-запроса транслируются в XML-сообщение, возвращаемое Web-сервером в качестве ответа на HTTP-запрос. Комплекс программ, обеспечивающий обработку таких запросов, называется Web-сервисом (Web-службой). Здесь не происходит прямого удалённого обращения к базе данных и нет промежуточных файлов, поэтому такая технология является достаточно безопасной и процесс легко автоматизируется. Существенным недостатком является использование протокола HTTP, который не обеспечивает шифрование данных. Развитием технологии XML-PRC является технология SOAP (Simple Object Access Protocol — простой протокол доступа к объектам), в которой для информационного обмена используются различные протоколы прикладного уровня стека TCP/IP (FTP, HTTP, HTTPS). Кроме того, для Web-сервисов используется и другие технологии с высоким уровнем абстракции - WSDL (Web Services Description Language – язык описания web-сервисов) и WDDX (Web Distributed Data eXchange — обмен данными, распределёнными во Всемирной паутине), независимые от языков программирования, программных платформ и протоколов прикладного уровня стека TCP/IP. Технологии криптографической защиты информации Криптографическая защита информации — один из способов обеспечения конфиденциальности данных с помощью шифрования. Конфиденциальность данных – защищённость данных от попытки их раскрытия (предотвращение вмешательства и наблюдения за данными при передаче). Шифрование – один из способов обеспечения конфиденциальности данных. Для шифрования в настоящее время используются два метода: криптография и стеганография Стеганография (тайнопись – steganography) – методы маскировки сообщений в других сообщениях (скрытие текста сообщения в содержании другого текстового или графического сообщения). Криптография – наука о преобразовании сообщений по определённым правилам (алгоритмам), которые делают их невозможными для несанкционированного использования. Криптография определяется как совокупность трёх различных механизмов: шифрование симметричными ключами, шифрование асимметричными ключами и хэширование. Ключ – набор значений (чисел), которыми оперирует алгоритм шифровки. В криптографии существуют так называемые принципы Керкгоффса, состоящие в следующем: • алгоритм кодирования/дешифрования известен всем 37 • ключ должен быть настолько труден, что не надо скрывать алгоритм кодирования/дешифрования В современной криптографии существует конечное число эффективных алгоритмов шифрования. Множество ключей (ключевой домен) для каждого алгоритма, однако, настолько большое число, что подобрать ключ достаточно трудно. Шифрование симметричными ключами Шифрование симметричными ключами использует единственный ключ и для кодирования и для дешифрования. Кроме того, алгоритмы шифрования и дешифрования – инверсии друг друга (для расшифровки применяются те же операции, что и для шифрования, но в обратном порядке). Схема взаимодействия отправителя и получателя сообщений при шифровании с симметричными ключами показана на рис. 24. Рис. 24. Схема взаимодействия при шифровании с симметричными ключами. Алгоритмы подстановки — исторически первые алгоритмы симметричного шифрования. Каждый символ исходного сообщения заменяется каким-то другим символом. Ключ – правила такой замены. Пример: Шифр сдвига («Шифр Цезаря») – замена букв алфавита буквами, сдвинутыми по номеру в алфавите на фиксированное число позиций (hello → mjqqt при ключе = 5). При достижении конца алфавита счёт начинается сначала (для латинского/английского алфавита значение 30=26+4, т.е. «d»). 38 Недостаток: ключ легко определяется использованием перебора вариантов и частотных характеристик языка. Существуют также мультипликативные шифры (вместо сложения для определения подставляемого символа используется умножение), а также алгоритмы, использующие к качестве ключей матрицы преобразований. Создание алгоритма подстановки, который приводит к принципиально неразгадываемому шифру (идеальный шифр) обеспечивается соблюдением принципов, выдвинутых К.Шенноном: • Ключ должен быть разным для каждого следующего сообщения • Длина ключа должны быть равна длине сообщения В ручных системах шифрования эти принципы реализуются при использовании так называемых «одноразовых блокнотов». В симметричной шифровании используются также алгоритмы перестановки. Ключ – правила перестановки символов. Современные симметричные алгоритмы шифрования, используемые в АИС, делятся на два типа — блочные и потоковые В потоковых шифрах шифрование делается в один момент времени над одним символом (таким, как символ или бит). Имеется поток исходного текста, поток зашифрованного текста и поток ключей (Пример: одноразовый блокнот). В блочных шифрах группа символов (блок) исходного текста зашифровывается, создавая вместе группу зашифрованного текста одного и того же размера. Используется единственный ключ, чтобы зашифровать целый блок. Для всех алгоритмов шифрования (криптоалгоритмов) выделяются следующие основные характеристики: • Криптографическая стойкость – способность криптографического алгоритма противостоять расшифровке. Стойким считается алгоритм, для раскрытия которого требуются недостижимые вычислительные ресурсов, недостижимый объём перехваченных открытых и зашифрованных сообщений или такое время раскрытия, что по его истечению защищённая информация будет уже не актуальна, и т. д. В большинстве случаев криптостойкость нельзя математически доказать, можно только доказать уязвимости криптографического алгоритма. • Длина ключа • Число раундов (для блочных шифров раунд – один из последовательных шагов обработки данных в алгоритме) • Длина обрабатываемого блока • Сложность аппаратной/программной реализации • Сложность преобразования В АИС применяется ограниченное число симметричных 39 криптоалгоритмов, наиболее часто используемыми являются следующие: • AES (Advanced Encryption Standard) – алгоритм блочного шифрования (размер блока 128 бит, ключ 128/192/256 бит). Поддержка AES введена фирмой Intel в семейство процессоров x86 начиная с Intel Core i7-980X Extreme Edition, а затем на процессорах Sandy Bridge. • DES (Data Encryption Standard) – алгоритм блочного шифрования (блоки по 64 бита, 16 раундов, ключ 56 бит) • ГОСТ 28147-89 – блочный шифр (с 64-битными блоками, 32 циклами преобразования и 256-битным ключом) • Triple DES (3DES) – использует преобразования DES три раза (самый распространённый вариант: «операции шифровка-расшифровка-шифровка» с тремя разными ключами) • IDEA (International Data Encryption Algorithm) – блочный шифр (128-битный ключ и 64-битный размер блока, исходный незашифрованный 64-битный блок делится на четыре подблока по 16 бит каждый). С каждым блоком выполняются операции сложения, умножения и XOR с использованием ключа. Алгоритм запатентован (использование требует отчислений). • Blowfish – блочный шифр (блоки 32 бита, ключ от 32 до 448 бит). Выполнен на простых и быстрых операциях: XOR, подстановка, сложение. Алгоритм свободно распространяется. Симметричные алгоритмы имеют одну фундаментальную уязвимость: требуется, чтобы обе стороны уже имели общий ключ, который каким-то образом должен быть им заранее передан (проблема распределения ключа). Вторая проблема симметричного шифрования – невозможность установить подлинность источника сообщения (все ключи одинаковые). Шифрование асимметричными ключами Алгоритмы асимметричного шифрования (шифрования с открытым ключом) разрабатывались для того, чтобы решить две основные проблемы симметричного шифрования. Асимметричность ключей означает, что алгоритм использует один ключ для шифрования, другой ключ – для дешифрования, и при этом вычислительно невозможно определить дешифрующий ключ, зная только алгоритм шифрования и шифрующий ключ. К реализации асимметричных алгоритмов предъявляются следующие требования: 1. Вычислительная лёгкость создания пары ключей (открытый ключ KU, закрытый ключ KR) 2. Вычислительная лёгкость создания зашифрованного сообщение С = Е KU [М] при наличии открытого ключа и незашифрованного сообщения М. 40 3. Вычислительная лёгкость дешифровки сообщения с использованием закрытого ключа: М = D KR [C] = D KR [Е KU [М]] 4. Вычислительная невозможность определить закрытый ключ KR, зная открытый ключ KU. 5. Вычислительная невозможность восстановить исходное сообщение М, зная открытый ключ KU и зашифрованное сообщение С. 6. (Дополнительно, не для всех алгоритмов) Коммутативность шифрующих и дешифрующих функций: М = D KR [C] = D KR [Е KU [М]] = Е KU [D KR [М]]. Основными способами использования алгоритмов с открытым ключом являются шифрование/дешифрование, создание и проверка подписи и обмен ключа. Шифрование с открытым ключом состоит из следующих шагов: 1. Пользователь B создает пару ключей KU b и KR b , используемых для шифрования и дешифрования передаваемых сообщений 2. Пользователь B делает доступным некоторым надёжным способом (публикует) свой ключ шифрования (открытый ключ KU b ). Составляющий пару закрытый ключ KR b держится в секрете 3. Если пользователь A хочет послать сообщение пользователю B, он шифрует сообщение, используя открытый ключ KU b 4. Когда пользователь B получает сообщение, он дешифрует его, используя свой закрытый ключ KR b . Никто другой не сможет дешифровать сообщение, так как этот закрытый ключ знает только пользователь B (при надёжном хранении закрытого ключа). Процесс иллюстрируется на рис. 25 (секретный ключ помечен точкой). Создание и проверка подписи состоит из следующих шагов: 1. Пользователь A создаёт пару ключей KU A и KR A , используемых для создания и проверки подписи передаваемых сообщений 2. Пользователь A делает доступным некоторым надёжным способом (публикует) свой ключ шифрования (открытый ключ KU A ). Составляющий пару закрытый ключ KR A держится в секрете. 3. Пользователь А создаёт свою подпись S, шифруя её своим закрытым ключом: S C =E KRA [S] и пересылает зашифрованную подпись пользователю B по надёжным каналам. 4. Пользователь B создаёт пару ключей для обмена сообщениям (см. выше). 5. Если пользователь A хочет послать подписанное сообщение пользователю B, он создаёт сообщение, включая в него свою защифрованную подпись и шифрует подписанное сообщение открытым 41 ключом пользователя B. 6. Когда пользователь B получает подписанное сообщение, он расшифровывает его своим закрытым ключом и проверяет соответствие подписи пользователя A. Никто другой не может подписать сообщение, так как закрытый ключ подписи знает только пользователь A (при надёжном хранении закрытого ключа). Рис. 25. Процесс обмена сообщениями при шифровании с асимметричным ключом. Невозможно изменить сообщение, не имея доступа к закрытому ключу KR A ; тем самым обеспечивается аутентификация и целостность данных. При использовании асимметричного шифрования для обмена ключей ключ симметричного шифрования рассматривается как сообщение., таким образом создаётся надёжный канал передачи симметричного ключа для конкретного сеанса информационного обмена — ключа сессии. При всей математической сложности асимметричного шифрования такие алгоритмы имеют ряд существенных преимуществ перед симметричными алгоритмами: • Не нужно предварительно передавать секретный ключ по надёжному каналу • Только одной стороне известен ключ шифрования, который нужно держать в секрете (в симметричной криптографии такой ключ известен обеим сторонам и должен держаться в секрете обеими) • Пару ключей можно не менять значительное время (при симметричном шифровании необходимо обновлять ключ после каждого 42 |