Я использую систему на основе Ubuntu, и мне сложно определить, какие шифры и режимы шифрования доступны для меня.
Страница руководства cryptsetup гласит:
«См. / Proc / crypto список доступных опций. Вам может понадобиться загрузить дополнительные крипто-модули ядра, чтобы получить больше опций».
В моем / proc / crypto очень мало. Как узнать, какие дополнительные криптомодули ядра доступны для загрузки?
/lib/modules/*/kernel/crypto/
это вероятное место для поиска, но модули могут находиться где угодно в файловой системе./proc/crypto
отлично, но он не перечисляет действительные строки шифра; такие вещи, какaes-xts-plain64
илиaes-cbc-essiv:sha256
. Хороший ответ предоставит эту информацию и покажет, какие модули/lib/modules...
необходимо загрузить, чтобы использовать их./proc/crypto
. Это не имеет смысла.Ответы:
Есть много, много документов и справочных страниц для чтения, но один документ, который может вас особенно заинтересовать - это спецификация формата LUKS на диске (PDF).
Приложение B (которое, естественно, ближе к концу) гласит:
Примечание редактора: вышесказанное скопировано из спецификации. После его написания URL этих документов изменились:
источник
Вы можете перечислить шифры, поддерживаемые вашими ядрами, с помощью следующей команды:
Вы можете перечислить шифры и хэши, которые вы можете использовать, и их сравнение ввода / вывода с
luks
помощью следующей команды:Вы можете сравнить конкретные шифры с помощью следующей команды:
источник
Ядро 5.1, действующее в то время, когда я пишу это, имеет два разных формата: строку шифра, «старый» формат и «новый» формат. Пока что все в этом вопросе и, очевидно, во всех документах, имеет дело со «старым» форматом, поэтому я опишу его здесь. Это только для шифрования. Если используется целостность с dm-crypt, то нужно учитывать шифры AEAD, и это становится еще сложнее.
Анализируемый ядром формат - это « шифр [
:
keycount ]-
режим-
ivmode [:
ivopts ]». Примеры:aes-xts-plain64
,blowfish-cbc-essiv:sha256
,aes:64-cbc-lmk
.шифровать шифр для использования, примеры
aes
,anubis
,twofish
,arc4
и т.д. дй-крипты драйвер ядра не имеет список шифров. Это передается в Linux Crypto API, поэтому можно использовать любой подходящий шифр, поддерживаемый ядром.keycount Опциональная мощность двух чисел ключей для использования с шифром. По умолчанию это значение
lmk
равно1 для всего, кромеivmode, где оно по умолчанию равно 64. Это действительно относится только к LMK, и значения, отличные от 1, не будут работать должным образом с другими режимами.mode Режим цепочки блоков для использования с шифром. Примерами являются
ecb
,cbc
,xts
. Помимо знания, что неecb
использует IV, драйвер md-crypt передает это через Linux Crypto API и может использовать любой режим цепочки, поддерживаемый ядром.ivmode Алгоритм, используемый для генерации вектора инициализации (IV) для каждого сектора. В типичном шифровании с симметричным ключом, в отличие от dm-crypt, IV - это еще один бит данных, передаваемый в шифр вместе с ключом при шифровании или дешифровании. На всю операцию передан только один IV. Поскольку dm-crypt должен уметь читать и записывать каждый сектор отдельно, он не шифрует весь диск как одну операцию. Вместо этого есть IV для каждого сектора. Вместо того, чтобы передавать IV в качестве данных, здесь описан алгоритм создания IV. Это не является частью Linux Crypto API, поскольку шифрование IV не производится, а допустимыезначения ivmode определяются драйвером dm-crypt. Они есть:
plain
,plain64
,plain64be
,benbi
Они просто использовать номер сектора, в различных форматах, как IV. Предназначен для блочных режимов, таких как XTS, которые разработаны, чтобы противостоять атакам, например водяным знакам, при использовании простого и предсказуемого IV.plain64
кажется наиболее рекомендуемым.null
IV всегда ноль. Для тестирования и обратной совместимости вы не должны использовать это.lmk
Совместим со схемой шифрования Loop-AES.tcw
Совместим с TrueCrypt.essiv
Использует номер сектора, зашифрованный с помощью хэша ключа. Предназначен для таких режимов, как CBC, которые не устойчивы к различным атакам при использовании простого IVplain64
.ivopts Хеш для использования с
essiv
ivmode , игнорируется для всех других режимов.В особом случае « шифр
-plain
» или просто « шифр » интерпретируются как « шифр-cbc-plain
». Другим частным случаем является то, чтоecb
режим не должен указывать ivmode .Как это относится к
/proc/crypto
Что касается
/proc/crypto
, только шифр и режим актуальны. dm-crypt с созданием спецификации Crypto API в форме " шифра режима " и запросом этого у ядра. Это то , что нужно искать в качестве для . Пример:(
)
/proc/crypto
name
skcipher
Значение
type
ofskcipher
указывает на этот симметричный ключ шифра, который использует dm-crypt, и имяxts(aes)
будет записано,aes-xts
если указано с помощью dm-crypt. Вkeysize
полях также говорят нам , какие ключевых размеры могут быть использованы с этим шифром.Если это из модуля, имя модуля может отображаться в
module
строке. Тем не менее, многие шифры (как правило, те в программном обеспечении, которые не имеют какого-либо аппаратного кода) реализованы как универсальный шифр, который комбинируется с универсальным кодом цепочки блоков для создания окончательного skcipher. Например:В этом случае анубисный шифр объединяется с кодом режима цепочки блоков XTS ядра для получения окончательного шифра
xts(anbuis)
, которому был назначен модульkernel
. Но для того, чтобы это было доступно, нам нужен общий шифр anubis, который взят изanubis
модуля. Большинство шифров имеют псевдоним модуля «crypto-
шифр », который можно использовать для их загрузки, напримерmodprobe crypto-anubis
, загружал бы модуль, который предоставляет шифр анубиса.При использовании
cryptsetup benchmark
команды важны только шифр и режим , так как это все, что проверяется. Если режим не указан, по умолчанию используется CBC. Ivmode полностью игнорируется. Таким образом, для сравнительного анализа,aes
,aes-cbc
иaes-cbc-foobar
все эквивалентны.источник