Имя: Пароль:
IT
 
Как получить "криптографическую соль" (случайные данные) в 1С?
,
0 Rie
 
28.04.13
20:21
"В криптографии соль (модификатор) — это строка случайных данных, которая подается на вход хеш-функции вместе с исходными данными. Чаще всего используется для удлинения строки пароля, что значительно осложняет восстановление исходных паролей с помощью предварительно построенных радужных таблиц. При этом соль не защищает от полного перебора каждого пароля в отдельности". (c) Википедия
(Замечу однако - не только для паролей соль используется).
Понятно, что, поскольку хорошая хеш-функция работает с "полным комплектом" данных, всего нескольких байтов достаточно, чтобы "испоганить" исходные данные настолько, что дешифровка станет невозможной. Однако понятно и то, что слишком простая "соль" не спасёт прогрессивное человечество.
Посему вопрос: "как правильно получить соль для создания ключевой фразы" (c) Ковычки
1 Волшебник
 
28.04.13
20:26
Глаза закрываешь и делаешь 10-пальцевый аккорд на клавиатуре. Типа такого:
твдыфарыщвар щгурашгуашывдаывмдыфвдыви дымрды фварфщ9выар8фц4
2 vde69
 
28.04.13
20:26
есть второе звучание "мусорные данные", вообще зависит от алгоритма, по тому что для некоторых алгоритмов обвал зависит в том числе и от исходных данных, например CRC32 чуствительна к нему, по этому то же Адлер менее стоек чем классический именно из-за "соли", зато более быстрый.

для решения вопроса нужна конкретика алгоритма!
3 Rie
 
28.04.13
20:28
(2) Согласен. Но инициатор темы - Ковычки. Переадресую вопрос ему.
4 Rie
 
28.04.13
20:29
(1) Не взлетит. Это - лишь линейное увеличение сложности. Для современных компьютеров линейный рост - тьфу.
5 opty
 
28.04.13
20:31
(1) Не поможет , все равно случайной последовательности не получить . На прикладном 1С-овском уровне может и сойдет , но не более того
6 vde69
 
28.04.13
20:31
Вообще на эту тему люди защищают реальные диссертации, тема интересная но сложная.

Для начала нужно читать математическое обоснование алгоритма и параметров его "обвала", а уже дальше думать
7 Rie
 
28.04.13
20:32
(6) +1
8 opty
 
28.04.13
20:36
Почти по теме :)
Недавно оцифровали и выложили
http://www.flibusta.net/b/321968

Очень интересно читается , хотя конечно "Взломщики кодов" Ф.Кана намного круче
9 Rie
 
28.04.13
20:38
+(7) Искренне надеюсь, что сюда придёт инициатор - @Ковычки- и расскажет, что у него стряслось. Тогда может получиться интересное обсуждение.
10 vde69
 
28.04.13
20:38
вообще существует 2 классических варианта взлома

1. подбор
2. поиск коллизий

при подборе по большому счету пофиг чего будет в "соли", вполне пойдет и генератор от 1с

во втором случае - зависит от алгоритма,

по этому если защищаемся от тупого перебора - то пофиг, если от серьезных взломщиков - копать глубоко
11 Rie
 
28.04.13
20:39
(8) "Энигма" - это несколько старо :-)
12 Torquader
 
28.04.13
20:41
К сожалению, на компьютере действительно случайных данных практически нет. В новые процессоры встраивают генераторы случайных чисел, но есть множество подозрений, что они псевдослучайные.
Если хочется действительно случайные данные, то можно, например, попросить пользователя подавить на клавиши, но использовать не значения клавиш, а время их нажатия, а лучше - отпускания.
13 Rie
 
28.04.13
20:41
(10) Насчёт подбора - далеко не по фиг. Предположим, что используется один из типовых ДСЧ. Тогда можно поиграться.
14 opty
 
28.04.13
20:42
+(8) Поправочка , Дэвида Кана
http://www.flibusta.net/b/314483

До сих пор длинные случайные последовательности для самых стойких шифров получают физическими методами , типа дождя на площадку усеянную тысячами датчиков фиксации падения капли .
15 Rie
 
28.04.13
20:43
(12) +1
Сам я этим не занимался - но друг защищался как раз по статхарактеристикам ДСЧ. Читал его работу - ф топку стандартные ДСЧ.
16 Torquader
 
28.04.13
20:44
Скажем так, если хеш-функция затабулирована, то соль ничем не спасёт.
17 vde69
 
28.04.13
20:47
есть методы определения основанные на физических характеристиках.

скорость доступа к различным участкам произвольного CD диска

время разогрева и охлаждения ЦП при определенных вычеслениях

время прохождения звука от динамиков до микрофона

шумы в комнате

и еще много чего....
18 opty
 
28.04.13
20:47
19 Torquader
 
28.04.13
20:48
(15) У множества случайных генераторов есть корреляция значений, то есть после одного значения в заданной области следующее с достаточно большой вероятностью будет в области вблизи этого значения, но это скрывают, просто размазывая и перемешивая диапазон.
20 Rie
 
28.04.13
20:51
(19) Не совсем так. Понятно, что ДСЧ - заведомо детерминирован. Но задача в том и состоит - подобрать алгоритм такой, чтобы _статистические_ характеристики совпадали с характеристиками (физически) случайного генератора.
21 Torquader
 
28.04.13
20:54
Например, некоторые достаточно продвинутые программы используют в качестве случайных чисел вычисления подобного типа:
Value=ToString(NetworkPacketCount)+ToString(ProcessId)+ToString(ProcessorNumber) ... и т.д.
RandomValue=GetFirst(HashFunction(Value),RandomLength)
В результате получается псевдослучайное значение, которое угадать достаточно сложно.
Но, если мы знаем HashFunction, то получается, что угадав диапазоны входных значений мы можем указать несколько значений, в которые попадёт случайное число.

Ну а если мы используем генератор случайных чисел, например, для вычисления площади фигуры, то нам важна не предсказуемость значений, а равномерность распределения их по диапазону.
22 opty
 
28.04.13
20:54
В книге Дьяконова "Справочник по расчетам на микрокалькуляторах" есть несколько алгоритмов разной сложности по генерации случайных чисел , с анализом их устойчивости .
Применял в еще в шестерке и семерке где своего нет . Для практических целей получения случайного числа в общем достаточно .

Для получения крипто ключа высокой стойкости (что бы АНБ попотело) естественно нет :)
23 Rie
 
28.04.13
20:56
(22) У Кнута куда более весомый анализ.
24 opty
 
28.04.13
20:57
(23) Базара нет :)
25 Rie
 
28.04.13
21:00
(21) Тут несколько иной вопрос.
Если нам нужно монстра в игрушке запрограммировать - то да, такая фишка сойдёт.
Если же нужно промоделировать поведение некоей системы - то нужен не просто случайный "выброс" - нужна последовательность, обладающая конкретными статхарактеристиками.

(Впрочем, мы уходим от темы. "Соль" - это лишь увеличение сложности алгоритма. И тут статитика не всегда при делах).
26 Torquader
 
28.04.13
21:05
(25) Монстра в игре можно вообще без случайного генератора сделать - можно использовать координаты других героев в игре для функционирования системы принятия решения игры.
Многие физические генераторы случайных чисел, основанные на случайных физических процессах, оказываются в итоге псевдослучайными, например, меняют своё поведение из-за вспышки на солнце.
27 Torquader
 
28.04.13
21:08
К сожалению, случайность "соли" тоже может сыграть злую шутку - например - если мы используем случайное число при авторизации, то злоумышленник может прослушать протокол и набрать несколько чисел - потом ему остаётся только дождаться, когда ему пошлют знакомое ему число.
28 Волшебник
 
28.04.13
21:12
(4) Можно поподробнее. Мне казалось, что это экспоненциальное увеличение.
29 Rie
 
28.04.13
21:32
(28) Случайные нажатия кнопок - лишь иллюзия усложенения задачи. Алгоритм работает с последовательностью байтов - и ему по фигу, каким именно способом эта последовательность получена. (Впрочем, тут, конечно, есть "но" - алгоритм изначально ориентирован на работу с произвольной последовательностью именно потому, что человек может кнопки жать произвольным образом; в противном случае алгоритм можно было бы упростить).
Однако существенно то, что эта последовательность - конечной и ограниченной длины. Отсюда и линейность. (Большой, и даже очень большой коэффициент - всё равно линейный коэффициент).
30 Волшебник
 
28.04.13
21:35
(29) Какой алгоритм?
31 Волшебник
 
28.04.13
21:35
(29) Из конечности и ограниченности вовсе не следует линейность.
32 Rie
 
28.04.13
21:40
(31) Следует. Ибо константа. Пусть и очень большая.
33 Волшебник
 
28.04.13
21:41
(32) Эта константа "x" передаётся параметром в степень: e^x.
34 Torquader
 
28.04.13
21:46
(31) Ну, допустим, алгоритм может быть бесконечным, так как время, в течении которого пользователь нажимает кнопки - не ограничено, а также можно ожидать любого числа нажатий.
Кроме того, нужно понимать, что в памяти компьютера под случайное число выделено определённое число байт, и число не может их превысить, так как произойдёт обрезание числа.
Конечно, угадывание случайного числа всегда решается перебором.
Что касается использования "соли" при проверке пароля, то это способ обхождения простых таблиц хеш-функций - обычно, при составлении обратной таблицы для хеш-функции для каждого результата функции стараются найти одно значение, его порождающее, а в случае соли мы можем по таблице получить одно из значений для функции, но с большой вероятностью там не будет соли.
Для хеш-функции с "солью" нужно заново строить таблицы для каждого значения соли, чтобы угадать исходный пароль или решать задачу простым перебором.
35 Rie
 
28.04.13
21:49
(33) Соль примешивается до того, как начинает работу криптографический алгоритм. Это просто преобразование исходного текста.
36 Torquader
 
28.04.13
21:50
Например, sha1(Password) может быть взломана, если мы найдём значение Key, такое что sha1(Key)=sha1(Password) и сможем авторизоваться.
Если рассматривается пара sha1(Salt & Password), то даже если мы найдём Key такой что sha1(Salt & Password)=sha1(Key), то мы не сможем авторизоваться, если в следующий раз предложат значение Salt2.
Нам нужно усложнять поиск и искать Key такой, что sha1(Salt & Password)=sha1(Key) и Left(Key,SaltLength)=Salt
37 Torquader
 
28.04.13
21:51
Конечно, наличие "соли" не защитит никого в случае использования пароля 1234567890, который система поймает перебором по таблицам распространённых паролей.
38 opty
 
28.04.13
21:55
Мини офф :)

"— Одноразовые шифрблокноты подразделения 2702 составляла миссис Тенни, жена викария. Она доставала шары с буквами из лототрона. Считалось, что она закрывает глаза, прежде чем вытянуть шар. Однако предположим, что она даст себе послабление и перестанет закрывать глаза.

— Или, — предположим, что она смотрит на лототрон, видит, как лежат шары, и только потом закрывает глаза. Она подсознательно тянется к E мимо Z. Или, если какая-то буква только что вышла, она постарается не взять ее снова. Даже если шаров не видно, она научится различать их на ощупь. Шары деревянные и отличаются весом, шероховатостью, рисунком древесных волокон.

— Все равно они почти случайны!

— Почти — недостаточно! "
39 vde69
 
28.04.13
21:55
(35) не правда, многие алгоритмы многопроходные и добавление соли может происходить на любом произвольном этапе определенном например N-ым байтом ключа.
40 Torquader
 
28.04.13
22:03
(39) Можно строить алгоритмы, состоящие из нескольких крипто-алгоритмов, и "солью" можно назвать один из ключей промежуточного алгоритма.
Только, кроме соли, ещё и важна мощность множества выдаваемых результатов алгоритма, потому как если результатов не так много, то есть вероятность, что злоумышленник может просто "угадать" результат, выбирая случайное значение из множества результатов.
41 Asmody
 
28.04.13
22:05
40 постов и нет главного вопроса
42 mdocs
 
28.04.13
22:06
Какова роль 1С в получении самого случайного из всех случайных?
43 Rie
 
28.04.13
22:07
(39) Не столь существенно. Есть некий промежуточный - перед добавлением соли - результат, от него и пляшем.
44 Rie
 
28.04.13
22:08
+(43) Тут куда интереснее мощность множества "соли".
45 Torquader
 
28.04.13
22:08
(43) Не всегда всё так хорошо.
Например, использование в алгоритме md5(Password), можно считать константой, которую мы вычисляем, но, 16 случайных байт угадывать сложнее, чем сам пароль.
46 Torquader
 
28.04.13
22:10
(44) Это ещё одна важная характеристика генератора случайных чисел, и к сожалению, в компьютере её оценка всегда известна.
47 Rie
 
28.04.13
22:14
(45) Именно так. "Поздравляем, Ваш взлом бы удачным. А теперь попробуйте угадать те байты, которые...".
48 Torquader
 
28.04.13
22:19
И ещё одна из проблем реальных генераторов случайных чисел - это время генерации одного числа. Можно сделать прекрасный генератор, который выдаёт по числу в секунду, но для использование его даже для авторизации на сайте уже столкнётся с проблемами, если одновременно авторизуются несколько человек, так как сеанс должен будет дожидаться, пока числа получат его предшественники.

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

Допустим, мы используем "соль" для подмешивания к паролю - самая простая реализация.
Но, что делать, если авторизация не состоялась - пользователь зашёл на страницу, запросил соль для пароля и прервал сеанс. Если мы в следующий раз выдадим ему же ту же самую соль, то есть вероятность, что злоумышленник заблокировал компьютер пользователя и узнал результат для данной соли - он сможет им воспользоваться, если же мы выдаём другую соль, то злоумышленник может просто прерывать авторизацию, дожидаясь известной соли.
49 Torquader
 
28.04.13
22:22
Самое просто решение - использование вычисления с двумя солями - то есть выдаётся первое число - проводятся вычисления, которые не дают возможность восстановить пароль, но позволяют сделать суждение о том - знает ли пользователь пароль или нет.
Например, Left(sha1(md5(Password) & Salt1),8) - в первый раз, и если совпало, то в очень короткое время sha1(md5(Password) & Salt2), которое уже позволяет проверить, что пароль верный - если первая прошла, а вторая - нет, то пользователя блокируют на какое-то время. Если не прошла и первая, то после нескольких попыток также блокируем пользователя.
50 Волшебник
 
модератор
28.04.13
22:47
(37) Защитит именно за счёт "соли"
51 Torquader
 
28.04.13
22:55
(50) От перебора по таблице паролей соль не защищает никак. Если мы ставим задачу, такую что мы ищем Key, удовлетворяющее условию: Hash(Salt & Password)=Hash(Salt & Key), конечно, никто не гарантирует, что в этом случае Hash(Salt2 & Password)=Hash(Salt2 & Key), но в силу того, что большинство хеш-функций дают совершенно различные значения для похожих строк, то вероятность того, что существуют различные Val1 и Val2 такие, что Hash(Salt & Val1)=Hash(Salt & Val2) очень мала.
52 Иде я?
 
28.04.13
22:59
берешь 40 симфонию моцарта
и по рандому делаешь смещение
53 Torquader
 
28.04.13
23:03
(52) Ну и, а смещение мы откуда будем брать ?
54 Шмузер
 
28.04.13
23:35
Первая страница любого новостного сайта - отличный ГСЧ с периодичностью в день. Новости не повторяются :)
55 Asmody
 
28.04.13
23:37
(48) насколько я помню, не существует математического способа доказательства "абсолютной случайности величины"
56 Asmody
 
28.04.13
23:38
Главного вопроса все так и нет
57 opty
 
29.04.13
00:43
(55) Абсолютной нет , достаточной для частных случаев есть
58 Jump
 
29.04.13
01:13
(51)Не согласен.
При подборе по таблице, сложность пароля вообще никакой роли не играет, только его длина.
Т.е пароли 1234 и К5$u сломаются одинаково быстро - для этого лишь нужна таблица содержащая хэши всех чисел длинной до четырех байт.
А вот пароль 12345 окажется более стойким, лишь потому что для его взлома нужна таблица всех хэшей длинной до пяти байт, а шансы что она есть уже меньше.
Поэтому если добавить к паролю 1234 соли байт этак на 100, то для подбора уже будет нужна огромная таблица всех хэшей до 104 байт.
Поэтому от подбора по радужным таблицам соль как раз и защищает.
А вот для прямого брутафорса она менее эффективна.
59 Крутил_
Вертел_1С
 
29.04.13
04:47
Как то не привычна ваша соль)))) уж лучше salt как в доках хэш функций))...

Я один не понял суть темы?

Берём пароль+salt = хэш

salt можно любой длины например 2 символа и более, это уже полностью изменит результирующий хэш.

А так хеши можно тупо подобрать, зная salt(во всех базах где используется salt пишется в таблице)

(58) ""Т.е пароли 1234 и К5$u сломаются одинаково быстро""
Азазааз... бред полнейший, если указать обходить только цифры, то он мигом подберёт 1234233, если буквы то sfsdfewr часов 5 думаю будет подбирать.

Чем больше символов ему надо будет перебирать на одну единицу пароля, тем дольше.

если подбор идёт по цифрам, русс. буквам, англ. буквам, спец. символам, то это будет гораздо дольше нежели тупо одни цифры.

p.s. в своё время 5 лет занимался сетевой безопасностью
60 Сержант 1С
 
29.04.13
10:16
(3) садись, два. Второй аккорд должен быть из больших букв, третий из спецсимволов, только тогда он достаточно защищен
61 Волшебник
 
29.04.13
11:29
(60) Соль никому ничего не должна.
62 Fish
 
29.04.13
11:30
(56) А какой главный вопрос?
63 Asmody
 
29.04.13
11:31
(62) главный вопрос: "нахрена это надо?"
64 Jump
 
30.04.13
01:33
(59)Ты читать умеешь?
Я в (58) говорил о том что 1234 и К5$u сломаются одинаково быстро при подборе по таблице. Принцип подбора по таблице знаешь? Берется хэш и ищется аналогичный в таблице.
Поэтому эти пароли сломаюстя по таблице одинаково быстро.

Разница будет только если ломать путем полного перебора.
65 Крутил_
Вертел_1С
 
30.04.13
01:52
(64) если речь про rainbow тогда сорри не прочитал. Да разницы не будет длина хеша (одного типа) так и так будет ровна.

Хотя rainbow подбор в основном используют более менее опытные. Обычные юзеры и начинающие тупым брутфорсом
66 Torquader
 
02.05.13
22:46
(64) Таки таблицу собирают не по количеству символов, а по вероятности паролей - в ней 12345 будет раньше, чем k5$u
67 Jump
 
05.05.13
15:52
(66)Ты о чем?
Rainbow table это упорядоченная таблица хэшей для некоторого диапазона чисел.
Поэтому раньше будет тот пароль чей хэш меньше других.
68 GANR
 
05.05.13
16:03
>Как получить "криптографическую соль" (случайные данные) в 1С?
Также, как и в других языках программирования. wiki:Генератор_псевдослучайных_чисел
69 Torquader
 
05.05.13
17:31
(67) Это понятно, только для всех паролей набирать hash никто не будет - достаточно перебрать самые простые - объём таблицы будет меньше.
70 Jump
 
05.05.13
19:40
(69)Ровно наоборот.
Радужная таблица это результат перебора ВСЕХ значений из некоторого диапазона.
Никто не смотрит простые они или сложные, перебираются все по порядку и заносятся в таблицу.
71 Torquader
 
09.05.13
00:39
(70) Ну, это зависит от того, как делается таблица - в идеале, хотят для каждого результата найти значение, его производящее, но, когда под все данные нужно много места, то используют частичные.
72 Ковычки
 
09.05.13
13:55
73 Ковычки
 
09.05.13
13:56
Почему ссылки не кажет

http://www.forum.mista.ru/topic.php?id=663150