A system for implementing multifactor authentication to authenticate a user with multiple types of user authentication devices, the system comprising: a processor; and a storage coupled to said processor and containing a basic input/output system (BIOS), said BIOS comprising a BIOS core, characterized in that the BIOS is adapted to implement multifactor authentication to authenticate a user; and the BIOS comprises: a user authentication and enforcement engine; a plurality of preboot authentication modules, each PBA module comprising code that enables the system to interact with a user authentication device, the AEE adapted to call the appropriate PBA module to authenticate a user via a user authentication device that corresponds to that PBA module; and a standardised extensible interface adapted to permit the AEE to interact with the plurality of PBA modules; wherein the standardised extensible interface comprises a first dataset and a second data set to be passed to a respective PBA module, each dataset comprising a first dataset element that comprises a list of user credentials, and a second dataset element that includes a number, said number being a quantity of the user credentials of the first dataset element, wherein the first and second datasets are provided by the AEE to the respective PBA module for use by the PBA modules when authenticating the user via a user authentication device, wherein the PBA module is adapted to receive the dataset and to begin to authenticate the user in accordance with the information identified by the dataset, and wherein the AEE is adapted to receive a result from each PBA module as to whether a user has been authenticated via that particular PBA module. a processor; and a storage coupled to said processor and containing a basic input/output system (BIOS), said BIOS comprising a BIOS core, characterized in that the BIOS is adapted to implement multifactor authentication to authenticate a user; and the BIOS comprises: a user authentication and enforcement engine; a plurality of preboot authentication modules, each PBA module comprising code that enables the system to interact with a user authentication device, the AEE adapted to call the appropriate PBA module to authenticate a user via a user authentication device that corresponds to that PBA module; and a standardised extensible interface adapted to permit the AEE to interact with the plurality of PBA modules; wherein the standardised extensible interface comprises a first dataset and a second data set to be passed to a respective PBA module, each dataset comprising a first dataset element that comprises a list of user credentials, and a second dataset element that includes a number, said number being a quantity of the user credentials of the first dataset element, wherein the first and second datasets are provided by the AEE to the respective PBA module for use by the PBA modules when authenticating the user via a user authentication device, wherein the PBA module is adapted to receive the dataset and to begin to authenticate the user in accordance with the information identified by the dataset, and wherein the AEE is adapted to receive a result from each PBA module as to whether a user has been authenticated via that particular PBA module. a user authentication and enforcement engine; a plurality of preboot authentication modules, each PBA module comprising code that enables the system to interact with a user authentication device, the AEE adapted to call the appropriate PBA module to authenticate a user via a user authentication device that corresponds to that PBA module; and a standardised extensible interface adapted to permit the AEE to interact with the plurality of PBA modules; wherein the standardised extensible interface comprises a first dataset and a second data set to be passed to a respective PBA module, each dataset comprising a first dataset element that comprises a list of user credentials, and a second dataset element that includes a number, said number being a quantity of the user credentials of the first dataset element, wherein the first and second datasets are provided by the AEE to the respective PBA module for use by the PBA modules when authenticating the user via a user authentication device, wherein the PBA module is adapted to receive the dataset and to begin to authenticate the user in accordance with the information identified by the dataset, and wherein the AEE is adapted to receive a result from each PBA module as to whether a user has been authenticated via that particular PBA module.