Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 27.04.2023, 20:09
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 1,138

Цитата:
А как хранит секретные данные (SEED-фразу) MetaMask?
Без понятия. MetaMask и им подобные программы/сервисы работают на доверии пользователей.
поэтому сид-фразу MetaMask можно прочитать в обычном текстовом файле.
подробнее https://nvd.nist.gov/vuln/detail/CVE-2022-32969

Что бы решать подобные вопросы серьезные организации разрабатывают Стандарты информационной безопасности. В таких стандартах описываются условия и требования к обмену информацией и на основании проверки соблюдения стандартов организации выдают сертификаты и лицензии на право какой либо деятельности.
Ответить с цитированием
  #22 (permalink)  
Старый 27.04.2023, 20:48
Аватар для webgraph
Профессор
Отправить личное сообщение для webgraph Посмотреть профиль Найти все сообщения от webgraph
 
Регистрация: 14.11.2014
Сообщений: 186

Сообщение от MallSerg
сид-фразу MetaMask можно прочитать в обычном текстовом файле
Это не так. ChatGPT ответил:

Сообщение от ChatGPT
"Сначала MetaMask просит придумать пароль — именно этим паролем он и шифрует SEED-фразу с помощью PBKDF2"
— в принципе, это тоже самое о чём мы здесь и говорили ранее.

Дальше он пишет, мол
Сообщение от ChatGPT
"MM сохраняет хэш этого пинкода в локальном хранилище и в дальнейшем сравнивает его с хэшем вводимого пароля. И если хэши совпадают, то доступ к кошельку открывается."
— не знаю на сколько это правдивая информация, но хранить хэш пароля - это тоже самое что и хранить открытый пароль, если речь о локальном хранении. По мне такая защита актуальна только от пользователей, которые не умеют открывать код разработчика.

Или я чего-то не догоняю?

Представим условно, что a = hashPassword и b = sha256(promptPassword). Получается внутри системы должна быть функция, которая сравнивает a и b , и если всё ок, то открывает доступ к системе, а так же сохраняет этот пинкод в открытом виде (чтоб с помощью PBKDF2 расшифровывать seed-фразу)?

Получается мне ничего не мешает без проверок выполнить код, который находится внутри этого if.

Так всё и работает исходя из ответа ChatGPT?

Последний раз редактировалось webgraph, 27.04.2023 в 20:51.
Ответить с цитированием
  #23 (permalink)  
Старый 27.04.2023, 23:46
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 1,138

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

В случае если злоумышленник будет знать хеш от пароля это ему не поможет пройти авторизацию т.к. он не сможет узнать пароль из которого известный ему хеш был получен.
Ответить с цитированием
  #24 (permalink)  
Старый 27.04.2023, 23:57
Аватар для webgraph
Профессор
Отправить личное сообщение для webgraph Посмотреть профиль Найти все сообщения от webgraph
 
Регистрация: 14.11.2014
Сообщений: 186

Сообщение от MallSerg Посмотреть сообщение
Хеш функции для паролей обладают свойством необратимости результата хеширования т.е. зная хеш от пароля никакими средствами нельзя узнать пароль. Когда пользователь авторизуется с помощью пароля алгоритм авторизации снова считает хеш и сравнивает его с сохраненным в базе данных если хеши совпадают пароль считается верным.

В случае если злоумышленник будет знать хеш от пароля это ему не поможет пройти авторизацию т.к. он не сможет узнать пароль из которого известный ему хеш был получен.
Вы научитесь внимательно читать? То что вы описали касается серверных операций. Т.е. пароль отправляется на сервер, хешируется и сравнивается с хешем который в базе. Если они сходятся, то выполняется функция.

Но когда у нас локально это всё работает — мне ничего не мешает просто взять функцию и запустить её через консоль. То есть локально я могу легко обойти этап сравнивания хешей.

Поэтому какой в этом смысл тогда?
Ответить с цитированием
  #25 (permalink)  
Старый 28.04.2023, 00:26
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 1,138

Цитата:
ничего не мешает просто взять функцию и запустить её через консоль
Мешает тот факт что пароль является частью ключа.
т.е. проверка хеша лишь удостоверит что пароль(часть ключа) является верным и данные будут расшифрованы.
Ответить с цитированием
  #26 (permalink)  
Старый 28.04.2023, 00:44
Аватар для webgraph
Профессор
Отправить личное сообщение для webgraph Посмотреть профиль Найти все сообщения от webgraph
 
Регистрация: 14.11.2014
Сообщений: 186

Сообщение от MallSerg Посмотреть сообщение
Мешает тот факт что пароль является частью ключа.
т.е. проверка хеша лишь удостоверит что пароль(часть ключа) является верным и данные будут расшифрованы.
А зачем тогда вообще эта проверка нужна? Можно было бы понять, если бы это были серверные операции — чтобы каждый раз не отправлять пин-код на сервер и проверять его там — т.е. не создавать нагрузку на инфраструктуру (или для защиты от DDOS-атаки).

Но у нас же это локально происходит. Получается хранить хеш пароля, чтоб потом его сравнивать на стороне клиента — в этом просто смысла нет? Или есть?
Ответить с цитированием
  #27 (permalink)  
Старый 28.04.2023, 01:18
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 1,138

Смысл в том что алгоритм будет знать что он работает правильно т.е. расшифрует сообщение а не покажет ошибку о неверно введенном пароле.
Использование сохраненного хэша сохраняет в тайне часть ключа (пароль).
В такую систему можно добавить и другие части ключа и точно также с помощью хэша их проверять. Даже если злоумышленник будет знать алгоритм работы и хэши это не позволит ему получить доступ к системе без знания всех секретов системы (пароли пинкоды смс биометрические данные и тому подобного).
Ответить с цитированием
  #28 (permalink)  
Старый 28.04.2023, 02:17
Аватар для webgraph
Профессор
Отправить личное сообщение для webgraph Посмотреть профиль Найти все сообщения от webgraph
 
Регистрация: 14.11.2014
Сообщений: 186

Сообщение от MallSerg Посмотреть сообщение
Смысл в том что алгоритм будет знать что он работает правильно т.е. расшифрует сообщение а не покажет ошибку о неверно введенном пароле.
Использование сохраненного хэша сохраняет в тайне часть ключа (пароль).
В такую систему можно добавить и другие части ключа и точно также с помощью хэша их проверять. Даже если злоумышленник будет знать алгоритм работы и хэши это не позволит ему получить доступ к системе без знания всех секретов системы (пароли пинкоды смс биометрические данные и тому подобного).
А как тогда хранить пароль, если надо чтобы система его запомнила (и удалила, например, после 5 минут отсутствия активности)?
Ответить с цитированием
  #29 (permalink)  
Старый 28.04.2023, 02:56
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 1,138

Хранение пароля делает систему уязвимой по этому этого стараются избежать при создании алгоритмов работы защищенных систем.
Думаю самой распространенной практикой является создание сессии или токена актуальных в какой то заранее указанный промежуток времени.
Где опять же используется свойство необратимости хеш функций способных подтверждать истинность события(цифровая подпись) не раскрывая при этом секрета.
Ответить с цитированием
  #30 (permalink)  
Старый 28.04.2023, 12:51
Аватар для webgraph
Профессор
Отправить личное сообщение для webgraph Посмотреть профиль Найти все сообщения от webgraph
 
Регистрация: 14.11.2014
Сообщений: 186

Сообщение от MallSerg Посмотреть сообщение
Хранение пароля делает систему уязвимой по этому этого стараются избежать при создании алгоритмов работы защищенных систем.
Думаю самой распространенной практикой является создание сессии или токена актуальных в какой то заранее указанный промежуток времени.
Где опять же используется свойство необратимости хеш функций способных подтверждать истинность события(цифровая подпись) не раскрывая при этом секрета.
Каким образом может помочь токен, если мы используем шифрование пин-кодом? Получается, что система должна как-то хранить этот пин-код, чтобы производить операции дешифровки в течение ограниченного времени.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как спарсить POST данные в Google Plus ChenghisKhan Общие вопросы Javascript 0 16.01.2017 10:31
Как передать данные из одинаковых форм php скрипту через AJAX? griga999 AJAX и COMET 22 10.10.2016 06:09
Как вставить данные в highcharts? user71 Общие вопросы Javascript 40 08.08.2016 03:31
Как из php файла передать данные в переменную javascript angelzzz Общие вопросы Javascript 36 01.07.2016 15:54
Как передать данные в скрипт? ivaniv1900 jQuery 6 23.06.2014 16:18