Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Скрыть данные с помощью md5 hash
|
|||
|---|---|---|---|
|
#18+
Коллеги, вопрос, как я понимаю, не совсем по MSSQLSERVER, но всё же рискну задать здесь, может кто сталкивался. В таблице имеется некое поле, содержащее 10 цифр. Предположим, это номер счета. Хочется принципиально скрыть эти данные для просмотра, оставив возможность поиска по этому полю (по критерию равенства). Естественный способ - это заместить сами цифры md5 хешем. И проблема - решается. Искать в таблице по известному значению - можем легко, восстановить исходное значение из хеша - невозможно... вроде бы. Но! В поле то всего 10 цифр. Можно тупо построить таблицу на 10млрд. хешей от '0000000000' до '9999999999' и дешифровать сразу все значения. Ну, или вычислять порциями :) Хотелось бы как-нибудь драматически повысить стоимость дешифровки данных. Кто нибудь знает, как это делается в теории? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2015, 20:32 |
|
||
|
Скрыть данные с помощью md5 hash
|
|||
|---|---|---|---|
|
#18+
https://ru.wikipedia.org/wiki/Соль_(криптография) Но тема - явно оффтопик. UPD: вообще, ваша тема вот: https://ru.wikipedia.org/wiki/Радужная_таблица ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2015, 20:37 |
|
||
|
Скрыть данные с помощью md5 hash
|
|||
|---|---|---|---|
|
#18+
Да, я понимаю, что тема - офтопик. :( И соль не совсем подходит, к сожалению. Да, она препятствует расшифровке всех счетов, но конкретный счет - не защищает. Т.е. весь миллион - не расшифруют, но конкретный счет из миллиона - легко. Хотелось бы защитить и конкретный счет. Видимо, вот это как раз невозможно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2015, 21:18 |
|
||
|
Скрыть данные с помощью md5 hash
|
|||
|---|---|---|---|
|
#18+
И, кроме того, не понятно, как эту соль то припрячь? Ну вот, например, мне нужно найти в базе обладателя счета 1230001230? И? Как я узнаю, в каком виде будет выглядеть его хеш с солью? Я должен выбрать весь набор солей из базы, посолить ими счет и сравнить с солёным хешем из поля рядом? Т.е. полное сканирование таблицы для поиска нужного значения, и миллион вычислений хеша. Так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2015, 22:32 |
|
||
|
Скрыть данные с помощью md5 hash
|
|||
|---|---|---|---|
|
#18+
uaggster, если есть возможность брать и искать, задавая номер в открытой форме, то какая разница, зашифрован он или нет? авторМожно тупо построить таблицу на 10млрд. хешей от '0000000000' до '9999999999' и дешифровать сразу все значения Можно тупо построить таблицу на 10млрд. номеров счетов от '0000000000' до '9999999999' и найти всех обладателей и всю инфу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2015, 23:06 |
|
||
|
Скрыть данные с помощью md5 hash
|
|||
|---|---|---|---|
|
#18+
Есть же встроенное криптование, зачем вам велосипеды. В практике в серверную зайдет злавред, стукнув по голове охранника и унесет ваш сервер. Хотите улучшить - делите ценные поля на 2-3 части с хранением в разных географических местах, а клиент обшается с промежуточным сервером, отдаюшим скомпилированнуе данные. Поскупился Ходор на геостационарный спутник с сервером бухгалтерии - пришлось варежки шить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2015, 23:28 |
|
||
|
Скрыть данные с помощью md5 hash
|
|||
|---|---|---|---|
|
#18+
uaggsterТ.е. весь миллион - не расшифруют, но конкретный счет из миллиона - легко.Ну, извиняйте. Увеличивайте размерность счета. Однозначный счет хоть чем хешируйте, все равно угадают с вероятностью 10%. uaggsterИ, кроме того, не понятно, как эту соль то припрячь?Соль и хеш хранятся рядом. При поиске соль добавляется в запрашиваемое значение и от нее считается хеш. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2015, 01:03 |
|
||
|
Скрыть данные с помощью md5 hash
|
|||
|---|---|---|---|
|
#18+
А, да. По ссылкам же все написано. Защита от радужных таблиц ( 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. Тогда, чтобы взломать один хеш, придется выполнить 65536 * 10 лядрдов вычислений хеша, что уже на 5 порядков больше. И если уж вам защищенность важнее производительности, то "65536" можно увеличивать до бесконечности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2015, 03:07 |
|
||
|
Скрыть данные с помощью md5 hash
|
|||
|---|---|---|---|
|
#18+
uaggsterКоллеги, вопрос, как я понимаю, не совсем по MSSQLSERVER, но всё же рискну задать здесь, может кто сталкивался. В таблице имеется некое поле, содержащее 10 цифр. Предположим, это номер счета. Хочется принципиально скрыть эти данные для просмотра, оставив возможность поиска по этому полю (по критерию равенства). Естественный способ - это заместить сами цифры md5 хешем. И проблема - решается. Искать в таблице по известному значению - можем легко, восстановить исходное значение из хеша - невозможно... вроде бы. Но! В поле то всего 10 цифр. Можно тупо построить таблицу на 10млрд. хешей от '0000000000' до '9999999999' и дешифровать сразу все значения. Ну, или вычислять порциями :) Хотелось бы как-нибудь драматически повысить стоимость дешифровки данных. Кто нибудь знает, как это делается в теории? Хе-хе. Теоретики. Я так понимаю задачу: 1. "Настоящий номер счета" в таблице должен отсутствовать. Вместо него хоцца "левый номер" по которому НЕЛЬЗЯ восстановить исходный "Настоящий номер счета". 2. Но нужно однозначное соответствие "Настоящий номер счета" <-> "левый номер", чтобы можно было найти, зная "Настоящий номер счета", строку в таблице. 3. Если не заморачиваться за идиотизм постановки. То возникает вопрос: однозначное соответствие "Настоящий номер счета" -> "левый номер" должно вычисляться a) БЕЗ ПРИВЛЕЧЕНИЯ данных вне базы или б) НА основе ВНЕШНИХ ДАННЫХ, например, пароля, известного только владельцу счета? если а) - просто состряпайте доп. таблицу соответствия "Настоящий номер счета" <-> "левый номер", заполните "левый номер" рандомными номерами и будьте счастливы. б) - шифруйте пароль номером счета или номер счета паролем и будет вам щастье. PS. Что касаемо "соли" - это не тот случай. Идея "соли" - не допустить генерации одинаковых хешей для одинаковых паролей. Но для случая тредстартера "соление" означает необходимость вычислить все "10млрд. хешей" для поиска нужной строки в таблице. Гавриленко Сергей АлексеевичСоль и хеш хранятся рядом. При поиске соль добавляется в запрашиваемое значение и от нее считается хеш. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2015, 07:06 |
|
||
|
Скрыть данные с помощью md5 hash
|
|||
|---|---|---|---|
|
#18+
Гавриленко Сергей Алексеевич, Зачем это огород. Создай отдельную схему в базе или вообще отдельный сервер с отдельной базой, у всех на него права забрать. Создать процедуру которая будет выбирать только по 1 значению и возвращать. + ограничение на кол-во вызовов по времени. не чаще 1 раза в мин для логина или вообще.(wait for вам с помощь) + журналирование запусков и запрет на повторный вызов чаще чем опред. пром. времени. + рекомендуется к общеизвестному алгоритму добавить что-то от себя, чтобы и алгоритм шифрования был не известен. Ибо имея неограниченный доступ на селект - можно скачать всю табличку и дома поиграться с ней просто перебирая все значения от 1 до 10 млрд построив для них хэш по такому же алгоритму. Можно хранить данные на 2 разных серверах. - т.н. горизонтальный срез. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2015, 07:26 |
|
||
|
Скрыть данные с помощью md5 hash
|
|||
|---|---|---|---|
|
#18+
aleks2Но для случая тредстартера "соление" означает необходимость вычислить все "10млрд. хешей" для поиска нужной строки в таблице.Да, верно. Соль не походит. UPD: вернее, не подходит, если счетов миллиарды. А если несколько десятков тысяч, то может быть время поиска и будет удовлетворять. aleks2просто состряпайте доп. таблицу соответствия "Настоящий номер счета" <-> "левый номер", заполните "левый номер" рандомными номерами и будьте счастливы. Я так понимаю, что хранение первоначального номера счета в открытом виде в соседней таблице не соответствует желанию автора "хочется принципиально скрыть эти данные для просмотра". JaffarЗачем это огород.Этот огород затем, чтобы обезопасить данные. Утянуть их могут тысячей и одним способом - от взлома пароля учетки того единственного "спеца" по безопасности, придумавшего эту схему, до банального "украсть физический сервер". А хешированине усложняет получение данных в случае, если все данные сперли и все алгоритмы хеширования разреверсили. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2015, 11:20 |
|
||
|
Скрыть данные с помощью md5 hash
|
|||
|---|---|---|---|
|
#18+
Гавриленко Сергей Алексеевичaleks2просто состряпайте доп. таблицу соответствия "Настоящий номер счета" <-> "левый номер", заполните "левый номер" рандомными номерами и будьте счастливы. Я так понимаю, что хранение первоначального номера счета в открытом виде в соседней таблице не соответствует желанию автора "хочется принципиально скрыть эти данные для просмотра". Дык не надо помогать страусу зарывать голову в песок. Пол бетонный. Хочет скрыть - пущай удалит таблицу соответствий в безопасное место. А с хешами ваще нарваться можно на коллизию. Вот будет весело. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2015, 11:50 |
|
||
|
Скрыть данные с помощью md5 hash
|
|||
|---|---|---|---|
|
#18+
Гавриленко Сергей Алексеевич, ага , типа я владею инфой на млрд.ы $, но не могу физически защитить сервер. не смешите меня. Что-то я ни разу не слышал об успешном налете на банк с целью украсть сервер с данными. Такие вопросы здесь обычно задают люди, у которых нет млрд. $ и у их работодателей тоже нет таких дорогих секретов. Сервер украдут, ага - Швейцарский банк открыл новое представительство в подвале пятиэтажки в г. Челябинске? Сервер в опасности, БОМЖИ могут украсть и сдать на металлолом. Тогда уж проще автора взять за ректуми расшифровать все с помощью "терморектального криптоанализа". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2015, 12:46 |
|
||
|
Скрыть данные с помощью md5 hash
|
|||
|---|---|---|---|
|
#18+
Jaffar, Дешифруем алгоритмы любой сложности с помощью паялька. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2015, 12:48 |
|
||
|
Скрыть данные с помощью md5 hash
|
|||
|---|---|---|---|
|
#18+
JaffarГавриленко Сергей Алексеевич, ага , типа я владею инфой на млрд.ы $, но не могу физически защитить сервер. не смешите меня. Что-то я ни разу не слышал об успешном налете на банк с целью украсть сервер с данными. Такие вопросы здесь обычно задают люди, у которых нет млрд. $ и у их работодателей тоже нет таких дорогих секретов. Сервер украдут, ага - Швейцарский банк открыл новое представительство в подвале пятиэтажки в г. Челябинске? Сервер в опасности, БОМЖИ могут украсть и сдать на металлолом. Тогда уж проще автора взять за ректуми расшифровать все с помощью "терморектального криптоанализа".Вот именно потому, что все считают, что их данные никому не нужны, их прут наплево и направо не особо напрягаясь. З.Ы. Компетентные органы вывезут ваш физически защищенный сервер за два часа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2015, 13:38 |
|
||
|
Скрыть данные с помощью md5 hash
|
|||
|---|---|---|---|
|
#18+
uaggsterЕстественный способ - это заместить сами цифры md5 хешем. И долго чесать репу при получении коллизии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2015, 14:17 |
|
||
|
Скрыть данные с помощью md5 hash
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovuaggsterЕстественный способ - это заместить сами цифры md5 хешем. И долго чесать репу при получении коллизии.10 лярдов - слишком малая выборка, чтобы на ней поиметь коллизии. К тому же вероятность получения можно довольно просто минимизировать считая два хеша - от исходной строки и от, скажем, перевернутой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2015, 14:23 |
|
||
|
Скрыть данные с помощью md5 hash
|
|||
|---|---|---|---|
|
#18+
Гавриленко Сергей АлексеевичDimitry Sibiryakovпропущено... И долго чесать репу при получении коллизии.10 лярдов - слишком малая выборка, чтобы на ней поиметь коллизии. К тому же вероятность получения можно довольно просто минимизировать считая два хеша - от исходной строки и от, скажем, перевернутой. Еще раз помянем бредовость постановки. Если "настоящий номер счета" знает только владелец - с таким же успехом он может знать "еще один номер для базы". Если "настоящий номер счета" знает не только владелец - значит он где-то записан - каков смысл этого хеширования? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2015, 14:38 |
|
||
|
Скрыть данные с помощью md5 hash
|
|||
|---|---|---|---|
|
#18+
Коллеги, прошу прощения, постановка не совсем бредовая. Это т.н. верификационная база. Вот есть, к примеру, некий VIN. Его значение - псевдослучайно. И агрегат состоит из кучи деталей с разными VINами. Идея в том, чтобы создать некую базу для передачи на места, по которой можно легко проверить, входить ли деталь с данным VIN в конкретный агрегат НЕ ПЕРЕДАВАЯ САМОЙ БАЗЫ, которая секретная. Т.е. имеем деталь на руках, читаем номер, проверяем. Но не наоборот. Если бы вин был, ну хоть 20 значным - проблем нет. md5 или sha-256 - и хрен чего восстановишь. Проблема в том, что номер 10 значный, и состоит только из цифр. Пока придумал только создать таблицу из... нуу... предположим, 1000 рандомных солей, и соединять ее шифруемым номером СЛУЧАЙНО. И совпадение по базе искать не хэша номера, а 1000 хешей - номер + каждая из случайных солей. Совпадение одного такого "ослучайнненного" хеша - является совпадением. Как вам идея? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2015, 19:42 |
|
||
|
Скрыть данные с помощью md5 hash
|
|||
|---|---|---|---|
|
#18+
2uaggster, Чем больше надо будет сгенерировать хешей, тем лучше. 10 млрд * 1000 = 10 трлн. хешей. Т.е просто на хранение всех вычисленных хешей понадобится 145 Тб места, не говоря уже о времени вычисления. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2015, 00:47 |
|
||
|
Скрыть данные с помощью md5 hash
|
|||
|---|---|---|---|
|
#18+
почему нельзя оставить сервер на вашей строне - разграничив доступ? так же можно вести лог, + временное ограничение + кол-во неверных попыток и т.п. КМК это чисто разграничение доступа к информации. Ну а про органы - засунут в ....опу паяльник и ТС все вам расскажет, где у него на флешке лежит в xls файлике копия базы. Но если условия таковы что база нужна именно "на местах" и скажем расшифровка 1 строчки допустим продлиться 2 мин., а чтобы расшифровать все потребуется 2 млрд. минут - то это вполне приемлемое решение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2015, 07:29 |
|
||
|
Скрыть данные с помощью md5 hash
|
|||
|---|---|---|---|
|
#18+
uaggster, не передавайте базу. пусть ломятся через вебсервис. проблемы коротких последовательностей не существует: они добиваются либо самими собой, либо случайными наборами и соответствующим образом обрабатываются. при эмдэпитировании случайными наборами добивается в любом случае вообще всё (соль) кроме самых простых ситуаций. автори соединять ее шифруемым номером СЛУЧАЙНО и попадать в них с обратной стороны ЕСЛИ ПОВЕЗЕТ? и это не шифрование. для шифрования ключ нужен. берем асимметричный алгоритм, зафигариваем всё публичным ключом, ключ, в полном соответствии со смыслом его существования, раздаем всем подряд, они точно так же циферки шифруют тем же ключом, находят совпадения, а расшифровать даже самостоятельно зашифрованные последовательности не могут. по-строчных солей не надо. последовательности будут относительно длинные. от них при желании можно брать "тупой" мд5. или два мд5. что прям совсем "что не закооопано - то зарыыыто!" в рассуждения про защиту обычно имеет смысл вкладывать рассуждения про стоимость ее взлома, сравнение этой стоимости со стоимостью/ценностью того что пытаются взломать для вас и для злоумышленника, со стоимостью других способов прихода куда-то ногами с инструментом или заливания в админа вискарика и заполучения одного единственного нужного пароля. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2015, 08:42 |
|
||
|
Скрыть данные с помощью md5 hash
|
|||
|---|---|---|---|
|
#18+
барбидонская, а расшифровать даже самостоятельно зашифрованные последовательности не могут Вот нафига мне париться с дешифровкой? Я все возможные номера "зашифрую" и получу таблицу соответствий "правильный номер" <-> "шифрованный номер". И ничего не изменится. Хоть ушифруйся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2015, 09:35 |
|
||
|
Скрыть данные с помощью md5 hash
|
|||
|---|---|---|---|
|
#18+
Гавриленко Сергей Алексеевич2uaggster, Чем больше надо будет сгенерировать хешей, тем лучше. 10 млрд * 1000 = 10 трлн. хешей. Т.е просто на хранение всех вычисленных хешей понадобится 145 Тб места, не говоря уже о времени вычисления. Не надо хранить "все". Достаточно хранить только те, которые "есть в базе". Вот уже и не надо 145 Тб места. Аналогично насчет "времени". Вычисление 1000 "хешей" должно занимать мало времени. Следовательно, вычисление 10 трлн. хешей будет, по-прежнему, доступно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2015, 09:45 |
|
||
|
Скрыть данные с помощью md5 hash
|
|||
|---|---|---|---|
|
#18+
aleks2, да, в "просто рассуждения" зарылся. про 10ярдов выше тоже уже упоминал. в целом, по-моему ТСу надо задачу переформулировать еще ближе к реальности: как раздавая всем на руки бэкап базы заставлять их продолжать сотрудничать с нами, а не тупо скопировать и сказать "спасибо, досвидос". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2015, 11:23 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39078170&tid=1688857]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
68ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 242ms |
| total: | 383ms |

| 0 / 0 |
