Y2K38 problem



In computing, time is counted as signed integer - a number of seconds that has passed from January 1st 1970 at 00:00h (12:00h AM). To go in the past (before 01/01/1970) a negative number must be used. This is commonly known as "Unix Timestamp".

Only 32 bits are used to store "words" in 32bit processor technology (a "word" can be anything, from data to mathematical or logical instructions). Having 32 bits or binary places and using one bit for sign, as this is signed number, we have a span from -2³¹ to 2³¹-1 which is, translated to decimal notation, a span from -2,147,483,648 to 2,147,483,647.

So, when a number of seconds passed from Thursday, January 1st at 00:00:00 passes a number of 2,147,483,647 or 19th of January 2038 - all computers using this technology will have their date set back to 13th of January 1901! No one knows what can happen with security systems driven on 32bit technology.

There is no universal solution for this problem for existing systems. While 64bit systems are not affected by this issue, all 32bit systems using "Unix Timestamp" to store time will be affected. They can switch to unsigned integer numbers, but then the span will be only from 1970 to year 2106, so it's unusable if those systems need to use dates before 01/01/1970. Hopefully all systems will switch to 64bit technology by year 2038, but that's probably impossible for some embedded systems.