Что делает различные части “known_hosts” средних записей?

Нет действительно никаких встроенных функций MySQL обработки сложных установок зашифрованного ключа. Необходимо ли будет реализовать объем логики шифрования в собственном PHP и/или стороне браузера (JavaScript?) код.

Но Ваши установленные проблемы являются немного странными: кажется, что Вашими единственными реальными проблемами является Внедрение SQL или грубая сила (подбор пароля, я принимаю), нападение от удаленной клиентской рабочей станции рабочего стола/ноутбука. Это заставляет меня подозревать, что у Вас уже есть некоторый другой, неупомянутые меры безопасности, запланированные, и Вы проанализировали возможные проспекты компромисса.

  • Для одного я предполагаю, что у Вас есть правила брандмауэра, защищающие хост MySQL/PHP от любого вида доступа от неутвержденного удаленного клиентского дюйм/с, Если я корректен, он имеет смысл, что Вы только волнуетесь по поводу нападений от рабочих станций скомпрометированных пользователей.

  • Кроме того, я предполагаю, что Вы понимаете что, если взломщик на удаленном хосте клиента может возрасти к корню/Администратору privs, или непосредственно ставить под угрозу собственную учетную запись реального пользователя, то данные того клиента имеют нулевую защиту независимо от шифрования или любых других гарантий. (Взломщик может считать ключи из того, везде, где они сохраняются на диске или отслеживают их, поскольку реальный пользователь вводит их при входе в систему и выводе ключей к данным.)

Начиная с тех двух предположений, имеет смысл для нас приходить к заключению, что только две соответствующих угрозы A) подбор пароля "в лоб" и B) Попытки внедрения SQL:

  • Если взломщик не хватает ключа реального пользователя, или если он хочет получить доступ к больше, чем просто данные реального пользователя, он может попробовать вынуждающий скота вход в систему creds за реального пользователя или другую учетную запись. (В теории Вы могли заблокировать вниз каждую учетную запись к определенному удаленному клиентскому IP, который поможет разделить риски, также.)
  • Если взломщик действительно получает допустимый ключ для реального пользователя, у него есть авеню мимо экрана входа в систему (который, по-видимому, достаточно прост быть безопасным), к мягкому низу живота потенциально ошибочного кода приложения. Успешное Внедрение SQL от контекста реального пользователя могло предоставить ему доступ к другим клиентским данным, также.

Теперь, давайте говорить о том, как шифрование серверной стороны относится к этим ситуациям:

  • Шифрование серверной стороны определенно помогает против угрозы Внедрения SQL. Если значения строки шифруются в Таблицах базы данных, взломщик может только видеть шифрованный текст мусора данных, которые принадлежат другим учетным записям. Угроза содержится, разделяется.
  • Грубый подбор пароля принуждения, тем не менее, действительно не добирается немного тяжелее для взломщика, сталкивающегося с шифрованием серверной стороны. Независимо от того, сохранены ли ключи пользователей на сервере или сгенерированы на месте от пароля, единственная вещь, которая - вопросы, есть ли у Вас правильный пароль. Или сервер решает позволить Вам использовать допустимый сохраненный ключ, потому что он проверяет, что Ваш пароль является правильным, или он вычисляет допустимый ключ для Вас, потому что Ваш пароль является корректным входом для генерации того ключа.

Клиентское шифрование, с другой стороны, на самом деле делает нападения пароля грубой силы не важными. Вы не можете "в лоб" правильно созданный ключ. Клиентское шифрование сохраняет в основном тот же уровень защиты против Внедрения SQL как шифрование серверной стороны, также. Клиент может передать ключ к серверу при входе в систему, сохранив копию в памяти до концов сессии, которая помещает crypto нагрузку ЦП на сервер. Или, клиент может обработать шифрование/дешифрование отдельно в браузере. Существуют взлеты и падения к обоим методам:

  • Передачу его ключа к серверу намного легче кодировать и справиться, и обычно намного быстрее в счет более оптимизированного кода crypto (скомпилировал C, вероятно).
  • Чистый клиентский подход дает дополнительную безопасность, потому что, даже если взломщик получает корень на сервере, он все еще не может считать зашифрованные данные, и он никогда не будет мочь считать его. Единственный возможный вектор атаки состоит в том, чтобы поставить под угрозу удаленную клиентскую рабочую станцию.

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

3
задан 15 November 2011 в 14:26
2 ответа

| 1 | - это HASH_MAGIC, указывающий, что это хешированная запись known_hosts.

Следующие два поля в кодировке base-64 (разделенные | ) являются случайно сгенерированная соль и хэш SHA-1 хоста.

Если вы используете старую версию OpenSSH или если у вас HashKnownHosts № установлен в вашем / etc / ssh / ssh_config или ~ / .ssh / config`, записи не хешируются и выглядят примерно так:

remotehostname,192.168.1.100 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdn...etc...
8
ответ дан 3 December 2019 в 04:50

Из справочной страницы sshd (8) , SSH_KNOWN_HOSTS FILE FORMAT раздел:

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

...

  Альтернативно, имена хостов могут храниться в хешированной форме, которая скрывает хост
имена и адреса в случае разглашения содержимого файла. Хешированный
имена хостов начинаются с символа "|" персонаж. Только одно хешированное имя хоста может
 появляются в одной строке и ни одна из вышеперечисленных операций отрицания или подстановки
 могут применяться торы.
3
ответ дан 3 December 2019 в 04:50

Теги

Похожие вопросы