EVENT-LOCKED MESSAGES WITH PROVABLE ATTESTATION
20230171115 · 2023-06-01
Inventors
Cpc classification
H04L9/3249
ELECTRICITY
H04L9/0825
ELECTRICITY
H04L9/3297
ELECTRICITY
International classification
H04L9/32
ELECTRICITY
Abstract
Described herein is an Event Locking System (ELS) and its associated methods for (a) cryptographically locking a given piece of information until a certain time or the occurrence of a certain event and (b) providing an attestation of both the lock time and the locked content to prove that the information has not been accessed or tampered with since the lock time. Applications for such a system abounds: from sealed bids for auctions and tenders, sports betting, elections, archiving of sensitive information, securing legal documents and so on.
Claims
1. A method for provably locking a digital message from access and modification until the occurrence of a pre-specified event, the method comprising: associating the event with two cryptographic keys called pre-key and post-key such that any information encrypted with one key can only be decrypted with the other key; distributing the pre-key to any party that requests it; distributing the post-key to any party that requests it if and only if the event has occurred; locking the said message to create a locked message, wherein the locked message comprises: the result of encrypting the message with the pre-key; and/or the result of encrypting the message with a random encryption key which is then encrypted with the pre-key associated with the event; and creating an attestation for the locked message using well-established cryptographic techniques for certifying and timestamping digital documents, wherein the attestation comprises: a timestamped certificate of the message before it was locked; and a timestamped certificate of the locked message.
2. The method of claim 1 further comprising: assigning the event a unique event-key for identifying the event.
3. The method of claim 1, wherein the time in the timestamp of the message before it was locked is before the time in the timestamp of the locked message.
4. The method of claim 1, wherein the event occurs at a pre-specified time as indicated by at least one clock.
5. The method of claim 1, wherein the event occurs when at least one designated party signals the occurrence of the event using a prespecified signal key;
6. The method of claim 5, wherein the event occurs when the at least one designated party signals the occurrence of the event using a prespecified signal key that is digitally signed by the at least one designated party.
7. The method of claim 1, wherein the cryptographic keypair is generated by the RSA technique for asymmetric cryptography.
8. The method of claim 1, wherein the post-key is computed from an encrypted post-key and an encryption key with which the post-key is encrypted.
9. The method of claim 1 further comprising: recording one or more steps of the method onto a system log.
10. The method of claim 1, wherein the event is a composite event composed of two simple events.
Description
LIST OF FIGURES
[0016]
[0017]
[0018]
[0019]
[0020]
[0021]
[0022]
[0023]
[0024]
[0025]
[0026]
[0027]
[0028]
[0029]
[0030]
[0031]
[0032]
DETAILED DESCRIPTION OF THIS INVENTION
[0033] The problem addressed in this invention is succinctly depicted in
[0034] Since the information may remain locked for any length of time, there must be a way to prove that the message was not altered while it remained locked. Alternatively, the proof must enable the locker to prove that the content was generated at or before the lock time, was locked at lock time, and has not been altered since. Thus, the proof acts as a content bridge that endures the content gulf and serves as a verification mechanism for the content and its lock time. The content gulf and the content bridge are pictorially depicted in
[0035] To solve the problem stated above (“the event-locking problem”), we describe an Event Locking System ELS and its associated methods.
[0036] Referring to
[0037] The Event Kernel EK 404 is responsible for generating an asymmetric cryptographic keypair pre-key and post-key for an event when it is registered. In simple embodiments, it may be just a function call that calls an RSA or Diffie-Hellman asymmetric key generator and hands over the generated keypair to the Event Manager EM 406. In embodiments where a high degree of trust is required, it may be implemented in one or more dApps or even one or more specialized hardware processors that hand the pre-key and an encrypted version of the post-key to the Event Manager 406, while handing over the encryption key to the event owner or a Timelock 408, so that the post-key is not available to any single party. Some embodiments may have multiple event kernels, and an event owner may designate which event kernel to use.
[0038] Event Manager EM 406 is responsible for managing all the sensitive information related to an event including its pre- and post-keys, signal-key etc. EM 406 is described in detail below.
[0039] An ELS may have one or more Timelocks 408. In an embodiment with a single Timelock, the Timelock is implicitly made the owner of all clock or timed events. In embodiments with multiple Timelocks, the event owner may designate a specific Timelock as the owner of the event. In some embodiments, multiple Timelocks may need to signal that a clock-event has occurred in order for its post key to be released. Depending on the embodiment, a Timelock may signal the occurrence of a designated time either proactively or on demand. For example, if there is an event with event token et registered for, say, 12 noon tomorrow, a proactive Timelock 408 will, at 12 noon tomorrow, inform or signal EM 406 that event et has occurred. In contrast, an on-demand Timelock 408 waits for the Event Manager 406 to ask if event et has occurred (typically in response to some third-party request for et's post-key). If it is past noon tomorrow, then, the on-demand Timelock 408 signals the occurrence of et. If an application only requires that the ELS not unlock an event before its designated time, an on-demand Timelock may be more efficient since it does not involve polling. However, if an application requires that an event-locked message be unlocked as soon as the event occurs, a proactive Timelock may be more suited.
[0040] The Event Locker EL 412 is responsible for taking a message to be locked and locking it with respect to a given event. EL 412 typically creates a locked module LMM that contains additional information besides the locked message.
[0041] The Attestor 414 works with Event Locker 412 to generate an attestation or proof for a locked message that enables an unlocker to ascertain that the unlocked message was locked at a specific time and has not been altered since.
Registering Events
[0042] Any application (“event owner”) may register an event with the ELS. In embodiments where the ELS components are more granular as, say, separate dApps, events may be registered with Event Kernel 404. An event can be a “timed event” that occurs at a specified time, or a “signaled event” that occurs when signaled by a designated party.
[0043] Embodiment A represents a single Event Manager EM 406 and a single Timelock. The event is registered with a unique token, EM 406 is given the event's pre- and post-keys, and the Timelock is made the event's owner. EM 406 dispenses the pre-key for the event freely to anyone who requests it, but not the post-key. When the Timelock's clock ticks the event time, the Timelock signals the event and thence, the event is considered signaled (occurred), and its post-key is freely dispensed. This may be perfectly acceptable for an application where the Event Manager and the Timelock are internal and trusted and there are other mechanisms for discouraging an antagonist from breaking the event lock.
[0044] Embodiment B represents a case where the responsibility of event signaling is given to multiple timelocks, potentially on different systems or servers. The Event Manager would not consider the event signaled until a majority—or even all—timelocks have signaled. Such an embodiment could cater to scenarios where compromised system clocks are believed to be a major attack vector for breaking a time-locked message. Alternatively, the multiple timelocks may stand as proxy for credibility and accountability. For example, a timed financial transaction may require that three different banks in different countries sign off on a transaction. Each bank may use its clock as a means of signaling its approval and recording the approval in its logs.
[0045] Embodiment C could represent an ELS where the Event Kernel 404 is independent. When a timed event is registered, EK 404 generates an asymmetric cryptographic keypair, and distributes the pre-key to EM 406 and the post-key to a Timelock 408. When the event occurs, Timelock 408 signals the event by installing the post-key in EM 406. This ensures that, an antagonist breaking into EM 406 would not be able to break an event lock since EM 406 does not get the post-keys for events until the event is signaled.
[0046] Embodiment D is similar to C, with one difference: when an event is registered, EK 404 generates an asymmetric keypair and distributes the pre-key and an encrypted version of the post-key to EM 406 and distributes the encryption key (with which the post-key is encrypted) to a Timelock 408. When the event occurs, Timelock 408 signals the event by providing EM 406 with the encryption key, which enables EM 406 to decrypt and dispense the post-key to event clients. The advantage of embodiment D over C is that in D, unlike C, Timelock 408 cannot act without the cooperation of the Event Manager 406 since all it has is the encryption key for the post-key, not the post key.
[0047] Another kind of event is a “signaled event,” shown in 702. In this example, an application (called, say, prompt server) registers an event and is given a signal key with which the event can be signaled. Shown in
[0048] Embodiment E represents an application registering a signaled event and designating itself as the owner of the event (as in 702). In this case, the event owner alone can signal the event (with the signal key). Typically, to signal the event, the event owner digitally signs the signal key and may be provided a signed acknowledgement by EM 406 so that both parties have a provable record of their mutual communication.
[0049] Embodiment F represents a signaled event registered without an owner and has defaulted to an unowned event. In such a case, any bearer of the signal key may be able to signal the event.
[0050] In Embodiment G, the event owner has designated a third-party as an oracle to signal the event. An oracle may be an authoritative source that is in charge of reporting on the occurrence of an event. For example, NFL or a TV channel carrying the Superbowl game may signal the beginning of half-time; Nasdaq or Yahoo Finance may be designated as the oracle signaling the price of a stock crossing a certain threshold.
[0051] In Embodiment H, on registering a signaled event, the owner is given a signal key, as well as an encryption key for the post-key as in
[0052] These scenarios and configurations illustrate and emphasize that ELS can cater to a wide range of application-specific needs. Later on, we will describe a few embodiments in detail.
Event Locking
[0053] Event locking refers to locking a message M with respect to an event. M can be any digital object: a string, arbitrary amount of text, photograph, sound, multimedia or anything at all that can be represented as a digital object. Without loss of generality, we'll assume M is contained in a computer file.
[0054] Although an event's asymmetric keys can be directly used for encrypting—and hence locking—a file, asymmetric keys are unwieldy and inefficient for encrypting large amounts of information. Following normal convention in cryptography, we will use a symmetric key ek for encrypting M and use the event's asymmetric keys (pre-key and post-key) for encrypting and decrypting ek. Thus, when we say that a message M is locked to an event e, we refer to the two-step process depicted in
[0055] For unlocking, the steps are reversed: (a) eek is first decrypted (814) by the post-key of the event to obtain ek, and (b) LM is decrypted (812) by ek to obtain M Since the post-key is available only after the event has occurred (signaled), we refer to this as unlocking a message that has been locked to an event.
[0056] EM 406 typically provides the following functions/APIs for event clients to use: [0057] 1. get_pre_key (event_token).Math.pre-key of the event [0058] 2. get_post_key (event_token).Math.post_key of the event if and only if the event represented by event_token has occurred (signaled). [0059] 3. event_encode (event_token, ek).Math.asymmetric_encrypt (pre-key, ek) [0060] 4. event_decode (event_token, eek).Math.asymmetric_decrypt (post-key, eek) if and only if the event has occurred and its post-key is available.
[0061] Event Locker 412—or indeed any event client—can lock a message M with these two calls: [0062] 1. LM=encrypt(ek, M) [0063] 2. eek=event_encode(event_token, ek)
[0064] An unlocker can unlock an event-locked message with these two function calls: [0065] 1. ek=event_decode(event_token, eek) [0066] 2. M=decrypt (eek, LM)
Message Attestation
[0067] One of the unique features of the current invention is that the target recipient of an event-locked message (“unlocker”) can depend on a proof—provided in the form of an attestation—that the locked message was locked at a certain time and has not been modified since. To be credible, the proof must serve the following goals: (a) it must fully capture the content of the message so that the slightest alteration of the content can render the proof invalid; (b) at the same time, the proof should not provide any clue about the content of the message that would enable an antagonist to definitively guess the content before unlocking the message; (c) it must enable an unlocker to determine precisely when the message was locked from access and modification; and finally, (d) many applications may require, for privacy reasons, that the proof be generated without requiring access to the content of message M.
[0068] Before we discuss our solution, we take a moment to describe trusted timestamping. There are commercial software packages, service providers and multiple standards for certified timestamping such as ANSI ASC X9.95, EPCM (also called a digital postmark) etc. To obtain a certified timestamp for some information, an information owner sends the hash of the information to a Time Stamping Authority (TSA) who appends the current timestamp to the hash and digitally certifies the resulting hash+timestamp. Let I stand for any information, hI for the hash of the information and Chit stand for the certified hash of I at time t.
[0069] It is tempting to think that such a certified timestamp of message M (ChMt) created before locking the message can serve as an attestation that message M has not been modified while it remained locked. However, such a solution will not work for the following reasons: [0070] A certified timestamp is a proof of content at a certain time and hence a guard against modification whereas event-locking is a guard against both access and modification. ChMt can be used to prove that M has not been modified since time t but does not say when M was locked from access. [0071] Alternatively, a certified timestamp of the locked message LM, ChLMt, can prove that M had been locked by time t and has not been modified since, but does not say when LM was locked from access. [0072] Since hM is recoverable from ChMt, if the locked message is easily guessable (say, predicting the winner of a Superbowl game, where there are only two possibilities), then an antagonist can compute the hash for all possibilities and see which hash matches hM and therefore guess M (a well-known attack called a rainbow attack). Even if the message is more complex, we note that, if the message stays locked for several years, an antagonist has a long time to try out many possibilities, do so without the fear of being throttled, and potentially with faster processors of future years.
[0073] Our solution involves adding additional information to a locked file. While additional information can be added to a file in many ways (as metadata, by appending additional data to the end of the file etc.), a simpler solution is to think of the locked file as a file module—i.e., a directory of files or even a zip file directory. A module enables us to keep additional information as separate files without affecting the file that contains the original message. It must be noted that file modules are purely a descriptive and implementation convenience, and not a necessary or integral part of this invention.
[0074] Before locking a message M, EL 412 creates a message module MM and places the message M in it. It then sends hash hM of M to Attestor 414. hM can be created using any suitable hash function such as the SHA family of functions recommended by NIST. In return, Attestor 414 provides 412 with two pieces of information: a certified timestamp ChMt and a random string called “gravel”: [0075] Timestamped certificates were described earlier. The Attestor may generate a certified timestamp using inhouse software or obtain it from an external third party. [0076] Gravel is a random string that may be anywhere from 1K to 16K bytes. The purpose of gravel is to ensure that an antagonist cannot guess the content of a locked message by attacking the attestation. When a message is short (such as the prediction of the winner of a game), an antagonist can generate a locked module with all possible values for the winner, hash it, and see which hash the attestation matches. Salting is one common way to thwart this kind of attack (rainbow attack). However, salts are typically a fixed length, plaintext string often used in hashing passwords. Password attacks also have a backup defense mechanism in throttling. But locked messages can be long-lived, and an attacker has a long time to attack a certificate without fear of being throttled, potentially with faster processors of the future. A long random string of unknown length means that even if an attacker manages to guess the content of the message, since the attacker does not know the length of the gravel, the attacker cannot definitively conclude that a guess matches the message locked in LMM. A different guess could match the same hash with a gravel of different length. Length of the gravel increases the difficulty of guessing, but not knowing the length makes any guess uncertain.
[0077] EL 412 places hM, ChMt and gravel in MM, locks it with the process outlined in
[0078]
[0083] The ChLMMS generated by the Attestor 414 fulfills all the four conditions that we set out in para [0037]: [0084] 1. With hashing, hLMM and hM capture the entire content of LMM and M respectively so that the slightest alteration of LMM or M will result in different hashes. [0085] 2. A long, variable-length gravel not only makes it difficult for an attacker to guess the message M from hLMM, but also make any guess uncertain and unprovable because the attacker does not know the length of the gravel. [0086] 3. The certified timestamp of M (ChMt) inside the unlocked MM and the certified timestamp of LMM (ChLMMs) together provide an irrefutable time interval for the lock time of the message. [0087] 4. Finally, the Attestor 414 does not need any access to the content of the message M, only a hash of M and a hash of locked message module LMM. An application or event client can lock a message by implementing the functions of Event Locker 412 internally and use Attestor 414 for generating the attestation without ever revealing M to Attestor 414.
EMBODIMENTS OF THIS INVENTION
[0088] So far, we have described the functional components of ELS with
Embodiment V
[0089] Embodiment V is simply the standalone, monolithic ELS depicted in
[0090] This embodiment is simple but requires trust between the application and ELM and is most useful when the purpose of event locking is to guard some information from an antagonist that's outside the system, or to establish credibility that the event had remained locked until a certain time. Even with trust between the application and ELS, the attestation is still a valuable tool for proving to a third party that a message remained locked and has not been altered since.
Embodiment W
[0091] Embodiment W, shown in
[0092] Embodiment W represents a common situation where the ELS is provided by a reputed organization and applications have no problem of trust with the ELS. However, the message M to be locked may involve customer data or other sensitive data that needs to remain private, and the locked data may need to stay locked for regulatory or other reasons (such as preserving it for a year-end audit) with an attestation proving that the data has not been tampered with. As an example, consider a scenario where a government agency is calling for sealed tenders from contractors. A reputable company such as Deloitte or IBM may provide event management services such as event registration, Timelocks, and the event's pre- and post-keys. A desktop application, operated locally by the contractors, may provide event locking such that a tender from a contractor is locked before it is shipped to the government agency, where all tenders become unlocked at the same time when the post-key of the event is released.
Embodiment X
[0093] Embodiment X, shown in
[0094] In this embodiment, it may be assumed that the operations of all the components are transparent, and all source code is open and/or documented. As in Embodiment W, the Event Locker is integrated into the application or event client, say, in the form of a library or SDK. Events are registered through the event kernel which is the only component that has access to the post-key before the event is signaled. Assuming that the event kernel can be isolated and trusted, the rest of the components cannot “cheat” without the collusion of at least one other component. For example, the Event Manager 406 cannot release the post-key without receiving an encryption key from the Timelock 408 (or the event-owner) and vice versa. With the event locker integrated into the application, the application does not have to reveal the message M that it locks—only its hash; and the Attestor 414 does not need M to generate the attestation.
[0095] This embodiment may be adequate for the sports betting scenario introduced earlier. Bookmakers can create event tokens for sports prompts (e.g., who will win the game between the Packers and the Lions on such-and-such date); betting customers or custodial applications that represent betting customers can invoke the event locker to lock the bets and provide certificates of their bets to the bookmaker. The bookmaker cannot open the bets until after the event occurs, nor can the bookmaker deny or a reject a bet that provides a valid certificate.
Embodiment Y
[0096] A weak link in Embodiment X is the Event Kernel EK 404 since it is one component that has access to the post-key before the event occurs. A compromised EK can compromise the entire event-locking process by revealing the post-key to an antagonist before the event is signaled or even providing random pre-keys that have no corresponding post-keys. This can happen either because the event kernel is controlled by an agent trying to undermine Embodiment Y or because EK 404 has been hacked by a potential saboteur.
[0097] To fight against these types of attacks, Embodiment Y provides multiple instances of each component for an application to choose from. This means that an antagonist cannot compromise the integrity of Embodiment Y by compromising just a few instances here and there. In the limit, an antagonist has to compromise a majority of instances to be sure that any event-locked message can be attacked or opened before its event has occurred.
[0098] Embodiment Y also provides one or more Composite Event Managers CEM 1402 that creates composite events by combining events from multiple instances of EM 406. To register an event for say, noon tomorrow, CEM 1402 registers the same event through two or more EK 404s that place their event keys with two or more EM 406s controlled by two or more Timelocks 408s. For simplicity, let us assume that a given composite event is constituted from two simple events, as depicted in
[0099] To event-encode a message (typically an encryption key) ek, CEM 1402 takes ek, splits it randomly into two parts p1 and p2, encodes p1 with em3-1667771100 and p2 with em1-1667771100, creating a two-part encrypted ek, as in eek={encode (em3-1667771100, p1), encode (em1-1667771100, p2)}={ep1, ep2} where ep1 and ep2 are encrypted versions of p1 and p2 respectively. This is shown in
[0100] To decode the two-part eek, CEM 1402 decodes the two parts separately with their respective simple event tokens and concatenates the result to recreate ek as in ek=concatenate (decode (em3-1667771100, ep1), decode (em1-1667771100, ep2)).
[0101] How is the event signaled? If the event is a timed event, the Timelocks controlling the simple events signal their respective events and CEM 1402 does not have any role to play. Alternatively, 1402 can act as an ombudsman, maintain its own Timelock and verify that the simple events are not signaled prematurely. If the event is a signaled event, then CEM 1402 registers the simple events by designating itself as their event owner and providing the real event owner a new signal key with which the real event owner can signal the occurrence of the event to CEM 1402; in response, 1402 signals the simple events with their respective signal keys.
[0102] There is no change in the attestation process. Given an LMM locked with a composite event, the Attestor 414 performs the same functions described under “Message Attestation” to obtain ChLMMs.
[0103] CEM 1402 of Embodiment Y provides a defense against a rogue Event Kernel or other compromised components in multiple ways: replication of components ensures that an antagonist cannot easily target a specific event easily since the antagonist cannot know in advance which specific instances may be involved in implementing an event. The Composite Event Manager CEM 1402 ensures that a compromised Event Manager 406 or Timelock 408 can be defended against by combining the forces of multiple event managers. A rogue Timelock 408 firing too soon or releasing the encryption key for its post-key prematurely is rendered impotent by other Timelocks that control other simple events that are part of the composite event. Unless multiple instances involved in a composite event (multiple event kernels, multiple event managers, multiple timelocks) collude, a message that is locked with a composite event cannot be broken prematurely. As the number of instances for each component in an embodiment increases linearly, the difficulty of compromising event-locking in Embodiment Y increases exponentially.
[0104] It is also worth addressing the problem of nuisance makers or saboteurs. Specifically, what if an event kernel is compromised in the sense that it dishes out pre-keys and post-keys that are random strings and not a complementary asymmetric keypair? This problem may be addressed in any embodiment by requiring the event kernel to respond to a test string. Specifically, on event registration, the event owner provides a random test string, say, “why the sea is boiling hot and whether pigs have wings,” which the event kernel is expected to encrypt with the post-key and return. Since the pre-key is public, the event owner can decrypt the post-key-encrypted test phrase with the pre-key to recover the test phrase; if this fails, then the event owner knows that the pre-key is not legitimate and can move on to a different event-kernel.
[0105] While Embodiment X may have been an adequate solution for many event-locking scenarios such as the sports betting problem, Embodiment Y and forthcoming Embodiment Z can provide an even more robust and credible solution.
Embodiment Z
[0106] Embodiment Z builds on Embodiment Y by providing a public logging facility where each component logs its operation.
[0107] Compare the above to log entries 1602 and 1604. In 1602, the Timelock signals the occurrence of an event and provides a signed encryption key to EM 406 and receives a signed acknowledgment from EM 406. Unlike log entries in
[0108] A properly constructed logging structure can act as an audit trail that serves multiple purposes. Going back to our sports betting example, the log can serve as a check that the components are performing as expected; it can be used by the bookmaker to establish credibility for oneself; it can be used to detect fraudulent behavior on either the bookmaker's part or a bettor's part; it can serve as a dispute resolution mechanism between bettors and a bookmaker should one arise; finally, an open and public log can act as a disincentive for any rogue behavior on the part of any component or its underlying human agents. Such a log may also be implemented using a blockchain where each log element is a block that is hash-linked with previous and subsequent blocks, making it difficult to refute or falsify a log entry.
Glossary
[0109]
TABLE-US-00001 Antagonist Any person or app with an incentive to unlock an event- locked message before its event occurs. More generally, an antagonist is one who has an incentive to undermine an event-locking system in some way. Application An application is any computer program that uses the event-locking system in any way, including event creation, signaling, logging, event-locking etc. Asymmetric Two cryptographic keys such that information encrypted keypair by one key can (only) be decrypted by the other. We assume RSA technique in our examples, but any pair of keys exhibiting this relationship can be used for event locking. dApp A distributed application, typically operating as an independent process with its own identity and with well-defined API interfaces; typically, an abstraction for a business process operated by some agent. Event Client Event client is an application as well, but the term is used more narrowly to refer to an application that uses ELS to lock messages to events. Event Token A unique token or string by which a simple or a composite event may be identified. Locked to an A message locked to or by an event if the message or event/event- its encryption key is encrypted by the pre-key of the token event and can only be unlocked by the post-key of the event
REFERENCES
[0110] 1. Rivest, Ronald L., Shamir, Adi, and Wagner, David A., “Time-lock Puzzles and time-release Crypto,” Technical Report, MIT, 1996. [0111] 2. Bellare, Mihir, and Goldwasser, Shafi, “Verifiable partial key escrow,” Proc. of the 4.sup.th Conference on Computers and Communications Security, 1997. [0112] 3. Mahmoody, M., Moran, T., Vadhan, S. (2011). Time-Lock Puzzles in the Random Oracle Model. In: Rogaway, P. (eds) Advances in Cryptology—CRYPTO 2011. CRYPTO 2011. Lecture Notes in Computer Science, vol 6841. Springer, Berlin, Heidelberg, 2011. [0113] 4. Liu, Jia, Jager, Tibor, Kakvi, Saqib A., and Warinschi Bogdan, “How to build time-lock encryption,” vol. 86, issue 11, ACM Digital Library, 2018. [0114] 5. Smith, Wesley, “Towards Timelock Encryption,” Technical Report, University of Ediburgh School of Informatics, 2019. [0115] 6. Jaques, S., Montgomery, H., Rosie, R., Roy, A. (2021). Time-Release Cryptography from Minimal Circuit Assumptions. In: Adhikari, A., Küsters, R., Preneel, B. (eds) Progress in Cryptology—INDOCRYPT 2021. INDOCRYPT 2021. Lecture Notes in Computer Science, vol 13143. Springer, 2021. [0116] 7. Fletcher, John, “Methods and systems for blockchain-implemented event-lock encryption,” US Patent U.S. Ser. No. 11/159,313B2, 2021.