serial number format:
- 24 octets represented by 24 hex characters plus hyphens for readibility
 e.g. D429-A7C5-9C15-8516-D15D-3A1C
- 0-15: {email+master hash}
 - 16-19: {id}
 - 20-23: {timestamp}
 
email+master hash algorithm:
- generate md5 hash of user's email (32 bytes)
 - generate md5 hash of undisclosed master key
 - xor these two hashes
 - remove odd bytes, reducing size to 16
 - e.g. D429A7C59C158516D15D3A1CB00488ED --> D2AC9181D531B08E
 
id:
- initially 0x00000000, then incremented with each licence sold
 
timestamp:
- timestamp generated when license is purchased
 
validation:
- in order to register product, user must enter 1) email address and 2) serial number
 - generate email+master hash and verify that it matches 0-15 of serial
 - extract timestamp from serial and verify that it is < current timestamp and >= date first license is sold