powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Скрыть данные с помощью md5 hash
25 сообщений из 28, страница 1 из 2
Скрыть данные с помощью md5 hash
    #39078065
uaggster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Коллеги, вопрос, как я понимаю, не совсем по MSSQLSERVER, но всё же рискну задать здесь, может кто сталкивался.
В таблице имеется некое поле, содержащее 10 цифр. Предположим, это номер счета.
Хочется принципиально скрыть эти данные для просмотра, оставив возможность поиска по этому полю (по критерию равенства).
Естественный способ - это заместить сами цифры md5 хешем.
И проблема - решается. Искать в таблице по известному значению - можем легко, восстановить исходное значение из хеша - невозможно... вроде бы.

Но! В поле то всего 10 цифр. Можно тупо построить таблицу на 10млрд. хешей от '0000000000' до '9999999999' и дешифровать сразу все значения.
Ну, или вычислять порциями :)

Хотелось бы как-нибудь драматически повысить стоимость дешифровки данных.
Кто нибудь знает, как это делается в теории?
...
Рейтинг: 0 / 0
Скрыть данные с помощью md5 hash
    #39078070
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
https://ru.wikipedia.org/wiki/Соль_(криптография)

Но тема - явно оффтопик.

UPD: вообще, ваша тема вот: https://ru.wikipedia.org/wiki/Радужная_таблица
...
Рейтинг: 0 / 0
Скрыть данные с помощью md5 hash
    #39078088
uaggster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, я понимаю, что тема - офтопик. :(

И соль не совсем подходит, к сожалению. Да, она препятствует расшифровке всех счетов, но конкретный счет - не защищает.
Т.е. весь миллион - не расшифруют, но конкретный счет из миллиона - легко.
Хотелось бы защитить и конкретный счет.
Видимо, вот это как раз невозможно.
...
Рейтинг: 0 / 0
Скрыть данные с помощью md5 hash
    #39078136
uaggster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И, кроме того, не понятно, как эту соль то припрячь?

Ну вот, например, мне нужно найти в базе обладателя счета 1230001230? И? Как я узнаю, в каком виде будет выглядеть его хеш с солью?
Я должен выбрать весь набор солей из базы, посолить ими счет и сравнить с солёным хешем из поля рядом?
Т.е. полное сканирование таблицы для поиска нужного значения, и миллион вычислений хеша.
Так?
...
Рейтинг: 0 / 0
Скрыть данные с помощью md5 hash
    #39078146
10 ярдов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
uaggster,

если есть возможность брать и искать, задавая номер в открытой форме, то какая разница, зашифрован он или нет?

авторМожно тупо построить таблицу на 10млрд. хешей от '0000000000' до '9999999999' и дешифровать сразу все значения
Можно тупо построить таблицу на 10млрд. номеров счетов от '0000000000' до '9999999999' и найти всех обладателей и всю инфу
...
Рейтинг: 0 / 0
Скрыть данные с помощью md5 hash
    #39078155
Lepsik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть же встроенное криптование, зачем вам велосипеды.

В практике в серверную зайдет злавред, стукнув по голове охранника и унесет ваш сервер.

Хотите улучшить - делите ценные поля на 2-3 части с хранением в разных географических местах, а клиент обшается с промежуточным сервером, отдаюшим скомпилированнуе данные.

Поскупился Ходор на геостационарный спутник с сервером бухгалтерии - пришлось варежки шить.
...
Рейтинг: 0 / 0
Скрыть данные с помощью md5 hash
    #39078170
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
uaggsterТ.е. весь миллион - не расшифруют, но конкретный счет из миллиона - легко.Ну, извиняйте. Увеличивайте размерность счета. Однозначный счет хоть чем хешируйте, все равно угадают с вероятностью 10%.

uaggsterИ, кроме того, не понятно, как эту соль то припрячь?Соль и хеш хранятся рядом. При поиске соль добавляется в запрашиваемое значение и от нее считается хеш.
...
Рейтинг: 0 / 0
Скрыть данные с помощью md5 hash
    #39078183
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А, да. По ссылкам же все написано.

Защита от радужных таблиц ( https://ru.wikipedia.org/wiki/Радужная_таблица#.D0.97.D0.B0.D1.89.D0.B8.D1.82.D0.B0_.D0.BE.D1.82_.D1.80.D0.B0.D0.B4.D1.83.D0.B6.D0.BD.D1.8B.D1.85_.D1.82.D0.B0.D0.B1.D0.BB.D0.B8.D1.86 )Другим возможным способом борьбы против атак, использующих предварительные вычисления, является растяжение ключа (англ. key stretching). Например:

Код: sql
1.
2.
3.
ключ = хеш(пароль + соль)
for 1 to 65536 do
ключ = хеш(ключ + пароль + соль)



Тогда, чтобы взломать один хеш, придется выполнить 65536 * 10 лядрдов вычислений хеша, что уже на 5 порядков больше. И если уж вам защищенность важнее производительности, то "65536" можно увеличивать до бесконечности.
...
Рейтинг: 0 / 0
Скрыть данные с помощью md5 hash
    #39078213
aleks2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
uaggsterКоллеги, вопрос, как я понимаю, не совсем по MSSQLSERVER, но всё же рискну задать здесь, может кто сталкивался.
В таблице имеется некое поле, содержащее 10 цифр. Предположим, это номер счета.
Хочется принципиально скрыть эти данные для просмотра, оставив возможность поиска по этому полю (по критерию равенства).
Естественный способ - это заместить сами цифры md5 хешем.
И проблема - решается. Искать в таблице по известному значению - можем легко, восстановить исходное значение из хеша - невозможно... вроде бы.

Но! В поле то всего 10 цифр. Можно тупо построить таблицу на 10млрд. хешей от '0000000000' до '9999999999' и дешифровать сразу все значения.
Ну, или вычислять порциями :)

Хотелось бы как-нибудь драматически повысить стоимость дешифровки данных.
Кто нибудь знает, как это делается в теории?

Хе-хе. Теоретики.

Я так понимаю задачу:
1. "Настоящий номер счета" в таблице должен отсутствовать. Вместо него хоцца "левый номер" по которому НЕЛЬЗЯ восстановить исходный "Настоящий номер счета".
2. Но нужно однозначное соответствие "Настоящий номер счета" <-> "левый номер", чтобы можно было найти, зная "Настоящий номер счета", строку в таблице.

3. Если не заморачиваться за идиотизм постановки.

То возникает вопрос: однозначное соответствие "Настоящий номер счета" -> "левый номер" должно вычисляться
a) БЕЗ ПРИВЛЕЧЕНИЯ данных вне базы
или
б) НА основе ВНЕШНИХ ДАННЫХ, например, пароля, известного только владельцу счета?

если
а) - просто состряпайте доп. таблицу соответствия "Настоящий номер счета" <-> "левый номер", заполните "левый номер" рандомными номерами и будьте счастливы.
б) - шифруйте пароль номером счета или номер счета паролем и будет вам щастье.

PS. Что касаемо "соли" - это не тот случай. Идея "соли" - не допустить генерации одинаковых хешей для одинаковых паролей.
Но для случая тредстартера "соление" означает необходимость вычислить все "10млрд. хешей" для поиска нужной строки в таблице.
Гавриленко Сергей АлексеевичСоль и хеш хранятся рядом. При поиске соль добавляется в запрашиваемое значение и от нее считается хеш.
...
Рейтинг: 0 / 0
Скрыть данные с помощью md5 hash
    #39078222
Jaffar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гавриленко Сергей Алексеевич,

Зачем это огород.
Создай отдельную схему в базе или вообще отдельный сервер с отдельной базой, у всех на него права забрать.
Создать процедуру которая будет выбирать только по 1 значению и возвращать. + ограничение на кол-во вызовов по времени. не чаще 1 раза в мин для логина или вообще.(wait for вам с помощь) + журналирование запусков и запрет на повторный вызов чаще чем опред. пром. времени.
+ рекомендуется к общеизвестному алгоритму добавить что-то от себя, чтобы и алгоритм шифрования был не известен.

Ибо имея неограниченный доступ на селект - можно скачать всю табличку и дома поиграться с ней просто перебирая все значения от 1 до 10 млрд построив для них хэш по такому же алгоритму.

Можно хранить данные на 2 разных серверах. - т.н. горизонтальный срез.
...
Рейтинг: 0 / 0
Скрыть данные с помощью md5 hash
    #39078395
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks2Но для случая тредстартера "соление" означает необходимость вычислить все "10млрд. хешей" для поиска нужной строки в таблице.Да, верно. Соль не походит. UPD: вернее, не подходит, если счетов миллиарды. А если несколько десятков тысяч, то может быть время поиска и будет удовлетворять.

aleks2просто состряпайте доп. таблицу соответствия "Настоящий номер счета" <-> "левый номер", заполните "левый номер" рандомными номерами и будьте счастливы. Я так понимаю, что хранение первоначального номера счета в открытом виде в соседней таблице не соответствует желанию автора "хочется принципиально скрыть эти данные для просмотра".

JaffarЗачем это огород.Этот огород затем, чтобы обезопасить данные. Утянуть их могут тысячей и одним способом - от взлома пароля учетки того единственного "спеца" по безопасности, придумавшего эту схему, до банального "украсть физический сервер". А хешированине усложняет получение данных в случае, если все данные сперли и все алгоритмы хеширования разреверсили.
...
Рейтинг: 0 / 0
Скрыть данные с помощью md5 hash
    #39078448
aleks2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гавриленко Сергей Алексеевичaleks2просто состряпайте доп. таблицу соответствия "Настоящий номер счета" <-> "левый номер", заполните "левый номер" рандомными номерами и будьте счастливы. Я так понимаю, что хранение первоначального номера счета в открытом виде в соседней таблице не соответствует желанию автора "хочется принципиально скрыть эти данные для просмотра".

Дык не надо помогать страусу зарывать голову в песок.
Пол бетонный.

Хочет скрыть - пущай удалит таблицу соответствий в безопасное место.

А с хешами ваще нарваться можно на коллизию. Вот будет весело.
...
Рейтинг: 0 / 0
Скрыть данные с помощью md5 hash
    #39078543
Jaffar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гавриленко Сергей Алексеевич,

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

не смешите меня.
Что-то я ни разу не слышал об успешном налете на банк с целью украсть сервер с данными.

Такие вопросы здесь обычно задают люди, у которых нет млрд. $ и у их работодателей тоже нет таких дорогих секретов.

Сервер украдут, ага - Швейцарский банк открыл новое представительство в подвале пятиэтажки в г. Челябинске?
Сервер в опасности, БОМЖИ могут украсть и сдать на металлолом.

Тогда уж проще автора взять за ректуми расшифровать все с помощью "терморектального криптоанализа".
...
Рейтинг: 0 / 0
Скрыть данные с помощью md5 hash
    #39078547
Jaffar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jaffar,

Дешифруем алгоритмы любой сложности с помощью паялька.
...
Рейтинг: 0 / 0
Скрыть данные с помощью md5 hash
    #39078597
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JaffarГавриленко Сергей Алексеевич,

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

не смешите меня.
Что-то я ни разу не слышал об успешном налете на банк с целью украсть сервер с данными.

Такие вопросы здесь обычно задают люди, у которых нет млрд. $ и у их работодателей тоже нет таких дорогих секретов.

Сервер украдут, ага - Швейцарский банк открыл новое представительство в подвале пятиэтажки в г. Челябинске?
Сервер в опасности, БОМЖИ могут украсть и сдать на металлолом.

Тогда уж проще автора взять за ректуми расшифровать все с помощью "терморектального криптоанализа".Вот именно потому, что все считают, что их данные никому не нужны, их прут наплево и направо не особо напрягаясь.
З.Ы. Компетентные органы вывезут ваш физически защищенный сервер за два часа.
...
Рейтинг: 0 / 0
Скрыть данные с помощью md5 hash
    #39078646
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
uaggsterЕстественный способ - это заместить сами цифры md5 хешем.
И долго чесать репу при получении коллизии.
...
Рейтинг: 0 / 0
Скрыть данные с помощью md5 hash
    #39078657
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovuaggsterЕстественный способ - это заместить сами цифры md5 хешем.
И долго чесать репу при получении коллизии.10 лярдов - слишком малая выборка, чтобы на ней поиметь коллизии. К тому же вероятность получения можно довольно просто минимизировать считая два хеша - от исходной строки и от, скажем, перевернутой.
...
Рейтинг: 0 / 0
Скрыть данные с помощью md5 hash
    #39078685
aleks2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гавриленко Сергей АлексеевичDimitry Sibiryakovпропущено...

И долго чесать репу при получении коллизии.10 лярдов - слишком малая выборка, чтобы на ней поиметь коллизии. К тому же вероятность получения можно довольно просто минимизировать считая два хеша - от исходной строки и от, скажем, перевернутой.
Еще раз помянем бредовость постановки.
Если "настоящий номер счета" знает только владелец - с таким же успехом он может знать "еще один номер для базы".
Если "настоящий номер счета" знает не только владелец - значит он где-то записан - каков смысл этого хеширования?
...
Рейтинг: 0 / 0
Скрыть данные с помощью md5 hash
    #39079489
uaggster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Коллеги, прошу прощения, постановка не совсем бредовая.
Это т.н. верификационная база.
Вот есть, к примеру, некий VIN. Его значение - псевдослучайно. И агрегат состоит из кучи деталей с разными VINами.
Идея в том, чтобы создать некую базу для передачи на места, по которой можно легко проверить, входить ли деталь с данным VIN в конкретный агрегат НЕ ПЕРЕДАВАЯ САМОЙ БАЗЫ, которая секретная.
Т.е. имеем деталь на руках, читаем номер, проверяем. Но не наоборот.

Если бы вин был, ну хоть 20 значным - проблем нет. md5 или sha-256 - и хрен чего восстановишь.
Проблема в том, что номер 10 значный, и состоит только из цифр.

Пока придумал только создать таблицу из... нуу... предположим, 1000 рандомных солей, и соединять ее шифруемым номером СЛУЧАЙНО.
И совпадение по базе искать не хэша номера, а 1000 хешей - номер + каждая из случайных солей.
Совпадение одного такого "ослучайнненного" хеша - является совпадением.

Как вам идея?
...
Рейтинг: 0 / 0
Скрыть данные с помощью md5 hash
    #39079586
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2uaggster,

Чем больше надо будет сгенерировать хешей, тем лучше.
10 млрд * 1000 = 10 трлн. хешей. Т.е просто на хранение всех вычисленных хешей понадобится 145 Тб места, не говоря уже о времени вычисления.
...
Рейтинг: 0 / 0
Скрыть данные с помощью md5 hash
    #39079629
Jaffar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
почему нельзя оставить сервер на вашей строне - разграничив доступ?
так же можно вести лог, + временное ограничение + кол-во неверных попыток и т.п.

КМК это чисто разграничение доступа к информации.

Ну а про органы - засунут в ....опу паяльник и ТС все вам расскажет, где у него на флешке лежит в xls файлике копия базы.

Но если условия таковы что база нужна именно "на местах" и скажем расшифровка 1 строчки допустим продлиться 2 мин., а чтобы расшифровать все потребуется 2 млрд. минут - то это вполне приемлемое решение.
...
Рейтинг: 0 / 0
Скрыть данные с помощью md5 hash
    #39079686
uaggster,

не передавайте базу. пусть ломятся через вебсервис.

проблемы коротких последовательностей не существует: они добиваются либо самими собой, либо случайными наборами и соответствующим образом обрабатываются. при эмдэпитировании случайными наборами добивается в любом случае вообще всё (соль) кроме самых простых ситуаций.

автори соединять ее шифруемым номером СЛУЧАЙНО
и попадать в них с обратной стороны ЕСЛИ ПОВЕЗЕТ? и это не шифрование. для шифрования ключ нужен.

берем асимметричный алгоритм, зафигариваем всё публичным ключом, ключ, в полном соответствии со смыслом его существования, раздаем всем подряд, они точно так же циферки шифруют тем же ключом, находят совпадения, а расшифровать даже самостоятельно зашифрованные последовательности не могут. по-строчных солей не надо. последовательности будут относительно длинные. от них при желании можно брать "тупой" мд5. или два мд5. что прям совсем "что не закооопано - то зарыыыто!"

в рассуждения про защиту обычно имеет смысл вкладывать рассуждения про стоимость ее взлома, сравнение этой стоимости со стоимостью/ценностью того что пытаются взломать для вас и для злоумышленника, со стоимостью других способов прихода куда-то ногами с инструментом или заливания в админа вискарика и заполучения одного единственного нужного пароля.
...
Рейтинг: 0 / 0
Скрыть данные с помощью md5 hash
    #39079744
aleks2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
барбидонская, а расшифровать даже самостоятельно зашифрованные последовательности не могут

Вот нафига мне париться с дешифровкой?
Я все возможные номера "зашифрую" и получу таблицу соответствий "правильный номер" <-> "шифрованный номер".
И ничего не изменится.
Хоть ушифруйся.
...
Рейтинг: 0 / 0
Скрыть данные с помощью md5 hash
    #39079754
aleks2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гавриленко Сергей Алексеевич2uaggster,

Чем больше надо будет сгенерировать хешей, тем лучше.
10 млрд * 1000 = 10 трлн. хешей. Т.е просто на хранение всех вычисленных хешей понадобится 145 Тб места, не говоря уже о времени вычисления.

Не надо хранить "все".
Достаточно хранить только те, которые "есть в базе".
Вот уже и не надо 145 Тб места.

Аналогично насчет "времени". Вычисление 1000 "хешей" должно занимать мало времени.
Следовательно, вычисление 10 трлн. хешей будет, по-прежнему, доступно.
...
Рейтинг: 0 / 0
Скрыть данные с помощью md5 hash
    #39079850
UK 9.5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
aleks2,

да, в "просто рассуждения" зарылся. про 10ярдов выше тоже уже упоминал.

в целом, по-моему ТСу надо задачу переформулировать еще ближе к реальности:
как раздавая всем на руки бэкап базы заставлять их продолжать сотрудничать с нами, а не тупо скопировать и сказать "спасибо, досвидос".
...
Рейтинг: 0 / 0
25 сообщений из 28, страница 1 из 2
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Скрыть данные с помощью md5 hash
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]