Проверка целостности дистрибутивов: различия между версиями

Материал из SysWiki
изменение формулировок
Строка 2: Строка 2:


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


Использование защищённого соединения не решает проблемы. Например, у зеркала злоумышленников будет вполне валидный сертификат для их домена, или, например, кто-то, имеющий доступ к инфраструктуре провайдера, может получить контроль над трафиком сайта, используя это, получить TLS-сертификат для него и организовать подмену файлов сайта для всех или некоторых адресов.
Поэтому существуют и применяются ряд способов проверки подлинности загружаемых программ при помощи электронной подписи. Более того, они позволяют обнаружить ошибки при загрузке (которые возникают гораздо чаще, чем подмена файлов злоумышленниками, хотя последнее, конечно, наносит жертвам намного больший ущерб).


Поэтому существуют и применяются ряд способов проверки подлинности загружаемых программ. Более того, эти способы проверки подлинности ПО позволяют выявить ситуации, когда оно было скопировано не полностью или с ошибками (ситуация наверное более частая, чем попытки подмены файлов, хотя подмены установочных файлов всё же наносят намного больший ущерб).
== Использование электронной подписи ==
Способы проверки подлинности в целом сводятся к использованию электронной подписи, создаваемой при помощи криптографических алгоритмов с открытым  ключом, и различаются в деталях реализации, которые подходят для той или иной ситуации. Для Linux основной способ проверки электронной подписи — это использование утилиты GnuPG.


== Способы проверки ==
Обычно данная утилита установлена по умолчанию. В случае, если она, например, не установлена в дистрибутиве Debian (что является скорее нештатной ситуацией), её легко установить командой:
Способы проверки подлинности в целом сводятся к использованию электронной подписи, создаваемой при помощи криптографических алгоритмов с открытым  ключом, и различаются в деталях реализации, которые подходят для той или иной ситуации. Для Linux основной способ проверки электронной подписи — это использование утилиты GnuPG. При этом, для проверки дистрибутива необходимо обладать соответствующим открытым ключом, данные ключи обычно распространяются вместе с подписываемыми файлами и файлами электронной подписи, но проблема тут в том, что , если просто загрузить и установить такой файл, то проверка подлинности может не обнаружить подмену файла, поскольку открытый ключ владельца ключа может быть подменён на сервере вместе с дистрибутивом и подписью. Поэтому к получению ключа стоит отнестись достаточно ответственно.
 
<code>apt install gnupg</code>
 
При этом, для проверки электронной подписи необходимо обладать соответствующим открытым ключом, которые обычно распространяются вместе с подписываемыми файлами и файлами электронной подписи, но есть важный момент с проверкой подлинности открытого ключа: если скачать его с того же сайта, где находится подпись, то, в случае подмены файла, будет скорее всего подменена подпись и открытый ключ. Поэтому, если вы хотите проверить подлинность загружаемого программного обеспечения, можно предпринять дополнительные меры предосторожности, например, скачать открытый ключ заранее (если случаются инциденты с подменой файлов, то они относительно быстро обнаруживаются). Также дистрибутивы Linux могут содержать ряд нужных для проверки ключей. Например, в Debian Linux вы можете установить несколько пактов с ключами используя команду (скорее всего один из них уже будет установлен):
 
<code>apt install debian-keyring debian-archive-keyring debian-ports-archive-keyring fasttrack-archive-keyring</code>


=== Проверка подлинности при помощи электронной подписи для файла ===
=== Проверка подлинности при помощи электронной подписи для файла ===

Версия от 17:40, 3 февраля 2024

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

Необходимость проверки

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

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

Использование электронной подписи

Способы проверки подлинности в целом сводятся к использованию электронной подписи, создаваемой при помощи криптографических алгоритмов с открытым ключом, и различаются в деталях реализации, которые подходят для той или иной ситуации. Для Linux основной способ проверки электронной подписи — это использование утилиты GnuPG.

Обычно данная утилита установлена по умолчанию. В случае, если она, например, не установлена в дистрибутиве Debian (что является скорее нештатной ситуацией), её легко установить командой:

apt install gnupg

При этом, для проверки электронной подписи необходимо обладать соответствующим открытым ключом, которые обычно распространяются вместе с подписываемыми файлами и файлами электронной подписи, но есть важный момент с проверкой подлинности открытого ключа: если скачать его с того же сайта, где находится подпись, то, в случае подмены файла, будет скорее всего подменена подпись и открытый ключ. Поэтому, если вы хотите проверить подлинность загружаемого программного обеспечения, можно предпринять дополнительные меры предосторожности, например, скачать открытый ключ заранее (если случаются инциденты с подменой файлов, то они относительно быстро обнаруживаются). Также дистрибутивы Linux могут содержать ряд нужных для проверки ключей. Например, в Debian Linux вы можете установить несколько пактов с ключами используя команду (скорее всего один из них уже будет установлен):

apt install debian-keyring debian-archive-keyring debian-ports-archive-keyring fasttrack-archive-keyring

Проверка подлинности при помощи электронной подписи для файла

Для файла, подлинность которого нужно подтвердить, создаётся файл электронной подписи, который размещается рядом с ним. Обычно файл подписи имеет расширения .asc, .sig или .sign.

Проверка подлинности при помощи подписанных файлов контрольных сумм

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

Проверка подлинности коммита в репозитории git