2. Пользователь сообщает мне серийный номер ключа.
3. Я высылаю пользователю с файл-лицензию (сделанную под данный номер ключа) + утилитку, которая прошивает эту лицензию в ключ. Или удаленно прошиваю его ключ (по сути то же самое).
4. Пользователь работает

Собственно, почему сомнения: чтобы хоть сколько-то секьюрно записать данные в ключ (так, чтобы пользователь не мог их увидеть, подменить, передать пользователю с другим ключом) - по моим представлениям, требуется key pair, причем одна ее половинка должна быть у меня, а другая - в ключе (причем в недоступном пользователю виде). Ну и, соответственно, встает вопрос - а есть ли такое чудо? Серийного номера ключа для счастья явно недостаточно...