Почему он не основан на серийном номере устройства USB?
Серийный номер устройства не гарантированно существует. Чтобы подключить устройство USB к хост-устройству USB, оно должно указать идентификатор оборудования (среди прочих полей) для хоста USB, в противном случае оно не может подключиться к этому устройству. Есть определенные поля, которые могут быть переданы, которые являются необязательными. Серийный номер устройства передавать не нужно.
На мой взгляд, это будет безопаснее, поскольку два USB-устройства могут иметь одинаковый идентификатор оборудования ...
Ничто не помешает двум USB-устройствам иметь одинаковый серийный номер. Устройство USB сообщает хосту USB все об этом. В большинстве случаев вредоносное устройство будет запрограммировано таким образом, чтобы его можно было идентифицировать как безвредное устройство или просто как устройство, которое можно подключить к машине.
Есть ли способ создать белый список, основанный на серийных номерах?
Нет; Вы ограничены использованием аппаратных идентификаторов и совместимых идентификаторов.