2020年2月27日木曜日

Web での個人識別

光学など担当の岩室です。


今回は Web での個人識別の話です。
私の所属している京都混声合唱団では、4/18()に創立95周年演奏会を行なうのですが、少しでも来場者を増やすために、ホームページ上で抽選を行って当選者にチケットをプレゼントする企画をすることになりました。そこで問題となるのが、同一個人が何度も抽選を行なうのをどのように阻止するかです。何度も抽選を許すといくらでもタダでチケットを出すことになり、オークションに出品して小遣い稼ぎをする人々のターゲットになってしまいます。


サーバ側で個人を識別するには幾つかの方法があります。


1:住所と名前を書いてもらう
名前は偽名を使えばいくらでも増やせるし、住所は簡単には書きたくないですよね。


2:メールアドレスを書いてもらう
これは実際にそこに送信して届いてこそ識別の役に立ちます。


3:IP アドレスを読み取る
サーバ側で接続元の IP アドレスを読み取り、それで識別します。しかし、一般のプロバイダはグローバル IP を使いまわしており、モデムを暫く使わない状態が間に入ると次回接続時に別の IP が割り当てられます。運が悪いと、過去に接続した別人と間違われることになります。


4:ブラウザの Cookie 情報を読み取る
Web サーバはユーザが接続してきた際、ユーザが使用しているブラウザに Cookieを食べさせることができます。また、接続してきたブラウザが、過去に自分のところのCookie を食べているかのチェックもできます。これにより、初回の利用なのか2回目以降なのかが判別できますが、ブラウザ側で過去の Cookie 履歴が消去されてしまえば初回接続と同じ事になります。


5:ブラウザーフィンガープリントを読み取る
個々のユーザはそれぞれ異なるスペックの PC とブラウザの組み合わせを使っており、 細かいソフト的な設定情報まで収集して照合すれば、完全に同じものとなる確率はほぼ0にできるそうです。これを用いた照合技術をブラウザーフィンガープリントというもののようですが、これも、ブラウザのプラグインを1つ変えるだけで変わってしまうようです。


接続元の Mac アドレス(ネットワークに接続している部品の識別番号)が参照できればそれも使えそうなのですが、Mac アドレスは同一のサブネット内でしか参照できないため、利用できません(Mac アドレスをソフト的に差し替える事も可能なので使えたとしても完全には信用できませんが)

というわけで、結局は上記2のメールを基本とし、3,4に関しても補助的に利用するというやり方を取ることにしました。メールによる認証は、乱数生成の URL を送信して一定時間内にそこにアクセスがあったかどうかで認証するのが通常ですが、抽選の場合は最も肝心な抽選結果そのものをメールで送信してしまえばいいので簡単です。視覚的に楽しいルーレット抽選とかに比べて全くワクワク感がないですが、実用的には十分です。



実際の実装には、最もシンプルで実績のある cgi フォームメールの POST-MAILに、cgi アンケート投票システムの Web Enqueteのログ収集・Cookie チェック機能を付け加えたものを作り、乱数で抽選する部分を一行加えたものです(5も入れたかったのですが、無料の cgi スクリプトを発見できませんでした)。名前とメールアドレスを記入して確認ボタンを押すと、過去の抽選記録のメールアドレスと IP アドレスを照合し、どこにも同一のものが無ければ抽選を許可します。抽選ボタンが押されて抽選が行われた後に Cookie をチェック、過去に Cookie を食べていなければ Cookie を食べさせて抽選結果をメールで送信、Cookie を食べていれば抽選は取りやめ、という流れです。

ここまで頑張って識別を行なっているのですが、これまでに明らかに同一人物と見られる人から最大3回の抽選がありました(残念ながらその方は3回ともハズレだったのですが)。メールアドレス・IP アドレス・ブラウザを3回とも全て変えて抽選しているので、なかなかの強者です(ブラウザは Cookie 履歴を削除するだけで良かったのですが...)。こういう無料抽選サイトを良く利用している方なのかもしれません。ちなみに、今回のプレゼント企画には当選者にも最後の仕事があって、郵送で受け取るための自分の住所を宛名欄に書いて切手を貼った封筒を、指定の住所に郵送しなければならない、としているところです。これにより、多少の出費と手間を要求しますので、オークション転売目的の完全無料で入手しようとしている人のヤル気を削ぐことができます。


今回の企画は過去にやったことのない企画なので、これから演奏会までの2ヶ月弱の間に何が起こるかわかりませんが、予想外の問題が起こったらまたこのブログのネタにさせてもらおうかと思います。


というわけで、京都混声合唱団 創立95周年演奏会の宣伝です。






2020418 14時開演
京都コンサートホール 大ホール
京都混声合唱団 創立95周年演奏会
G.フォーレ作曲 「レクイエム」
J.ラター 作曲 「レクイエム」
指揮 :小玉晃
唱 :松下悦子、小玉晃
管弦楽:音登夢管弦楽団



 

 (フォーレ「レクイエム」は1893年ラター校訂版、アンコールとしてラターがハープを加えて編曲したフォーレ作曲のジャン・ラシーヌの賛歌も演奏します)です。興味ある方は京都混声合唱団ホームページをご覧下さい(もう暫くはチケットプレゼントやっています)