Проверка подлинности компьютера
У меня есть сервер и несколько клиентов (в данный момент технология не важна. Она может быть любой).
Мне нужно аутентифицировать компьютеры. Они расположены в нескольких офисах, географически распределенных с динамическими IP-адресами.
Я не доверяю людям, работающим на ПК, поэтому мне не нравится аутентификация по имени пользователя и паролю.
Поэтому мне нужны только программы, установленные на этих компьютерах для доступа к серверу. Если программы клонируются (или клонируется ОС) на другой ПК, сервер должен отклонить их.
Как я могу это сделать?
(Решит ли это VPN. Существуют ли другие способы?)
5 ответов
Вы можете быть в поиске аппаратного решения на основе токенов, такого как Yubikey. Таким образом, теперь они все еще могут клонироваться, но у них все равно будет только один yubikey и, следовательно, только один функциональный компьютер.
Стоимость разумная (я думаю):
- 1 по 25 долларов США каждый
- 10 по 20 долларов США каждый
- 100 по 15 долларов США каждый
Но только для программного решения... почему бы не загрузить компьютер с сертификатом SSH и разрешить только один вход в систему для каждого сертификата. Это не помешает клонированию, но эффект тот же.
Возможно, вы захотите добавить проверку cpuid, чтобы, если сертификат использовался для аутентификации клиента от нескольких разных клиентов, вы сокращали срок действия сертификата или выполняли другие раздражающие действия. Обратите внимание, что идентификатор процессора не очень заслуживает доверия, но он немного поднимает планку для клонера.
Самый простой способ, но также и способ, который можно легко обмануть, состоит в проверке MAC-адреса сетевой карты.
Вы не можете полагаться на какой-либо ключ или метод, который полагается на любой ключ, который генерируется один раз, а не просто используется get. Вам нужно полагаться на промежуточный аппаратный токен или токен, который хранится в Hardware.
Последнее может быть достигнуто с помощью TPM. Вы можете исследовать эту тему.
редактировать
Короче говоря, TPM позволяет хранить токены в аппаратном хранилище. Это эффективно предотвратит клонирование ваших машин.
Вы можете даже зайти так далеко и зашифровать жесткий диск на основе ключа на основе TPM.
Нет такой вещи, как "только программы могут получить доступ". Либо они могут быть доступны с помощью определенной учетной записи / метода, либо они не могут. Какими ресурсами вы делитесь, только документы? Если вы используете простой метод имени пользователя / пароля, вы всегда можете изменить / удалить их учетную запись, потому что они вызывают беспокойство.
Точно так же вы можете настроить VPN-доступ, который позволит вам ограничивать соединения на основе MAC-адреса, что (в пределах разумного) позволит вам ограничить доступ к определенным аппаратным элементам и победить скопированную ОС.
Крипто-ключ USB + суперклей. (например, eToken PRO). Вся предпосылка их состоит в том, что они хранят секретный ключ в секрете / защищают и выполняют криптографические функции на самом ключе, никогда не подвергая его воздействию компьютера.
Я не верю, что есть способ сделать это. В основном вы хотите аутентифицировать клиентов без паролей, чтобы пользователь не имел права голоса при аутентификации, предполагая, что все "секреты" хранятся на самой машине.
Если машина может быть клонирована, то сохранение секрета на машине (например, для VPN без пароля) не вариант. Если клиенту нельзя доверять, то сохранение секрета с диска не вариант, поэтому вам нужно будет найти способ определить его личность, не имея возможности доверять файловой системе или каким-либо пользователям.
Есть способы сделать это, такие как ограничение на основе IP-адреса (который вы указали, не вариант), и ограничение на основе некоторого идентификатора оборудования (например, MAC-адреса), который может быть подделан.
РЕДАКТИРОВАТЬ: Хранение закрытого ключа на USB-накопителе может быть вариант, но он все еще подвержен клонированию.