For VSV6 models, the workshop manual says that
"code 31 will set when the BCM (theft deterrent circuit) does not return a signal to the ECU when the ignition is switched on to permit operation of the injectors. When this code is set, there will be a one second delay in starter motor operation after turning the ignition to the start position.".
Theres no mention there that it could be an ignition key or key reader problem.. It sounds more to me like these cars sometimes have one off or temporary serial communication problems between the BCM and the ECU. Ive seen this code logged on a hell of a lot of commmodores over the years and it doesnt seem to worry anything.. If the key reader or key were faulty, the engine wont just have a one second delay when its starting, it wont even attempt to crank over if the key cant be read by the BCM for any reason. Going on how the manual explains it, it seems to me that when the key is turned to the ON position, the BCM reads the keyfob to make sure its ok to give permission to the ECU to let the injectors run at startup.. Then when the ignition is turned to START position, the ECU signals the BCM and it gets a return signal saying whether its ok to start or not...