セキュリティーの秘訣は秘密にあり

補足説明
この記事は原題『The Secret to Security — Is Secrecy』の日本語訳です。必要だと思われる部分には言葉や構成を補っています。
トップ画像は『The Secret to Security — Is Secrecy』より引用しております。

投稿者:Koen Maris
投稿日:2018年01月23日

はじめに

 今の世の中では、現実のものであれバーチャルのものであれ、自分の所有物の管理する上でセキュリティーは必要不可欠です。サイバー・セキュリテーはあなたの安全を保ち、あなたのデータ・インテグリティ(data integrity, 訳注:データのライフサイクルを通じて完全で一貫性があること)を守り、望まないデータの開示を避けるために必須のものです。IOTAが提供するデータ・インテグリティと秘密保持に関するサイバー・セキュリティーは堅牢で、将来の量子攻撃に対する耐性さえあります。そういった技術的なセキュリティーの機能は公開鍵および秘密鍵を利用した暗号化に対して大きな利点となっているのに対して、その鍵自体が依拠しているのは、もっと「人間的な」セキュリティー対策であって、このタイプのセキュリティーこそが、最も頻繁に弱点となります。

 2018年1月、大勢の不幸なユーザーがIOTAコミュニティーへの攻撃の犠牲者となりました。そのとき攻撃者たちは、その「人間的な要素」が弱点であると正確に認識していて、正当なIOTAのシード・ジェネレーターのように見える精巧に制作されたフィッシングサイトを使って、長きに渡って、多数のシードを集めることができました。彼らはIOTAコミュニティーの信頼につけ込んで、慎重に時間をかけてフィッシングサイトの最適化を行い、検索エンジンの結果で上位表示されるようになったので、その詐欺サイトは、何も知らないコミュニティー・メンバーたちから、一段と信用されるようになりました。

 不幸なことに、そのようなIOTAに対する、あるいはもっと広くデジタル台帳技術に対する詐欺は、それが最初でもないし、最後となることもないでしょう。それでも、あなた自身の安全を維持するために、あなたができることがいくつかありますが、その最たるものが、あなたの秘密を秘密にしておく、ということです。

 あるIOTAアドレスの所有者が誰かを証明する唯一の方法は、そのアドレスのIOTAを使うことです。あるアドレスのIOTAを使うために必要なことは、そのアドレスの元になっているシードを知ることです。鍵となる覚えておくべき事実は:

  • IOTAトークンの消費は、所有権の証明である。(これは決して法的意味ではなく、数学的な意味での証明です。デジタル台帳にあるトークンは、使うことによって自分に管理権があることを数学的に証明できます。)
  • もしシードが何らかの形で洩れたら、そのシードのウォレットの中のトークンはなくなったも同然だ。

 できるだけ簡単な表現をすると:シードをあたかも自分の金庫の唯一の鍵のように取り扱うこと。その鍵を持っていれば、誰でもその金庫の中身に直接アクセスできます。よく知られた英語のイディオムに「所持は法律の9割(Possession is 9/10ths of the law、訳注:現実に所有している人が、所有権の9割を握っている)」という言葉があります。IOTAでは(実際はほとんどのDLT界隈でも)「所持は法律そのものだ」です。(この法律という言葉は、ここでも隠喩として用いられています。シードの所持とは、数学的にそのシードにある資金の消費が数学的に可能であるという意味で、「数学的な法律」ということです。)

シードを安全に生成する

 何よりもまず、検索結果のリスト上位に表示されるからといって、ウェブサイトでシードを生成してはいけません。さらに良いのは、決してオンラインのシード・ジェネレーターを使わないこと、以上です。

 シードの選択は、理論的には単純な作業です。AからZの大文字の英文字と数字の9からランダムに選んで81文字を紙の上に書きます。それだけで終わりです!

 不幸なことに、人間は一般的に物事をランダムに選ぶことが苦手なので、シードのランダム性を高めるために、いくつかのツールを活用するといいでしょう。もしLinuxかMacOSを使っている人は、ラッキーです。LinuxかMacOS上で安全にしっかりとシードを生成するのは、たった一個のターミナルコマンドで出来ます。もしターミナルコマンドに慣れていなくても、心配しないでください。シードを生成するためには、コマンドを一個コピペすればいいだけです。

Linux:
cat /dev/urandom |tr -dc A-Z9|head -c${1:-81}
Mac OSX:
cat /dev/urandom |LC_ALL=C tr -dc 'A-Z9' | fold -w 81 | head -n 1

 IOTAのシードはあなたの金庫の鍵なので、いつも必ずその鍵の安全を確認する特別な手順を踏むべきことを覚えておいてください。シードをどこか安全な場所(例えばKeePassのように暗号化されたパスワードのあるデータベースなど)にコピーしてください。コピーしたら、ランダムに少なくとも10文字を変更して(注意:使えるのはA〜Zの大文字と数字の9だけ)、その変更を保存します。シードを紙に書き出す場合は、書きながら10文字を変更します。

 もしWindows上だったら、直接KeePassが使えます。シンボルA〜Zと数字の9をKeePassのパスワード生成の設定で「生成に使用する文字セット」にて、大文字(A,B,C, …)と数字(0,1,2, …)を選択して、「生成するパスワードの文字数」を81にします。シードを保存して使用する前に、必ず少なくとも10文字は変更してください。

 LinuxやMacOS上でもKeePassXを使えますが、2018年1月の時点では、文字の選択をA〜Zに限定する方法がありません。その代わりに、A〜Zを使用してから、少なくともランダムに10文字を変更して、さらにランダムにいくつかの文字を数字の9に変更します。

 このようにいささか普通より複雑なルーチン作業を行う目的は、もう明らかでしょう。このような手順を踏むことで、100%か、もしくは厳密には100%に近いくらい以下のことが確実になります。

  • あなたのシードは十分にランダムである。
  • あなたのシードにアクセスしたことがある唯一の人は、あなたである。

 今後からは、あなたのシードの安全を維持できるかどうかは、あなたただ一人次第です。

シードを安全な方法で保管する

 シードをプリントアウトして安全な場所に保管して置けば、オフラインで簡単に保管できます。物理的な金庫や貸金庫なら理想的です。つまり、決してプリントアウトした紙を台所の壁やモニターに貼り付けた付箋にピン留めしたりしてはいけない、ということです。もし机の下の書類整理棚の中に入れる場合は、少なくともその書類整理棚に鍵が掛けられることを確認してください。シードを安全に保管するために、「良いこと」こと「良くないこと」は:

  • 良いこと」:シードを紙に書くかプリントアウトして、物理的に安全な所に保存すること。金庫は権限のないアクセスを防止したり、遅らせることに役に立つかもしれないが、必ずしも紛失から守ってくれるわけではない。自分の金庫の火事や洪水や損害などに対する評価を必ず理解しておくべき。
  • 良いこと」:シードをコピーして銀行の金庫室か貸金庫に保管すること。
  • 良いこと」:パスワード・マネージャーやパスフレーズと/やキーファイルに守られているバーチャル地下金庫を使用すること。そのパスワードのデータベースのファイルそのものが暗号化されていれば、セキュリティーは劇的に向上します。強固なパスワードを選ぶためのコツは下記参照。
  • 良いこと」:暗号化されたディスクやNASを使用してパスワードのデータベースを保存すること。暗号化を幾重にも重ねれば、それだけ他人に突破される可能性が減ります。
  • 良くないこと」:共有のコンピューターでシードをプリントアウトすること。
  • 良くないこと」:パスワードのデータベースをUSBメモリーや外付けハードディスクなどの保護されていない装置に無造作に放置すること。
  • 良くないこと」:暗号化されたバスワードのデータベースのファイルを共有のクラウドに保存すること。
  • 良くないこと」:パスワードのデータベースのファイルを見知らぬ人や信用していない人と共有すること。

追加:安全なパスフレーズを作るのは、大変な作業に思えるかもしれませんが、以下の簡単なコツが分かれば、大丈夫なはずです。

  • 歌や文学や映画や演劇のセリフを使う。
  • そのセリフに何かランダムに付け加える:特殊文字でもいいし、文字を数字に入れ替えてもいいでしょう。
  • 小文字と大文字と数字と特殊文字を混ぜ合わせる。
  • 例えば「特殊文字の前は大文字」のようなパターンを用いて変更を記憶しやすくする。
  • 記憶できないようにしないこと。さもなければ、元も子も無くなってしまいます。パスフレーズを忘れたら、あなたのシードは永遠に失われます!

以下は例:

「話せるようになるには3年かかるが、聞いて黙ることができるようになるには一生かかる!」

だったら:

Ittakes3yearstolearntoSPEAK,Alifetimetolistenandshut-UP!

としてもいいでしょう。

覚えておくべきこと

 デジタル台帳技術のユニークな点は、銀行などの中間業者を介さずに自分の資産を管理できることです。これは理論上は素晴らしいように聞こえます。自己資産は完全にあなたの管理下にある! しかし現実的には、自己資産のセキュリティーの全責任があなたにある、ということなのです。もしシードやパスワードやピンコードなどの秘密にすべき情報を公開してしまったら、あなたが取ったすべての物理的及び電子的なセキュリティー対策は無駄になります。

 さらに言えば、あなたの責任は一番最初から始まります。シードを保管する最善の方法に従っても、シードを生成した時点で盗まれていたら、何の役にも立ちません。あなたのパスワードのデータベース、パスフレーズ、銀行の金庫室といった、あらゆるセキュリティー対策は、準備する前からすでに無用です。もし安全なやり方でシードを生成する方法について少しでも不安があったら、ストップしてください。IOTAのDiscordに参加して、#helpチャンネルでどう進めればいいか、聞いてください。

IOTA財団も他の誰も、盗まれたトークンを元に戻すことはできません。

自己責任にてお願いします。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です