Да, вы можете использовать это. По определению злоумышленник не должен иметь возможности придумать подпись поверх Любые конкретное сообщение без закрытого ключа. Так что если это так, то подпись действительно может использоваться как симметричный ключ, и я знаю один случай, когда она использовалась таким образом (или, по крайней мере, как секрет, а не как секретный ключ).
Тем не менее, вы должны быть осторожны при этом. Некоторые алгоритмы подписи недетерминированы, и это может все усложнить. В худшем случае это может сделать алгоритм подписи полностью небезопасным. В лучшем случае вам, возможно, придется изменить процедуру генерации подписи, чтобы ввести начальное или случайное значение. Это также потребует от вас сохранить это начальное или случайное значение, и это может противоречить требованиям вашего варианта использования. Обратите внимание, что если что-либо в генерации случайных чисел изменится — алгоритм, механизм извлечения или извлечение целых чисел — то вы, скорее всего, получите неправильный ключ (и да, я видел, как это происходит).
Однако, если вы будете использовать детерминированную версию RSA (заполнение PKCS#1 v1.5) или детерминированную ECDSA, тогда все будет в порядке.
Однако вы имеете право использовать KDF после данных. Симметричный ключ должен извлекать всю случайность из подписи для обеспечения безопасности (возможно, с последующим расширением ключа для получения нужного размера, но обычно это не требуется).
скрипт
однако обычно используется для паролей. Это нормально, но вам, вероятно, не нужна соль или фактор работы, чтобы растянуть ключ (поскольку степень случайности в подписи в любом случае должна быть достаточно высокой). Так что хорошо, если скрипт
требуется, но обычно лучше использовать KBKDF, например HKDF, или просто HKDF-Extract.
Если у вас есть доступ к значению закрытого ключа, вы также можете использовать для этого KDF.
Я определенно рекомендую вам использовать алгоритм генерации подписи, который имеет по крайней мере ту же надежность, что и симметричный ключ. То же самое, конечно, касается функции KDF; вы можете найти подробности на keylength.com.
Кроме того, вы можете иметь в виду, что симметричную криптографию трудно атаковать с помощью полноценного квантового компьютера, в то время как асимметричные алгоритмы — нет (хотя эту схему может быть труднее атаковать, чем общую схему генерации подписи, в зависимости от того, как она используется). ).
Еще одно замечание по реализации: функции генерации подписи не ожидают, что вы сохраните подпись в секрете. Например, аппаратный модуль может хранить в HSM нормально полученный симметричный ключ. С другой стороны, он может экспортировать подпись без суеты, поскольку значение подписи предполагаемый быть публичным.
Также могут быть возможны атаки по сторонним каналам на значение подписи, это трудно сказать заранее. Таким образом, хотя эта схема должна быть теоретически обоснованной, делать это все же крайне нецелесообразно, если только нет другого пути.