nanoWalletのウォレットとアカウントの関係を理解する

多くの人が公式アプリのnanoWalletを使って、NEMのアカウントを作っていると思います。その際に、アカウントの作成とウォレットの作成が同時に行われるため、以下のことを理解していない人が多いのではないでしょうか。

  • アカウントの作成とウォレットの作成は別のことである
  • アカウントにはウォレット名やパスワードはひもづいていない
  • 秘密鍵だけあればアカウントにアクセスできXEMを出金できる

またウォレットファイルと秘密鍵の違いがよくわからない人も多いのではないでしょうか?しかし、これらのことをきちんと理解しておくことは、アカウントを保護する上で重要な事だと思います。本記事ではそのあたりの事を書きまとめておきます。

秘密鍵さえあればアカウントにアクセスできる

まず理解するべきことは、NEMのアカウントとnanoWallet上のウォレットは別のものであるということです。アカウントはnanoWalletを使わなくてもNEM APIで作ることができます。nanoWalletもNEM APIを使ってアカウントを作成しているに過ぎません。

アカウントを作成すると秘密鍵(プライベートキー)が作られます。この秘密鍵さえ知っていれば、いつでもアカウントにアクセスでき、XEMを出金することができます。nanoWalletのパスワードは必要ありません。

誤解されがちですがNEMのアカウントにパスワードはありません。nanoWalletで入力するパスワードはあくまでnanoWalletで作ったウォレットのパスワードです。

nanoWalletのウォレットとは

ウォレットファイルとは、アカウントの秘密鍵を暗号化しパスワードをかけたものです。そのウォレットファイルをnanoWalletで取り込んだものをウォレットと呼んでいます。

nanoWalletで新しくアカウントを作成すると、その流れでウォレットも作成されるので、両者は同じことのように勘違いしがちです。しかし、実際にはそれらは別のことです。ウォレットを作成する方法はいくつかあり、それぞれの流れを知ると理解が進むと思います。

nanoWalletでアカウントを作成する時の流れ

  • ウォレット名とパスワードの入力をユーザーに要求する
  • NEMにアカウントを作成する。この際に秘密鍵も作られる
  • 秘密鍵を暗号化し、ユーザーが入力したパスワードをかけたウォレットファイルを作る
  • ウォレットファイルからウォレットを作る

nanoWalletでウォレットにログインする際にパスワードを入力しますが、その際にnanoWalletはウォレットファイルを復号して秘密鍵を取り出します。それによりnanoWalletはアカウントにアクセスできるようになり、出金など秘密鍵を知る者のみができる処理ができるようになるわけです。

nanoWalletでウォレットファイルをインポートする時の流れ

  • ユーザーがインポートするウォレットファイルを選択
  • ウォレットファイルのパスワード入力をユーザーに要求する
  • パスワードが正しいとウォレット名と秘密鍵が取り出される
  • ウォレットが復元される

nanoWalletで秘密鍵からウォレットを作成する時の流れ

  • 秘密鍵と新しいウォレットの名前とパスワードの入力をユーザーに要求する
  • 秘密鍵とウォレット名にパスワードをかけて暗号化したウォレットファイルを作る
  • ウォレットファイルからウォレットを作る

ウォレットファイルを理解する

秘密鍵とウォレットファイルの内容を比べると全く違うものになっています。またウォレットファイルの方が長い文字列になっています。ウォレットファイルは秘密鍵をパスワードをかけて暗号化しているからです。

つまりウォレットファイルだけ盗まれてもパスワードがわからなければ、秘密鍵の内容はわかりません(高度な技術がない限り)。よって、ウォレットファイルだけではアカウントにアクセスできません。nanoWalletでウォレットファイルをインポートする際にもパスワードが必要になります。

ウォレットファイルにはウォレット名も暗号化されて含まれています。よってウォレットファイルをインポートするとウォレット名も復元できます。ただし、ウォレット名はあくまでnanoWallet上でアカウントを識別するためのものであり、アカウント自身につけられた名前ではありません。

現状、NEMのアカウントにアカウント名というものはありません。(APIレベルではlabelという項目がありますが、今は常にnullが入るようです)

秘密鍵の重要性を理解する

秘密鍵さえ知っていれば、nanoWalletがなくともアカウントから出金することができます。出金などの操作はNEMのAPIを使います。nanoWalletも内部でAPIを使って出金しています。NEMのAPIを使って出金する際に必要なものは秘密鍵であって、ウォレットファイルやそのパスワードは必要ありません。

これが秘密鍵は絶対に盗まれてはいけないと言われる理由です。

nanoWalletだけ使っていると、意外とこのことが理解しづらいと思います。ログインする際にパスワードが必要なのは、ウォレットファイルから暗号化された秘密鍵を取り出すためで、秘密鍵そのものを知られたしまったらパスワードの意味が無くなります。

ウェブサービスでアカウントを作る際には、たいていアカウント名(ユーザー名)とパスワードを入力します。つまりアカウントにパスワードが設定されます。しかしNEMのアカウントにはパスワードはありません。強いて言うなら秘密鍵がパスワードのようなものです。ただし秘密鍵は、ウェブサービスのユーザーのパスワードのように後で変更することができません。

秘密鍵が他人に知られてしまうと、そのアカウントを再び自分だけのものにすることはできません。知った相手もアカウントを自分だけのものにはできないですが、アカウントにあるXEMを全額別のアカウントへ出金することはできます。

銀行の通帳が盗まれた場合、銀行に相談すれば不正な出金などの損害が補償されたり、暗証番号の変更もできますから、再びその通帳を自分のものとして取り戻すことができます。しかしNEMのアカウントは中央集権的に管理されていないため、銀行通帳のように誰も損失の補償は行いません。またアカウントの所有権を自分だけのものとして取り戻すこともできません。

第三者に秘密鍵を知られたアカウントを継続して使うことは困難になるでしょう。つまりほとんどの場合は、そのアカウントを破棄することになると思います。だからこそ秘密鍵の管理はウォレットファイルよりもさらに重要になります。ウォレットファイルとパスワードの両方が知られてしまった時も、秘密鍵を知られたのと同じことになります。

ウォレットを削除した後、アカウントに再びアクセスするには

nanoWalletからウォレットを削除することができます。ウォレットを削除してもアカウントは削除されません。NEM上にアカウントは残り続けます。

ウォレットを削除した後も、以下の場合はnanoWalletでアカウントに再びアクセスできます。

  • ウォレットファイルとそのパスワードを知っている
    • ウォレットのインポートでウォレットを復元し、再びアカウントにアクセスできる
  • 秘密鍵を知っている
    • 秘密鍵からウォレットを新たに作り直し、再びアカウントにアクセスできる

これは別のPCのnanoWalletでアカウントにアクセスする時も同様です。上記の方法でそのPCのnanoWalletでウォレットを作ればよいのです。

逆に以下の様な場合はアカウントにアクセスできなくなります。

  • ウォレットファイルも秘密鍵も無くしてしまった
  • ウォレットファイルはあるけどパスワードがわからない

まとめ

  • ウォレットファイルはアカウントの秘密鍵をパスワードをかけて暗号化したものである
  • ウォレットファイルとそのパスワードを知っていれば、ウォレットを復元しnanoWalletでアカウントにアクセスできる
  • 秘密鍵を知っていれば、nanoWalletでウォレットを作りアカウントにアクセスできる
  • 秘密鍵を知っていれば、nanoWalletでウォレットを作らなくてもNEM APIでアカウントにアクセスできる

NEMのアカウントとnanoWalletのウォレットの違いの理解に貢献できれば幸いです。