-
-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Security ru RU
ASF на данный момент поддерживает следующие методы шифрования, как значения ECryptoMethod
:
Значение | Имя |
---|---|
0 | PlainText |
1 | AES |
2 | ProtectedDataForCurrentUser |
3 | EnvironmentVariable |
4 | Файл |
Их полное описание и сравнение вы найдёте ниже.
Для создания зашифрованного пароля, например для использования в SteamPassword
, вам нужно выполнить команду encrypt
с соответствующим типом шифрования и вашим паролем в виде открытого текста. После этого, установите полученную зашифрованную строку в качестве значения для параметра SteamPassword
, и, наконец, измените значение параметра PasswordFormat
на соответствующее вашему методу шифрования. Some formats do not require encrypt
command, for example EnvironmentVariable
or File
, just put appropriate path for them.
Это самый простой и небезопасный способ хранения пароля, который определён как ECryptoMethod
равный 0
. ASF ожидает что строка будет в виде открытого текста - пароль в его явном виде. Это самый простой в использовании, и 100% совместимый со всеми конфигурациями, а потому и используемый по умолчанию способ хранения секретных данных, совершенно небезопасный для хранения.
Считающийся безопасным по современным стандартам, способ хранения пароля AES определён как ECryptoMethod
равный 1
. ASF ожидает что строка будет base64-кодированнаой последовательностью символов, которая после декодирования даст AES-зашифрованный массив байт, который можно будет расшифровать используя вектор инициализации и ключ шифрования ASF.
Описанный выше метод гарантирует безопасность при условии что атакующему неизвестен встроенный ключ AES-шифрования, используемый для для шифрования и расшифровки паролей. ASF позволяет вам задать ключ с помощью аргумента командной строки --cryptkey
, который вам следует использовать для максимальной безопасности. Если вы решите опустить его, ASF будет использовать свой собственный ключ, который известен и жёстко запрограммирован в приложении, и кто угодно может расшифровать пароль зашифрованный ASF. Это всё равно требует некоторых усилий и не так просто сделать, однако это возможно, и поэтому вам всегда следует использовать шифрование AES
со своим собственным --cryptkey
, который вы храните в секрете. Метод шифрования AES, используемый в ASF, предоставляет безопасность, которая должна удовлетворить желание сбалансировать простоту PlainText
и сложность ProtectedDataForCurrentUser
, однако настоятельно рекомендуется использовать его с пользовательским --cryptkey
. При правильном использовании гарантирует приемлемую безопасность хранения.
На данный момент самый безопасный метод хранения пароля, представленный в ASF, и гораздо более безопасный чем AES
, описанный выше, определён как ECryptoMethod
равный 2
. Главное достоинство этого метода это одновременно и главный его недостаток - вместо использования ключа шифрования (как в методе AES
) данные шифруются с помощью учетных данных пользователя, вошедшего в систему, а это значит что расшифровка данных возможна только на той же машине где они зашифрованы, и в добавок к этому только тем пользователем, который выполнил шифрование. Это гарантирует, что даже если вы отправите весь файл Bot.json
с зашифрованным этим методом SteamPassword
кому-то ещё - он не сможет расшифровать пароль без доступа к вашему ПК. Это прекрасная мера безопасности, но одновременно имеет серьёзный недостаток, заключающийся в наименьшей совместимости, поскольку зашифрованный этим методом пароль будет несовместим с любым другим пользователем или машиной, включая вашу собственную, если вы решите, например, переустановить операционную систему. Однако это всё же самый лучший метод хранения паролей, и если вы беспокоитесь о безопасности PlainText
, и не хотите вводить пароль каждый раз, то это наилучший вариант для вас, конечно, если вам не нужно иметь доступ к конфигурационным файлам с любой машины кроме собственной.
Пожалуйста, обратите внимание, на данный момент эта опция доступна только на машинах под управлением ОС Windows.
Memory-based storage. ASF will read the password from the environment variable with given name specified in the password field (e.g. SteamPassword
). For example, setting SteamPassword
to ASF_PASSWORD_MYACCOUNT
and PasswordFormat
to 3
will cause ASF to evaluate ${ASF_PASSWORD_MYACCOUNT}
environment variable and use whatever is assigned to it as the account password.
File-based storage (possibly outside of the ASF config directory). ASF will read the password from the file path specified in the password field (e.g. SteamPassword
). The specified path can be either relative to ASF's "home" location (the folder where the config
directory is included, or the one specified by --path
command-line argument), or absolute. This method can be used for example with Docker secrets, which create such files for usage, but can also be used outside of Docker if you create appropriate file yourself. Gentle reminder to ensure that file containing the password is not readable by unauthorized users. For example, setting SteamPassword
to /etc/secrets/MyAccount.pass
and PasswordFormat
to 4
will cause ASF to read /etc/secrets/MyAccount.pass
and use whatever is written to that file as the account password.
Если вам не важна совместимость, и вас устраивает как работает метод ProtectedDataForCurrentUser
, то это рекомендуемый вариант хранения пароля в ASF, поскольку он обеспечивает наилучшую безопасность. Метод AES
это хороший выбор для людей, которые хотят использовать свои конфигурационные файлы на любой машине, а PlainText
это самый простой метод хранения пароля, если вы не против что любой может посмотреть его в файле JSON.
Не забывайте, что все эти 3 метода считаются небезопасными если у атакующего есть доступ к вашему ПК. ASF должен иметь возможность расшифровать зашифрованные пароли, а если одна программа работающая на машине может это сделать, то любая программа работающая на той же машине тоже способна это сделать. ProtectedDataForCurrentUser
это самый безопасный вариант, поскольку даже другой пользователь на том же ПК не сможет его расшифровать, но даже его можно расшифровать если кто-то украдёт ваши учётные данные и информацию о машине в добавок к конфигурационным файлам ASF.
For advanced setups, you can utilize EnvironmentVariable
and File
. They have limited usability, the EnvironmentVariable
will be a good idea if you'd prefer to obtain password through some kind of custom solution and store it in memory exclusively, while File
is good for example with Docker secrets. Both of them are unencrypted however, so you basically move the risk from ASF config file to whatever you pick from those two.
В дополнение к методам шифрования, описанным выше, также возможно избежать указания пароля вообще, например использовав пустую строку или значение null
в SteamPassword
. ASF при необходимости запросит ваш пароль, и не будет его нигде сохранять, только хранить в памяти запущенного процесса, пока вы его не закроете. Хотя это самый безопасный метод работы с паролями (они нигде не сохраняются), но и самый неудобный, поскольку вам нужно вручную вводить пароль при каждом запуске ASF (когда он требуется). Если для вас это не проблема, это самый лучший вариант с точки зрения безопасности.
ASF не содержит никаких средств для расшифровки уже зашифрованных паролей, поскольку методы расшифровки используются только для внутреннего доступа к данным внутри процесса. Если вы хотите отменить процедуру шифрования, например для переноса ASF на другую машину при использовании ProtectedDataForCurrentUser
, просто повторите процедуру с самого начала в новом окружении.
ASF на данный момент поддерживает следующие методы хеширования, как значения ECryptoMethod
:
Имя | Имя |
---|---|
0 | PlainText |
1 | SCrypt |
2 | Pbkdf2 |
Их полное описание и сравнение вы найдёте ниже.
Для генерации хеша, например для использования в качестве IPCPassword
, вам нужно выполнить команду hash
с соответствующим типом хеширования и вашим паролем в виде открытого текста. После этого, установите полученный хеш строки в качестве значения для параметра IPCPassword
, и, наконец, измените значение параметра IPCPasswordFormat
на соответствующее выбранному вами методу хеширования.
Это самый простой и небезопасный способ хеширования пароля, который определён как EHashingMethod
равный 0
. ASF генерирует хеш, который совпадает с исходной строкой. Это самый простой в использовании, и 100% совместимый со всеми конфигурациями, а потому и используемый по умолчанию способ хранения секретных данных, совершенно небезопасный для хранения.
Считающийся безопасным по современным стандартам, способ хеширования пароля SCrypt определён как EHashingMethod
равный 1
. Для генерации массива байт ASF будет использовать реализацию SCrypt
с использованием 8
блоков, 8192
итерациями, длиной хеша 32
и ключом шифрования в качестве соли. Полученные байты будут затем закодированы в строку в формате base64.
ASF позволяет вам задать соль для этого метода с помощью аргумента командной строки --cryptkey
, который вам следует использовать для максимальной безопасности. Если вы решите опустить его, ASF будет использовать свой собственный ключ, который известен и жёстко запрограммирован в приложении, а значит хеширование будет менее безопасным. При правильном использовании гарантирует приемлемую безопасность хранения.
Считающийся слабым по современным стандартам, способ хеширования пароля Pbkdf2 определён как EHashingMethod
равный 2
. Для генерации массива байт ASF будет использовать реализацию Pbkdf2
с использованием 10000
итераций, длиной хеша 32
и ключом шифрования в качестве соли, с SHA-256
в качестве алгоритма hmac. Полученные байты будут затем закодированы в строку в формате base64.
ASF позволяет вам задать соль для этого метода с помощью аргумента командной строки --cryptkey
, который вам следует использовать для максимальной безопасности. Если вы решите опустить его, ASF будет использовать свой собственный ключ, который известен и жёстко запрограммирован в приложении, а значит хеширование будет менее безопасным.
Если вы хотите использовать хеширование для хранения каких-то секретов, таких как IPCPassword
, мы рекомендуем использовать SCrypt
с пользовательской солью, поскольку это обеспечит приемлемую безопасность от попыток перебора. Pbkdf2
доступен только из соображений совместимости, в основном потому, что у нас уже есть работоспособная (и необходимая) реализация этого метода для других целей применительно к платформе Steam (например, для ПИНа родительского контроля). Это тоже считается безопасным, но слабым по сравнению с альтернативами (например SCrypt
).
- 🏡 Главная
- 🔧 Конфигурация
- 💬 ЧАВО
- ⚙️ Настройка (начать здесь)
- 👥 Фоновая активация ключей
- 📢 Команды
- 🛠️ Совместимость
- 🧩 Плагин ItemsMatcherPlugin
- 📋 Управление
- ⏱️ Производительность
- 📡 Удаленная связь
- 👪 Steam Family Sharing
- 🔄 Обмены
- ⌨️ Аргументы командной строки
- 🚧 Устаревание
- 🐳 Docker
- 🤔 Расширенное ЧАВО
- 🚀 Конфигурация для высокой производительности
- 🔗 IPC
- 🌐 Локализация
- 📝 Журналирование
- 💾 Конфигурация для малого ОЗУ
- 🕵🏼♂️ Плагин мониторинга
- 🔌 Плагины
- 🔐 Безопасность
- 🧩 SteamTokenDumperPlugin
- 📦 Сторонние разработки
- 📵 Двухфакторная аутентификация