Что лучший метод должен использовать / хранят ключи шифрования в MySQL

Вам нужно добавить уровень столбца

df.columns = pd.MultiIndex.from_product([['John'], df.columns])

        John
        Season_1    Season_2
Wins    151         120
Losses  124         110

Последующий вопрос1: «Джон» для Сезонов_1 и «Адам» для Сезона_2

df.columns = pd.MultiIndex.from_tuples([('John', 'Season_1'), ('Adam', 'Season_2')]) 

Последующий вопрос2: 5 столбцы («A», «B», «C», «D», «E») и назначить уровень «One» для «A», «B», «C» и уровень «Two» для «D» "," E ".

df.columns = pd.MultiIndex.from_tuples([('One', 'A'),('One', 'B'),('One', 'C'), ('Two', 'D'),('Two', 'E')]) 
11
задан Chris Kloberdanz 24 October 2008 в 01:48
поделиться

3 ответа

Я не уверен, что использование MySQL для шифрования будет лучшим решением вашей проблемы.

Считается, что пакет PHP M_CRYPT довольно хорош, и он дает вам гибкость в выборе алгоритма, который лучше всего подходит для ваших нужд.

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

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

*) Другой вариант - вводить пароль при запуске веб-сервера и хранить его только в памяти.

Возможное решение
Если было замечено решение, которое использовало следующий метод для шифрования файлов для пользователей с веб-доступом (я не уверен в вашей среде, но это могло бы быть полезным):

  • При создании пользователя длинный случайный ключ назначается новому пользователю.
  • Этот случайный ключ хранится в зашифрованном столбце в записи пользователя.
    ( только этот столбец шифруется, чтобы не влиять на производительность остальной части записи! )
  • Шифрование столбца с произвольным ключом выполняется с помощью 1 мастер-пароля, сохраненного в файле или в память.
    ( Лучше всего ввести пароль при запуске веб-сервера и сохранить его только в памяти. )
    ( Другой подход заключается в том, чтобы позволить пользователю ввести пароль и использовать его для шифрования / дешифрования столбца с произвольным ключом, но я не уверен, повысит ли это или уменьшит безопасность )
  • Каждый документ то, что должно быть зашифровано, зашифровано случайным ключом для этого пользователя и затем сохранено на диске.
  • Документы хранятся с минимальными разрешениями в файловой системе.

Преимущества этого подхода:
1 , Случайный ключ зашифрован в базе данных. Таким образом, у вас все еще есть дополнительная безопасность сервера базы данных в сочетании с зашифрованным столбцом. 2. Документы хранятся с разными ключами, если злоумышленник завладеет ключом, скомпрометирована только часть документов.

Однако:
Если злоумышленник завладеет главным паролем и получит доступ для чтения к пользователю В этом случае вся система снова сломана.

7
ответ дан 3 December 2019 в 09:21
поделиться

Я, вероятно, сохранил бы его в файле, который находится в non-web-accessible каталоге и заблокирован вниз с полномочиями файловой системы как можно больше.

Ваш стоящий с сетью сценарий не должен открывать файлы файловой системы с помощью переменных, особенно обеспеченных пользователями. Даже не давайте им опцию скольжения, что-то передало Ваш входной фильтр (Вы фильтруете свое обеспеченное пользователями право данных?) и возможно отказ от содержания файла ключей. Сохраните пути к файлам к трудно кодированным строкам и определите () только. Начиная с большинства Ваших данных хранится в MySQL, это не должно быть проблемой.

При выполнении дешифрования считайте ключ в чисто инициализированную переменную, сделайте дешифрование, затем перезапишите ключевую переменную (скажите со строкой x's), и сбросьте переменную. Это, вероятно, все немного параноидальные звуки, но если Вы минимизируете время ключ, находятся в ясном в памяти, и изолируйте его от всех других переменных, облетающих вокруг Вашего Сценария PHP, это не может сделать Вас немного менее безопасными.

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

4
ответ дан 3 December 2019 в 09:21
поделиться

Кажется, что Вы полагаете, что использование 'определенного для столбца' ключа использует с 'AES_ENCRYPT' и 'AES_DECRYPT'. Как комментатор сказал, это - плохая идея, потому что любое проникновение будет иметь доступ ко всем данным.

При использовании 'предоставленного пользователями' пароля, с/без солью, Вы намного более безопасны.

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

1
ответ дан 3 December 2019 в 09:21
поделиться
Другие вопросы по тегам:

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