Вопрос: Я должен придумать уникальный идентификатор для каждого сетевого клиента, например:
- он (ID) должен сохраняться после установки клиентского программного обеспечения на целевом компьютере и должен продолжать сохраняться, если программное обеспечение будет повторно установлено на том же компьютере и в том же выпуске ОС,
- он не должен меняться, если конфигурация оборудования изменяется в большинстве способов (кроме изменения материнской платы).
- Когда жесткий диск с установленным клиентским программным обеспечением клонируется на другой компьютер с идентичной аппаратной конфигурацией (или, насколько это возможно,), клиентское программное обеспечение должно знать об этом изменении.
Немного об объяснении и некоторой предыстории:
Этот вопрос является, в основном, стареющим вопросом, который также затрагивает тему защиты от копирования программного обеспечения, так как некоторые из механизмов, используемых в этой области, упоминаются здесь. В этот момент я должен быть ясно, что я не ищу схему защиты от копирования. Пожалуйста, читайте дальше.:)
Я работаю над клиент-серверным программным обеспечением, которое должно работать в локальной сети. Одной из проблем, которые я должен решить, является определение каждого уникального клиента в сети (не столько проблема), что я могу применять определенные атрибуты для каждого конкретного клиента, сохранять и применять эти атрибуты в течение срока службы развертывания определенного клиент.
Пока я искал решение, я знал о следующем:
- Система активации Windows использует какой-то тяжелый механизм отпечатков пальцев, который чрезвычайно чувствителен к модификациям оборудования,
- Программное обеспечение для создания образов дисков копирует все идентификаторы томов (привязанные к каждому разделу при форматировании) и пользовательские, уникально сгенерированные идентификаторы во время процесса установки, во время первого запуска или любым другим способом, который является строго программным обеспечением по своей природе и хранится в реестре или на жестком диске, поэтому очень легко путать два.
Очевидным выбором для такого рода проблем было бы найти идентификаторы BIOS (не на 100% уверены, что это уникально с помощью одинаковых моделей материнских плат), так как единственное, на что я могу положиться, это не дублировать, переносится путем клонирования, и это нельзя изменить (по крайней мере, не используя некоторую программу для пользователя). Все остальное не может быть либо ненадежным (клонирование MAC, кто угодно?), Либо слишком требовательным (в том смысле, что он слишком чувствителен к изменениям конфигурации).
Вопрос, который я хотел бы задать, заключается в том, что я делаю это правильно, по архитектуре? Возможно, есть лучший инструмент для выполнения задачи, которую я должен выполнить...
Еще один подход, который я имел в виду, - это нечто похожее на механизм рукопожатия, где сервер поддерживает внутреннюю таблицу поиска подключенных идентификаторов клиентов (которые могут быть даже полностью программными и не уникальными в любой момент) и сообщает клиент должен придумать другой идентификатор во время рукопожатия, если при подключении дубликат ID. К сожалению, этот подход не очень хорошо сочетается с одним из требований по привязке атрибутов к конкретному клиенту в течение жизни.