Skip to content

Instantly share code, notes, and snippets.

@kgtkr
Last active January 3, 2020 12:40
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kgtkr/3a3d07c3c9fe1c6f562e5554270e8ce9 to your computer and use it in GitHub Desktop.
Save kgtkr/3a3d07c3c9fe1c6f562e5554270e8ce9 to your computer and use it in GitHub Desktop.
Twitterアカウントのなりすまし防止

README

所有しているアカウントの種類となりすまし

私(kgtkr)は以下の3種類のアカウントを所有しています。

  1. 私のアカウントであることを公言しているアカウント
  2. 私のアカウントであることを公言はしていないが通した人には私であることが分かるようにしている非公開アカウント
  3. 原則誰にも私のアカウントであることを分からないようにしているアカウント

1に該当するアカウントはTwitterのリストkgtkr/lists/tkrに全て追加しています。 3はそもそも私であることを誰にも分からないようにしているのでなりすましという概念がありませんし、もし私であることを伝えたければ個人的に連絡すれば問題ありません。 しかし2は適当な非公開アカウントを作成して固定ツイに「@kgtkr の裏垢です。」などと書くだけで簡単になりすますことが出来ますし、騙される人は一定数発生するでしょう。そのためなりすましの防止が必要です。

これからは1に該当せず(=上記のリストに追加されていない)、以下の方法で証明していないのに私であることを主張しているTwitterアカウントは全てなりすましと考えて下さい。

証明と検証

固定ツイートに以下のようなツイートをぶら下げることとします。

このアカウントの所有者が @kgtkr であることの証明:
@{スクリーンネーム} {適当な文字列}
SHA256先頭8文字:{HASHの先頭8文字}
検証方法:https://gist.github.com/kgtkr/3a3d07c3c9fe1c6f562e5554270e8ce9

検証の手順は以下の通りです。

  1. スクリーンネームが正しい事を確認する
  2. @{スクリーンネーム}:{ユーザーID} {適当な文字列}の部分を前後に改行やスペースが入っていない事を確認してSHA256でハッシュ化する
  3. 生成されたハッシュ値が以下のリストに存在することを確認する

ハッシュ値のリスト

所有しているアカウント数を隠す為ダミーのハッシュ値も含まれています。

  • 872e5a6a09b7c3264aa1559c2853bf0537600af1d5570e046553c467c94782f8
  • 979c75764c8514c89e7a1b7383da89bdf1fd297c4693b82262e45109bdbd366a
  • 72f5d0d4ac7e365c78181a1be4e8dc665d3d2dcfcd93c038e0e6a43f4e5d1274
  • a9a18ea9de48feb172ec7bce5e9f4a3e6fb269055a283417f41d266d5f68ccd0
  • 8402447bbed23002188d1d02e6ede51d89c883cd34e17080ddbc379a439f26f3
  • a2e697a7a232e088e33330a6d4b28117e6c75085ed7c545bc7e57b47faef45ea
  • e035ba588e09a5147765f25323617f8d96ab31e4d7ad35f24b4a40a03fb90b78
  • f8d278781d437ab6a512f52bfaa7b90d6e419735ea9558e579af9539b44f61f0
  • 49acab5904bcf8ae7788ce5d72fb03a114dbbb536649dec1e1c4d060645e0142
  • 4d177a94a2d1a53428475e36c052fc908752893b3a10c846e7d3f32b69659c6c
  • 97611a1f530581bf17315453227fc668e4858a1b1a6966763d1642dccdae0092
  • 1136931e3242d67223399233eee90466ef707ce0f225cfb46dc544904aaf790d
  • 895d859658704f15eb8c906ee084ef2183ddc2c466919d5649875cf203117412
  • 9c246198375f3f39ecb2c6c73ecca49dfdbcd6654f9727a2f4f671110aa90c23
  • 3775e54aaa9532346f0559f93993acbc6e4be5017a0455fb231894f5f239f233
  • cd24c68bffd215c7512a6120dcc9ea36eea5ed0f9e59f064bf3520ab17a35e20

解説

証明に必要な要件

  • 鍵垢を通してない人には私のアカウントであることの検証ができないようにする
  • 他人がなりすませないようにする
  • 文字数をなるべく削減する(できれば1ツイートで抑えたい)
  • 簡単に検証が行えるようにする

今まではpgpで署名した文章を固定ツイにぶら下げたりしていましたがあまりにあまりにツイートが長くなりすぎるのと検証するのにツイートを結合してpgpで検証を行う必要があり大変なのでやめました。 またこれを満たすためにハッシュ対象の文字列を「@{スクリーンネーム} {適当な文字列}」としています。 まずユーザーIDではなくスクリーンネームなのは検証側にとってスクリーンネームのほうが確認しやすいからです。スクリーンネームは変わることがありますがその時はハッシュリストを更新すればいいのでそこまでの問題はありません。ただしIDのほうが安全なのでもし簡単に検証できるWebツールを公開出来たら変えるかもしれません。 また適当な文字列を入れているのはその鍵垢を通してない人が検証出来ないようにするためです。 もしスクリーンネームだけであれば総当りなどで探すことが出来ますし、適当な文字列だけであれば別のアカウントに再利用することができるので両方が必須です。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment