Какой смысл подписывать код, как банки? - PullRequest
22 голосов
/ 25 июля 2010

Какой смысл подписывать ваш код как jar-файлы Java, если каждый может сделать это с помощью jarsigner? Как это обеспечивает безопасность?

Ответы [ 3 ]

16 голосов
/ 25 июля 2010

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

5 голосов
/ 25 июля 2010

Подписание баночки связывает содержимое обратно с конкретным сертификатом. Так что же это за сертификат?

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

Сертификат сам может быть подписан хорошо известным центром сертификации (CA). Таким образом, конечный пользователь уверен, что контент имеет заявленное происхождение. Количество подтверждений того, что владелец ключа сертификата является тем, кем они себя называют, варьируется. Это привело к стремительной гонке, где центры сертификации упрощают процедуры, предлагая более низкие цены.

Даже для непроверенных сертификатов различное содержимое, подписанное одним и тем же сертификатом, имеет общее происхождение. Поэтому, если вы примете решение доверять сертификату, вы можете получать больше контента из того же источника, не доверяя никому другому.

5 голосов
/ 25 июля 2010

Когда вы подписываете jar-файл, вы можете показать, что его подписали вы , а не кто-то другой.

Это та же идея, когда вы подписываете документ - только вы можете написать свою подпись. Другие люди могут подписать его, но они подпишут его своей подписью, а не вашей.

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

...