<oembed><type>rich</type><version>1.0</version><title>ZmnSCPxj [ARCHIVE] wrote</title><author_name>ZmnSCPxj [ARCHIVE] (npub1g5…3ms3l)</author_name><author_url>https://yabu.me/npub1g5zswf6y48f7fy90jf3tlcuwdmjn8znhzaa4vkmtxaeskca8hpss23ms3l</author_url><provider_name>njump</provider_name><provider_url>https://yabu.me</provider_url><html>📅 Original date posted:2021-01-14&#xA;📝 Original message:Good Morning Kevin,&#xA;&#xA;&gt;     Inputs (mainly for pre-signed Tx):&#xA;&gt;     ==================================&#xA;&gt;     Problem: Poisoned inputs are a major risk for HW as they don&#39;t know the UTXO set. While this can be exploited for fee&#xA;&gt;     attacks, it is a bigger threat to pre-signed transactions protocols. Once any input of a (pre-signed)transaction is&#xA;&gt;     spent, this transaction isn&#39;t valid anymore. Most pre-signed transactions protocols are used today as a form of defense&#xA;&gt;     mechanism, spending any input would mean incapacitating the entire defense mechanism.&#xA;&gt;     Proposed improvement: for protocols that requires it, keeping track of inputs already signed once would be extremely&#xA;&gt;     helpful. Going further, most of these protocols require to follow a specific signing order (typically the &#34;clawback&#34;&#xA;&gt;     first, then the regular spend path) so adding a way to check that a &#34;clawback&#34; has been signed first, with the same&#xA;&gt;     input, would be very helpful. All of this on the dev&#xA;&gt;     ice itself.&#xA;&#xA;This requires the hardware device to maintain some state in order to remember that the clawback has been signed before.&#xA;My post on HW devices for Lightning (which you already linked) contains a suggestion to use a Merklized persistent data structure to maintain state for the hardware device, with a majority of the state storage on the trust-minimized software.&#xA;&#xA;The primary issue here is that we have a base assumption that the hardware wallet cannot be sophisticated enough to have Internet access; &#34;do not enter seed words on an online device&#34;, as the typical advice goes.&#xA;Most clawback transactions are time-based, and *must* be broadcast at a particular blockheight.&#xA;Yet if the hardware wallet cannot be an online device, then it cannot know the current blockheight is now at a time when the clawback transaction *must* be broadcast.&#xA;&#xA;Thus, the hardware must always tr\*st the software to actually perform the clawback in that case.&#xA;In protocols where clawbacks are at all necessary, often the counterparty can have an advantage / can steal if the clawback is not broadcast in a timely manner, thus the software that is corrupted by the counterparty can be corrupted to simply not broadcast the clawback.&#xA;&#xA;If the software on an online device cannot be tr\*sted (which is the model that hardware wallets use) then the software cannot be tr\*sted to provide correct information on the current blockheight to the offline hardware device, and cannot be tr\*sted to use clawback transactions.&#xA;&#xA;It seems to me that we cannot use the same model of &#34;do not enter seed words on an online device&#34; for any protocol with a time-based clawback component (and honestly there seems to be no clawback mechanism that is not time-based).&#xA;&#xA;Ultimately, I consider the blockchain as a proof of time passing, and as the blockchain is an online structure, we can only get at that proof by going online and actively searching for the block tip.&#xA;Yet going online increases our attack surface.&#xA;&#xA;&#xA;Regards,&#xA;ZmnSCPxj</html></oembed>