CITKIT.ru
3 терабайта свободного софта!
Logo    
IT-рынок Новости мира IT Океан(!) софта на CITKIT.ru Форумы Поступления в библиотеку Учебный центр Курилка
CitForum    CITForum на CD Море(!) аналитической информации! :: CITFORUM.RU
IT-консалтинг Software Engineering Программирование Open Source СУБД Безопасность Internet Сети Операционные системы Hardware

31.08.2005

Google
WWW CITForum.ru

Новости мира IT:

  • 20.05 - У Центробанка России похитили новую базу данных
  • 20.05 - Домашнюю страницу Google теперь можно персонализировать
  • 20.05 - В новом Netscape обнаружены старые "дыры"
  • 20.05 - Крупнейшие сотовики создали объединенную базу должников
  • 20.05 - Пиратские копии последней серии "Звездных войн" уже "разгуливают" в интернете
  • 20.05 - Русские программисты покорили Америку
  • 20.05 - IP-телевидение "Открытых Технологий"
  • 20.05 - Netscape 8 настроен обороняться от фишеров
  • 20.05 - "Яндекс" выпустил антиспамовый фильтр
  • 20.05 - ИТ-гиганты хотят отобрать Wi-Fi-патенты у Австралии
  • 19.05 - Software-testing.Ru будет развиваться при поддержке Borland
  • 19.05 - Intel прекращает выпуск Pentium M с частотой шины 400 МГц
  • 19.05 - Госсекреты США утекают через Wi-Fi-сети
  • 19.05 - Microsoft выпустила руководство по безопасности
  • 19.05 - Вышла финальная версия браузера Netscape 8.0
  • 19.05 - Intel готовит аппаратную платформу для корпоративных ПК
  • 19.05 - Бесплатные звонки через Yahoo! стали удобнее
  • 19.05 - Google купил два домена за миллион долларов
  • 19.05 - Соколов уверен: Рунет невозможно контролировать
  • 19.05 - В штате Вашингтон принят суровый закон против шпионского ПО
  • 19.05 - Google предложил настольный поисковик для бизнеса
  • 19.05 - Почту на Mail.Ru теперь можно слушать по мобильному телефону
  • 18.05 - Intel и Novell: Linux догоняет Microsoft в Бразилии
  • 18.05 - Gartner: IBM с Geronimo составит конкуренцию JBoss, BEA, Oracle
  • 18.05 - Seiko создала часы на основе "электронных чернил"
  • 18.05 - Японские батарейки работают на человеческой крови
  • 18.05 - PalmOne анонсировал КПК LifeDrive
  • 18.05 - Студенты МГУ будут обучаться на SAP
  • 18.05 - Intel запускает платформу для настольных ПК
  • 18.05 - Безопасность VPN оказалась виртуальной
  • 18.05 - Microsoft и Toshiba договорились об использовании патентов друг друга
  • 18.05 - Вторая версия Free Pascal: код полностью переписан
  • 18.05 - США будут искать террористов в интернете
  • 18.05 - Через пять лет все существующее ПО будет подделываться пиратами
  • 18.05 - Интернет-провайдеры Китая будут следить за пиратами в Сети
  • 18.05 - ЮТК построила мультимедийную МСС
  • 18.05 - "Альфа" подала иск о недействительности устава "Вымпелкома"
  • 18.05 - NTT DoCoMo представила мобильники с системой мобильного кошелька
  • 18.05 - В Байнете появился самообучающийся антиспам
  • 18.05 - AIM и ICQ интегрируют в онлайновые игры

    Архив новостей >>>


  • 2005 г.

    Oracle10: шифруем данные

    Владимир Пржиялковский
    Преподаватель технологий Oracle
    prz@yandex.ru
     
    Уж давно я тайну эту
    Хороню в груди своей
    И бесчувственному свету
    Не открою тайны сей ...
    К. Прутков, «Путник»

    1.Введение

    Современные промышленные СУБД позволяют хранить в своих базах данные одновременно многих пользователей, и поэтому желание защитить собственные данные от постороннего глаза вполне понятно. Некоторым решениям этого вопроса в Oracle были посвящены ранее публиковавшиеся статьи Выводимые таблицы с хранимым результатом. Часть 1, Выводимые таблицы с хранимым результатом. Часть 2, К каждой строке охранника приставишь! и В версии Oracle10 «виртуальные частные базы данных» данных стали избирательнее. Однако эти решения Oracle не позволяют закрыть проблему конфиденциальности полностью.

    Дело в том, что СУБД Oracle, так же как и другие промышленные системы, построена по принципу суперпользователя, который всегда способен прочитать все данные любого пользователя. Суперпользователем в Oracle является SYS. У него есть полномочие («привилегия») SELECT ANY TABLE, а значит он может прочитать данные всех таблиц в БД. У него есть привилегия ALTER USER, а значит он может временно подменить любому пользователю пароль, войти в систему под чужим именем и работать неотличимо от оригинала, так что никакой аудит не обнаружит несанкционированный доступ. Тем самым сотрудник, которыму предоставлено право работать под именем SYS, должен быть крайне доверенным лицом в организации, где используется БД под Oracle. Но можно ли снизить риск утечки собственных данных через суперпользователя?

    Ответ лежит вовне Oracle. Если перед помещением данных в БД их зашифровать, суперпользователь, хотя и прочтет, что хранится в БД, но ничего не поймет. Сделать это можно в клиентской программе, однако для сложного приложения организационно удобнее шифровать централизованнно, на сервере. Для этой цели можно воспользоваться двумя пакетами, специально предназначенных в Oracle для работы с шифрованными данными. Примеры такой работы приводятся далее.

    Пакет DBMS_OBFUSCATION_TOOLKIT

    Начиная с версии 8.1.6 с Oracle поставляется пакет для шифрования и расшифровки методом DES под названием DBMS_OBFUSCATION_TOOLKIT. Процедурой DESENCRYPT этого пакета можно с помощью ключа зашифровать текстовую строку, а процедурой DESDECRYPT расшифровать.

    Пример в SQL*Plus:

    SET SERVEROUTPUT ON
    
    DECLARE
    input_string      VARCHAR2(4000) := 'Morgen, morgen, nur nicht heute';
    
    work_string       VARCHAR2(4000);
    
    encrypted_string  VARCHAR2(4000);
    
    decrypted_string  VARCHAR2(4000);
    
    BEGIN
    DBMS_OUTPUT.PUT_LINE(input_string);
    
    work_string := RPAD
                    ( input_string
                    , (TRUNC(LENGTH(input_string) / 8) + 1 ) * 8
                    , CHR(0)
                    );
    
    DBMS_OBFUSCATION_TOOLKIT.DESENCRYPT
               (
                 input_string     => work_string
               , key_string       => 'MagicKey'
               , encrypted_string => encrypted_string
               );
    
    DBMS_OBFUSCATION_TOOLKIT.DESDECRYPT
               (
                input_string     => encrypted_string
               ,key_string       => 'MagicKey'
               ,decrypted_string => work_string
               );
    
    decrypted_string := RTRIM(work_string, CHR(0));
    
    DBMS_OUTPUT.PUT_LINE(decrypted_string);
    END;
    /
    

    Для шифрования использован восьмибайтовый ключ MagicKey. Так как алгоритм DES работает только со строками, кратными 8 байтам, мы вынуждены искусственно удлиннять входную строку. Для общего случая в качестве дополняющего символа наиболее естественным выглядит CHR(0), хотя в конкретных ситуациях он может и оказаться неприемлемым. В следующем разделе предложено более современное решение проблемы дополняющего символа.

    В этом же пакете имеются аналогичные процедуры для более стойкого алгоритма 3DES, а также для получения свертки текста по алгоритму MD5, что можно использовать для гарантии целостности данных (защита от несанкционированной подмены).

    Сценарий заведения пакета в БД находится в rdbms\admin\catobtk.sql.

    Пакет DBMS_CRYPTO

    В версии 10 в состав системных пакетов включен (в перспективе – на замену DBMS_OBFUSCATION_TOOLKIT) более функциональный пакет DBMS_CRYPTO, позволяющий шифровать данные других типов (не RAW и VARCHAR2, а RAW, CLOB и BLOB) и другими алгоритмами (не только DES, 3DES, но еще и AES, и RC4, и 3DES_2KEY плюс алгоритмы хеширования плюс параметризация этих алгоритмов). Он построен по иной технике, когда для шифрования используются всего две общие функции ENCRYPT и DECRYPT, а ссылка на конкретный алгоритм передается параметром. Вот как с помощью DBMS_CRYPTO может выглядеть DES-шифрование той же строки тем же ключом, что и выше:

    DECLARE
    input_string     VARCHAR2(255) := 'Morgen, morgen, nur nicht heute';
    raw_input        RAW(4000);
    
    key_string       VARCHAR2(8)  := 'MagicKey';
    raw_key          RAW(16);
    
    encrypted_raw    RAW(4000);
    encrypted_string VARCHAR2(4000);
    
    decrypted_raw    RAW(4000);
    decrypted_string VARCHAR2(4000);
    
    BEGIN
    DBMS_OUTPUT.PUT_LINE(input_string);
    
    raw_input := UTL_I18N.STRING_TO_RAW (input_string, 'AL32UTF8');
    
    raw_key := UTL_RAW.CAST_TO_RAW(CONVERT(key_string, 'AL32UTF8'));
    
    encrypted_raw := DBMS_CRYPTO.ENCRYPT
                     (
                      TYP => DBMS_CRYPTO.DES_CBC_PKCS5
                     ,SRC => raw_input
                     ,KEY => raw_key
                     );
    
    decrypted_raw := DBMS_CRYPTO.DECRYPT
                     (
                      TYP => DBMS_CRYPTO.DES_CBC_PKCS5
                     ,SRC => encrypted_raw
                     ,KEY => raw_key
                     );
    
    decrypted_string := UTL_I18N.RAW_TO_CHAR (decrypted_raw, 'AL32UTF8');
    
    DBMS_OUTPUT.PUT_LINE(decrypted_string);
    END; 
    /
    
    (Чтобы пример проработал, нужно будет выполнить от имени SYS:
    GRANT EXECUTE ON DBMS_CRYPTO TO PUBLIC;
    Скорее всего разработчики забыли вставить это предложение в сценарий заведения пакета и в будущих выпусках СУБД этого нам делать не придется).

    Здесь технология не требует искусственного удлиннения строки до нужной кратности, но зато необходимо предъявлять параметры в формате RAW и в кодировке AL32UTF8, что тоже приводит к усложнению текста.

    Константа DBMS_CRYPTO.DES_CBC_PKCS5 выше есть сумма трех констант ENCRYPT_DES (алгоритм шифрования, размер ключа), CHAIN_CBC (размер блоков, на которые в процессе шифрования будет разбиваться исходная строка) и PAD_PKCS5 (схема дополнения строки до требуемой кратности). В этом легко удостовериться:

    SQL> EXEC DBMS_OUTPUT.PUT_LINE(DBMS_CRYPTO.ENCRYPT_DES)
    1
    
    PL/SQL procedure successfully completed.
    
    SQL> EXEC DBMS_OUTPUT.PUT_LINE(DBMS_CRYPTO.CHAIN_CBC)
    256
    
    PL/SQL procedure successfully completed.
    
    SQL> EXEC DBMS_OUTPUT.PUT_LINE(DBMS_CRYPTO.PAD_PKCS5)
    4096
    
    PL/SQL procedure successfully completed.
    
    SQL> SELECT 1 + 256 + 4096 FROM DUAL;
    
    1+256+4096
    ----------
          4353
    
    SQL> EXEC DBMS_OUTPUT.PUT_LINE(DBMS_CRYPTO.DES_CBC_PKCS5)
    4353
    
    PL/SQL procedure successfully completed.
    

    Чтобы в точности воспроизвести пример с DBMS_OBFUSCATION_TOOLKIT выше, нужно будет дополнять шифруемую строку нулями, и тогда вместо

    TYP => DBMS_CRYPTO.DES_CBC_PKCS5
    
    указать
    TYP => DBMS_CRYPTO.ENCRYPT_DES 
         + DBMS_CRYPTO.CHAIN_CBC 
         + DBMS_CRYPTO.PAD_ZERO
    
    Упражнение Проверить, что алгоритм DES реализован в обоих пакетах идентично, зашифровав строку процедурой DESENCRYPT пакета DBMS_OBFUSCATION_TOOLKIT, а расшифровав функцией DECRYPT пакета DBMS_CRYPTO.

    Тем не менее, современная технология не рекомендует на практике дополнять строку нулями, а советует пользоваться схемой дополнения PKCS5.

    Пример указания алгоритма шифрования AES ключом в 128 разрядов:

    TYP => DBMS_CRYPTO.ENCRYPT_AES128 
         + DBMS_CRYPTO.CHAIN_CBC 
         + DBMS_CRYPTO.PAD_PKCS5
    

    Прочие возможности пакета DBMS_CRYPTO приведены в документации.


     


    SUPERSERVERS.RU - Аренда и Размещение Выделенных серверов! P4 2.6Ghz; 512 RAM; 2x80Gb SATA за 89 у.е./месяц. Бесплатный траффик.


    ХАЙВЕЙ - лучший российский хостинг-провайдер: хостинг, регистрация доменов, услуга Ваша@почта, поддержка 24 часа


    NetPromoter - единственный российский профессиональный комплекс программ и сервисов для раскрутки сайта и интернет-статистики


    STSS - известный поставщик надежных серверных решений различного назначения на платформе Intel (Xeon) и AMD.


    Подписка на новости IT-портала CITForum.ru
    (библиотека, ftp-архив CITKIT.ru)

    Новые поступления в on-line библиотеку:

    19 мая

  • RAID-массивы начального уровня
  • Волокно на весу
  • КрUтой FTP-сервер (о программе Serv-U)
  • Повышенная переносимость (о переносе данных на новый компьютер под управлением Windows XP)

    17 мая

    Большие перемены в разделе Все об Open Source

    Новые статьи:

  • О свободе выбора в чтении документации
  • Linux и языки Восточной Азии. С чего начать начинающему?
  • UNIX 5-th Edition на x86, или не забывайте историю
  • Запись CD-R/RW в BSD-системах
  • DragonFly: монтирование образов CD- и DVD-дисков
  • Монтирование сменных устройств для FreeBSD без прав root'а
  • Монтирование cd (с правами пользователя) в FreeBSD 5.3. Продолжение темы
  • FreeBSD 5.3 для конечного пользователя: три аспекта мультимедиа

    Снова дискуссия:

  • Каждому свое!
  • О сравнении Windows и Linux
  • Еще раз о доблести и злокозненности(А.Федорчук)

    12 мая

  • Материалы конференции "Корпоративные базы данных-2005"
  • Репортаж с Open Source Forum Russia
  • Взаимодействие Microsoft Excel с приложениями .NET. Позднее связывание
  • PC-BSD: вхождение в берклианскую тему

    28 апреля

  • Выбор первого дистрибутива Linux: Пособие для начинающих
  • Обфускация и защита программных продуктов
  • Анализ и оптимизация циклов с помощью производящих функций
  • Стратегии объектно-реляционного отображения: систематизация и анализ на основе паттернов

    26 апреля

  • Business Intelligence обещает значительный рост в 2005 году
  • Десять основных тенденций 2005 года в области Business Intelligence и Хранилищ данных
  • Управление эффективностью бизнеса и предсказуемость
  • Увеличение эффективности бизнеса: пять ошибок управления, которых следует избегать
  • Потребность в организационных данных: модель комплексного управления эффективностью бизнеса
  • Технология Хранилищ данных для государственных учреждений
  • Оцените, насколько совершенно ваше Хранилище данных

    21 апреля

  • Исполнение моделей при помощи виртуальной машины
  • Параллельные алгоритмы компьютерной алгебры
  • От стандарта до стандарта (о стандартизации оптических разъемов)
  • За штурвалом IP-станции

    Продолжение дискуссии читателей:

  • Линукс и пользователи, или что мне не нравится в Linux
  • Еще один взгляд на альтернативные ОС (и софт для них)
  • О некомпетентности пользователя Windows
  • Переписка Долгачева В.С. и Монахова В.В.

    19 апреля

  • Межпротокольный шлюз NAT-PT с функциями DNS-ALG и FTP-ALG для обеспечения взаимодействия между сетями IPv4 и IPv6
  • Рефакторинг архитектуры программного обеспечения: выделение слоев
  • Комбинаторика слов и построение тестовых последовательностей
  • Функциональное тестирование Web-приложений на основе технологии UniTesK

    14 апреля

  • Как организовать двойную парольную защиту данных в Oracle
  • Деревянный интерфейс

    Продолжение дискуссии читателей:

  • Microsoft против мира
  • Впечатления от прочитанного

    12 апреля

  • Крупные проблемы и текущие задачи исследований в области баз данных
  • Глава 2 из книги Т.Кайта "Oracle для профессионалов"Архитектура

    Дискуссия читателей о Linux и Windows:

  • Деньги правят миром, и у кого их больше, тот и прав!
  • О злокозненности некомпетентных пользователей, или почему я не люблю ограниченных пользователей Windows

    7 апреля

  • О доблести Билла Гейтса, или почему Windows лучше, чем LINUX или Mac OS
  • Витая пара - все ли так просто?!
  • Выбираем сервер печати
  • Один слой хорошо, а два - лучше (о пишущих DVD-приводах)

    5 апреля

  • Использование Caché SQL Gateway
  • Глава 19 из книги Т.Кайта "Oracle для профессионалов"Хранимые процедуры на языке Java
  • Что такое PostgreSQL?
  • Обновлен PostgreSQL FAQ

    31 марта

  • Использование Веб-сервисов в Caché
  • Защита на уровне строк (Oracle)
  • Секции в реальном мире

    29 марта

  • Разработка успешных приложений для Oracle - первая глава из книги Тома Кайта "Oracle для профессионалов"
  • Web-сервисы: растущие опасения (мнение аналитиков IDC)
  • Технология OLAP - мощная альтернатива электронным таблицам
  • Какой модной стала подготовка отчетности

    24 марта

  • Многоверсионность данных и управление параллельными транзакциями
  • Исключение из правил. Опыт разработки и внедрения финансовой корпоративной системы
  • Обнаружение компрометаций ядра Linux с помощью gdb
  • Корпоративная сервисная шина - "бюджетный" подход к решению задач интеграции
  • Сервис-ориентированная архитектура
  • Бизнес-процессы и XML

    22 марта

  • Доступно. И точка! (обзор точек беспроводного доступа)
  • Коммутаторы Fast/Gigabit Ethernet для "большой" сети
  • Push to Talk: нажми на кнопку и ...говори
  • Сети нового поколения и технология softswitch

    17 марта

  • Часто задаваемые вопросы о proxy (proxy FAQ)
  • Самонастраивающаяся база данных: управляемые приложения и настройка SQL
  • Еще раз о волоконных трассах
  • Настраиваем русский Unicode в FreeBSD-5.3.

    10 марта

  • Еще не сказанное о волоконной оптике
  • Wi-Fi на службе оператора
  • Пора менять платформу?
    (о сокетах LGA775 и PGA478)

    Oracle:

  • Детальный аудит для практических целей
  • Шифруем свои ресурсы данных

    3 марта

  • Требования к проекту. Классификация - первый шаг к пониманию
  • Gtk vs. Qt: драки не будет
  • Управление бизнесом "по максимуму": BPM для финансовых учреждений
  • Реализация решения по управлению эффективностью бизнеса
  • Новые SerialATA-винчестеры
  • Карман для сервера

    1 марта

  • Выбрать корпус - нет ничего проще?
  • Создание виртуальной сети с удаленной загрузкой узлов
  • Текущее состояние и перспективы развития рынка интеграционных технологий
  • Интеграция корпоративной информации: новое направление
  • Архитектурные подходы к консолидации

    24 февраля

  • Каждому проекту своя методология
  • Императив интеграции
  • Безопасность IP-телефонии - полевые зарисовки
  • О злокозненности Билла Гейтса, или почему я не люблю Windows

    22 февраля

  • Oracle10: шифруем данные
  • В версии Oracle10 "виртуальные частные базы данных" данных стали избирательнее
  • Каждому (пользователю) свое (данное в таблице)
    Часть 1
    Часть 2
  • Ускоряем интернет
  • Сетевая аутентификация на практике
  • В фокусе Microsoft Virtual Server 2005

    17 февраля

    Открыт новый раздел
    Все об Open Source

    Все новости >>>



  • IT-консалтинг Software Engineering Программирование Open Source СУБД Безопасность Internet Сети Операционные системы Hardware

    Информация для рекламодателей PR-акции, размещение рекламы - pr@citforum.ru, тел. +7 095 4119920 Пресс-релизы - manager@citforum.ru
    Послать комментарий
    Информация для авторов
    Rambler's Top100 TopList liveinternet.ru: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодня This Web server launched on February 24, 1997
    Copyright © 1997-2000 CIT, © 2001-2004 CIT Forum
    Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...