Snk file & Delay Signing - PullRequest
       40

Snk file & Delay Signing

0 голосов
/ 23 декабря 2009

Я работаю с набором подписанных сборок с задержкой, которые я могу установить и загрузить из GAC после пропуска проверки (sn -Vr * ...

Поскольку для отложенной подписи как процесса требуется только файл открытого ключа

  1. sn -k keys.snk (открытый и закрытый ключи)
  2. sn -p keys.snk pkey.snk (только открытый ключ)
  3. Добавьте pkey.snk в свойства проекта и установите флажок «Только для подписи»
  4. sn -v (показывает, что сборка подписана с задержкой)
  5. sn -e (извлечение pkey)
  6. фк (без различий)

Я обнаружил, что первые 160 байт файла SNK - это PKey ..., а остальные 436 байт представляют закрытый ключ.

В то время как для целей разработки должно хватить sn-Vr или sn -R keys.snk (новая пара открытого / секретного ключей вместо одной с подписью с задержкой), мне интересно знать, извлекает ли открытый ключ из сборки и сопряжение с вашим собственным закрытым ключом будет работать ...

Это может быть потенциальная дыра в петле безопасности (поскольку сборки ищутся с токенами открытого ключа) ... Неудивительно, что в .Net framework / SDK нет встроенного инструмента, позволяющего это сделать.

Есть ли место, где документируется вся файловая структура SNK (формат файла)? Может ли этот подход вообще работать? Как вы думаете?

1 Ответ

1 голос
/ 23 декабря 2009

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

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

Для получения дополнительной информации см. здесь .

...