Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

VPS в России, Европе и США

Бесплатная поддержка и администрирование

Оплата российскими и международными картами

🔥 VPS до 5.7 ГГц под любые задачи с AntiDDoS в 7 локациях

💸 Гифткод CITFORUM (250р на баланс) и попробуйте уже сейчас!

🛒 Скидка 15% на первый платеж (в течение 24ч)

Скидка до 20% на услуги дата-центра. Аренда серверной стойки. Colocation от 1U!

Миграция в облако #SotelCloud. Виртуальный сервер в облаке. Выбрать конфигурацию на сайте!

Виртуальная АТС для вашего бизнеса. Приветственные бонусы для новых клиентов!

Виртуальные VPS серверы в РФ и ЕС

Dedicated серверы в РФ и ЕС

По промокоду CITFORUM скидка 30% на заказ VPS\VDS

2007 г.

Шифрование паролей в СУБД Oracle
Приложения

к.ф.-м.н. Пудовченко Ю.Е.

НазадСодержание

Приложение 1. DES и режим CBC

DES - один из наиболее популярных шифровальных алгоритмов, разработан компанией IBM и Правительством США в 1977 г. для защиты коммерческой информации. Таким образом, DES - поддержанный на государственном уровне симметричный алгоритм.

Алгоритм DES использует случайный 56-битовый ключ шифрования, это означает 256= 72 057 594 037 927 936 возможных ключей1, приблизительно 7,2*1017 значений. Размер блока шифрования 64 бит. Открытый текст разбивается на блоки по 64 бит и подается на вход DES, в результате чего получается шифртекст. Алгоритм DES имеет 4 режима работы. Один из них Cipher Block Chaining (CBC).

CBC - это режим шифрования с обратной связью, при котором перед вычислением очередного шифрованного блока открытый текст складывается побитно по модулю 2 с предыдущим шифртекстом. В режиме СВС над открытым текстом и предыдущим шифртекстом выполняется операция XOR и тем самым каждый предыдущий шифрблок используется для модифицирования очередного блока открытого текста.

Если без обратной связи шифрование DES производится так:

Блок 1 Блок 2 Блок 3 Блок 4
Шифртекст 1 Шифртекст 2 Шифртекст 3 Шифртекст 4


где ↓ означает шифрование DES, то в режиме СВС так:

Блок 1 Блок 2 Блок 3 Блок 4
Шифртекст 1 Шифртекст 2 Шифртекст 3 Шифртекст 4


где означает операцию XOR (побитовое сложение без переноса).

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

Для того чтобы два одинаковых сообщения после шифрования выглядели по-разному, вводится понятие вектора инициализации, или по-криптографически - синхропосылка. Это и есть та самая «соль», которая делает хеши сообщений непохожими друг на друга:

Синхропосылка Блок 1 Блок 2 Блок 3 Блок 4
Шифртекст 0 Шифртекст 1 Шифртекст 2 Шифртекст 3 Шифртекст 4


DES - достаточно старый алгоритм. Его основные недостатки - это малая длина ключа и малая длина блока. Малая длина ключа позволяет сейчас осуществить полный перебор ключей за относительно небольшое время (несколько часов, максимум несколько дней). Малая длина блока делает этот шифр уязвимым к коллизиям.

На сегодняшний день общепризнанно минимальной длиной ключа для симметричных алгоритмов является 128 бит, а размер блока 256 бит. (На этот счет имеются работы автора данной статьи [журнал Конфидент 3/98, 6/98] и в Интернете)

Стойкость несимметричных алгоритмов используемых в Oracle (RSA, Diffie-Hellman) основывается на задаче факторизации больших чисел, поэтому минимальная граница для них совершенно другая - 2048 бит, а лучше 4096.

Приложение 2

Скрипт who_can_access.sql Питера Финигана (Pete Finnigan), позволяющий найти пользователей, имеющих доступ к этим объектам. Получен отсюда.

who_can_access: Release 1.0.3.0.0 - Production on Thu Apr 20 12:53:15 2006
Copyright (c) 2004 PeteFinnigan.com Limited. All rights reserved.

NAME OF OBJECT TO CHECK       [USER_OBJECTS]: dba_users
OWNER OF THE OBJECT TO CHECK          [USER]: sys
OUTPUT METHOD Screen/File                [S]: 
FILE NAME FOR OUTPUT              [priv.lst]: 
OUTPUT DIRECTORY [DIRECTORY  or file (/tmp)]: 
EXCLUDE CERTAIN USERS                    [N]: 
USER TO SKIP                         [TEST%]: 

Checking object => SYS.DBA_USERS
====================================================================

Object type is => VIEW (TAB)
        Privilege => SELECT is granted to =>
        User => CTXSYS (ADM = NO)
        Role => SELECT_CATALOG_ROLE (ADM = NO) which is granted to =>
                Role => OLAP_USER (ADM = NO) which is granted to =>
                        User => SYS (ADM = YES)
                Role => DBA (ADM = YES) which is granted to =>
                        User => ABS (ADM = NO)
                        User => SYS (ADM = YES)
                        User => SYSMAN (ADM = NO)
                        User => YU (ADM = NO)
                        User => ABS_TYPES (ADM = NO)
                        User => SYSTEM (ADM = YES)
                Role => IMP_FULL_DATABASE (ADM = NO) which is granted to =>
                        User => SYS (ADM = YES)
                        Role => DBA (ADM = NO) which is granted to =>
                                User => ABS (ADM = NO)
                                User => SYS (ADM = YES)
                                User => SYSMAN (ADM = NO)
                                User => YU (ADM = NO)
                                User => ABS_TYPES (ADM = NO)
                                User => SYSTEM (ADM = YES)
                Role => OLAP_DBA (ADM = NO) which is granted to =>
                        Role => DBA (ADM = NO) which is granted to =>
                                User => ABS (ADM = NO)
                                User => SYS (ADM = YES)
                                User => SYSMAN (ADM = NO)
                                User => YU (ADM = NO)
                                User => ABS_TYPES (ADM = NO)
                                User => SYSTEM (ADM = YES)
                        User => OLAPSYS (ADM = NO)
                        User => SYS (ADM = YES)
                User => SH (ADM = NO)
                Role => EXP_FULL_DATABASE (ADM = NO) which is granted to =>
                        Role => DBA (ADM = NO) which is granted to =>
                                User => ABS (ADM = NO)
                                User => SYS (ADM = YES)
                                User => SYSMAN (ADM = NO)
                                User => YU (ADM = NO)
                                User => ABS_TYPES (ADM = NO)
                                User => SYSTEM (ADM = YES)
                        User => SYS (ADM = YES)
                User => PERFSTAT (ADM = NO)
                User => SYS (ADM = YES)
                User => IX (ADM = NO)

Таким образом, можно определить пользователей, получивших права SELECT ANY DICTIONARY или SELECT ANY TABLE.

Привилегия SELECT ANY TABLE работает только в случае, если o7_dictionary_accessibilty=TRUE

Приложение 3. Математическая модель стойкости парольной защиты

Пусть в информационной системе (ИС) имеется злоумышленник, который в некоторый момент времени начинает атаку на эту ИС путем подбора пароля для какого-либо учетной записи.

Для того чтобы гарантированно подобрать пароль, ему придется выполнить SL попыток, где S - это мощность алфавита, из которого выбираются символы пароля, а L - длина пароля. Если каждая попытка требует ввода C символов (логин + пароль), а злоумышленник вводит символы со скоростью R знаков в секунду, то на каждую попытку ввода пароля требуется C/R секунд. Если в системе предусмотрена задержка D секунд, срабатывающая при вводе неверных реквизитов, то время на одну попытку потребуется C/R+D секунд.

В результате общее время, необходимое, чтобы перебрать всевозможные пароли, выражается формулой

где (D+C/R) определяет полное время, затрачиваемое нарушителем на одну попытку подбора пароля, SL - общее количество возможных паролей.

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

Коэффициент ½ появился потому, что величина SL(D+C/R) есть максимальное время, т.е. время перебора злоумышленником всех возможных значений. А вот среднее значение (математическое ожидание случайной величины, в течение которого система защиты не поддается взлому) равно половине максимального времени для равномерно распределенных случайных величин. Отсюда и коэффициент ½.

Если злоумышленник производит ряд случайных попыток в течение времени t, то вероятность взлома системы защиты за это время есть отношение t/T:

Таким образом, администратор обладает простым и эффективным средством для определения вероятности взлома, в зависимости от конкретных параметров, установленных в конкретной системе.

Предположим, что необходимо вычислить минимальную длину пароля при прочих фиксированных параметрах, чтобы злоумышленник за время t не смог подобрать пароль с вероятностью большей, чем некоторое малое p. Тогда, так как SL = (t*R)/(P*(D+C/R)* C), то можно записать

Попробуем рассчитать нижнюю границу для Тб для СУБД Oracle, для чего сделаем несколько реальных предположений. Пусть нарушитель работает со скоростью 100 символов в секунду (R). Длина логина пусть будет 3 и 6 знаков (SYSTEM и SYS), длина пароля 8 знаков, а задержка отсутствует. В результате, получаем, что злоумышленник будет трудиться

ЛогинДлина логинаДлина пароляТб
System 6 8 123 668 лет
Sys 3 8 194 336 лет

Вроде бы немало лет набегает даже для 8-значных паролей. Но данное расчетное значение справедливо только при низкой скорости ввода паролей и отсутствии других путей, позволяющих получить пароль с меньшей вычислительной сложностью. Однако в действительности в СУБД Oracle это значение намного меньше.


1(обратно к тексту)Не во всех версиях СУБД Oracle выдерживается значение 56 бит. В силу ограничений экспортного законодательства США в 80-90 гг., запрещающего продавать за рубеж ПО и аппаратуру, содержащие стойкие криптографические алгоритмы, длина ключа для экспортных версий СУБД Oracle искусственно занижалась до 40 бит, что облегчает правительству США чтение шифрованной информации. Признание этого факта содержится в "Oracle Database Advanced Security Administrator's Guide" страница 1-4: "Prior versions of Oracle Advanced Security provided three editions: Domestic, Upgrade and Export, each with different key length. Oracle Advanced Security 10g Release 2 (10.2) contains a complete complement of the available encryption algorithms and lengths, previously only available in the Domestic edition. … The U.S. government has relaxed its export guidelines for encryption products. Accordingly, Oracle can ship Oracle Advanced Security with its strongest encryption features to all of its customers" В последние годы экспортный контроль Гос. Департаментом США был значительно ослаблен, поскольку производители ПО и электроники стали нести слишком большие потери (упущенная выгода), из-за этих ограничений.
VPS/VDS серверы. 30 локаций на выбор

Серверы VPS/VDS с большим диском

Хорошие условия для реселлеров

4VPS.SU - VPS в 17-ти странах

2Gbit/s безлимит

Современное железо!

Бесплатный конструктор сайтов и Landing Page

Хостинг с DDoS защитой от 2.5$ + Бесплатный SSL и Домен

SSD VPS в Нидерландах под различные задачи от 2.6$

✅ Дешевый VPS-хостинг на AMD EPYC: 1vCore, 3GB DDR4, 15GB NVMe всего за €3,50!

🔥 Anti-DDoS защита 12 Тбит/с!

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

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

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

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