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

Вопрос: Я должен придумать уникальный идентификатор для каждого сетевого клиента, такой что:

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

Немного объяснения и немного предыстории:

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

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

Пока я искал решение, я знал следующее:

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

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

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

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

Ответы на вопрос(0)

Ваш ответ на вопрос