A user authentication method comprising execution, by a processing system, of the steps of: receiving a request from a user to initiate an authentication session, the request comprising a unique identifier of the user; accessing, using the unique identifier, a record stored in memory associated with the user, the stored record comprising at least code value complexity preference data which defines a user-preferred complexity level for user in validation of user input received in response to presentation of security matrices, and a user-defined keyword consisting of an ordered sequence of symbols comprising members of a predetermined symbol set selected from one or more symbol sets supported by the processing system, wherein the symbols of the ordered sequence have been previously selected by the user independently of other users' selections; generating a one-time security matrix which is valid only for the user during the authentication session, and which comprises a mapping between each symbol within the predetermined symbol set and a code value which is specific to the authentication session and randomly selected from a code set which is distinct from the predetermined symbol set; transmitting the one-time security matrix for presentation to the user, wherein the one-time security matrix presented to the user comprises symbols of the predetermined symbol set corresponding to the code values randomly selected from the code set; receiving an ordered sequence of code values selected from the one-time security matrix and input by the user, based upon the user-defined keyword and the code value complexity preference data, in response to presentation of the one-time security matrix; validating the received ordered sequence of code values by comparison with a corresponding sequence of code values generated, but not transmitted, by the processing system based upon the user-defined keyword in the stored record, the code value complexity preference data and the one-time security matrix; and generating an authentication result of the authentication session based upon the comparison. receiving a request from a user to initiate an authentication session, the request comprising a unique identifier of the user; accessing, using the unique identifier, a record stored in memory associated with the user, the stored record comprising at least code value complexity preference data which defines a user-preferred complexity level for user in validation of user input received in response to presentation of security matrices, and a user-defined keyword consisting of an ordered sequence of symbols comprising members of a predetermined symbol set selected from one or more symbol sets supported by the processing system, wherein the symbols of the ordered sequence have been previously selected by the user independently of other users' selections; generating a one-time security matrix which is valid only for the user during the authentication session, and which comprises a mapping between each symbol within the predetermined symbol set and a code value which is specific to the authentication session and randomly selected from a code set which is distinct from the predetermined symbol set; transmitting the one-time security matrix for presentation to the user, wherein the one-time security matrix presented to the user comprises symbols of the predetermined symbol set corresponding to the code values randomly selected from the code set; receiving an ordered sequence of code values selected from the one-time security matrix and input by the user, based upon the user-defined keyword and the code value complexity preference data, in response to presentation of the one-time security matrix; validating the received ordered sequence of code values by comparison with a corresponding sequence of code values generated, but not transmitted, by the processing system based upon the user-defined keyword in the stored record, the code value complexity preference data and the one-time security matrix; and generating an authentication result of the authentication session based upon the comparison.