Сокрытие данных, "импортированных" из БД
От: Аноним  
Дата: 10.09.05 11:11
Оценка:
Сперва хочу извиниться. Никак не мог выбрать, в какой форум лучше писать. Решил писать в БД. Короче говоря – возникли вопросы вот какого плана…
1) Есть DB. Есть софтина, с ней работающая через ODBC. Нужно сделать так, чтобы пароль на чтение БД невозможно было извлечь из программы. А то, получается, вся эта криптография – лажа, если можно просто взять дизассемблер, Hex-editor (etc) и всё пойдет прахом.
2) Как сделать, чтобы СТРОКИ или какие-либо бинарные данные, извлечённые из БД нельзя было прочитать в памяти программы? Т.е. допустим там хранится важная инфа и программа НА ЕЁ основе делает какие-то вычисления. А информацию эту нельзя «выпускать» из БД дальше.
Короче, прошу посоветовать, как всё это провернуть. Спасибо за внимание!


15.09.05 08:05: Перенесено модератором из 'Базы данных' — _MarlboroMan_
15.09.05 16:38: Перенесено модератором из 'Философия программирования' — AndrewVK
Re: Сокрытие данных, "импортированных" из БД
От: Softwarer http://softwarer.ru
Дата: 10.09.05 11:23
Оценка: 1 (1) +1
Здравствуйте, Аноним, Вы писали:

А>1) Есть DB. Есть софтина, с ней работающая через ODBC. Нужно сделать так, чтобы пароль на чтение БД невозможно было извлечь из программы.


Не пишите его в программу. Другого варианта в такой схеме нет.

А>2) Как сделать, чтобы СТРОКИ или какие-либо бинарные данные, извлечённые из БД нельзя было прочитать в памяти программы? Т.е. допустим там хранится важная инфа и программа НА ЕЁ основе делает


По квартире разбросаны деньги и ценные вещи. Как сделать, чтобы находящийся внутри квартиры взломщик их не увидел?
Re[2]: Сокрытие данных, "импортированных" из БД
От: Callisto  
Дата: 11.09.05 14:02
Оценка:
А>>2) Как сделать, чтобы СТРОКИ или какие-либо бинарные данные, извлечённые из БД нельзя было прочитать в памяти программы? Т.е. допустим там хранится важная инфа и программа НА ЕЁ основе делает

надо эти данные просто шифровать, а прога будет расшифровывать

S>По квартире разбросаны деньги и ценные вещи. Как сделать, чтобы находящийся внутри квартиры взломщик их не увидел?


деньги и вещи тоже надо зашифровать
Re[3]: Сокрытие данных, "импортированных" из БД
От: Softwarer http://softwarer.ru
Дата: 11.09.05 15:28
Оценка:
Здравствуйте, Callisto, Вы писали:

А>>>2) Как сделать, чтобы СТРОКИ или какие-либо бинарные данные, извлечённые из БД нельзя было прочитать в памяти программы? Т.е. C>надо эти данные просто шифровать, а прога будет расшифровывать


Угу. А расшифрованные данные — спокойно считать из памяти программы.

Я однажды извлекал данные из подобной программы. Все, что потребовалось — посадить крохотный фрагмент собственного кода, который дождался, пока "дешифратор" инициализируется, взял управление, считал файлы, используя "дешифратор" программы, после чего записал их, минуя "шифратор".
Re[4]: Сокрытие данных, "импортированных" из БД
От: Аноним  
Дата: 11.09.05 17:31
Оценка:
Здравствуйте, Softwarer, Вы писали:

S>Здравствуйте, Callisto, Вы писали:


А>>>>2) Как сделать, чтобы СТРОКИ или какие-либо бинарные данные, извлечённые из БД нельзя было прочитать в памяти программы? Т.е. C>надо эти данные просто шифровать, а прога будет расшифровывать


S>Угу. А расшифрованные данные — спокойно считать из памяти программы.


S>Я однажды извлекал данные из подобной программы. Все, что потребовалось — посадить крохотный фрагмент собственного кода, который дождался, пока "дешифратор" инициализируется, взял управление, считал файлы, используя "дешифратор" программы, после чего записал их, минуя "шифратор".


вот поэтому и я задаю столь "глупые" вопросы. Нигде не могу найтирешения, которое мне бы помогло. А разве так редко требуется шащитить свои проги?
Re: Сокрытие данных, "импортированных" из БД
От: smr  
Дата: 12.09.05 05:34
Оценка:
Здравствуйте, Аноним, Вы писали:

А>1) Есть DB. Есть софтина, с ней работающая через ODBC. Нужно сделать так, чтобы пароль на чтение БД невозможно было извлечь из программы. А то, получается, вся эта криптография – лажа, если можно просто взять дизассемблер, Hex-editor (etc) и всё пойдет прахом.

Данные БД хранит в зашифрованном виде? Если нет, что скорее всего, то огорчу — можно извлечь данные из места их физического хранения... Если СУБД стоит на сервере, данные передаются по сети в зашифрованном виде?

А>2) Как сделать, чтобы СТРОКИ или какие-либо бинарные данные, извлечённые из БД нельзя было прочитать в памяти программы?

В общем случае — никак.

А>Т.е. допустим там хранится важная инфа и программа НА ЕЁ основе делает какие-то вычисления. А информацию эту нельзя «выпускать» из БД дальше.

Если уж так не хочется выпускать данные из БД — используйте хранимые процедуры — в них и выполняйте расчеты. Только не забываем, что СУБД — это тоже программа и она тоже дизассемблируется и т.д.
Re: Сокрытие данных, "импортированных" из БД
От: beroal Украина  
Дата: 12.09.05 05:37
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Сперва хочу извиниться. Никак не мог выбрать, в какой форум лучше писать. Решил писать в БД. Короче говоря – возникли вопросы вот какого плана…

А>1) Есть DB. Есть софтина, с ней работающая через ODBC. Нужно сделать так, чтобы пароль на чтение БД невозможно было извлечь из программы. А то, получается, вся эта криптография – лажа, если можно просто взять дизассемблер, Hex-editor (etc) и всё пойдет прахом.
вводить пароль каждый раз при запуске программы, или использвать авторизацию Windows.
А>2) Как сделать, чтобы СТРОКИ или какие-либо бинарные данные, извлечённые из БД нельзя было прочитать в памяти программы? Т.е. допустим там хранится важная инфа и программа НА ЕЁ основе делает какие-то вычисления. А информацию эту нельзя «выпускать» из БД дальше.
видимо, надо ограничить права пользователя (чтоб он не запускал разных там дизассемблеров) или сервер, на котором выполняется прога. в самой программе это не делается.
Re: Сокрытие данных, "импортированных" из БД
От: Аноним  
Дата: 12.09.05 05:54
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Сперва хочу извиниться. Никак не мог выбрать, в какой форум лучше писать. Решил писать в БД. Короче говоря – возникли вопросы вот какого плана…

А>1) Есть DB. Есть софтина, с ней работающая через ODBC. Нужно сделать так, чтобы пароль на чтение БД невозможно было извлечь из программы. А то, получается, вся эта криптография – лажа, если можно просто взять дизассемблер, Hex-editor (etc) и всё пойдет прахом.
А>2) Как сделать, чтобы СТРОКИ или какие-либо бинарные данные, извлечённые из БД нельзя было прочитать в памяти программы? Т.е. допустим там хранится важная инфа и программа НА ЕЁ основе делает какие-то вычисления. А информацию эту нельзя «выпускать» из БД дальше.
А>Короче, прошу посоветовать, как всё это провернуть. Спасибо за внимание!

Софтину — в на терминальный сервер. Всех юзеров через RDP/Citrix грамотно нарезать права на терминале — и пусть дети в песочнице сидят. Если и обгадятся то вылезти всё равно не смогут.
Re: Сокрытие данных, "импортированных" из БД
От: mcureenab  
Дата: 12.09.05 07:10
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Сперва хочу извиниться. Никак не мог выбрать, в какой форум лучше писать. Решил писать в БД. Короче говоря – возникли вопросы вот какого плана…

А>1) Есть DB. Есть софтина, с ней работающая через ODBC. Нужно сделать так, чтобы пароль на чтение БД невозможно было извлечь из программы. А то, получается, вся эта криптография – лажа, если можно просто взять дизассемблер, Hex-editor (etc) и всё пойдет прахом.

Пароль и любые данные находящиеся в памяти персонального компьютера за определённое время могут быть получены его пользователем.
Решение состоит в том, чтобы пресечь попытку пользователя совершить недозволенное, либо усложнить процедуру настолько, чтобы за указанное время искомые сведения потеряли актуальность.
Можно к каждому пользователю приставить сотрудника СБ, запереть ПК на замок, запретить выполнение посторонних операций. Но где гарантия, что вместо сертифицированного ПК к серверу БД не будет подключен взломщик?
Проще всего сделать так, чтобы в память ПК попадали только те сведения, которые известны пользователю — имя учётной записи и пароль, или доступны ему по праву.

В твоём случае может быть имеет смысл сделать двухуровневую систему авторизации.
1. ODBC подключается к БД с именем и паролем, которые потенциально могут быть известны всем, но первоначальные права учётной записи (роль) должны позволять только выполнить авторизацию второго уровня.
2. На втором уровне авторизации пользователь используя сессию 1 сообщает БД известный только ему одному пароль в зашифрованном виде, хранимая процедура базы данных проверяет пароль и назначает сессии соответсвующую полноценную роль.


А>2) Как сделать, чтобы СТРОКИ или какие-либо бинарные данные, извлечённые из БД нельзя было прочитать в памяти программы? Т.е. допустим там хранится важная инфа и программа НА ЕЁ основе делает какие-то вычисления.


В общем случае никак.

А> А информацию эту нельзя «выпускать» из БД дальше.


Так и не выпускай её из БД. Используй хранимые процедуры или выполняй вычисления на сервере приложений, физический и программынй доступ к которому со стороны пользователей не сложно ограничить.
Re[5]: Сокрытие данных, "импортированных" из БД
От: Softwarer http://softwarer.ru
Дата: 12.09.05 10:33
Оценка:
Здравствуйте, Аноним, Вы писали:

А>вот поэтому и я задаю столь "глупые" вопросы.


Они не глупые, они наивные . Вы полагаете, что существует простое и действенное решение очень сложной проблемы.

Грубо говоря, защититься от человека с правами администратора невозможно; можно только более или менее осложнить ему жизнь. Я бы сказал, защита действует в основном по двум направлениям:

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

— не сделать дырок, через которые можно будет высосать информацию обходным путем, пользуясь чужими правами, через незащищенную часть системы итп.
Re[2]: Сокрытие данных, "импортированных" из БД
От: Аноним  
Дата: 12.09.05 17:53
Оценка:
Здравствуйте, smr, Вы писали:

smr>Здравствуйте, Аноним, Вы писали:


А>>1) Есть DB. Есть софтина, с ней работающая через ODBC. Нужно сделать так, чтобы пароль на чтение БД невозможно было извлечь из программы. А то, получается, вся эта криптография – лажа, если можно просто взять дизассемблер, Hex-editor (etc) и всё пойдет прахом.

smr>Данные БД хранит в зашифрованном виде? Если нет, что скорее всего, то огорчу — можно извлечь данные из места их физического хранения... Если СУБД стоит на сервере, данные передаются по сети в зашифрованном виде?
Какая разница. Даже если это и так (а это так), то из клиента всё-равно могут получить эти данные. вЕдь где-то есть функция, которая расшифровывает

А>>2) Как сделать, чтобы СТРОКИ или какие-либо бинарные данные, извлечённые из БД нельзя было прочитать в памяти программы?

smr>В общем случае — никак.

А>>Т.е. допустим там хранится важная инфа и программа НА ЕЁ основе делает какие-то вычисления. А информацию эту нельзя «выпускать» из БД дальше.

smr>Если уж так не хочется выпускать данные из БД — используйте хранимые процедуры — в них и выполняйте расчеты. Только не забываем, что СУБД — это тоже программа и она тоже дизассемблируется и т.д.
вот-вот. я тоже смотрел и в эту сторону... получается, сделать безопасную распред. систему практически НЕВОЗМОЖНО?
Re[3]: Сокрытие данных, "импортированных" из БД
От: Softwarer http://softwarer.ru
Дата: 12.09.05 17:57
Оценка:
Здравствуйте, Аноним, Вы писали:

А>вот-вот. я тоже смотрел и в эту сторону... получается, сделать безопасную распред. систему практически НЕВОЗМОЖНО?


Возможно. Вон, Oracle для своего appserverа получил уж не помню какие необходимые сертификаты для использования в МинАтоме. Другой вопрос, что "на коленке" и нераспределенную безопасную систему сделать весьма затруднительно.
Re[3]: Сокрытие данных, "импортированных" из БД
От: beroal Украина  
Дата: 13.09.05 04:55
Оценка:
Здравствуйте, Аноним, Вы писали:
А>вот-вот. я тоже смотрел и в эту сторону... получается, сделать безопасную распред. систему практически НЕВОЗМОЖНО?
Вы сформулируйте чётче требования, прежде чем бросаться голословными утверждениями. Невозможно — что?
Re[4]: Сокрытие данных, "импортированных" из БД
От: wildwind Россия  
Дата: 13.09.05 12:11
Оценка: +1
Здравствуйте, beroal, Вы писали:

А>>вот-вот. я тоже смотрел и в эту сторону... получается, сделать безопасную распред. систему практически НЕВОЗМОЖНО?

B>Вы сформулируйте чётче требования, прежде чем бросаться голословными утверждениями. Невозможно — что?
Невозможно, не зная теории и не имея опыта. Так наверное
Re[3]: Сокрытие данных, "импортированных" из БД
От: smr  
Дата: 13.09.05 13:49
Оценка:
Здравствуйте, Аноним, Вы писали:

smr>>Если уж так не хочется выпускать данные из БД — используйте хранимые процедуры — в них и выполняйте расчеты. Только не забываем, что СУБД — это тоже программа и она тоже дизассемблируется и т.д.

А>вот-вот. я тоже смотрел и в эту сторону... получается, сделать безопасную распред. систему практически НЕВОЗМОЖНО?
Невозможно.
В любой книжке про криптографию написано что абсолютно безопасных систем не бывает.
Бывают системы, взлом которых обойдется дороже добытой при взломе информации.
Re: Сокрытие данных, "импортированных" из БД
От: KGP http://kornilow.newmail.ru
Дата: 13.09.05 14:27
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Сперва хочу извиниться. Никак не мог выбрать, в какой форум лучше писать. Решил писать в БД. Короче говоря – возникли вопросы вот какого плана…

А>1) Есть DB. Есть софтина, с ней работающая через ODBC. Нужно сделать так, чтобы пароль на чтение БД невозможно было извлечь из программы. А то, получается, вся эта криптография – лажа, если можно просто взять дизассемблер, Hex-editor (etc) и всё пойдет прахом.

используй авторизацию системы если бд позволяет (например MS SQL 2000)
или DCOM/COM+

А>2) Как сделать, чтобы СТРОКИ или какие-либо бинарные данные, извлечённые из БД нельзя было прочитать в памяти программы? Т.е. допустим там хранится важная инфа и программа НА ЕЁ основе делает какие-то вычисления. А информацию эту нельзя «выпускать» из БД дальше.

А>Короче, прошу посоветовать, как всё это провернуть. Спасибо за внимание!

Легко — переноси её на север, куда НИКОГО не пускай
DCOM/COM+/хранимки сервера бд, которые выдают только готовый результат ...
Re[4]: Сокрытие данных, "импортированных" из БД
От: Аноним  
Дата: 13.09.05 15:27
Оценка:
Здравствуйте, beroal, Вы писали:

B>Здравствуйте, Аноним, Вы писали:

А>>вот-вот. я тоже смотрел и в эту сторону... получается, сделать безопасную распред. систему практически НЕВОЗМОЖНО?
B>Вы сформулируйте чётче требования, прежде чем бросаться голословными утверждениями. Невозможно — что?
ок. для противных. Нужно что-то подсчитать. инфа хранится в базе. Причем считать нужно ИМЕННО в программе, т.е. там логика довольно сложная.
Необходимо сделать так, чтобы ИСХОДНЫЕ данные для задачи (к примеру — цены на нефть за последние 15 лет никто не смог извлечь из программы. Даже если шифровать — то из проги данные извлекут за 10 секунт в любом случае. Программа НЕ находится на выделенном сервере итд. Никаких "специальных" паролей от юзеров не требует. Для запуска — пароль "от создателя" нужен.
Re[5]: Сокрытие данных, "импортированных" из БД
От: beroal Украина  
Дата: 14.09.05 13:49
Оценка:
Здравствуйте, Аноним, Вы писали:
А>>>получается, сделать безопасную распред. систему практически НЕВОЗМОЖНО?
Получается, так.
Re: Сокрытие данных, "импортированных" из БД
От: Fomalhaut Россия  
Дата: 15.09.05 04:51
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Сперва хочу извиниться. Никак не мог выбрать, в какой форум лучше писать. Решил писать в БД. Короче говоря – возникли вопросы вот какого плана…

А>1) Есть DB. Есть софтина, с ней работающая через ODBC. Нужно сделать так, чтобы пароль на чтение БД невозможно было извлечь из программы. А то, получается, вся эта криптография – лажа, если можно просто взять дизассемблер, Hex-editor (etc) и всё пойдет прахом.
В своей дипломной работе я хранил совершенно не пароль и не его шифрованную форму, а хэш пароля. Равно как и в БД и в клиенте. В процессе ввода пароля вычисляется его хэш и сравнивается в хэшем в БД.
А>2) Как сделать, чтобы СТРОКИ или какие-либо бинарные данные, извлечённые из БД нельзя было прочитать в памяти программы? Т.е. допустим там хранится важная инфа и программа НА ЕЁ основе делает какие-то вычисления. А информацию эту нельзя «выпускать» из БД дальше.
А>Короче, прошу посоветовать, как всё это провернуть. Спасибо за внимание!
Есть, правда, одна идейка, но реализовать её у меня не дошли ещё руки: сделать что-то типа "пробирки" для этого, т.е. некий эмулятор типа VMWare или другого. Есно, только что такой фичастости не требуется, и только он для некоторых функций создаётся. Главное — именно в "пробирчатости".
Re: Сокрытие данных, "импортированных" из БД
От: GlebZ Россия  
Дата: 15.09.05 16:08
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Сперва хочу извиниться. Никак не мог выбрать, в какой форум лучше писать. Решил писать в БД. Короче говоря – возникли вопросы вот какого плана…

А>1) Есть DB. Есть софтина, с ней работающая через ODBC. Нужно сделать так, чтобы пароль на чтение БД невозможно было извлечь из программы. А то, получается, вся эта криптография – лажа, если можно просто взять дизассемблер, Hex-editor (etc) и всё пойдет прахом.
Легко. Это называется Kerberos. Пароль живет только на то время как он нужен(через сеть пересылается в зашифрованном виде). Приплюсуй к этому аутентификацию с помощью OS. И MSSQL и Oracle как сервисы его знают и могут юзать.

А>2) Как сделать, чтобы СТРОКИ или какие-либо бинарные данные, извлечённые из БД нельзя было прочитать в памяти программы? Т.е. допустим там хранится важная инфа и программа НА ЕЁ основе делает какие-то вычисления. А информацию эту нельзя «выпускать» из БД дальше.

Легко. Хранить данные в сухом и прохладном месте. Это одно из частых требований, которое обязывает строить трехзвенные системы. Информация не выпускается за пределы сервера. В данном случае, можно использовать бд как сервер приложений(если бд такое умеет, конечно).

С уважением, Gleb.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.