A method for obfuscating data stored on a network, the method comprising: defining and storing information descriptive of the state of a computing machine as machine number, MNUM, the information descriptive of the state including the number of bases comprising the information descriptive of the state; generating a machine secure unique product identifier, MSUPI, as a reversible mathematical transformation of a machine unique product identifier, MUPI, based on information descriptive of the state of a computing machine, the step of calculating MSUPI comprising: defining the number of steps to be imax, for each step generating a first random number Code Generation Obfuscation Key, CGOK i,1, and a second random number Code Generation Obfuscation Key, CGOK i,2, generating comprising: calculating a first random number CGOKi,1 coprime with a number based on the information descriptive of the state of the computing machine, MNUM; calculating a second random number CGOK i,2, having equal or fewer bit size as MNUM; defining m 0,2 = MUPI; calculating for each element i, from i = 1 to imax - 1: m i,1 = ( m i -1,2 x CGOK i,1) mod ( MNUM); m i,2 = ( m i,1, mod CGOK i,2); if ( m i,2 > MNUM) → m i,2 = m i, 1; defining MSUPI = m imax,2; storing the machine secure unique product identifier, MSUPI, in an electronic data store. defining and storing information descriptive of the state of a computing machine as machine number, MNUM, the information descriptive of the state including the number of bases comprising the information descriptive of the state; generating a machine secure unique product identifier, MSUPI, as a reversible mathematical transformation of a machine unique product identifier, MUPI, based on information descriptive of the state of a computing machine, the step of calculating MSUPI comprising: defining the number of steps to be imax, for each step generating a first random number Code Generation Obfuscation Key, CGOK i,1, and a second random number Code Generation Obfuscation Key, CGOK i,2, generating comprising: calculating a first random number CGOKi,1 coprime with a number based on the information descriptive of the state of the computing machine, MNUM; calculating a second random number CGOK i,2, having equal or fewer bit size as MNUM; defining m 0,2 = MUPI; calculating for each element i, from i = 1 to imax - 1: m i,1 = ( m i -1,2 x CGOK i,1) mod ( MNUM); m i,2 = ( m i,1, mod CGOK i,2); if ( m i,2 > MNUM) → m i,2 = m i, 1; defining MSUPI = m imax,2; storing the machine secure unique product identifier, MSUPI, in an electronic data store. defining the number of steps to be imax, for each step generating a first random number Code Generation Obfuscation Key, CGOK i,1, and a second random number Code Generation Obfuscation Key, CGOK i,2, generating comprising: calculating a first random number CGOKi,1 coprime with a number based on the information descriptive of the state of the computing machine, MNUM; calculating a second random number CGOK i,2, having equal or fewer bit size as MNUM; defining m 0,2 = MUPI; calculating for each element i, from i = 1 to imax - 1: m i,1 = ( m i -1,2 x CGOK i,1) mod ( MNUM); m i,2 = ( m i,1, mod CGOK i,2); if ( m i,2 > MNUM) → m i,2 = m i, 1; defining MSUPI = m imax,2; calculating a first random number CGOKi,1 coprime with a number based on the information descriptive of the state of the computing machine, MNUM; calculating a second random number CGOK i,2, having equal or fewer bit size as MNUM; defining m 0,2 = MUPI; calculating for each element i, from i = 1 to imax - 1: m i,1 = ( m i -1,2 x CGOK i,1) mod ( MNUM); m i,2 = ( m i,1, mod CGOK i,2); if ( m i,2 > MNUM) → m i,2 = m i, 1; m i,1 = ( m i -1,2 x CGOK i,1) mod ( MNUM); m i,2 = ( m i,1, mod CGOK i,2); if ( m i,2 > MNUM) → m i,2 = m i, 1; defining MSUPI = m imax,2; storing the machine secure unique product identifier, MSUPI, in an electronic data store.