時事から読み取る R061221 インフラとしてのアンケート調査
兵庫県の斎藤知事をめぐる職員アンケートにて、何度もアンケートに回答できていた問題について。
現在の一般的なWEBのアンケート調査というものは、基本的には複数回回答することが可能である。
なぜなら、一個人に対して一票のアンケートをするためには、厳密には一個人に対して一つのアカウントしか発行できないようなサービスを通じてアンケートに答えなければならないからである。
実際そんなWEBアンケートは現在のところ存在していないのではないかと思う。
アンケートという手段が、ある程度水増し可能であることは、IT時代以前より行われていたと思うが、ITだと自動化でより簡単にできる。
今回のケースは、アカウントで縛ることもしていないということだろうけど、Yahoo!であってもGoogleフォームであっても、個人がアカウントを複数持てる仕様であるため、実は水増しが可能である。
ただ連続投稿は大量のアカウントを持って、スクリプトで回答するようにしないとできないので、少しだけハードルは上がる。
さらに言うと、主催者側が作ったようなフォームならば、数字の工作など自由にできる。
なので、やろうと思えば今回のように印象操作をすることが可能である。
アンケート結果に対して、商品を売るようなときには選ぶ側も慎重になるが、人の評判に関することに関しては、選ぶ側も情報に対して慎重とはいえず、情報に対して受け身となるため、より悪質に思える。
しかし、アンケート調査自体は無駄なことだとは思わない。世論調査や市場調査においてはやはりアンケート調査は意味があるし需要がある。
だとしたら、社会インフラとして、アンケートの基盤があるべきではないかと思う。
信頼に値するものであれば、広告で個人情報を収集する手段よりかは健全だと思う。
というわけで、以下の条件でアンケート調査の基盤を公共のITインフラとして用意するとよいと思い、考えてみた。
アンケート調査は、気軽に答えられることが望ましく、回答する側に面倒くさいなどの余計なストレスを与えないことが望ましい。
なので、マイナカードは登録認証時以外は、なるべく使用しない仕様の方が望ましい。
(a). 一個人に対し、一アカウントを保証できる基盤。→今だとマイナンバー登録制のサービス。つまりマイポータル。
(b). (a)を一個人にたいして一アカウントを保証し、一般的なサービス(Google、Yahoo!)と連携するサービス。(生年月、性別、地域ぐらいの最低限の個人情報だけ保持。利用者が保持する情報を選べる)
(c). 一個人に対して一アカウントを保証する要件があるWEBサービス(アンケート投票サービス)利用時に(b)を経由する。
登録、利用の流れは以下の通り。
1.マイナカードの取得
2.マイナカードによって、スマホ等で(a)マイナポータルに登録。
3.(b)にマイナポータルとの認証連携によって、(b)アカウント登録。この時は(a)の認証でマイナカードが必要。スマホアプリが良いと思う。
4.(c)を利用する際に、今のGoogleアカウント経由の認証と同じような、サイトを経由するやり方で認証を行う。この時はマイナカードは基本的には不要。(重要なものは再度マイナカードで認証※(a)を利用すればよい)
(b)があれば、一個人に対して一アカウントが担保され、厳密な年齢制限もできるし、クレジットカードを持っていなくても利用が可能になる。
条件としては、(c)でマイナカードの基本的には認証を行わないため、(b)によって、(a)を介さない不正アカウントの作成が可能なので、その点を考慮した構造にする必要がある。
また、(b)は個人と紐づくサービス利用情報履歴を収集することが可能なため、物理的に追跡が不可能な構造にするか、厳重に管理できるようにしなければならない。
(a)は厳密な個人認証で個人と個人情報を突合する役割。個人情報は物理的に厳重保管。
(b)は軽度な個人認証で個人と制限された個人情報を担保する役割。個人認証サービス。
(c)は厳密に一個人に対して一回という制約や、一個人に基づいた保証された情報を必要とするWEBサービス。
もうちょっと詳細に考えてみる。
・(a)がマイナカードを発行。
・(b)のアカウント登録時に、提示されたマイナカードをもとに、(a)に照会し、(b)に紐づけたブロックチェーンのNFTトークンを(a)に発行してもらう。
・(c)はアンケートなどの企画の準備のときに(a)のデータウォレットサービスを利用し、データウォレットを作成する。
・(c)のサービスをユーザーが利用する際に、(b)にて簡易認証を行い、同時に(c)サービスの利用情報を追加したユーザーのNFTトークンの派生トークンを発行、(a)のデータウォレットに送付する。
・(c)は、アンケート結果等のデータ改ざん防止のため、(a)の有効トークンカウントサービスを用いて、派生トークンの有効チェックとカウントを行い、発行された結果トークンのアドレスを取得して、結果を表示する。
・ユーザーはブラウザの拡張機能のトークン検証機能を通して、トークン発行元と検証結果を表示する。
個人認証とアンケートのWEBサービスのユースケース図
```mermaid
graph TB;
subgraph Actors;
User((ユーザー));
ServiceC((サービス提供者C));
end;
;
subgraph SystemA[システムA - マイナカード発行機関];
A1[マイナカード発行];
A2[NFTトークン初期発行];
A3[データウォレット管理];
A4[トークン有効性チェック];
A5[結果トークン発行];
end;
;
subgraph SystemB[システムB - 認証システム];
B1[アカウント登録];
B2[簡易認証];
B3[NFTトークン管理];
B4[NFT派生トークン発行];
end;
;
subgraph SystemC[システムC - サービスシステム];
C1[データウォレット作成];
C2[サービス提供];
C3[有効性チェック要求];
C4[結果表示];
end;
;
subgraph Blockchain[ブロックチェーンネットワーク];
BC1[NFTコントラクト];
BC2[派生トークンコントラクト];
BC3[トークン履歴];
BC4[結果トークンコントラクト];
end;
;
subgraph Browser[ブラウザ拡張機能];
BR1[トークン検証機能];
end;
;
%% アクターと主要ユースケースの関係;
User -->|取得| A1;
User -->|登録| B1;
User -->|利用| C2;
User -->|確認| BR1;
ServiceC -->|作成| C1;
;
%% システム間の基本フロー;
B1 -->|照会| A1;
B1 -->|NFT初期発行依頼| A2;
A2 -->|NFT保存・管理| B3;
C1 -->|利用| A3;
C2 -->|認証| B2;
B2 -->|NFTトークン情報参照| B3;
C2 -->|利用情報通知| B4;
B4 -->|派生トークン送付| A3;
;
%% 有効性チェックと結果トークンフロー;
C3 -->|派生トークン集計処理要求| A4;
A4 -->|チェックおよび集計結果| A5;
A5 -->|結果トークン発行| BC4;
A5 -->|結果トークン送付| A3;
C4 -->|結果参照| BC4;
;
%% ブロックチェーンとの関係;
A2 -->|NFT発行| BC1;
B3 -->|トークン情報取得| BC1;
B4 -->|派生トークン発行| BC2;
BC1 -->|履歴記録| BC3;
BC2 -->|履歴記録| BC3;
BR1 -->|ブロックチェーン検証| BC3;
;
%% システムの依存関係;
B4 -->|NFT情報参照| B3;
C2 -->|表示| C4;
;
%% スタイリング;
classDef system fill:#f9f,stroke:#333,stroke-width:2px;
classDef actor fill:#lightblue,stroke:#333,stroke-width:2px;
classDef blockchain fill:#e6ffe6,stroke:#333,stroke-width:2px;
class SystemA,SystemB,SystemC system;
class User,ServiceC actor;
class Blockchain blockchain;
```
個人認証とアンケートのWEBサービスのシーケンス図
```mermaid
sequenceDiagram;
actor User as ユーザー;
participant Browser as ブラウザ<br>拡張機能;
participant C as システムC<br>(サービス);
participant B as システムB<br>(認証システム);
participant A as システムA<br>(マイナカード発行機関);
participant BC as ブロックチェーン<br>ネットワーク;
;
%% 1. マイナカード取得フロー;
rect rgb(255, 240, 245);
Note right of User: マイナカード取得フロー;
User->>A: マイナカード取得;
A->>User: マイナカード発行;
end;
;
%% 2. アカウント登録フロー;
rect rgb(240, 248, 255);
Note right of User: アカウント登録フロー;
User->>B: アカウント登録(マイナカード提示);
B->>A: マイナカード照会;
A->>B: 照会結果返却;
B->>A: NFTトークン発行依頼;
A->>BC: NFTトークン発行;
A->>B: NFTトークン情報返却;
Note over B: NFTトークン情報保存;
end;
;
%% 3. サービス利用フロー;
rect rgb(240, 255, 240);
Note right of User: サービス利用フロー;
User->>C: サービス利用;
C->>B: 簡易認証要求;
B->>C: 認証結果返却;
C->>B: 利用情報通知;
B->>BC: NFT派生トークン発行;
B->>A: 派生トークン送付(データウォレットへ);
end;
;
%% 4. 結果確認フロー;
rect rgb(255, 250, 240);
Note right of User: 結果確認フロー;
Note over C: アンケート等の結果集計;
C->>A: 派生トークン集計要求;
A->BC: トークン有効性確認および集計;
BC->>A: 確認結果返却;
A->>BC: 結果トークン発行;
A->>C: 結果トークンアドレス返却;
C->>BC: 結果トークン参照;
C->>User: 結果表示;
end;
;
%% 5. トークン検証フロー;
rect rgb(245, 245, 255);
Note right of User: トークン検証フロー;
User->>Browser: トークン検証要求;
Browser->>BC: トークン検証;
BC->>Browser: 検証結果返却;
Browser->>User: トークン発行元・検証結果表示;
end
```
httpsプロトクルのようなWEBブラウザで使用するために特化したブロックチェーン用のプロトクルがあってもよいと思う。