Форум программистов, компьютерный форум, киберфорум
Теория и практика программирования
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
4200 / 1792 / 211
Регистрация: 24.11.2009
Сообщений: 27,563
1

Защита информации

17.05.2011, 05:37. Показов 1751. Ответов 14
Метки нет (Все метки)

Как реализуется защита информации, например, в БД? Предположим, зарегестрировано несколько пользователей с различными логинами и паролями и пересекающимися правами. То есть для любых двух пользователей существуют таблицы, досутуп к которым имеет один из них и таблицы, доступ к которым имеют оба. Привязывать криптоключ к логину, или к паролю? У разных пользователей они не совпадают, но есть информация, которая должна быть доступна более, чем одному. Дублировать? Во-первых разрастается файл, а во-вторых как быть при модификации? Кто нибудь под своим паролем изменит свою копию, а как потом внести эту инфу в остальные копии? Таблица паролей? Но сам файл БД валяется в каталоге, доступ к которому в ОС разрешён всем, возможно даже все эти пользователи в ОС входят под одним логином и паролем. А отсюда возможность открытия файла не СУБД, а чем то "левым" и все пароли и данные будут прочитаны. Шифровать весь файл общим ключом? В СУБД будет этот ключ. Как избежать его прочтения в коде СУБД? Причём, в случае открытого исходника СУБД он будет доступен всем, кто знает язык, на котором она написана и сложность дизасемблирования вообще не будет влиять на взломоустойчивость.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.05.2011, 05:37
Ответы с готовыми решениями:

Криптография и защита информации - SOS
Может у кого есть что-нибудь по этим темам: - Энтропия и информация устной речи; - Энтропия и...

ЗАЩИТА информации и программы от копирования
У меня такой вопрос: Кто-нибудь занимался ЗАЩИТОЙ программы -> данные в базе данных, сама...

Задача по теории информации. Расчет наибольшего количества информации
На радиорелейной линии для передачи символов 0 и 1 используются радиоимпульсы мощностью 1 и 10 Вт...

Защита информации
Перебросьте, пожалуйста, в нужную тему. У меня такая задача. Многопользовательская база(...

14
Модератор
3907 / 2884 / 553
Регистрация: 21.01.2011
Сообщений: 12,496
17.05.2011, 09:51 2
Очень сложно отвечать в общем случае без привязки к БД.
Например в нормальных клиент-серверных СУБД физический доступ к файлам БД имеет, как правило, только DBA, остальных туда не пускают даже на пушечный выстрел
0
4200 / 1792 / 211
Регистрация: 24.11.2009
Сообщений: 27,563
18.05.2011, 08:32  [ТС] 3
А при чём здесь клиент? Пользователи имеют физический доступ к компьютеру, рарегистрированы в его ОС, на нём установлено одно приложение, полностью реализующее весь функционал СУБД[/B]. MS Access видел? Стоит аналогичная приалада. В этом приложении создан файл БД, пользователи знают, как его зовут и в каком каталоге он валяется, имеют полный доступ к этому каталогу. Теперь представь себе: один из этих пользователей открыл файл через блокнот, или через самописный hex-редактор файлов. Как от такого умника защитить данные остальных пользователей? Или пусть даже эта же прилада умеет работать сервером в клиент-серверной архитектуре, но она всё раывно данные хранит в файле. Но 127-ю сеть никто не отменял, а в конкретном случае всё установлено на одной машине. И снова тот же вопрос. Как защить данные при прямом досутпе к файлу?

Добавлено через 6 минут
Цитата Сообщение от Grossmeister Посмотреть сообщение
DBA
Кто такой DBA?

Цитата Сообщение от Grossmeister Посмотреть сообщение
без привязки к БД.
,
Цитата Сообщение от Grossmeister Посмотреть сообщение
остальных туда не пускают
. Возможно, я косо сформулировал, но вопрос в том, как в в своей СУБД, или в своей поделухе на тему СУБД (если полноценная СУБД не получится) реализовать защиту, исходя из того, что все пользователи СУБД и энное количество пользователей компьютера, но не СУБД имеют физический доступк к файлу. Это условие. Если сервер СУБД стоит на отдельном компе, а пользователи физического доступа к нему не имеют, то хватит и таблицы паролей: серверное приложение следит за легальностью доступа, а "левые" запросы просто не выполняет.
0
Модератор
3907 / 2884 / 553
Регистрация: 21.01.2011
Сообщений: 12,496
18.05.2011, 10:09 4
Цитата Сообщение от taras atavin
А при чём здесь клиент? Пользователи имеют физический доступ к компьютеру, рарегистрированы в его ОС, на нём установлено одно приложение, полностью реализующее весь функционал СУБД[/B]. MS Access видел?
Поэтому я и сказал, что надо вести разговор применительно к конкретной СУБД.
В современных СУБД: Oracle, MS SQL, Sybase, DB2 достаточно много наворотов, связанных с защитой (отнюдь не одни пароли). Поскольку для серьезных бизнес-задач это существенно.
А всякие dBase, Paradox, MS Access относятся к классу персональных СУБД. Т.е. фактически они расчитаны на работу с одним пользователем (так же, как и персональный компьютер). Да, на них можно организовать многопользовательскую работу, но тогда для реализации того, что в клиент-серверных СУБД реализовано встроенными средствами (та же защита, backup/recovery и проч.) надо придумывать всякие костыли типа пароля на файл, как сделано в Paradox и Access

Цитата Сообщение от taras atavin
Как защить данные при прямом досутпе к файлу?
На sql.ru периодически возникают подобные вопросы, по крайней мере на форуме Oracle. Так вот, общий вывод - никак. Если человек имеет физический доступ к файлу, то он может сделать с ним что угодно: удалить, испортить, в конце концов унести с собой. А там, даже если файл зашифрован, то при неограниченном времени завсегда можно его расковырять.
Поэтому разнесение БД и клиентского приложения по разным компам весьма желательно.

Цитата Сообщение от taras atavin
Кто такой DBA?
У-у-у, как все запущено... DataBase Administrator

Цитата Сообщение от taras atavin
Если сервер СУБД стоит на отдельном компе, а пользователи физического доступа к нему не имеют, то хватит и таблицы паролей: серверное приложение следит за легальностью доступа, а "левые" запросы просто не выполняет.
Не всегда хватает одних паролей. Например, несколько пользователей имею доступ к одной таблице, но каждый должен видеть только "свои" данные. И проч., и проч. Поэтому я и сказал, что в современных СУБД достаточно много разнообразных средств защиты на разных уровнях. В том числе и шифрование данных/трафика, хотя это применяется не так часто
0
4200 / 1792 / 211
Регистрация: 24.11.2009
Сообщений: 27,563
18.05.2011, 10:25  [ТС] 5
Цитата Сообщение от Grossmeister Посмотреть сообщение
удалить, испортить
Задача защититься от этого не стоит, как нерешаемая. Но пользователь не должен иметь возможность такой модификации файла БД без сипользования СУБД, после которой СУБД сочёт его валидным. И он не должен иметь возможности понять данные, читаемые без помощи СУБД. Желательно, чтоб он также не получал таких возможностей, прочитав исходный тектс самой СУБД.
Цитата Сообщение от Grossmeister Посмотреть сообщение
Не всегда хватает одних паролей. Например, несколько пользователей имею доступ к одной таблице, но каждый должен видеть только "свои" данные.
А с каких это пор у записей в таблице появился владелец? Или имеются ввиду незавершённые транзакции?
0
Модератор
3907 / 2884 / 553
Регистрация: 21.01.2011
Сообщений: 12,496
18.05.2011, 10:56 6
Цитата Сообщение от taras atavin
Задача защититься от этого не стоит, как нерешаемая.
Я уже сказал, что можно шифровать данные. Но, во-первых, любой шифр можно раскрыть за конечное время. Во-вторых, можно дизассемблировать и саму прикладнуху. Поэтому, когда говорится о защите, всегда надо закладываться на квалификацию потенциального взломщика. Типа вот от таких мы защититься можем, а если более крутой - тогда увы. Иначе сложность системы зашиты многократно превысит сложность самой системы и, соответственно, сделает систему значительно дороже.
А стоит ли этого система, разрабатываемая на несовременной СУБД - большой вопрос. Тем более, что у тех же Oracle и MS SQL есть бесплатные версии, которые правда имеют некоторые ограничения

Цитата Сообщение от taras atavin
А с каких это пор у записей в таблице появился владелец? Или имеются ввиду незавершённые транзакции?
Да сколько угодно. Заводится отдельное поле, в котором прописывается либо пользователь, либо пользовательская группа. Например, данные одного отдела не должны быть видны другому. И т.д.
А данные незавершенной транзакции, в Oracle например, видны только в сессии, которая проводит эту транзакцию. Для этого не надо предпринимать никаких дополнительных действий, так устроен механизм
0
4200 / 1792 / 211
Регистрация: 24.11.2009
Сообщений: 27,563
18.05.2011, 11:32  [ТС] 7
Цитата Сообщение от Grossmeister Посмотреть сообщение
Во-вторых, можно дизассемблировать и саму прикладнуху. Поэтому, когда говорится о защите, всегда надо закладываться на квалификацию потенциального взломщика.
Дизасемблировать не сможет, но исходный текст прочиать вполне в состоянии, а текст этот будет открыт.
Цитата Сообщение от Grossmeister Посмотреть сообщение
А данные незавершенной транзакции, в Oracle например, видны только в сессии, которая проводит эту транзакцию.
Думаешь я до этого не допёр? Ну так к сесии и привязать, опять таки этим займётся сервер. Интересует решение задачи разгарничения доступа на локальном компе, а не в распределённой системе, с учётом возможности наличия hex-редактора файлов и заведомо точного занания, где этот файл валяется, но только при поочерёдном доступе к БД, то есть один пользователь закрыл СУБД, второй сел и залогинился.

Добавлено через 14 минут
Цитата Сообщение от Grossmeister Посмотреть сообщение
Да сколько угодно. Заводится отдельное поле, в котором прописывается либо пользователь, либо пользовательская группа.
А с каких пор СУБД начали понимать семантику таких полей? WHERE передаётся с клиента и может быть каким угодно, так что это не разграничение досутпа, а простая выборка, реализуется обработкой запросов.
Цитата Сообщение от Grossmeister Посмотреть сообщение
Например, данные одного отдела не должны быть видны другому
Причём, идентифкатор отдела обозначает не отдел, в котором пользователь числится по шатному расписанию, а отдел, который в данный момент пользователя интересует. Для того, чтоб запись действительно имела владельца, семантику такого поля должна понимать сама СУБД. Так вот, даже если так сделать, всё равно придётся всё привязать к логинам и паролям.
0
Модератор
3907 / 2884 / 553
Регистрация: 21.01.2011
Сообщений: 12,496
18.05.2011, 11:38 8
Цитата Сообщение от taras atavin
А с каких пор СУБД начали понимать семантику таких полей? WHERE передаётся с клиента и может быть каким угодно, так что это не разграничение досутпа, а простая выборка, реализуется обработкой запросов.
В Oracle есть такая штука, FGAC называется (Fine Grained Access Control). Я могу наложить на таблицу некоторую политику, после чего Oracle будет определенным образом модифицировать WHERE исходного запроса к этой таблице. Причем пользователь об этом знать не будет.

Еще один способ - не давать пользователю прав на доступ к таблицам, а организовать доступ с пом. хранимых процедур, гранты на выполнение которых и выдать. Понятное дело, что поскольку я сам пишу эти процедуры, то в них я могу организовать какой хошь контроль
0
4200 / 1792 / 211
Регистрация: 24.11.2009
Сообщений: 27,563
18.05.2011, 11:48  [ТС] 9
К чему привязана политика? К тем же логинам/паролям. То есть если другой пользоваетель зайдёт под другим логином и с другим паролем, то у него будет другая модификация WHERE. Всё тоже самое, только на уровне записей, а не таблиц и занимается этим опять сервер. К программе обратились за данными, она их предоставила и при этом определённым образом отфильтровала. Это не так интересно. А интересен совсем другой аспект: пользователь с помощью другой программы залез туда, где программа данные хранит и не должен ничего понять, а любая правка должна сделать файл полностью невалидным с точки зрения первой программы. При этом желательно исходить из того, что автору вторйо программы известна не только спецификация, но даже исходный текст первой программы и он понимает язык, на котором она написана. И разграничение доступа на уровне записей делать не надо, а надо только на уровне таблиц. Причём, для каждого пользователья должно поддерживаться три уровня доступа к каждой таблице:
1 может догадываться о существовании таблицы, но доствоерной информаии не имеет, ни читать, ни редактировать не может, а при попытке набрать запрос текстом и выполнить его, получает сообщение "доступ закрыт, или таблица не существует", не звисимо от правильности самого запроса,
2 видит таблицу в списке существующих таблиц, может читать все её записи, но редактировать не может ни одну запись,
3 полный доступ.
0
Модератор
3907 / 2884 / 553
Регистрация: 21.01.2011
Сообщений: 12,496
18.05.2011, 12:08 10
Цитата Сообщение от taras atavin
И разграничение доступа на уровне записей делать не надо, а надо только на уровне таблиц. Причём, для каждого пользователья должно поддерживаться три уровня доступа к каждой таблице:
1 может догадываться о существовании таблицы, но доствоерной информаии не имеет, ни читать, ни редактировать не может, а при попытке набрать запрос текстом и выполнить его, получает сообщение "доступ закрыт, или таблица не существует", не звисимо от правильности самого запроса,
2 видит таблицу в списке существующих таблиц, может читать все её записи, но редактировать не может ни одну запись,
3 полный доступ.
На примере Oracle:
1. элементарно решается грантами, либо непосредственными, либо через роли (последние - это просто контейнер для группы грантов). Если у юзера нет гранта на SELECT из таблицы, то на любое обращение к ней будет получать сообщение ORA-942 table or view does not exist
2. то же самое, только есть грант на SELECT, но нет на INSERT/UPDATE/DELETE

Второй способ я уже упомянул - через хранимые процедуры.

PS
К слову сказать, я бы не взялся вытащить данные из файлов Oracle с пом. hex-editor.
Во-первых, строковые данные в явном виде там не присутствуют (т.е. при просмотре никаких символов не видно). Во-вторых, данные одной таблицы совершенно не обязательно располагаются подряд, а могут быть раскиданы по файлу, а то и по нескольким.
0
4200 / 1792 / 211
Регистрация: 24.11.2009
Сообщений: 27,563
19.05.2011, 06:14  [ТС] 11
Цитата Сообщение от Grossmeister Посмотреть сообщение
На примере Oracle:
1. элементарно решается грантами, либо непосредственными, либо через роли (последние - это просто контейнер для группы грантов). Если у юзера нет гранта на SELECT из таблицы, то на любое обращение к ней будет получать сообщение ORA-942 table or view does not exist
2. то же самое, только есть грант на SELECT, но нет на INSERT/UPDATE/DELETE
Мне не надо, как это с точки зрения админа, выглядит в готовой СУБД. Представь себе, что я начинающий кроиворазработчик новой кривой СУБД и посоветуй мне, как это реализовать. Как это делается с точки зрения разработчика?

Добавлено через 1 минуту
Цитата Сообщение от Grossmeister Посмотреть сообщение
Второй способ я уже упомянул - через хранимые процедуры.
А как их поддерживать? И на чём они пишутся? Это надо делать свой интерпретатор процедурного языка? Какой то свой аналог PL/SQLа или свою реализацию самого PL/SQLа? Или как? И как это поможет защитить информацию при физическом доступе к файлу?
0
4200 / 1792 / 211
Регистрация: 24.11.2009
Сообщений: 27,563
19.05.2011, 06:25  [ТС] 12
Цитата Сообщение от Grossmeister Посмотреть сообщение
я бы не взялся вытащить данные из файлов Oracle с пом. hex-editor.
А с помощью текстового редактора, но из этого вложения?
Вложения
Тип файла: txt data.xml.txt (262 байт, 12 просмотров)
0
4200 / 1792 / 211
Регистрация: 24.11.2009
Сообщений: 27,563
19.05.2011, 06:28  [ТС] 13
На расширение не смотри, на самом деле только xml. И именно здесь защита отсутсвует специально. Но если делать с защитой, то как её реализовать?
0
Модератор
3907 / 2884 / 553
Регистрация: 21.01.2011
Сообщений: 12,496
19.05.2011, 09:52 14
Цитата Сообщение от taras atavin
Мне не надо, как это с точки зрения админа, выглядит в готовой СУБД. Представь себе, что я начинающий кроиворазработчик новой кривой СУБД и посоветуй мне, как это реализовать. Как это делается с точки зрения разработчика?
Цитата Сообщение от taras atavin
А как их поддерживать? И на чём они пишутся? Это надо делать свой интерпретатор процедурного языка? Какой то свой аналог PL/SQLа или свою реализацию самого PL/SQLа? Или как? И как это поможет защитить информацию при физическом доступе к файлу?
Собственно говоря, я уже все сказал выше.
Основной тезис: есть СУБД, которые разрабатываются и совершенствуются десятилетиями. В них есть все (ну или почти все ), что нужно для бизнеса, в том числе и средства защиты. Поэтому бизнес, которому критично сохранение информации, в том числе и секретности, выбирает именно их.
Если выбирается что-то более простое (тот же Access), то либо сохранение не столь критично, либо заказчик слишком скупой (а скупой, как известно, платит дважды).
Можно конечно попытаться создать самому некий аналог "больших СУБД" (хотя бы с точки зрения защиты), но подозреваю, что это получится значительно хуже (хотя бы потому, что будет потрачено значительно меньше времени). Кроме того, создание таких средств значительно утяжелит и удорожит разработку.
Это похоже на ситуацию, когда человек сначала сам создает себе трудности, а потом мужественно их преодолевает.
0
4200 / 1792 / 211
Регистрация: 24.11.2009
Сообщений: 27,563
19.05.2011, 11:15  [ТС] 15
Цитата Сообщение от Grossmeister Посмотреть сообщение
Можно конечно попытаться создать самому некий аналог "больших СУБД" (хотя бы с точки зрения защиты), но подозреваю, что это получится значительно хуже (хотя бы потому, что будет потрачено значительно меньше времени). Кроме того, создание таких средств значительно утяжелит и удорожит разработку.
Хочу сам слепить нечто, напоминающее СУБД. Без поддержки хранимых процедур вообще. А может быть и без поддержки нескольких сессий одновременно. Но с защитой, может и дряной, но из того, что смогу реализовать, максимальной, а ты предлагаешь выбор между ораклом и противоположной крайностью, ломаемой случайным кликом. Такой вариант тоже будет, но там вообще не будет даже логинов.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.05.2011, 11:15

Защита информации
Всем добрый вечер! Создал базу и встал вопрос о защите информации. Внутри сделал админку с...

защита информации
всем доброго дня! вот допустим задача: сделать склад конфиденциальной информации, которую бы...

Защита информации
Здравствуйте, помогите, пожалуйста, разобраться... У меня на Windows 8 установлен локальный сервер...

защита информации
Каким образом подключить внешний криптопровайдер к лотусу?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.