|
Вопрос по хэшированию
|
|||
---|---|---|---|
#18+
Есть такое понятие как HMAC - это некоторая хэш-функция, которая получает на вход данные и ключ и возвращает хэш, значение которого для данных зависит от ключа, т.е. hash = hh(key, data). Вопрос: существует ли в природе какой-нибудь механизм, который позволяет для одинаковых данных получать одинаковое значение хэша при различных ключах. Т.е. у одного человека есть ключ key1, у другого - key2, и требуется что-то вроде hash = hh2(key1, x1, data) = hh2(key2, x2, data), где x1, x2 - некоторые дополнительные параметры, не секретные, которые можно вычислить зная hash, data и keyX. Нужно это для реализации некоторого подобия генератора OTP который можно будет синхронизировать для разных людей, не обмениваясь при этом ключами друг-друга. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2020, 15:58 |
|
Вопрос по хэшированию
|
|||
---|---|---|---|
#18+
hVostt Не, это согласование ключей. А мне необходимо чтобы два разных человека могли на двух разных, не связанных между собой , компьютерах получить одинаковый хэш с использованием разных ключей. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2020, 18:46 |
|
Вопрос по хэшированию
|
|||
---|---|---|---|
#18+
в вопросе хэширования не разбираюсь, но скажу :) с точки зрения математики, вам нужно подобрать функцию, которая будет возвращать одни и те же значения при разных ключах пример т.е да, конечно, механизм существует, и это подбор функции с нужными свойствами ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2020, 19:10 |
|
Вопрос по хэшированию
|
|||
---|---|---|---|
#18+
alekcvp где x1, x2 - некоторые дополнительные параметры, не секретные, которые можно вычислить зная hash, data и keyX. Нет такого. ИМХО ты ЭЦП изобретаешь. Используй асиметричное шифрование и открытый ключ каждого храни в общедоступном месте. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2020, 20:59 |
|
Вопрос по хэшированию
|
|||
---|---|---|---|
#18+
alekcvp Есть такое понятие как HMAC - это некоторая хэш-функция, которая получает на вход данные и ключ и возвращает хэш, значение которого для данных зависит от ключа, т.е. hash = hh(key, data). Вопрос: существует ли в природе какой-нибудь механизм, который позволяет для одинаковых данных получать одинаковое значение хэша при различных ключах. Т.е. у одного человека есть ключ key1, у другого - key2, и требуется что-то вроде hash = hh2(key1, x1, data) = hh2(key2, x2, data), где x1, x2 - некоторые дополнительные параметры, не секретные, которые можно вычислить зная hash, data и keyX. Нужно это для реализации некоторого подобия генератора OTP который можно будет синхронизировать для разных людей, не обмениваясь при этом ключами друг-друга. Например, выбираем такой hash(key,data)=f(key) xor g(data) и такой x=f(key) Тогда hh2(key, x, data)=hh2(key, f(key), data)=hash(key,data) xor f(key)=f(key) xor g(data) xor f(key)=g(data) не зависит от key Но чужой hash при этом, конечно, вычислить можно ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2020, 22:36 |
|
Вопрос по хэшированию
|
|||
---|---|---|---|
#18+
или еще проще: hash(key,data)=f(key) xor g(data) hh2(data)=g(data) но тут и выше не HMAC, разумеется ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2020, 23:30 |
|
Вопрос по хэшированию
|
|||
---|---|---|---|
#18+
Спасибо, буду думать. Ещё в голову пришла мысль использовать в качестве x1 и x2 некий common_key, зашифрованный соответственно key1 и key2. И уже с ним вычислять hmac от data. Не совсем по тз, но вроде самый простой вариант. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2020, 11:16 |
|
Вопрос по хэшированию
|
|||
---|---|---|---|
#18+
alekcvp Не, это согласование ключей. Так вам ключ и нужен для получения хеша. alekcvp одинаковый хэш с использованием разных ключей. Это противоречит сути хеша. Вообще, вы бы лучше задачу конечную озвучили. Какую проблему решаете? Потому что сейчас выглядит как обсуждение выбранного вами решения, которого не существует. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2020, 17:06 |
|
Вопрос по хэшированию
|
|||
---|---|---|---|
#18+
Надо детализировать вот это техническое задание. некоторого подобия генератора OTP который можно будет синхронизировать для разных людей, не обмениваясь при этом ключами друг-друга. Что такое генератор OTP? ХЗ. Тут много аббревиатур подходит. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2020, 23:51 |
|
Вопрос по хэшированию
|
|||
---|---|---|---|
#18+
mayton, One Time Password, какие ещё могут подойти в обозначенном контексте? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2020, 01:51 |
|
Вопрос по хэшированию
|
|||
---|---|---|---|
#18+
hVostt Вообще, вы бы лучше задачу конечную озвучили. Какую проблему решаете? Генерацию одноразовых паролей. Идея была такая: алгоритм не секретный. Сам пароль генерируется на основе текущего времени и ещё каких-нибудь данных (в т.ч. пароля пользователя). При этом необходимо чтобы два пользователя имели возможность генерировать одинаковые пароли, не зная паролей друг-друга. Причём приложение генерации паролей работает изолированно, т.е. никакой связи с сервером или другими экземплярами. Для синхронизации одноразово передаётся некоторый минимальный объем данных, который можно ввести в приложение вручную, желательно не секретный (зашифрованный RSA?). ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2020, 10:15 |
|
Вопрос по хэшированию
|
|||
---|---|---|---|
#18+
alekcvp При этом необходимо чтобы два пользователя имели возможность генерировать одинаковые пароли, не зная паролей друг-друга. Это противоречит самой идее одноразовых паролей. Даже один пользователь не должен иметь возможности сгенерировать одинаковый пароль, не то что два. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2020, 14:01 |
|
Вопрос по хэшированию
|
|||
---|---|---|---|
#18+
alekcvp чтобы два пользователя имели возможность генерировать одинаковые пароли, не зная паролей друг-друга. Причём приложение генерации паролей работает изолированно, т.е. никакой связи с сервером или другими экземплярами. Для синхронизации одноразово передаётся некоторый минимальный объем данных, который можно ввести в приложение вручную, желательно не секретный (зашифрованный RSA?). Если речь идет об одинаковой авторизации для всех так она и решается как раньше. Разным пользователям выдается какая-то группа привилений. И они ходят по прежнему под своими учотками. А любая попытка как-то смеждить или соединить процесс аутентификации - приводит к сложному и далеко идущему вопросу нарушения безопасности. Надо ответить на вопрос - что на самом деле это нам дает и не ухудшает ли безопасность такое послабление правил. Злоумышленники не дремлют и любую слабость в вашей системе - они систематически расшатывают. Может закончиться (как вариант) подлогом учетных данных и подставой другого пользователя который ни в чем не виноват но действия производились от его имени. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2020, 14:12 |
|
Вопрос по хэшированию
|
|||
---|---|---|---|
#18+
alekcvp hVostt Вообще, вы бы лучше задачу конечную озвучили. Какую проблему решаете? Генерацию одноразовых паролей. Идея была такая: алгоритм не секретный. Сам пароль генерируется на основе текущего времени и ещё каких-нибудь данных (в т.ч. пароля пользователя). При этом необходимо чтобы два пользователя имели возможность генерировать одинаковые пароли, не зная паролей друг-друга. Причём приложение генерации паролей работает изолированно, т.е. никакой связи с сервером или другими экземплярами. Для синхронизации одноразово передаётся некоторый минимальный объем данных, который можно ввести в приложение вручную, желательно не секретный (зашифрованный RSA?). почему нельзя передавать некоторое общее для всех клиентов число, с использованием которого они вычислят свои новые пароли? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2020, 15:39 |
|
Вопрос по хэшированию
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Это противоречит самой идее одноразовых паролей. Даже один пользователь не должен иметь возможности сгенерировать одинаковый пароль, не то что два. Я не просто так написал "некое подобие", если бы мне был нужен просто генератор ОП - я бы взял google auth и не изобретал велосипед... Aleksandr Sharahov почему нельзя передавать некоторое общее для всех клиентов число, с использованием которого они вычислят свои новые пароли? Потому что у меня стоит обратная задача: позволить клиентам вычислить общее для всех "число", используя их любимые пароли... ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2020, 18:34 |
|
Вопрос по хэшированию
|
|||
---|---|---|---|
#18+
что-то типа Badoo? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2020, 18:38 |
|
Вопрос по хэшированию
|
|||
---|---|---|---|
#18+
alekcvp Aleksandr Sharahov почему нельзя передавать некоторое общее для всех клиентов число, с использованием которого они вычислят свои новые пароли? Потому что у меня стоит обратная задача: позволить клиентам вычислить общее для всех "число", используя их любимые пароли... Тогда почему нельзя слеить хеши паролей клиентов в порядке возрастания и хеш от этой склейки использовать как общее число? Как могут общаться клиенты? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2020, 19:29 |
|
Вопрос по хэшированию
|
|||
---|---|---|---|
#18+
alekcvp Генерацию одноразовых паролей. Идея была такая: алгоритм не секретный. Сам пароль генерируется на основе текущего времени и ещё каких-нибудь данных (в т.ч. пароля пользователя). При этом необходимо чтобы два пользователя имели возможность генерировать одинаковые пароли, не зная паролей друг-друга. Причём приложение генерации паролей работает изолированно, т.е. никакой связи с сервером или другими экземплярами. Для синхронизации одноразово передаётся некоторый минимальный объем данных, который можно ввести в приложение вручную, желательно не секретный (зашифрованный RSA?). Вы опять рассказываете какое-то выдуманное вами решение. Поймите, всё уже придумано до нас, огромный мир миллиарды человек, сотни тысяч и миллионы программных систем. Задачу какую решаете? Что хотите добиться? OTP -- это решение! Вы задачу озвучьте. Что, для кого, зачем, что в итоге? Я вам алгоритм выше ссылку кинул, решение давно известное. Такого как вы хотите: два разных ключа -- одинаковый хеш, такого не может быть в принципе, даже в теории. Это противоречит самой сути хеша, где изменение любого бита в исходных данных полностью меняет весь хеш. И вообще непонятно чего вам надо в итоге. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2020, 19:34 |
|
Вопрос по хэшированию
|
|||
---|---|---|---|
#18+
Ещё раз. https://ru.wikipedia.org/wiki/Протокол_Диффи_—_Хеллмана Протокол Ди́ффи — Хе́ллмана (англ. Diffie–Hellman, DH) — криптографический протокол, позволяющий двум и более сторонам получить общий секретный ключ, используя незащищенный от прослушивания канал связи. Полученный ключ используется для шифрования дальнейшего обмена с помощью алгоритмов симметричного шифрования. Чем противоречит вашей задаче? Можете прям указать, что здесь не так? И опять же никто тут понятия не имеет чего вы и зачем делаете. Поэтому если вы не расскажете нам, то просто мы все тут тратим зря время. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2020, 19:36 |
|
Вопрос по хэшированию
|
|||
---|---|---|---|
#18+
Хорошо, приношу свои извинения, не буду больше тратить ваше время. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2020, 21:04 |
|
Вопрос по хэшированию
|
|||
---|---|---|---|
#18+
Автор почитай ещё про разделяемый секрет Шамира. Можете подойдет. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2020, 21:11 |
|
Вопрос по хэшированию
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov Тогда почему нельзя слеить хеши паролей клиентов в порядке возрастания и хеш от этой склейки использовать как общее число? Aleksandr Sharahov Как могут общаться клиенты? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2020, 21:15 |
|
Вопрос по хэшированию
|
|||
---|---|---|---|
#18+
mayton Автор почитай ещё про разделяемый секрет Шамира. Можете подойдет. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2020, 21:18 |
|
|
start [/forum/topic.php?fid=16&msg=39985970&tid=1339757]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
179ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
66ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 308ms |
0 / 0 |