2022年11月に暗号資産取引所のFTXが破綻したことをきっかけに、中央集権型取引所への信頼がなくなり、ハードウェアウォレットを使って手元で安全に暗号資産を保管しようという動きが活発になっています。一方で、正しい扱いができないゆえにハードウェアウォレットから資産が不正流出する事件が散見されます。そこで、本記事ではハードウェアウォレットの仕組みをもとに、どのように扱えば良いのかを解説します。
ハードウォレットはなぜ安全と言われるのか?
ハードウェアウォレットとは、暗号資産の出金で必要な秘密鍵が最も流出しにくいウォレットの種類のことを指します。
暗号資産の送金は、送金のトランザクションに対して秘密鍵で署名することによって実行されます。イメージとして、秘密鍵は銀行口座における銀行印のような役割に相当します。秘密鍵が漏れてしまうと、誰でもウォレットにアクセスできてしまい、不正出金につながってしまいます。同様に、シードフレーズ(リカバリーフレーズやニーモニックフレーズとも呼ばれる)が漏れても不正出金につながってしまいます。シードフレーズをもとに秘密鍵が生成されるからです。
ハードウェアウォレットでは、特定のデバイスの中に秘密鍵が格納されています。デバイスはオンラインから切り離されているため、外部からハードウェアウォレットに侵入して秘密鍵を取得することはできません。また、ハードウェアウォレットの秘密鍵を格納する部分には、セキュアチップが用いられているのが一般的であるため、デバイスの物理的なハッキングもできません。このように、ハードウェアウォレットが安全と言われるゆえんは、秘密鍵がオンラインから切り離されており、かつ秘密鍵の保管が厳重であるというところにあります。
ハードウェアウォレットでも資産が漏れるケース
ハードウェアウォレットから秘密鍵を取得するのは事実上不可能であるため、ウォレットを正しく扱えていれば暗号資産が不正出金されてしまうことはありません。しかし、これはハードウェアそのものにだけ言えた話であり、以下のようなケースにより、ハードウェアウォレットでも不正出金されることがあります。
シードフレーズが管理不備により流出
このパターンでは、流出したシードフレーズにより別のウォレットに自分の暗号資産が復元され、不正出金されてしまうというものです。
ハードウェアウォレットの秘密鍵は、ソフトウェアウォレットと同様にシードフレーズから生成されます。ハードウェアウォレットを利用開始すると、セットアップ時に必ずシードフレーズを書き取る作業が発生します。この作業は、ハードウェアウォレットが壊れたりなくしたりした場合に、シードフレーズを使って別のウォレットに暗号資産を復元するためのものになります。このシードフレーズは多くのソフトウェアウォレットにも適用することができます。そのため、シードフレーズが流出してしまうと、第三者によって自分の暗号資産が復元されてしまい、自由に送金できるようになります。
シードフレーズが流出した場合には、該当するウォレットを破棄するしかありません。まだ暗号資産が不正送金されていない場合は、該当するウォレットから直ちに安全な別のウォレットに暗号資産を移動させます。
シードフレーズを別のウォレットと共有している
シードフレーズは、別のウォレットに適用して暗号資産を復元することができます。例えば、Ledger Nano Xで取得したシードフレーズをSafePal S1に適用すると、Ledger Nano Xと同じアドレス・同じ内容の資産がSafePal S1側にも復元されます。シードフレーズをハードウェアウォレット間のみで使いまわしている限りは、暗号資産を不正送金されることはありません。
しかし、ハードウェアウォレットのシードフレーズはソフトウェアウォレットにも適用することができます。そのため、ハードウェアウォレットとソフトウェアウォレットのシードフレーズを同一にしている場合、ソフトウェアウォレット側が原因で暗号資産が不正出金されることがあります。
もし、ハードウェアウォレットのシードフレーズをソフトウェアウォレットと共有してしまった場合は、ハードウェアウォレット側をリセットして新しいシードフレーズで再セットアップします。
不正なDAppsをApproveしている
一部のハードウェアウォレットは、MetaMaskやWalletConnectとの連携を通じて、DAppsと連携できることができるようになっています。そのため、不正なDAppsのスマートコントラクトをApproveすると、暗号資産が不正出金されることがあります。
もし、信頼性が低そうなDAppsを利用してしまった場合は、RevokeをすることでApproveした状態を取り消すことができます。RevokeするにはREVOKEのようなWebページを利用すると良いでしょう。Revokeをするためにはガスを消費するので、対象チェーンのネイティブ暗号資産(ETHのような)をウォレットに入れておく必要があります。