Hallo gunnarh ,
danke für deine Ideen. Genau was du zu den Zertifikaten meintest, hatte ich auch im Sinn: Keiner zwingt mich (kryptografisch) mich an das Ablaufdatum zu halten. Ich kann analog z.B. auch an bereits abgelaufene PGP-Schlüssel Text senden, obwohl der Schlüssel als ungültig markiert ist.
GPG kam mir auch in den Sinn, aber das "Problem" ist, dass der zukünftige Empfänger die Öffentlichkeit wäre, also die geheimen Texte veröffentlicht werden. Sprich: Das System selbst ist gewissermaßen der Empfänger und ich möchte verhindern, dass es da früher / zwischendurch ran kann bis sich der Autor wirklich dazu entschieden hat den Text wirklich zu veröffentlichen.
Dafür war ich schon relativ früh zum Entschluss gekommen, dass ich eine vertrauenswürdige Drittpartei brauche. Es gibt ja Timestamp-Authorities, aber damit läge die Prüfung "Darf das schon entschlüsselt werden?" wieder in der Applikationslogik, was es ja ähnlich wie bei Ablaufdaten von Zertifikaten oder Schlüsseln zu verhindert gilt. Ich wollte diese Prüfung aber schon technisch abgedeckt sehen. Der Hinweis auf Smart-Contracts muss ich sagen, gefällt mir derzeit am meisten. Und es ist tatsächlich mal ein Use-Case für Blockchain ohne, dass man unbedingt das Buzz-Word unterbringen muss 
Idee ist derzeit wie folgt:
- Nutzer gibt (zu schützenden) Text T ein.
- T wird symmetrisch mit Schlüssel SYMS verschlüsselt (Schlüssel ist für jeden Text einzigartig), es entsteht SYMS(T)
- SYMS(T) wird in der Anwendungsdatenbank gespeichert
- SYMS wird asymmetrisch mit (Public-)Schlüssel ASYMS_PUB verschlüsselt (Systemweit gleich). Es entsteht ASYM(SYMS)
- ASYM(SYMS) wird in einem Smart-Contract in einem Dictionary unter (s)einem Hash H gespeichert (dient als Identifier). Key-value-artig (mit key = H und value = {"secret" => ASYM(SYMS), "notBefore" => "2019-01-01"})
- SYMS wird vernichtet. Ab jetzt ist SYMS(T) von der Anwendung nicht mehr entschlüsselbar.
- Smart-Contract stellt zwei "Methoden" zur Verfügung (bin mit den Termini nicht so vertraut): deleteSecret, getSecret (nebst createSecret)
- getSecret liefert zu H das secret nur aus, falls die aktuelle Zeit nach notBefore liegt
- deleteSecret löscht den Eintrag aus dem Dictionary
- H wird in der Anwendungsdatenbank mit SYMS(T) verknüpft gespeichert
- Der Nutzer bekommt H mitgeteilt mit dessen Hilfe er die Veröffentlichung stoppen kann (die Anwendung ruft dann deleteSecret mit H auf, wodurch die einzige Version von SYMS verloren geht)
- Die Anwendung selbst (oder von mir aus auch das im Smart-Contract) trackt wann SYMS(T) theoretisch veröffentlicht werden soll und versucht an dem Tag (oder danach) ASYM(SYMS) aus dem Smart-Contract abzurufen. Wurde dies nicht durch den Nutzer gelöscht, erhält die Anwendung ASYM(SYMS)
- Die Anwendung kann nun mithilfe von (Private-)ASYMS den Originalschlüssel SYMS wieder herstellen und
- damit SYMS(T) entschlüsseln
- T wird veröffentlicht
Zu schützende Geheimnisse sind:
- ASYMS
- Adresse / Private-Key für Etherium-Adresse, die berechtiggt ist mit dem Contract zu interagieren
Selbst falls diese Geheimnisse beide in die gleichen Hände geraten, kann der Text T erst am Tag lt. Smart-Contract wieder hergestellt werden (außer derjenige hat auch 50%+1 Macht in der Etherium-Blockchain
). Fehlt eines der beiden Geheimnisse ist T nicht wieder herstellbar.
Ich kann ja mal in der Idee etwas konkreter werden. In meinem Umfeld habe ich in der Vergangenheit hier und da aus erster und zweiter Hand mitbekommen, dass in öffentlichen Einrichtungen jeglicher Art hier und da mal etwas - sagen wir - nicht ganz korrekt abläuft. Da wird der ausschreibungspflichtige Auftrag mal an Cousin A vergeben und mit Tricks die Ausschreibungspflicht umgangen, dort "leiht" sich der Direktor einer Schule für's Wochenende mal den großen Schulprojektor zum Fußballgucken aus oder die Küchenhilfen in der Gerichtskantine kaufen immer 2 mal so viel ein, um das "übrig gebliebene" Material privat zu nutzen. Also alles so mehr oder minder "schlimme" Sachen.
Ich fand nun die Idee ganz "lustig", dass es eine "Anlaufstelle" (=Webseite) für Angestellte / Beteiligte gibt, wo sie sich das von der Seele schreiben können und mit größerer Zeitverzögerung veröffentlicht werden. (Ja, keiner weiß, ob die dortig gespeicherten Geschichten echt sind).