認証と権限の根本的な考え方

最近、法人設立における印鑑登録を必須でなくす法案がはんこ業界の反対によって頓挫したのだが、その際に

欧米のサイン制度と違い、代理決済できるという印章の特長が、迅速な意思決定や決裁に繋がり、戦後の日本の急速な発展にも寄与してきたという自負もあります。

と声明を出し、失笑を買った。

根本的に、印鑑が証明として効力を持つのは、「同一の印鑑は本人しか持っていないはずだから、その印鑑を持っているのは本人である」という前提に基づく。 つまり、「本人以外がはんこを押せる」という状態は「hackされた状態」なわけである。

ところが、業界的にそのhackを認めてしまったことで、逆に「印鑑は本人の意思の証明にはならない」ということを主張するという本末転倒な状態である。

予め言っておくが、私は印鑑は 嫌いではない 。もちろん、印鑑文化にまつわる無意味な儀礼的要素や形式などは 唾棄するほど嫌い だが、印鑑自体はそれなりに好きで、私が使っている印鑑はかなり凝ったものである。会社設立のときも私の強い推しによって特殊な印鑑を制作した。

また、この話はセキュリティ的な認証と権限の話であり、 はんこの話ではない

認証

はんこやサインがどのような意味を持っているかということを考えてみれば、それは「以上の行為が本人であることを証す」ものである。 それは契約であったり、取引であったりといったことだが、このうちの「何者が」というのを担っている。 日本式の「自著+印鑑」というのはかなり無意味に思えるが、まぁ単純に多重化されている(どちらも単独では信頼できないとみなしている)と考えられる。

当たり前だが、認証時に他者を騙ることは許されないし、それが許されてしまってはそもそも認証としての機能を成していないということになる。

代理決裁が必要なのであれば、決裁権を他の者にも付与すれば良い。 Mimir Yokohamaではサポートサービスが福利厚生として利用できるようになっており、このとき決裁者を決めることができるが、 Any ofだけでなく、Orderedも可能になっている。つまり、上位から決裁可能な状態になければ次のものに決裁権を与える方式である。

他者を騙ることが許される認証というのはないのと同じである。

私としては、はんこもサインも「認証」としての機能は極めて脆弱であり、機能しないと考えている。

まず、照合されない、というのが大きい。 印影照合システムがあるのは知っているが、どれだけ導入されていて、どれだけ実際に使われているというのか。 ほとんどの場合、単に「押されている」だけで通過してしまう。

さらにいえば、最近の印鑑は基本的に機械的なフォントなので、実物に触れることさえできれば比較的簡単に模造できる。 もしかしたら陰影照合システムはそれを判別するのかもしれないが、欠けたりしても結構平気なので、それを考えると工業レベルの差は吸収されてしまうのではないだろうか。

署名はもっといい加減で、クレジットカードの署名なんて、私はペン次第でまるで形が変わってしまう。 私はクレジットカードに楷書ではなく、いわゆる「サイン」を使っているのだけど、「何語を操る人物にも模倣しにくい」という点を意識した特殊なサインを使っている。これは、通常の「サイン」に使っているものとも異なる。異なる理由はセキュリティ的な意識があることがひとつ、そしてクレジットカード裏の署名欄が横長であるのがひとつ。 だが、ペン次第で線の交差位置すら変わってしまうので、サインとしては認証できないことがかなり多いと思うのだけど、これで困ったことは一度もない。

いずれもどちらかといえば、裁判にまでなったときに「本人によるものかどうか」を焦点にして真贋が争われるものだと思うのだけど、この時点で「認証」ではできていない。「鑑定」できるに過ぎない。

そして、「本人でない者が勝手に押した印鑑に効力があるか」は法的に不明なのである。 まぁ、この声明の直後に役人が勝手に100度に渡り無断で決裁印を押したとして咎められたのは笑い話でもあったが。

共有される認証という愚

共有される認証ということでいえは「グループパスワード」というものがある。 Unixシステムにも導入されているが、これが有効になっていることはまずない。

その理由は、「共有される秘密は必ず漏洩する」ということからである。

認証の要件は「当人だけが持ちうるものである」ことなのだが、共有されている秘密というのは帰属が曖昧になるため、他に誰も知りえない状態にはなりえない。 暗号としては、「他の人に触れるチャンスのあった秘密」というのは「無効な秘密」とみなす。

グループパスワードをかけるのではなく、個別に認証される個々のアカウントに対するパスワードをグループに所属させるべきである。

この意味では、SSH鍵をマシン外に持ち出してしまうのもアウトである。 Inflatonでは異なるホストまたは異なるユーザーで鍵を使いまわしたことが発覚すると、アカウント停止を含む処置をとる場合があり、極めて厳しい処置をとることになっている。 そうする理由は、機密度の高い情報が取り扱われる非公開のサーバーへのアクセスを外部に晒すことは、他者の秘密情報にアクセスする踏み台を提供するのと同義であるためだ。

ちなみに、Mimir YokohamaでもInflatonでも、同一鍵の異なるアカウントへの使い回しも警告することにしている。

この意味ではホスト間で共有されるGnuPG鍵というのは非常に問題がある気がする。 だから私はOpenSSH鍵は場合によっては暗号化しないが(それでも少なくとも暗号化ファイルシステムもしくは暗号化ブロックデバイス上にはあるが)、GnuPG鍵は必ず暗号化するようにしている。そして、GnuPG鍵の暗号という秘密を漏洩することはない。

だから、決裁権を持つ人が複数いるのであれば複数人の有効な承認を用意すべきで、少なくとも共有されるべきではない。 共有したら、もはや認証としての価値はない。

有効性

認証要素の有効性、というのは簡単に見えて実は非常に難しい。

前述のように、印鑑や署名には認証要素として不十分である。 そもそも、複製が可能ではいけないのだ。本人しか知りえない秘密でなくてはならない。

その意味では頭の中にだけあるパスワードというのは非常に強い。が、実はこれも「本人しか知りえない秘密」かと言うと微妙だったりする。 典型的にはメモを残してしまえば終わりだし、ショルダーハッキングという方法もある。 私は外に持ち出す端末は他と共有されていないパスフレーズを使っているし、誰かの前で繰り返し使うもの(例えばクライアントが使っているサーバーのOpenSSH鍵のパスフレーズ)はその人に固有のものにしている。 実際、私は過去には「彼女によるショルダーハッキング」を食らったことがある。もちろん、そのときも十分に複雑で使い回されないパスフレーズによって防衛に成功したが。

だから実は複雑なパスフレーズを使い回すという方法はあまりよくない。 可能であれば「知りうる手段によって知りうる内容で攻略できない方法」である必要がある。 例えば、生体認証+PINまたはパスフレーズのようにだ。

この意味では、Windowsの「PINのほうが安全」という理屈はわからないではない。 使い回される可能性のあるパスフレーズを人前で打たせるよりは、PINを使ったほうが、「パスフレーズを使った覚えられてオンラインサービスに不正ログインされる」というコンボを防ぐことができる。 しかし、これに関してはそもそもパスフレーズを使い回すようなことを避けるべきで、正直PINのほうがショルダーハッキングによる攻略性は向上する。実際に私にもPINを攻略した経験はある。

私のラップトップの場合は前述のような複雑なパスフレーズ認証に加えて、LUKSによる暗号化を伴っている。 確実とは言えないが、シャットダウンしてしまえばLUKSパスフレーズを外で打つことは基本的にないので、アンロック不可能な状態にできる。 もっとも、これに関してはログインパスフレーズ変更ほどLUKSパスフレーズ変更は容易ではないので、LUKSパスフレーズの取り扱いに細心の注意を払う必要があるが。

同様に、スマートフォンの生体認証というのは脆弱な認証である。 確かに「本人しか持ちえない情報」ではあるのだが、「複製可能」であり、しかも「不正利用可能な」生体情報なので、ロングPINやパスフレーズよりもはるかに脆弱である。もちろん、4桁PINなんかよりはマシだが。

だが、これも考え方次第で、普段生体認証を使っているとパスフレーズを打つ機会が減り、ショルダーハッキングが難しくなる。 Androidスマートフォンは再起動すると生体認証が無効になるので、端末から離れるときや、端末を奪われそうなときなどは再起動すれば防衛することができる。

安全性では生体認証と秘密を用いた複要素認証を行うことが望ましいが、秘匿性、「秘密を秘密たらしめるもの」という観点からいえばそれは最善ではない。

認証を追求するコンピュータ技術

私が知る限り最も合理的で適切な認証と権限を持っているのはSSHだと思う。 もちろん、Unixシステムの認証と権限の設定が十分に堅固であることを前提としてではあるが。 あまり知られていないが、OpenSSHはPKI鍵の利用も可能である。

鍵の共有という問題はあるが、PGPも大変に強力である。 もちろん、隙なしというわけではないことは知っているが、基本的には非対称暗号というのは非常に強力なものであり、「秘密鍵が強固な対称暗号によって暗号化された非対称暗号」はほとんど本人以外は認証できないだろう。

考えられる方法としては、コンピュータと本人を奪った上で、尋問して対称暗号鍵を聞き出すことだが、そこまですれば大概の認証は無効化できるだろう。 これに加えて静脈認証のような強めの生体認証を組み合わせた多要素認証にすれば完璧なのだが、残念ながらそこまで強力な多要素認証を現実的に利用可能なシステムというものがない。

翻って現実では、「はんこを押すだけ」「サインするだけ」「物を持っていればよし」といった非常に雑な認証が行われており、実際のところ本人かどうかなどというのは全く認証できていない。 クレジットカードですら、その認証は極めて脆弱である。

これらの認証を支えているのは、運用であるが、実際のところ私は荷物をかすめ取られたり、勝手に契約されたり解約されたり…とかいろいろ大変な目にあっている。つまり、十分に運用でカバーできていない。 根本的に「本人であることを証明する」ということが社会的に非常に軽視されているのだ。

では、なぜコンピュータ上ではそこまで厳密な認証技術が発達しているのか…というと、real worldと比べて「詐称するのが簡単だから」である。 6文字英数字だの8文字英数字だのといった脆弱そのもののパスワードを採用しているところはreal world同様認証に対する意識が甘いのだと思うが、その程度のものを突破することは全く難しくなく、効力はない。

現実にはPGPは非常に強力で便利である。 PGPの話をすると大抵は暗号化の話になってしまうのだが、現実にはほとんどの場合署名として使用する。つまり、それを書いたのが本人であるということを証明するのが主な用途なわけだ。

実はその気になればPGPはメールのような限られたメディアでのみ利用できるわけでなく、例えば掲示板の書き込みなどでも利用できる。 当たり前に日常的に使いたいのだが、徳丸さんですら「今までに使ったのは1, 2度」というのが現実らしい。 ちなみに、私はメーリングリストなどでつけられる署名と、私が使うように迫った場合を除くと一度もない。 そんなものだ。

ちなみに、本気で本人認証するのであれば、マイナンバーカードには2kb長のRSA鍵が入っているため、これを使えばよいのだけれど、これは必要以上に情報を結びつけてしまうので、好ましいとは思わない。

本人認証というのは基本的にその人がある条件を満たす人と同一人物であることを認証できれば良いのであり、この定義が全て集約されなければならないわけではない。 これは、「しなければいけない」の話であって、情報がほしいかどうかは別の話だ。

例えば企業の決裁であれば、その人が決裁権を持つ人物と同一の人物であることが検証できれば良いのであり、それ以上にその人が何者であるかを知る必要は はない。

これはハンドルネームも同じ話で、「本名至上主義」は根本的に認証というものを理解していない。 ハンドルネームを「偽名」として扱うのも間違っている。ハンドルネームは「公開するための名前」であり、偽名や匿名(自身が何者であるかを隠す行為)とは同じではない。偽名ハンドルネームや匿名ハンドルネームというものが別に存在するのだ。 これは、例えば俳優の名前が芸名であってもそれが誰なのかわからなくなるわけではないのと等しい。

実際、私はもう何年もこの名前(本名)でhacker活動をしているが、別にこれが本名でなかったときに何者であるか不明だったということもない。 また、私が文筆家としてなんという名前で、声優として何という名前かということは知らない人が多いと思うが、それをつなげる必要があることは稀だろうからそれで困るということもないだろう。

本質的に認証というのはその人がある一定の条件を満たすことを証明する行為である。 その意味ではパスワード認証が通ることは認証側からすれば「本人であることを証明している」のではなく、「パスワードを知っていることを証明している」のであり、「パスワードを知っている時点で正当な利用権限を持っているとみなしている」のである。 はんこも同様に、「このはんこが押せる時点で権限を持っているとみなす」わけだが、それが適切かどうかは、また別の話である。

不安定なホスト(非固定IPアドレス, 非常時稼働)をサーバーにする

需要があるらしいので、この話。

不安定なホスト(非固定IPアドレス―浮動IPアドレス, ステートフルIPアドレス, あるいは間違っているけれど可変IPアドレス― または 非常時稼働システム)をサーバーにする、というテーマで、 方法はたくさんあるのだが、私の結論は「商業レベルでやることではない」である。

待ち受ける

DDNS

最も普通の方法だが、実際にはかなり制約が多い。

SFPレコードは効かないし、DNSレコードは反映をコントロールできない1ので逆引きが効かなかったりでサーバーとしては結構痛いことになる。

リバースフォワーディング

これはかなり簡単な方法で、例えば次のようにする。

# ssh -g -R 80:localhost:80 serverhost

これによってインターネットから安定して接続できるホストに代理ホストとして公開してもらう。

不安定なホストの非稼働時は代理ホストが応答する。

フロントエンドプロキシ

リバースフォワーディングと同様に代理ホストに公開してもらうのだが、不安定なホストに通信を転送させるのではなく、中継させるという方法。

まずなんらかの方法で代理ホストと不安定なホストを接続する。 例えばVPNで接続する。

# pppd updetach noauth silent nodeflate pty "ssh root@remote-gw /usr/sbin/pppd nodetach notty noauth" ipparam vpn 10.0.8.1:10.0.8.2

あるいはSSHによる転送を行う。

$ ssh -R 8080:localhost:80

そして、代理ホスト上でリバースプロキシを動作させる。例えばSquidやNginxをプロキシとして、ローカルネットワークホストとして、あるいはローカルホストの別ポートとして転送する。

VPNで接続している場合、代理ホストからは不安定なホストは不安定なグローバルIPアドレスではなくローカルなIPアドレス10.0.8.1として認識される。

不安定なホストの非稼働時は代理ホストが応答する。

逆接続モデル

利用可能なサーバーが限定されてしまうが、サーバーからクライアントに接続するモデルがとれるのであれば、不安定なホストであることはあまり問題にならない。 あるいはサーバーリレーするタイプ(送信専用メールサーバーなど)でも機能する。

VPNで接続する

インターネット公開しているのでないのならば、代理ホストを経由するなどしてVPNで接続し、ローカルなアドレスを代わりに使うという方法が効く。

非IP

「IPアドレスが固定でない」ことはIPアドレスを用いる場合にのみ問題として発生する。 だったらIP以外で通信すれば良い。

ただし、この場合はほとんどローカルなIPアドレスで運用する方法も適用できる(VPNで接続するなど)ことになるし、 リンクローカルな通信であることがほとんどだから、これを転送するハードルを考えるとあまり易しくはない。

例えばセキュリティの都合上でIP接続を許可していないAoEサーバー、なんていうのはアリだ。

Zeroconf

リンクローカルでIPアドレスが固定でないことを考慮しなければならないケースはあまり見当たらないが、 リンクローカルなのであればZeroconfが使える。

IPアドレス制限されたホストに接続する

レンジで許可する

ステートフルに割り振られるIPアドレスのレンジが十分に制限されているのであれば範囲で許可すれば良い。

ゲートウェイ経由

固定IPアドレスを持つホストを経由して接続する。

SSHならば割と簡単にできる。

$ ssh -L 10000:destination.example.com:10000 proxyhost

VPNで代理ホストを経由しても良い。

別の方法で接続する

例えばSSHやVPNなど特定のポートだけIPアドレス制限の対象外とした上で、これらのセキュアトンネルを通じて接続する。

MySQLサーバー等、認証が強力でないサービスのためにIPアドレス制限がなされているのであれば、SSHのように認証が強力な方法についてはIPアドレス制限から除外し、これを経由することを許す、というわけである。

許可されているホストに依頼する

ゲートウェイ接続はできないまでも融通の効くホストで接続が許可されているホストがあるのであれば、これをプロキシとして接続する。

このような場合普通はアプリケーションプロキシとして使うか、SOCKSプロキシとして使うものだ。 このプロキシに対する接続に認証を求めるべきで、異なる方法で安全性を担保させるわけである。

ちなみに、以前紹介したSSHフォワーディングの場合

  1. ローカルなポートフォワーディングにより代理ホストから不安定なホストに通信を中継するようにする。 (これ自体は公開されていない)
  2. プロキシコマンドとして外部ホストから代理ホストに対して接続を行う
  3. これによって確立された経路を使って代理ホストのlocalhost(lo)に対してSSHを通す (これがダイナミックポートフォワーディングによって不安定なホストに転送される)

という方法で、計3本のトンネルが通されることになる。


  1. 「TTLに従う」と信じているなら、ちょっとハッピーすぎる。

兵庫県警、無害なジョークプログラムを紹介した人々を逮捕

どんなこと

兵庫県警は13歳の少女をはじめダイアログループの書かれたウェブサイトへのリンクを掲載した数名を逮捕した。

本質的には一行のコードである。

ちなみに次のようにも書ける。

これがそもそもどの程度の話か…というと、 正直、「ほんのいたずら」というか、もはや、「いたずら」ですらなく、「悪ふざけ」のレベルである。

実害は全くなく、昔はすごくよくあった。 で、結局そのためにアラートが出ている状態でも閉じられるようになった。

だから、対策として

  • アラートが出ているからといって閉じられなくなるわけではない
  • タブを閉じることも、ウィンドウを閉じることもできる
  • 「このサイトで再度ダイアログをを表示しない」というオプションもダイアログに併記されるので、これを使えばダイアログを表示させずページを表示しつづけることもできる

とどうとでもなることで、なにか困ることがあるわけでもない。 GoogleのMariko Kosakaさんによれば

危ないかと聞かれれば、アラートの無限ループはデバイスを壊すわけではなく、個人情報を盗むわけでも無いです。ブラウザはアラートを消す・ページから去る方法を提供していますし、安全を担保するためにsandboxという概念(子供が砂場を荒らしても砂場内だけで、外には害が及ばない)を採用しています。

警察の環境は20年前の化石?

このようにダイアログループを抑制できるようになったのはNetscape Navigator 4からで、20年前のシロモノである。

それを「閉じられなくなった」「コンピュータの利用に支障をきたした」というのなら、兵庫県警サイバー課なるところは、20年以上前の機材を使っていて、かつそれ以降の知識はまるでアップデートもされておらず、そんな人たちが取り締まっている、ということになる。

これがどれだけヤバイことかは、1999年がどんな時代だったかを知ればわかる。

  • 最新のOSはWindows 98SE
  • 携帯電話にはまだカメラがついていない
  • 携帯電話はまだパカパカ(シェルクラム型)が主流になるより前
  • 携帯電話でのメールは有料で、同じキャリアとしかやりとりできないのが普通。 それも、「カタカナで20文字まで」だったりする
  • インターネットは電話線を使って「中継局に電話をかける」アナログモデム式。速度は56kbps (今の1/1000)
  • コンピュータで動画、は技術的には存在するものの実用性に乏しいもの
  • DVDは登場したばかり。 LDは一般的(家庭にはあまりない)
  • 音楽はCDまたはMD。主流はカセットテープ
  • Skypeも登場前で「インターネット無料通話」というものはない。 そもそもインターネット接続は電話代とISP利用料金の従量制でかなり高く、インターネットで通話できるからといって「無料」という感覚は全くない

この時代の頭で「犯罪」だの「悪質」だの言っちゃうわけだ。

日本が全世界の笑いものに

これはよく使われる煽りとかではなくて、本当に 既に 笑いものになっている。

例えばJavaScriptの産みの親であるBrandan Eichさんのツイート でも、「Netscape 4でJavaScriptのループを止められるようにしたぜ」ということを言っている。

Brandan Eichさんは笑っているというよりは怒っている感じだ。 JavaScript生みの親として意見する用意があると言ったとか。

ZDNetでは「Coinhiveを埋め込んだことで人を監獄送りにしたはじめての国」と日本を紹介している。

GoogleのMariko Kosakaさんは大したことではなく、ひどい話である旨発言している。 ちなみに、同氏は

腑に落ちないので何度も言いますけど、for(;;){window.alert('lol')} が「不正指令電磁的記録に関する罪」ですよ(しかも今回は作成が問われたんじゃなくて共用が問われてる)。 誰が不正指令電磁的記録か判断してるの?書類送検受けた検察はどんな取調べするの?

「不正指令電磁的記録供用未遂」だって。sanspo.com/geino/news/201… そうだろうと思ってたけどやっぱり刑法168条の2だ「人が電子計算機を使用するに際してその意図に沿うべき動作をさせず、又はその意図に反する動作をさせるべき不正な指令を与える電磁的記録」っていう拡大解釈が大変懸念されるアレ。

といった発言をしている。 繰り返すが、これは Googleの中の人である

このあたりのBrandan Eichさんと、Mariko Kosakaさんの発言はIT Mediaに記事としてまとめられている

もちろん、世界中からというだけでなく、世間的にも笑いものになっている。

これに対して電凸した人もいるようだが、

日本から子供を消すのか?

「補導」というとやわらかく聞こえるかもしれないが、13歳だから補導なだけで、実質的には逮捕である。

今回の場合、実害がなく、些細な悪ふざけにすぎない。 しかも、本人がやったのではなく、やっている場所を指し示しただけだ。

これと同等のことをした人が逮捕されるのだとしたら、ピンポンダッシュをした子も、落書きをした子も、「ひじって10回言ってみて」と言った子も、みんな逮捕である。 だいたい、ノリとしても被害としてもこれらと同等であり、内容的にも近似している。

この程度の悪ふざけを逮捕すべき事柄だとするのであれば、多分日本から子供はいなくなるだろう。 こうして学習や社会から学ぶ機会を奪われた子供は社会的に生きる能力を持たないし、多くの場合この程度で投獄するのだから、子供は皆投獄されるという話になる。

前提として、法律というのは 恣意的に運用してはならない という前提がある。 もし同じ罪を犯せば その全てが必ず裁かれねばならない のだ。

もし、これと同等の事が重大なる罪であるというのであれば、そのようなことをした人は全て逮捕されるということになる。 子供のいたずらは言うに及ばず、日本でプログラマになれるのは好奇心によって色々試したことのある者ではなく(そのような者の行動は必ず逮捕される)、職業訓練によって言われたものを言われたままに書くことだけを覚えた者だけだということになる。

子供がいなくなることを含めて、確実に日本という国の終わりである。

一方、もし「同じこと、あるいは同等のことであっても全て逮捕されるわけではない」とする(恣意的な運用を行う)ならば、「都合の悪い相手、気に入らない相手、虐げたい相手を投獄する」という、今で言うと北朝鮮よりもさらに悪い国家統治を行っているということになる。 というより、私は過去をみても世界中でこれよりひどい運用を行った法治国家というものを知らない。 そして、実際はこちらであると感じている。法治国家として、 決してやってはならないこと なのにだ。

Coinhive事件から連なる邪悪な行動

そもそもこの話は直接関係ないように思われてしまうが、

  1. 「不正指令電磁的記録に関する罪」の創設
  2. Coinhiveでの逮捕

と深く絡んだ事件である。

「不正指令電磁的記録に関する罪」は「ウィルス作成罪」などと呼ばれたが、「プログラムにバグがあるだけで捕まる」「プログラムを習得しようとするとどうしたって捕まる」「プログラムについて言及するだけで捕まる」などと非難が相次いだ。

これは大喜利的悪ふざけではなく、事実全てのプログラムに関わる人と、プログラムに言及する話題が犯罪要件を構成してしまうものだった。 それに対して「慎重に運用するので言われているような懸念は的外れだ」などと返してきたのだが、そもそも「普通に社会生活を営んでいる人が必然的に犯罪要件を構成するような法律に問題がある」という指摘は無視された。

その上でのCoinhive事件であった。 この事件については以前にChienomiで触れたが、これがまさに「悪質かどうか、内容がなんであるかに関係なく当該法律を拡大解釈して逮捕した」という実例だった。

これは世間的にも受け止め方は微妙だった。 というのは、悪質な広告同様に、Coinhive自体は肯定的には考えにくいものであったこと、また他者のリソースを裏でこっそり使って小遣い稼ぎをしようという思考に抵抗があったことから、「逮捕すべきかどうか」ということと混同してしまう事態を生じたからだ。

結果的に、そのような誘導があって「不正指令電磁的記録に関する罪の拡大解釈と恣意的運用」がまかり通ってしまった。 そして、さらなる拡大解釈と恣意的運用がなされた結果、今回の事件となったわけだ。

また、実際にその恣意性でいえば、今回のケースでいえば「不正なサイトへのリンクを貼れば罪になる」という話なのだが、 私はウィルスへのリンクを貼っているメールや、詐欺サイトへのフィッシングリンクを含むメールなどはとても積極的に通報する方針でやっているのだが、 対応されたことは一度もない

「捕まえやすく、抵抗しづらい相手を逮捕する」ということをしているわけで、純粋な弱いものいじめ、そして陵辱である。

ちなみに、兵庫県警のウェブサイトはGoogleアナリティクスが埋め込まれており、これは訪問者にとっては不可視だから、まさに「利用者にとって意図しない動作をするスクリプト」なのだが、これが話題になってからこっそりと削除するという対応をした。

漉さんの発言は大変良いと思う。

sudoの注意書きこそ、今、兵庫県警をはじめとした捜査機関と、広く報道すらメディアの人に読んで理解してもらいたい。

・他者のプライバシーを尊重する

・行動する前に考える

・大いなる権限には大いなる責任が伴う

検証不可能性重視 = 「悪事を働く恣意がある」

昔から、というかそもそも法律を定めた時点から、日本の司法は密室で行われ、その検証を許さないという傾向にある。 実際、公判によって公開されているように見えても、実際は予め打ち合わせされた通りに進行しており、その打ち合わせは非公開。ただのセレモニーである。

そして、その検証や公開は罪になる。

だが、言うまでもなく、「なにをしたかということを人目に晒せば罪になる」というのは、要は「人目については困る」「暴かれては困る」わけで、最初からやましいことをする気でいるということである。

今回も逮捕の対象になったものが何であるかということを確認することが「危険であり、また犯罪になる可能性がある」と注意喚起したことで「全く問題のないものを拡大解釈によって逮捕した」という事実を隠そうとしたわけだし、実際そのように「検証を求めて提示することで逮捕される」という状況を作り出したことで、「実際に自分で踏んで確認すべきだ」と主著ぅした高木浩光さん1でさえもそのアドレスの掲載は控えた。

もちろん、その内容に害はなく、ZDNetをはじめ海外のメディアは遠慮なくそのコードやアドレスを掲載していることから、実際に警察が強権を振り回すことで人々が萎縮し、検証の目が働かない事態になっていることが明らかである。

そもそも、外部の目や意見に左右されることなく他者を害することができる力というのは明らかにバランス悪く過剰なものである。 大きな力であればこそNoと言われれば行使できないものでなければならず、日本という国はこれまでも潜在的には人を虐げうる国として成り立ってきたが、それが顕在化する傾向が非常に強まっていると言えるだろう。


  1. セキュリティ専門家。産業技術総合研究所情報セキュリティ研究センター主任研究員。

「若い人はスマホを使いこなしている」は本当か

この言説、結構みかけるのだけど、実際のところ私は「間違った言説である」と思っている。

この言説についてちゃんと考察してみよう。

根拠は

おそらくは「使っていること」特に「抵抗なく使っていること」にあるだろう。

実際、おおよそそうだと思う。私は全くそんなことはないので共感はできないが、感想上の実感としても加齢とともに新しいことに対する拒絶感が強くなり1、能力的に習得可能か否か、あるいは理解可能か否かとは関係なく「受け入れないから」習得できない (というか、積極的に「習得しない」という選択をする) と言える。

こんなものは興味関心の強さが使えるようになる度合いに直結しているので、差が生まれるとすれば積極性しかない、とも言える。 別に脳の構造がそもそも違うわけでもなければ、概念の違いが特別習得困難性を生じるようなものでもない。

なぜ積極性が生まれないのか

電車の中で観察する限り、特に年齢によるハンディキャップがあるように見えないし、「若くないからスマホが使えない」というようにも見えない。 ただ、以前はややその傾向があったのは確かだ。スマホを特に好むのは20代前半以下であり、それより上の世代は保守的でスマホ自体に対して否定的な傾向があった。

この構図はごく単純に、「学生はスマホを使っている子がいれば羨んだし、ある程度普及すればスマホでないことがコミュニケーションディスアドバンテージになったから、人間関係を円滑にするためにそもそもスマホが必要だった」のである。 大人になればコミュニケーションの必要性や頻度、そして切実度は下がる傾向が強いから、既に大人であった人にとっては、例えケータイがなければ困るという実態があったとしても、「スマホがなくては困る」ということはそれほどなかったのだろう。

しかし、大人であっても遅ればせながらスマホが浸透し、「みんなが使っている」という事実が出来上がっていけば「スマホであるべき」という状態に流れていくし、スマホの便利な使い方が確立されるに従って相対的には「スマホでないことが不便」という状態になっていく。 だから、大人でもスマホを使うようになる、というわけだ。2

現在スマホの必要性を感じていない人は、よほどこだわりがあるか、知識があるのでなければ、周囲にスマートフォンを積極的に使う人が少ない、あるいはリモートコミュニケーション密度が低い、もしくはその両方なのではないだろうか。

より広く考えても、結局のところ「何らかの理由で積極性を持つものはよく使うようになり、積極性を持たないものは仮に技能を保持したとしてもあまり使わない」という結論になる。 実際、私はスマートフォンに関して一般ユーザーよりは知悉していると自負するが、ほとんど使わない。電車の中でも特に必要がなければいじらないし、家の中でいじることは基本的にない。

そして、世代によって、というよりも「中学生である」「高校生である」「新米社会人である」といった属性によって文化的差異から身近か否かという階層化が生じ、その結果世代によって得手不得手が発生する。 現実として、ちょっと昔は「若い子はパソコンを使いこなしている」と言われたが、現在はコンピュータを得意とする若い子というのはかなり少ない。

本当に使いこなしているのか

コンピュータであってもそうなのだけど、「使う頻度」と「使う幅」には必ずしも相関性はない。 例えば、LINEとツムツムのやり方だけ覚えて、ずーーーーっとLINEとツムツムだけしている人が、突然スマートフォンを高度に活用するように求められていともたやすくできるわけではない。そして、そのような高度な使い方を習得するとして、明確なアドバンテージがあるわけでもない。

「抵抗がなく、使う機会も多いから触っている時間が長い」ということは、単にスマートフォンの利用量と依存度の問題であって、技量を意味していない。

じゃあ、例えば

  • コミュニケーションメディアの特性や問題点や仕様を正確に把握して使い分けられるか
  • アプリのセキュリティ上の問題を把握しているか
  • 同種の複数のアプリの中から状況に対して最適なものを選択できるか
  • スマートフォンの仕組みを理解し、説明することができるか
  • スマートフォンを活用して達成したことがない目標を提示されたときにスムーズにその達成に導くことができるか

というと、そんなことはなくて、むしろスマートフォンを使うことが「自慢できるような先進的なこと」だったときに早期に飛びついた人はかなり高い積極性を持って使っていたから結構詳しくてスキルも高かったりするのだけど、現在は使い方が確立されていることもあって、既知の知識と行動の範疇が「常識の枠組み」となってしまい、スキルは上がらなくなってしまっている。

どちらかといえば「当たり前にあること」は(特段の積極性がなければ)向上面ではプラスに働かないのだ。

近年のスマートフォンなどに代表されるUIは「直感的」だと言うが、実際のところこれまた好奇心に依存するものであり、今や普通になったハンバーガーメニューでさえもスマートフォンライクなUIが先進的だと思って使った人はその探究心から理解しようとして理解できたということでの「直感的」だったし、故に戸惑うことなく利用できるが、既存の知識を利用して使っている今の若い子は今するところも、操作方法もわからないという傾向が強い。3

結局、「若い、という理由で使いこなせているように見えるならば、それは自身の好奇心の衰退と挑戦心の喪失と保守化を示している」と考えて良いのではないだろうか。


  1. neophobiaになる理由はいろいろ言われているが、単純に変化を様々な理由で嫌うことと、現状で目的を達成できているという驕りあたりが特に理由ではないか、とは思う。ただ、そもそも「推測可能な理由がたくさんある」時点で「全然不思議ではない」ということでもある。

  2. 実は私もスマホに対してはかなり保守的で、「持ってはいるけど全く使わない」という状態だった。スマホになったのは、携帯電話ハードウェア的にフィーチャーフォンが利便性を低下させたこと、サービス的にフィーチャーフォンでは利用困難になっていったことが大きい。つまり、「相対的にスマホが便利だから」ではなく、「機能的にフィーチャーフォンの優位性も損なわれから」という理由で、筋金入りである。スマホをちゃんと使うようになったのは2015年からで、これは「willcomがY!Mobileになって、フィーチャーフォンラインナップがなくなった」という理由である。

  3. これはちゃんとデータをとった上で述べている。

毒性オープンデータ症候群

オープンデータとは一体

オープンデータは基本的には国政から出た言葉のようだ。 どうりであまり聞き慣れないと思った。

私の周囲のFacebookerたちがやたら繰り返すので何事かと思ったのだけど、まぁ、予想通りというか。

基本的にというのはどういうことかというと、そもそもの話をすれば情報に対する非占有というハッカー的な文化を別のところがかっさらって形式化したものを日本政府が流用した、というような感じで、もはや理念はどこへやらである。

だが、この話はそう簡単ではない。

「オープンデータ」の概念と価値

そもそもデータというのはなんらかの形で発生するか、蒐集されるものである。 この場合、特に蒐集されたデータが重要になる。

エンジニアは必要があればデータを用意する。 典型的な例でいえば都道府県の47選択肢があるが、あれは手打ちすることが圧倒的に多い。 手打ちがそこまで難しいとは言わないが、ミスが発生する可能性とかかる時間を考えるとしないでいいのであれば避けたい。だから近年はコピペで済ませる人も増えている(そして同じ罠にはまる人も増えている)。

この場合は47要素しかデータがないが、もっと複雑な場合もある。 場合によっては専門的なデータも、一般に有用な場合も多い。

行政はそのようなデータを非常に多く持っている。管理する必要性があって持っているのだが、そのデータを蒐集することで賃金が発生している人がいると考えて良い。 であれば、そのようなデータを民間において再度用意することは一種の車輪の再発明になる。そもそも、行政でなければ整えられないデータというのもある。

だから、「使えるか」「使いやすいか」ということとは関係なく、これらのデータを外部秘とせず共有するということは単純に価値がある。

この観点からいえばウェブというのは原則オープンデータである。 近年はウェブにおいてその利用を制限するのが当たり前になっているが、これはウェブの原理原則に反している。

オープンデータという「形式」の話はどちらかといえばウェブを中心にして考えられているらしい。 それもどうかとは思うが。

情報が入手可能かどうかという点は断絶に等しい差があるので、単純に(データの形式によらず)内部で持っているデータを公開し、その利用に制限をかけないだけでもオープンデータとしての価値があると考えて良い。 というより、ハッカーであるならばそこまでくれば如何様にでも、という話ではあるのだ。

データ形式とエンジニアの怠慢

ところが、なぜか「そのまま使えるデータでなければけしからん」という人が多いらしい。

ちょっとそれは実力と創意工夫の欠如に対する吐き気がするほどの怠慢だと思う。

たとえばこのモーメントのお話。

要は、

  1. 2016年祝日名称
  2. 2016年祝日月日
  3. 2017年祝日名称
  4. 2017年祝日月日
  5. 2018年祝日名称
  6. 2018年祝日月日

という6カラムデータになっているものに対して

祝日名称,月日

という2カラムデータにしろ、ということなのだが、 間違っていると断言できる。 いう その2カラムデータだと、祝日が廃止、あるいは追加になった場合、あるいは名称も月日も異なった場合の対応関係を確定することが不可能になる。 それは彼の用途においてはそのように用意されたデータが使いやすいのかもしれないが、それは対応関係という情報の欠損を生んでいる。 求めているケースではそれでも良いのかもしれないが、全体で見ればその欠損したデータを必要とするケースはあるわけで、配布データを欠損させることを求めるのはおかしい。

さらにいえば、確かにこのデータは恐らくExcelで読むことを前提としたゴミデータが入っている。 だが、データ解析においてノイズが乗るのは 前提の想定であり 、この場合単純に「第二カラムが所定の形式でない行を捨てる」程度の処理でクリーンアップできる。「収集したデータにノイズがなくクリーンアップの必要はない」という考えは根本的に間違っており、例え結果的にクリーンアップが必要なかったとしても、それを期待してはならない。

この程度のことができないのはエンジニアではないし、ましてやプロなどとは到底呼べない。 それでいながらこれに対して罵詈雑言を吐いた者は猛省すべきことだと思う。 だってこの程度であればデータの確認から整形まで30秒もあれば済ませられるし、整形はRubyワンライナーでいける。

$ nkf -Lu -w holiday.csv | ruby -rcsv -e 'CSV.new(ARGF, col_sep: ",", row_sep: "\n"').each {|i| i[1] =~ %r:\d+/\d+/\d+: ? print i : next }

「ダサい」のと「何を提供するか」という問題は別

そもそもオープンデータの意義としては、「内部的に使用しているデータを外部にも利用できるようにする」ことであり、これは「内部データがダサければ、ダサいものが白日のもとにさらさられる」という話ではある。 Mimir YokohamaにもInflatonにも、その気になれば外部に公開できないことはないデータというのもなくはないが、基本的にはRuby Marshal形式になっていたりする。Rubyを使う人からすれば「coolだ」と思ってもらえるだろうが、Rubyistでない人たちからすれば非難轟々だろう。 だが、私が作っているシステムはRubyで動いているわけで、Ruby Marshal形式であることは至って合理的だ。

そして、Excelを使っている人(組織)のデータであればExcelらしいデータになるのはやむを得ないと言える。

ここにあるのは、「データが入手可能で、利用可能である」という事実である。 「そこにあるものをいかに使うか」というのは技量と才覚によるものであり、どうしたって差はつく。 それを考えるべきものであり、データ側が自分の事情に合わせるべきであるというのはあまりに自己中心的思考だ。

私だって、公開されたExcelらしさ満点のCSVは「だっさいなぁ」と思う。吐き気がするくらいだ。

例えばInflaton Plutoでは日本郵便が提供している郵便番号CSVを使っているが、これは住所が3パートになっている(分けられていること自体は良いことだ)のだが、「3パートの分け方が一定でない」上に、「一番うしろのパートには “(以下にないもの)” だの “一円” だのと不規則に書いてある」という地獄のデータになっている。

これは祝日データベースと違い情報の欠損があり、さすがにそのようなケースでは私としても悪態をつきたくなる。 それでも、データとして存在するのとしないのでは大違い、できる範囲でカバーするのもハッカーでありエンジニアだ。

データを公開する、という行為に対して「使いやすいようにデータを加工して出せ」と言うのは、「公開をポリシーや情報管理上の問題」という範囲を越えて「データ形式やデータ内容にもさらなる労力を避け」と要求しているのであり、「そんなコストを払うくらいなら公開しない」という判断がなされたとしてもなんの不思議もない。をする。 実際、Mimir YokohamaにしてもInflatonにしても、直接営業的に関係ないもので外部にリソースを利用可能にするためにドキュメントを書くだけでも大変(数時間かかっているようなものも少なくない)なのに、さらにデータを整形しろ、要求するデータを出せなどと言われたら間違いなく「公開しない」という選択をする。

私にとっても、「ダサいデータはやめろ、有用なデータにせよ」とは思うが、それは提供するデータに対する話ではなくて、「Excelでデータを作るなんてうんざりだ」という話だ。 データ形式としては普通にxslxでデータが出てくることもあることを思えば遥かにマシでもある。

一方、それに対して自分の都合でflamingする人はもっとずっと吐き気のする行為であるということに気づくべきだと思う。

そして、最後にエンジニアではなく、オープンデータという言葉に酔いしれている人たちにも含めて告げよう。 「オープンデータは手持ちのデータを公開し、利用可能にするという以上の意味はない。ほしいデータがあるとか、そのまま使えるなどという幻想を抱くのは無邪気な愚者である」と。