Нет действительно никаких встроенных функций MySQL обработки сложных установок зашифрованного ключа. Необходимо ли будет реализовать объем логики шифрования в собственном PHP и/или стороне браузера (JavaScript?) код.
Но Ваши установленные проблемы являются немного странными: кажется, что Вашими единственными реальными проблемами является Внедрение SQL или грубая сила (подбор пароля, я принимаю), нападение от удаленной клиентской рабочей станции рабочего стола/ноутбука. Это заставляет меня подозревать, что у Вас уже есть некоторый другой, неупомянутые меры безопасности, запланированные, и Вы проанализировали возможные проспекты компромисса.
Для одного я предполагаю, что у Вас есть правила брандмауэра, защищающие хост MySQL/PHP от любого вида доступа от неутвержденного удаленного клиентского дюйм/с, Если я корректен, он имеет смысл, что Вы только волнуетесь по поводу нападений от рабочих станций скомпрометированных пользователей.
Кроме того, я предполагаю, что Вы понимаете что, если взломщик на удаленном хосте клиента может возрасти к корню/Администратору privs, или непосредственно ставить под угрозу собственную учетную запись реального пользователя, то данные того клиента имеют нулевую защиту независимо от шифрования или любых других гарантий. (Взломщик может считать ключи из того, везде, где они сохраняются на диске или отслеживают их, поскольку реальный пользователь вводит их при входе в систему и выводе ключей к данным.)
Начиная с тех двух предположений, имеет смысл для нас приходить к заключению, что только две соответствующих угрозы A) подбор пароля "в лоб" и B) Попытки внедрения SQL:
Теперь, давайте говорить о том, как шифрование серверной стороны относится к этим ситуациям:
Клиентское шифрование, с другой стороны, на самом деле делает нападения пароля грубой силы не важными. Вы не можете "в лоб" правильно созданный ключ. Клиентское шифрование сохраняет в основном тот же уровень защиты против Внедрения SQL как шифрование серверной стороны, также. Клиент может передать ключ к серверу при входе в систему, сохранив копию в памяти до концов сессии, которая помещает crypto нагрузку ЦП на сервер. Или, клиент может обработать шифрование/дешифрование отдельно в браузере. Существуют взлеты и падения к обоим методам:
Наконец, я собираюсь отметить, что существуют некоторые огромные операционные оборотные стороны к шифрованию данных в базе данных. Поскольку представления зашифрованных данных являются чрезвычайно случайными шаблонами, основные функции базы данных как индексация, соединения, и т.д. не собираются работать. Клиент берет огромную логическую нагрузку и может потерять много преимуществ, которые обычно дают функции базы данных.
| 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...
Из справочной страницы sshd (8)
, SSH_KNOWN_HOSTS FILE FORMAT раздел:
Каждая строка в этих файлах содержит следующие поля: маркеры (необязательно), имена хостов, биты, показатель степени, модуль, комментарий. Поля разделенные пробелами.
...
Альтернативно, имена хостов могут храниться в хешированной форме, которая скрывает хост имена и адреса в случае разглашения содержимого файла. Хешированный имена хостов начинаются с символа "|" персонаж. Только одно хешированное имя хоста может появляются в одной строке и ни одна из вышеперечисленных операций отрицания или подстановки могут применяться торы.