Is there a way to generate a sequence of keys that have the property that exposing any of those keys will reveal all previous keys, but no future key?
I'm thinking about an application that sends an encrypted message every day, and sometimes I want to disclose to some other party the content of all past messages at any point in time, but without revealing any future message.
A possible way would be to hash some data
x times, and than use the final hash for the first message, the
x-1th hash as key for the second message,
x-2th hash as key for the second message and so on. Revealing to any party the
x-n key allows them to just hash it many times to obtain all the keys between
x-n with no access to any later keys. But that limits the application in the total number of messages and requires a lot of work to be done beforehand. Maybe there is a much better way?