Template:Committed identity

コミット済アイデンティティ: {{{1}}} はこの利用者本人のアイデンティティのSHA-512コミットメントです。
テンプレートの解説[表示] [編集] [履歴] [キャッシュを破棄]

これは、このテンプレートを追加した日にあなたのアカウントを使用していた人があなた本人であったことを、後から証明するためのテンプレートです。

「ハッシュ」と呼ばれるコードをあなたの利用者ページに追加しておくことによって、万が一あなたのアカウントが他の人物に不正に利用された場合でも、あなたがあなたのアカウントの本当の持ち主であったことを証明することができます。

このテンプレートについて[編集]

このテンプレートは、あなたのアカウントが万が一にもパスワードを盗まれるなどして、他の人物に不正に使用されてしまうといった事態を防止するためのものです。アカウントが侵害された場合、そのアカウントは他の人物の支配下にある可能性があるため、そのアカウントを通じて本当の使用者と連絡をとることは困難です。例えばもしあなたが現実世界での身元を公開していた場合であったなら、あなたのアカウントが侵害された場合でも、その身元をあなたと連絡を取るための手段として使用することができるでしょう。しかしながら多くの利用者は、プライバシーなどの観点から現実世界での個人情報を開示しておらず、或いは公開しているとしても、身元を特定するに足るまでの個人情報を公開している場合は稀です。

このテンプレートによる証明方法は、特定がより難しいパスワードを使用したり、アカウントのメールアドレスを登録したりすることの代替品ではありません。上記のような心掛けや、他者がアクセスできる端末を使用している際にログアウトすることを忘れないなど、アカウントの侵害を防ぐためにできることはもちろん全て実行すべきです。PGP公開鍵を持っている場合には、それを投稿しておくのも良いでしょう。しかしこれらの注意を最大限払っていた場合ですら、あなたのアカウントはトロイの木馬総当たり攻撃などを介して侵害されてしまう可能性があります。このテンプレートは、そうした緊急の事態における最後の手段として作成されたものです。

仕組み[編集]

このテンプレートによる身分証明は、暗号ハッシュを利用した仕組みとなっています。あなただけが知っている秘密の文字列(以下「鍵」と呼びます)を決めておき、一方通行の暗号ハッシュ関数に当てはめて別の文字列(=ハッシュ)に置き換え、その結果をどこかで公開するというものです。特定のハッシュに対応する秘密の文字列を突き止めるのは実質的に不可能であり、従って正しい秘密の文字列を提示することができるのは、その文字列を決定した人物だけということになります。

使用例[編集]

{{Committed identity|hash|hash function used|background=CSS color|border=CSS color|article=grammatical article for the hash function}}

この構文を、以下の要領に沿って書き換えた上であなたの利用者ページに貼り付けて下さい。

  • hashの部分を、あなたの「鍵」から生成されたハッシュに置き換えて下さい。何も指定が無い場合、デフォルトの値は「1」になります。
  • hash function usedのパラメータを、あなたがハッシュの生成に使用したハッシュ関数に置き換えて下さい。何も指定が無い場合、デフォルトの関数はSHA-512となります(この関数をそのまま使用することを強くお勧めします)。
  • backgroundのパラメータは背景色を、borderのパラメータは外枠の色を、それぞれ指定することができます。何も指定が無い場合、デフォルトのカラーはそれぞれ共に#E0E8FF(light blue)です。詳細はウェブカラーも参照して下さい。
  • articleのパラメータは、何も指定が無い場合は「a」、他の値の場合は「an」となります。

例えばハッシュは「ef7c4c55a176bd20ed558aaefde21c4803080195」に、関数はSHA-1を使用、背景色はライトオレンジで枠線は黒といった場合、以下のように入力して下さい。

{{Committed identity|ef7c4c55a176bd20ed558aaefde21c4803080195|SHA-1|background=#FC9|border=#000}}

表示結果は以下のようになります。

コミット済アイデンティティ: ef7c4c55a176bd20ed558aaefde21c4803080195 はこの利用者本人のアイデンティティのSHA-1コミットメントです。

良い鍵を選ぶ[編集]

  1. 誰かがあなたの鍵を推測することは容易ではありません。しかしながら、あなたの鍵が簡単に推測されるようなものであったとした場合、その文字列を知っているという事実は、あなたが鍵を設定した本人であるという事実に説得力が無くなってしまう可能性があります。そのため鍵は、できるだけ複雑なものを選択して下さい。もっとも望ましいものはランダムな文字列、例えば「fFfwq0DuDmMXj8hYTM3NTKeDhk」などです。
  2. あなたの鍵は、文字列が明らかになっていれば、あなたはそのアイデンティティと一致することを明白に証明できる、あなたの身元を十分に特定できる文字列を指定するべきです。例えば文字列の中に、あなたが使用する電話番号やメールアドレスを含めることなどです。
  3. ただし、これら個人情報に繋がる文字列のみの鍵を使用することは避けてください。たとえば、あなたの電話番号だけを指定した文字列を選択することは、その番号が変更される可能性があるため、都合が悪い場合があります。
  4. 鍵を変更する場合は、古い鍵を全て保存しておいてください。あなたの身元を認証したい場合は、過去の鍵全てを明らかにすることをお勧めします。これは、あなたがこのテンプレートを最初に使用した瞬間から、あなたのアカウントを使用したのと同じ人物であることを証明します。
  5. あまり短い鍵の使用は避けるべきです。短すぎる鍵はパスワードと同様に、攻撃者が無差別にあなたの秘密の文字列を見つけるまで短い文字列を試すこと(総当たり攻撃)で発見されてしまう可能性があります。長めの鍵であれば、この総当たり攻撃は実用的なものではありません。あなたの文字列が15文字の長さであれば、その長さの文字列は約1027通りにもなります。
  6. 鍵には電子メールアドレス、名前、または電話番号の他に、推測しにくい要素を含める必要があります。例えば「[email protected]」は辞書攻撃と電子メールアドレス検索の両方に対して貧弱であり、攻撃者が公開されているハッシュ化されている全てのIDのうちこれらの名前のみをチェックすることができてしまいます。

ハッシュを取得する[編集]

鍵として記入した文字列は後で必要となるときに備えて、「一字一句そのまま」保管しておきます。自分自身が記憶しやすく、なお攻撃者には想像したり探したりしにくい文字列であることが肝心で - セキュリティ上、他者がその秘密の文字列を知ってしまうと意味が無いし、このテンプレートも役に立たなくなります。ユーザー名は公開されているため鍵として用いても無意味です。またパスワードと同じ文字列にしてもやはり不適切で、アカウントを侵害した攻撃者がすでに知っているかもしれないからです。

Unix系のオペレーティングシステムでは、md5sumsha1sumsha224sumsha256sumsha384sumsha512sumといったプログラムがGNU Core Utilitiesにて提供されています。WindowsではPowerShellがインストールされていれば下記のコマンドでハッシュを生成することが出来ます。鍵とする文字列を置き換えた上で実行してください。

[bitconverter]::tostring((new-object security.cryptography.sha512managed).computehash([text.encoding]::utf8.getbytes("鍵とする文字列をここに入力"))).replace("-", "")

近年の研究でSHA-1への攻撃手法が発見され、将来的な利用に十分な安全性を有していないと指摘されています。このテンプレートではハッシュ関数の指定がない場合デフォルトでSHA-512が使用されます。セキュリティの観点から、ハッシュの生成にはローカルで実行されるプログラムやクライアントサイド JavaScript を用いてください。例として jsSHAHashCalc 2.02 などがあります。

使用するプログラムが正しくハッシュを生成できたかどうかを確かめるには、「My name is Joe Schmoe, and I can be contacted at: [email protected]」というフレーズ(鉤括弧は含めない)の SHA-512 ハッシュを生成し、結果が以下の文字列と等しいかどうか確かめてください:

b7a84efbbd843545666957384e874c894fdc17f48ced53abd231c2e4d08e45ad10287b1225432e3ed9794c12994ff1e82aecf66a2ded61ad4baf6d8b9c81dab8

アカウントを不正利用された場合[編集]

アカウント侵害を受けた場合は、コミット済みの自己証明を他者に示してアカウントを最初に管理していた人と同一人物であると証明するには、最初にボックスに入力した「正確な秘密文字列」を信頼できるユーザーに託します。その人はその文字列を使って適切なハッシュを算出し、同じ結果が出るとあなたが本人であると証明されます。

自分の身元が証明できた段階でまず新しいアカウントを設定するか、元のアカウントの制御を取り戻すかして、それから新規のハッシュを作成しましょう。秘密の文字列は、おそらく誰か(秘密の文字列を伝えた方法によっては複数名)の手に渡った・この先に渡るかもしれないとも推測できるからです。

弱点[編集]

この手法はハッシュの背後にある秘密の文字列を明示して本人証明を確立するわけで、本質的に攻撃を防ぐものではありません。正規のユーザーの手間はほとんどかからず、攻撃者の労力は(秘密の文字列を選択し処理が適切なら)増幅する点に価値があるものの、誰もが独自の秘密文字列を考えついてハッシュし本人証明を主張できるという点で、攻撃は可能です。

攻撃者がアカウントにアクセスできる場合、元のハッシュを自分のハッシュで上書きする可能性があります。その処理でアカウントの本来の所有者を攻撃者扱いし、自分(攻撃者)の身元を主張して独自のハッシュを生成したのは自分だと主張できるとも言えます。

アカウントにアクセスできない攻撃者の場合は、現在のアカウントの所有者こそ、自分(攻撃者)の ID を盗んだと主張する可能性があります。攻撃者の手口として、アカウントを所有していたのにハッシュを公開しなかった、あるいは、アカウントを登録していないのに他人が自分になりすましていると主張するかもしれません。

この弱点はコミットのスキームが無価値だと示唆するものではありません。コミットの段階(フェーズ)をすべての関係者(実際の人物と潜在的な攻撃者全員)に適用するわけではないからです。

関連項目[編集]