a method and apparatus for authenticating data stored in semiconductor memory cells . a reference fingerprint representing trapped charges in memory cells of a semiconductor device is created . data is written to selected cells of the semiconductor device . after the data is written , the levels of trapped charges in the selected cells is determined by performing a series of read operations using progressively greater read thresholds . the level of trapped charges in a memory cell is identified by noting the voltage threshold at which the memory cell is read as a digital “ 1 ”. once the levels of trapped charges of the memory cells are identified , a reference fingerprint is created to identify the semiconductor device . the reference fingerprint may be stored on the semiconductor device or on an external device . when it is desired to authenticate the semiconductor device , an authentication fingerprint is created by determining levels of trapped charges in selected cells of the semiconductor device , similar to the way in which the stored reference fingerprint was created . the stored reference fingerprint is retrieved and compared to the authentication fingerprint . if the authentication fingerprint matches the stored reference fingerprint , the semiconductor device is authenticated . for additional security , an offset voltage may be added to data which is written to the selected cells of the semiconductor device , or the reference fingerprint may be encrypted before storage . fuzzy logic techniques may be used to compensate for environmental and hardware related fluctuations in the levels of trapped charges of the memory cells .