また行政がやらかしたようだ。愛知県でコロナウイルス感染者情報のファイルを「実名が掲載されたまま公開してしまった」のだとか。同県ウェブ記事によれば,どうやら,感染者情報は「表計算ファイルの形式で公開する」ことになっていて,本来は「実名」など個人情報に当たる項目を削除すべきはずだったのに,担当者がそれを「うっかり」忘れてしまったらしい。何より感染者への差別や誹謗中傷などが問題視されつつある中,行政の管理意識がそんな程度だったとすれば「重大な問題」だと思うが……まぁ,批判は後ほどということにしよう。
しかし「絶対漏れない」よう対策できれば理想だが,人間が扱う以上「うっかり」もゼロにはできない。そこで重要になってくるのは,万が一,「うっかり」外に出てしまっても,「(個人情報は)読めない」ようにしておく対策。「行政」ならなおのことそうしておくべきだったと思うが,残念ながらそこまでしていたとはウェブ記事には書いてない。
「そんなことができるのか?」……じつは表計算ソフトでなら,原理がある程度理解できていればできる場合がある。ここでは「こんな対策もできる」ということをお伝えしておきたい。
● まず簡単な方法から
筆者は,表計算ソフトで重要な内容を含むところには「背景色を着ける」ことがある。そこが特別な内容であることが見てわかるようになるのは,言うまでもないだろう。
そんなことを普段から当然のようにしている筆者に言わせれば,個人情報を消し忘れた担当者は,その項目を目立つ色にしておかなかったのか……などと思う。普段あんまり使わないようなドぎつい色……鮮やかな赤とか,逆にダークグレーにして「スゴく見づらい」ようにしてあったら,公開しようとした時に「この色じゃダメだ」と気付いて削除する可能性も少しは高かったのではないかなとも思う。
ただこの方法では,それでも「ついうっかり」公開してしまったら,結局は見られてしまうことになる。
◆ パスワード
「もう少し確実に」見られなくする方法としては,パスワードをかけておくことも考えられる。
▼ 「名前を付けて保存」のパスワード設定 |
ワープロや表計算のファイルを扱うアプリには,たいていパスワードを知る人しか開けなくする機能がある。せめて「個人情報」が記載されているファイルには,普段からそのパスワード機能を使って保存するようにしておけばよかったのではないかという気がする。今回のように,「うっかり」公開してしまっても,パスワードがかかったままならば,「直ぐには見れない」ことになる。ウェブで公開し,誰でもダウンロードして見れるようになっているべきファイルに「パスワードがかかっていて見れない!」とクレームが来れば,「あ! 個人情報を消し忘れている!」と気づく機会につながる可能性もあるだろう。うっかり公開してしまっても,ギリギリ見られずに済むわけだ。
そのためのパスワードの場合,個人が「プライバシー」として見られたくないものとは違うから,そのファイルを扱う部署や関係者に限って周知させておくようにすれば,処理上の煩わしさもあまりないだろう。
ただ,気をつけるべきは,数文字程度の短いパスワードだと,ダウンロードした人が「総当たり」でパスワードを試すことで,バレてしまう可能性も割と高いということ。「パスワード」というのが,たとえば,金融機関の「ネットバンキング」レベルにセキュリティが重要なものなら,たいていは繰り返しパスワードを間違えるとロックされてしまい,しばらくの間は,正しいパスワードでも受け付けなくなるような仕組みになっているのが普通だ。たとえば,4桁の暗証番号で,3回間違えたらその日はロックされるシステムだと,1日に3つの組み合わしか試せないことになる。全て(1万通り)の組み合わせを試すには,3333 日……つまり9年ちょっとかかることになる。と言っても,それほど度々ロックがかかれば,9年どころか数日のうち「おかしい」と気づく機会もあるだろう。それによって「成りすまし」で勝手にお金が引き出されることの防止にもなるわけだ。
一方,ファイルにかけられたパスワードは,そうした仕組みがない。ダウンロードした人が手元のパソコンで,何十回,何百回でも試せる。人がひとつひとつ手作業で試すには限界があるが,様々なパスワードを試すようなプログラムを組んで,それをコンピュータに実行させるようなことをされると,1秒間に何千回とか,何万回とか,そうした回数を試すことも可能になってしまう。仮に1秒間に1万回試すことができたとすると,4桁の暗証番号なら1秒でバレる。もし1日繰り返すと 8.6
億通り試すことができるから,暗証番号が9桁だったとしても,計算上は1日前後でバレてしまうことになる。
そんなわけで,こうした時に使うパスワードは,特になるべく多くの文字を使ったものにすべき。9桁の数字では1日でバレてまうが,あと4桁増やせばその1万倍……つまり 27 年ほどかかることになる。英字まで使えば組み合わせはもっと多いから,バレにくくなるわけだ。
ちなみに,昨年(2019)いろいろ問題が起きた「何とかペイ」では,どこだったか忘れたが,その「暗証番号を何度か間違えられるとロックされる仕組み」になっていなかったとか。つまり,番号を何度も試せるから,そのうちにバレる可能性も高く,他人のクレジット番号で勝手にその「何とかペイ」で支払いできてしまう可能性があったというウワサだ。そりゃトラブるわけだ。
これら「簡単な方法」の限界は,色を着ける方法にしろパスワードにしろ,「ついうっかり」個人情報を見れるように公開してしまう可能性を「少し」下げる程度である点。色が着けてあっても,見慣れてしまえば「公開」の処理を普段の保存と同じ感覚でやってしまう可能性は残るし,パスワードによる保護でも「掛け忘れる」ことは十分考えられる。せめて,2つの方法を組み合わて使うことで,「うっかり」を防ぐのに相乗的な効果が期待できる程度だ。
「理想」としては,「ほぼ普段通りの扱い」で,「うっかり公開」してしまっても,個人情報などは「半自動的に」見れなくなるような仕組みなら安心。だが,そんな方法があるだろうか。次の章で考えてみる。
● 擬似的「半自動」の個人情報保護機能
たとえば,名前と生年月日が記載された表計算ファイルを作成して,今から説明する「個人情報保護機能」を仕込み,それを,作成したパソコンで見たものと,ネットワークを経由し別のパソコンで開いたものを並べると,こんな感じになる。
▼ 表計算ファイルを作成したパソコンで見る |
▼ 同じファイルを別のパソコンで開くと |
「氏名(表示用)」の項が全て“#NAME?”という意味不明な表示になり,名前が分からなくなってしまっている。
念のため言っておくと,これはパソコンは異なるが「同じファイル」を見たもの。USB メモリなどにコピーしたものでもなく,あるパソコンに保存されているファイルを,片やそのパソコンで,片やネットワーク経由で開いている。見ているパソコンが違うだけで,使っている表計算ソフトもほぼ同じ。つまり,名前の部分は「ファイルが保存されているパソコン以外では読めない」状態であるということだ。
だからもちろん,ファイルがこのままうっかり外部に出てしまったとしても,見ることになのは,その意味不明な“#NAME?”の表示のほうになる。つまり,ある意味「個人情報保護機能」と言えるだろう。
じつはこの「氏名」の実際のデータは,隣の「氏名(暗号化)」の欄に記載されている,数字と英文字の「られつ」のほう。画像の最下部にも書いておいたが,最初の画像では,「氏名(表示用)」の欄の名前が読める字で見れるものの,実際はそこには「見た通りの字(名前)」は記載されておらず,代わりに「=DECRYPT( B* )」という式が設定されている(* は同じ行)。この DECRYPT などのことを「関数」と呼ぶが,この関数がその「数字と英文字のられつ」から実際に読める名前に直して表示している。つまり,このファイルには,直接見て読める個人名は記載されていないのだ。
表計算で「式の埋め込み」をしたことがある人は少々不思議に思っているかもしれない。そう,同じソフトで同じ関数を使えば,結果も同じになるはずだから,たとえ見るパソコンが違っても,アプリもデータも使っている関数も同じならば,同じように名前が見れるのが普通だ。
裏を返せば「普通じゃない」ということ。鍵はその関数。もしかして「DECRYPT なんて関数聞いたことがないぞー」と思いながら見ている人がいるかもしれないが,それもそのはず,筆者が勝手に作った関数だ。
「そんなことできるのか?!」……いや,できないことを紹介したりしない。実際,最初の画像では普通に読める字で表示できているし。
「マクロ」と呼ばれる機能を知っている人なら「ははぁ〜ン」と思っているかもしれない。「マクロ」とは,表計算などのアプリに,独自に作った「自動処理」を追加できる機能で,その「マクロ」の処理を記述する場所と同じところに,「独自に作成した関数」も定義できる。この
DECRYPT という関数の処理は,そこに記述してある。
それでもまだ腑に落ちない点があるとすれば,「同じ関数を呼び出しているなら,同じように名前が表示されていいはず」という点。じつはその関数,ファイルに埋め込んであるのではなく,そのファイルを作成した表計算アプリがインストールされているパソコンに登録してある。
▼ マクロが登録してある場所 |
上記の図にある「マイマクロ」の記録先というのは,表計算アプリがインストールされているパソコン内で,その下に,マクロの登録領域である「Module1」があって,そこに Decrypt と Encrypt という2つのマクロ(右枠内)が登録されているのが分かる。一方,ファイル自体の下には,マクロの登録領域である「Module1」に相当するものがないため,登録されたマクロもない(作れない)ことがわかるだろう。
だから,マクロが登録してあるパソコンでファイルを見ればその関数は正常に機能するが,他の機械では,たとえネットワークで同じファイルを開いたとしても,別のパソコンである以上,DECRYPT という関数の登録がないため,名前の文字は正常に表示しなくなるというわけだ。
つまり「うっかり公開」してしまっても,個人情報は「半自動的に」分からなくなる……ある意味「擬似的に」自動保護を実現するひとつの方法になっている。
◆ どうやって「暗号化」データを作るか
「個人情報は暗号化したものを記載する」と言われても,どうやってその「暗号」のデータを記載するかも問題。
暗号化されたデータを元に戻すことは「復号」と言う。述べている例では DECRYPT という関数がそれに当たるが,それより「暗号化」する側を先に考えるのが自然だろう。「どのように暗号化するか」が決まらなければ,元に戻す方法も決められないのだから。
でも原理的には手法は同じ。「暗号化」する「関数」を作ればいい。それを,やはり個人情報を扱うファイルを作成するパソコン「だけに」登録しておく。ここではその「暗号化する関数」を ENCRYPT とする。
残念ながら「元の個人情報」はどうしても一度記載する必要はある。そうしなければ「暗号化データ」も作れない。まず一度「個人情報」を記載した表に,前述した「暗号化する関数」を埋め込んで暗号化する。以下の画像は,一番左の A 列に実名を記入して,B 列に「暗号化する関数」を設定したもの。
▼ まず名前が直接記入された表で暗号を作る |
この画像で暗号化された名前の欄には,「数字と英文字のられつ」ではなく「=ENCRYPT( A* )」といった式が設定してある(* は同じ行)。
この「実名」が記載されているままファイルを扱っていると,「ついうっかり」外に出てしまうとマズいので,「暗号化された名前」だけを残して,「実名」の部分を消す必要がある。そのために「暗号化された名前」の部分を,同じセルの範囲に「コピペ」する。ただ,いつも通りコピペしたのでは変化はない。ここでは「ペースト」する時に「形式を選択して貼り付け」を選び,「値」として貼り付ける。
▼ 「形式を選択して貼り付け」を選ぶ |
筆者が使用している表計算ソフトの場合,まず該当のセルを選択して「コピー」したら,貼り付け先(最も左か上のセル)で右クリックし,表示されたメニューから「形式を選択して貼り付け」を選択する。すると「どのような形式で貼り付けるか」を指定するダイアログボックスが表示される。
▼ 「値だけ」を同じ場所に貼り付ける |
そこで「値」を意味する「数値,テキスト,日付」にチェックを入れて,それ以外は外す。最低必ず「数式」の項目は外す。暗号は「テキスト(文字)」なので,そこだけチェックでもいい。[OK]すると,元々データがあるセルのため確認が出るので,「上書き」で貼り付ける。
この操作をすると,元の「暗号化関数(ENCRYPT)」は表から消え,暗号化された「数字と英文字のられつ」が直接セルに記載された状態になる。するとその「暗号化」の元にしていた左端の「実名」は消去できる。そこを消去すれば,このファイルから「暗号化されていない実名」の記載はなくなる。最初のほうに挙げた,「表計算ファイルを作成したパソコンで見る」の画像は,左端 A 列が空欄で,暗号化された氏名欄には「数字と英文字のられつ」が入力されているが,そのファイルもこうして作ったもの。個人情報は暗号化されたものしか収録されていないから,復号関数 DECRYPT が機能しない別のパソコンで開くと,その次の図のように「名前(表示用)」の列は読めなくなるというわけだ。
◆ 複数の項目が個人情報の場合
「個人情報」というのは「名前」だけではない。住所から個人が特定されることは十分考えられる。たとえ特定されなくても,「メールアドレス」や「電話番号」といった「確実に持ち主がいる連絡先」などは,広告業者や,時として「詐欺グループ」などにとっては垂涎の的だし,クレジットカード番号などは名前の確認がなくても使えてしまうこともある。だから「名前だけ伏せればいい」とは言いきれず,他にも伏せておきたい項目がある場合も考えられる。
とはいえ,述べてきた「名前」と同様に「住所」の欄などを作ればいいだけの話だ。暗号化の ENCRYPT,復号する DECRYPT の関数を,任意の文字に対応できるように作っておけば,どんなデータでも「暗号化」が可能になる。
前述と同様の方法で,まずはそれぞれ一旦は「実データ」を入力し,それを「ENCRYPT」で暗号化したデータ欄に表示したら,その中身の値だけ同じ範囲にコピペして,元の「実データ」は削除してしまえばいいことになる。
たとえば住所なら,少なくとも「実データ」の住所を記載する欄と,「暗号化」した住所を記載する欄の2つを作っておき,ENCRYPT 関数で暗号化したら,やはり前述した方法で「値だけをコピペ」して ENCRYPT
関数を消し,次に実データの住所も消せばいいことになる。
ただ,表計算ソフトで処理中は,「暗号化されていないデータ(たとえば実際の氏名や住所)」も確認しながら作業を進めたいことも多いと思われる。その場合は,「暗号化されたデータを DECRYPT 関数で復号して表示する欄」を作っておく。述べてきたように,暗号化と復号化で使われる関数をそのパソコンのみに登録しておけば,他のパソコンでは「復号関数」が機能しないため,開いてもそこは見れないことになる。
ちょうど,最初のほうに挙げた画像で「背景が明るい灰色」になっている欄がそれで,そこには実際には名前のデータはなく,DECRYPT 関数で復号したデータが見えるようになっているだけのため,DECRYPT 関数が使えない別のパソコンで開くと“#NAME?”などという意味不明な表示になるというわけだ。
◆ 個人パソコンでテレワークや外注も可能に!
個人情報を含むファイルは,その「うっかり」を防ぐ意味でも,持ち出せないきまりになっていることも多いと思う。ましてや「外部委託」などは「漏えい」のリスクが高くなるためむずかしく,「たいへん」と分かっていても,対処を全て自部署で抱え込まざるをえないケースもあるのではないだろうか。
しかし,述べて来たような「暗号化」されたデータを処理する場合はどうだろう。この方法なら,個人情報は外部のパソコンでは意味のある表示にならないから,その状態のまま何らかの作業を進めることができれば,そういった作業のために持ち出したり,外部に委託することが,ひょっとすると可能になるのではないかと考えられる。
「データがむちゃくちゃにならないか?」という懸念があるかもしれないが,暗号化データというのは,むちゃくちゃなのは「見た目だけ」で,それが勝手に変更されない限り,DECRYPT 関数で元に戻せる。
たとえば,例として使っているファイルは,外部のパソコンを使うと「氏名をまともに表示しない」が,そのままそのパソコンで,データを「生年月日の小さい順(高齢順)」に並び替える処理をしてみる。
▼ 外部パソコンで高齢順に並び替える |
当然,処理したパソコンでは「最も高齢な人の名前」が誰なのだかは分からないが,このまま元のパソコンに送り返し(保存し)て,それを元の(氏名も正しく表示する)パソコンで開くと,こうなる。
▼ 外部処理されたファイルを元のパソコンで開く |
並び順だけが変わり,名前と生年月日は一致していることが分かると思う。つまり,氏名などの個人情報を知られることなく,「高齢順への並び替え」の処理を外部ですることができたということだ。
特に,障害者の施設や介護施設など,事情を抱えた方を扱うファイルなどは慎重に取り扱う必要もあるだろう。と言っても,そうした「個人情報」を含むため外部での作業が禁止され,「自宅でテレワークできない」とか,「効率よく処理できるノウハウを持った外部業者などに委託できない」などで,全てを同部署内で処理しないといけないとなると,そのために処理が大きく遅れたり,コスト高になったりすることも考えられる。でもそれは,ある意味「損失」なのではないだろうか。
この記事を読んでいただいた皆さんには,紹介してきた手法をうまく使うことで,負担軽減につなげていただければ幸いに思う。
◆ まとめ
まとめると以下の通り。
- 「暗号化」と「復号化」する「マクロ関数」を作成し,作業する特定のパソコンに「のみ」登録しておく
- 名前や住所といった個人情報は直接入力せず,暗号化したものだけを記入するようにする
- 一度,個人情報の「実データ」から「暗号化」したデータを作ったら,そちらだけ残し,元の「実データ」は削除してしまえば,他のパソコンでは見れなくなる
- 個人情報を表の上で確認したい時は,暗号化されたデータを元の「名前」などの表示に戻す関数を,表に埋め込むこと「のみ」で対応する(「のみ」にしないと,他のパソコンで見れてしまう)
- 「マクロ関数」と暗号化手法を作れる人が必要
なお,述べてきた例は,筆者が使っている「OpenOffice」と呼ばれるソフトのものだが,「マクロ」の機能は,マイクロソフト社が作っている表計算ソフト「エクセル」などにもあり,ほぼ似た使い方で作れると思われる。
最後の問題は,その「暗号化のためのマクロ関数」をどうするかだ。
◆ 暗号化のマクロ関数はどうする?
ではその「マクロ関数」をどうするか。
このままだと,「マクロ」の使い方を理解していて,しかも「暗号化の手法」を考えられる人を,どこかから連れて来る必要がある。
筆者が作った暗号化の例を「使いたい!」という人もいるかもしれない。公開したいのはやまやまだが,それを公開して「みんなが使うようになる」と,意味がなくなってしまう。個人情報の保護が必要な組織内で独自に作成し,「どのような暗号化方式か」を他に知らせないまま,特定のパソコン「のみ」に登録してこそ,そのパソコンで「のみ」個人情報が見れて,他では見れなくなるうえ,「どのように元データを見るか」も分からないから「保護」と言えるわけで,みんな同じ「暗号化」と「復号化」の関数を使うようになれば,どのパソコンでも「復号」できてしまうことになるから……意味がなくなってしまうというわけだ。
というわけで,ここでは「こんな方法もある」的なことをお伝えするだけにとどめたい。
もし,紹介した「個人情報保護」の対策を進めたいけど,近くにその「マクロ関数」を扱える人がいないような場合は,筆者にご相談いただければ個別に対応いたしますので,以下までご連絡ください。
▼ 筆者の連絡先 |
● 「情報漏えい」を繰り返す行政
それにしても,行政は何度「漏えい」を繰り返したら気が済むのか。全てのお役所がそうだとは思いたくないが,数ヶ月前にも神奈川県で,「個人情報が入っていたらしいハードディスクが転売されていた」という事件があったところだ。
事件のタイプは違うが,愛知県と言えば,2ヶ月ちょっと前「徘徊者を一旦保護していながら,対処に困り夜中の寒空に置き去りにする」ということもあった。それが同県の「危機管理意識」の程度の現れだとすれば……「漏えい」も起きるべくして起きたのかなという感じもする。
筆者が最も問題に感じるのは「役所内にそうしたことが起きる要因が放置されていた」という点。どういうことかと言うと,「絶対に間違いが起きない仕組み」を作れれば理想だが,どんなシステムでもそうした仕組みが構築できるとは限らない。人間は間違いを起こすものだから,そうした「ヒューマンエラー」を完全に防止できる仕組みが作れない時の対策も考えておくべきはず。それが「フェイルセーフ」……つまり,何か間違いが元で事故が起きてしまっても「被害が小さく抑えられる」ような工夫であるはずだ。述べてきたような「うっかり公開してしまっても個人情報は見れない」ようにしておく工夫も,その一つだと思う。常にそうした点を考慮することが「危機管理」であるはずだ。
今回の「個人情報漏えい」では,そうした意識が全く見えてこない点が重大だと思う。以下がその事件についての県の説明なのだが……。
県が「原因」とする部分を抜粋したのがこちら。
患者の氏名、年代、性別等の情報をエクセルファイルで作成・管理している。
このエクセルファイルから、個人情報を削除したデータファイルを作成し、Webページに掲載している。
今回、患者の個人情報が含まれたエクセルファイルを誤ってWebページ上に掲載してしまった。
また、昨日はWebページの作成者と承認者が同一人物であったため、ダブルチェックができていなかった。
述べたように,「ヒューマンエラー」はなかなかゼロにはできない。だからこそ「うっかり」が起きても大きな損失につながらないような,仕組みなり手順なりにしておくべきなのは,言うまでもない。そうした視点で見れば,個人情報を含んだデータの処理で使用している表計算のファイルを「同じ形式で」公開できる……言い方を換えれば「何も加工しないまま公開できる」ようになっていたことが,どれほど危険なやり方だったのかということだ。
そこに追い討ちをかけたのが,最後の「ダブルチェックができていなかった」という点。「できていなかった」と言われると「たまたまその時だけ」的な感じもするが,たぶんそれはお役所流の「印象操作」だと思われる。だいたい「作成者と承認者が同一人物」なんて状況が一時的にでも発生する仕組みを「ダブルチェック」とは言わない。それなのに「ダブルチェック」という言葉を出して来るのは,違和感しかない。
エクセルを始めとして表計算ソフトには「印刷領域」を限定する機能があり,その範囲外の部分は,たとえ数値や字が記載されていても印刷されない。同記事で県は,対策として「PDF で公開するようにする」と記載しているが,その「PDF で出力する」時も,「印刷範囲外」の部分は除外されるのが普通だ。つまり,せめて初めから PDF で公開するようにしておき,ファイルを作る時に個人情報を含む項目を印刷領域から除外するようにしておけば,今回のような事態は防げたかもしれない。その点でも,やはり「なぜエクセル形式で公開していたのか」は疑問。
ただ,「PDF ならいいだろう」という感覚だとすれば,それもまたどうかなという感じもする。
「エクセル」はマイクロソフト社のアプリであり,標準インストールされているパソコンは,同じマイクロソフト社製の OS である Windows
であることが多いはず。それ以外のパソコンでは,エクセルのファイルが必ずしも見れるとは限らない。実際,筆者がメインで使用しているパソコンは Windows ではないため,普段エクセルも使っていない。そうした点でも,「エクセルで公開」というのは疑問しかない。
では「PDF ならいいか」というと,やはり必ずしも誰でも同じように見れるとは限らない面もある。PDF の形式も日夜バージョンアップされているため,古いパソコンでは見れなくなる可能性も出てくる。「誰でも見れる」ようにしたい記事の公開方法としては,やはり疑問が残る。
ならば最も「誰でも見れる形式」は何かというと,プレーンテキストか HTML だ。ただ,プレーンテキストでは,文字の大きさを変えたり,部分的に強調表示などはできないから,「見た目」を分かり易くするには限界がある。だから,せめて HTML で見れるようにしておくべきではないかと思う。HTML なら,ネット記事の閲覧ソフトであるブラウザさえ使えれば見れるはずなのだから。
ただ,エクセルなどの表計算ソフトで作成した表を HTML 形式にするには,多少技術が必要になることもある。筆者はそのあたりは自動変換するプログラムなどを書ける場合があるが,技術を持っていない役人ではむずかしいかもしれない。しかし,そうしなければ,「広く一般の人に知らしめる」という行政の目的にそぐわないのではないだろうか。
だから今の時代,もう少し「技術」を持った人がお役所の中に居るべきではないかと思うのだが……。形式を変換しないで,エクセルのままデータを漏えいさせてしまった愛知県の役人は,どれくらい報酬を受け取っているのだろうか。「個人情報保護機能」の提案をした筆者は,今「コロナウイルス」の影響で,仕事も収入も「ゼロ」なのだが……。