Are there any good methods for authenticating that a user is a maint engineer, or at least trusted enough to use the maint access? The environment is code that is running in client sites, without internet access, and runs for many years between visits.
Think of a vending machine as example, how do i know that you are from service company, OR are talking to service engineer who gives you the password? I want to stop you being able to use this password again weeks later, although again within next few hours is fine if it helps.
We currently use a long term password, so you login first (site security) and then enter maint password to jump to super mode. Only problem is once this password is known, we cannot really change it.
I am not after perfect security, only that users must be reasonably trusted to access the maint mode. I was thinking of some challenge/response, where the challenge question changes every 24hours or so, but if the code might need to store 10years (life of single release) of challenge/responses I'm wondering if this is really a good idea. We only have keyboards as authentication capture devices.