新年あけましておめでとうございます。
今年も本ブログをご愛読よろしくお願いいたします。
昨日仕入れた新ネタである。
なんか、Unicodeを使うと犯罪になる、という噂がある。
1月6日現在で「Unicode 犯罪」で検索すると99,100件ほどヒットする。
ほとんど知恵袋的な相談サイトだ。
今年も本ブログをご愛読よろしくお願いいたします。
昨日仕入れた新ネタである。
なんか、Unicodeを使うと犯罪になる、という噂がある。
1月6日現在で「Unicode 犯罪」で検索すると99,100件ほどヒットする。
ほとんど知恵袋的な相談サイトだ。
どうも、LINEという若い人が連絡に使っているSNSシステムで、一部の文字を処理できないでプログラムが異常終了する事象があるらしい。
詳しい事情は以下のブログ記事に詳しい。
「LINEウイルス」の正体とは―LINE内で流行する「ウイルス攻撃」の現状について | 情報科学屋さんを目指す人のメモ
このブログ記事はものすごく詳しくて、書き方の優しさといい、行き届いた情報といい、LINEをまったく使わないぼくも大変感銘を受けた。
他のLINE関連の記事も読んだが、LINEというのはものすごくいろいろな問題があって、しかもその問題が放置されているということが分かる。
面白過ぎて、読み耽ってしまった。
LINE以外の記事も、勉強になる。
オススメ。
ということで、完璧な記事が出てきて言うことがなくなってしまったわけだが、もしぼくが「Unicodeを使うと犯罪になるの」と、正月に親戚の子にスで聞かれたら、どう答えるべきかを考えてみる。
完璧な記事のリンクの下に劣化版の記事を書くのも何だけど、それはこのブログ前からやっていることだし、それで何か見えてくるものもあるだろう。
コンピューターの中では、映像も、音声も、あらゆる情報が数字になって入っている。
この数字のことをコード(code 符号)と言う。
一番重要なのが文字情報であるが、これも数字になって入っている。
文字を表すのが文字コードである。
Unicode発生以前は、各国語が違う文字コードを使っていた。
アメリカ英語がASCIIで、abcABC123~!@みたいな基本的な英数字と記号が入っている。
Aが0x41(コンピューターの世界では16進数を使いがちである。0x41は10進数の65に当たる)とか、aが0x61のように数字と対応している。
1バイト(8ビット)に収まる。
正確にはASCIIの範囲であれば7ビットに収まる。
ASCIIは0x00〜0x7Fの範囲に収まっている。
ヨーロッパで使うのはISO 8859-1で、ASCIIを拡張したものである。
つまり、ヨーロッパの人がアメリカ英語を使うときは、ISO 8859-1のサブセット(部分集合)であるASCIIをそのまま使う。
Aは0x41、aは0x61である。
で、ヨーロッパにあってアメリカにない字も持っている。
フランスやスペインで使うアクセント記号がついたÀは0xC0で、ASCIIの範囲0x7Fを超えている。
面白いのがアメリカ英語でも使う記号が入っていることで、例えば著作権の©は0xA9である。
ということで、アメリカ人が英語を書くときもISO 8859-1を使っていた。
ISO 8859-1は0x00〜0xFFの範囲に収まっている。
日本でも昔、コンピューターでは英語しか使えなかった。
すぐにいわゆる半角カタカナだけ使えるようになった。
「ワタシノ ナハ イヴ・・・! コンピューター デス・・・!」
みたいな字である。
アメリカ英語(ASCII)と、いわゆる半角カナだけが使える文字コードをJIS X 0201と言う。
つまりアメリカ英語部分はやはりASCIIを使う。
上の例文では感嘆符「!」(0x21)と空白「 」(0x20)がASCII共通である。
JIS X 0201は0x00〜0xFFの範囲に収まっている。
いま
*ASCII(アメリカ英語用)
*ISO 8859-1(アメリカ英語+ヨーロッパ語)
*JIS X 0201(アメリカ英語+日本語(いわゆる半角カタカナのみ))
という3つの文字コードを紹介した。
ASCIIはISO 8859-1にとっても、JIS X 0201にとってもサブセットであるから同時に使用できる。
ていうか、ISO 8859-1やJIS X 0201を使うと、ひとりでにその一部としてASCIIも使っていることになる。
フランス人であっても日本人であっても「CIA」とか「Microsoft」とかいう言葉を使うときは同じ文字コードを使っている。
しかし、ISO 8859-1とJIS X 0201は同時に使えない。
ASCIIを超える部分である0x80〜0xFFに、それぞれ違う字が割り当てられているからである。
たとえば先ほど例示した著作権コードの「©」は、ISO 8859-1の0xA9であるが、この0xA9という16進数に、JIS X 0201ではいわゆる半角カタカナの「ゥ」という字が割り当てられている。
「トゥース」などと言う時の小書きのウである。
よって、欧米のサイトで
「©2014 Funny Corp. All rights reserved.」
などと書かれているWebページを、適切に設定されていないブラウザーで日本人が見ると、
「ゥ2014 Funny Corp. All rights reserved.」
などと見えてしまうことがある。
これが文字化けである。
さて、この文章をここまで見ていて、ちょっと面白いことがある。
この文章(ブログ記事)もインターネットで通信されている文字情報であるが、ISO 8859-1の「©」もJIS X 0201の「ゥ」も両方正しく表示されている。
これは、このブログ記事が、日本の字も、ヨーロッパの字も、全部包含する巨大な文字コード、Unicodeによって書かれているからだ。
つまり、ぼくはこのブログ記事を書くために、Unicodeを使っている。
もしUnicodeが犯罪だったら、ぼくはこの寒空に警察に逮捕されることになるが、そういう心配は一切ない。
Unicodeを使うのは犯罪ではないのである。
Unicodeには、欧米、アジア、中東、アフリカなど、世界中の文字が入っている。
単純な「文字」だけではなくて、ヨーロッパのアクセント記号や日本の濁点、半濁点などをあらゆる字にくっつける特殊な文字も入っている。
たとえばアイヌ語の発音を移すために、「ト゚」というトに半濁点を付けた字を使う。
この「ト゚」は「ト」と「合成用半濁点」という、2文字のUnicodeを使って1文字を表している。
世界のありとあらゆる文字が使えて便利だが、当然日本のアプリケーションであれば日本語のUnicodeしかうまく表示できないこともある。
ヨーロッパのアプリケーションであれば日本語がうまく表示できないこともある。
つまり、各アプリケーションがUnicodeをどこまでサポートするかは、それぞれのアプリケーションを作る人にゆだねられている。
で、アプリケーションの能力の限界で、正しく表示出来ない文字が入力されたときは、想定外の事象であるから、何が起こるか分からない。
これはUnicode以前からあった問題であった。
上に書いた、著作権の©が半角カナのゥになる現象も、不具合である。
本来は著作権が設定されていることを宣言するために「©」と書いているのに、「ゥ」とか表示されてしまっては、意味がわからなくなる。
SunというコンピューターでNemacsというプログラムを使っているときは、半角カナを読むとプログラムが終わってしまった。
Nemacsは有名なエディターEmacsの日本語版である。
当時は「コンピューターで半角カナを使うほうが悪い」という論調があったが、いいとか悪いとか言っていても使う人は使うのである。
今はEmacsで半角カナは当然使える。
(このブログ記事はEmacsで書いている。)
話が散らかったが、ここまでまとめると、
・文字コードのすべてをアプリがサポートしているわけではない
・サポートしていない文字コードを読み込むと、アプリは文字化けしたり、最悪プログラムが終わってしまったりしうる
ということがある。
以下の例は悪用というのかわからないが、ある文字を連続入力して、手からお皿というか光線がぶわぶわぶわ・・・と表示されているツイートである。
これは、リガチャー・タイと行って、複数の字をくっつけて発音する(よく知らない)ために使う記号である。

これを大量に入力すると、アプリ側では想定外の事態であるので、どう表示していいかわからない。
iPhoneのツイッタークライアントでは、どんどん、どんどん字を重ねて表示するので、ツイートをはみだしてしまい、上のような面白いことがおこる。
他にも涙がダーと流れ落ちているツイートも見かける。
こういうの、犯罪だろうか。
想定外の事態を起こす、という意味では、見ている人がびっくりするから罪であるとは言えるが、普通の字を使っていても変なことを言って人をびっくりさせたり、イヤな気持ちにさせる人はいっぱいいるので、これぐらいなら犯罪にはならない。
今回のケースは、ある日本ではめったに使わない難しいUnicode文字を?入れると、LINEが遅くなったり落ちる、という現象のようである。
よく知らない。
ぼくはLINE使わないので、他人ごとなので、よく調べていないのである。
ゴメンナサイ。
これは、包丁を使って人を刺したら犯罪だけど、包丁を持っていたり、包丁で野菜を切ったりするぶんには犯罪にならない、ということと同じであると思われる。
ただ、包丁と違うのは、それが危険でありめったやたらに使うと迷惑であるということが、わかりにくい、ということだ。
ついうっかり包丁を使って人を刺してしまった、包丁で人を刺したら怪我をさせうるということをあいにく知らなかった、という言い訳は、さすがにどんな裁判所でも通らないだろう。
しかし、「こういう文字をこういうアプリで読むと止まるかどうか」というのはなかなか判断が難しい。
文字も、アプリも、すごいスピードで増えている。
その組み合わせもすごいスピードで増えている。
文字コードの話から離れるが、昔「F5攻撃」というのがあった。
Webを見ていて「F5」を押すと、画面が更新(リロード)される。
これは、サーバーがクライアントに情報を送り直しているのである。
当然何回もF5を押すと何回も情報を送らなければならなくなる。
F5を連打すると、サーバーが負荷に耐え切れなくなって、落ちる。
これを悪用して、政治的な理由で官公庁のサイトを落とすという行為があった。
何十人もの人が結託して、あるサイトを狙って何回もF5を押す。
これは犯罪であろう。
ただ、「画面を更新するのは犯罪です」とは、少なくとも昔の法律には書いていないので、取り締まるのもなかなか難しい。
F5攻撃は有名になったので、そのうち「同じクライアントが短い期間でリロード要求をしてきても無視する」といった対策が取られるようになった。
すると犯罪者もさるもので、今度は複数の人にプログラムをばらまいて、遠隔操作でリロード要求をするようになった。
これはDDoS攻撃というが、完全な犯罪である。
しかし、古い法律では取り締まることが出来なかった。
普通犯罪は法律の先を行っているので、こういうことが起こる。
インターネットというのは、まったくの他人と連絡を取り合う行為なので、基本性善説である。
もともとヨーロッパの核物理学者が論文を送り合ったりしていたので、それほどセキュリティには頓着しなかった。
しかし爆発的に人気が出て、みんな使うようになって、誰が何を送ってくるかわからなくなった。
困ったものである。
まとめると
・ある文字をあるアプリに送ると、そのアプリが変な表示をしたり、止まってしまったりすることがある
・知っていてやったら悪いこと。知らないでやってしまったら、まあしょうがない
・法律は犯罪の後追いなので、明らかに悪いことでも犯罪になるとは言えない
この件に関して言えば、LINEの会社(このブログもライブドアブログなので、同じ会社だが)が対策すべきだと思う。
しかしLINE側は「LINEは知り合い同士がつるむツールなので、変なことをしてくる人とは、最初からLINEでつるまなければいいんです」と言っているようだ。
この理屈は通らないと思う。
しかしネットでは、そういうことが往々にして起こる。
昔ぼくは、iPhoneのイヤホンが壊れて困っていた。
ぼくはネット依存症なので「iPhone イヤホン 壊れる」で検索した。
すると、一番上に出てきたブログに「iPhoneのイヤホンが壊れた。クソ腹立つ!!!!!」と書いてあって、その下に「交通事故で死んだ人の写真」が乗っていたのだ。
ぼくはかなり精神的にダメージを受けた。
普通受けるよ。
でも「ネットを使うと犯罪」「ブログを書くと犯罪」「画像ファイルを使うのは法律で制限すべき」ということには、今のところならないし、ぼくもそうなるべきだとは思わない。
ネットやパソコンは、人間の力を何百倍にも増幅する力があるので、いい人がいいことに使うといいんだけど、悪い人が悪いことに使うと最悪である。
まあ、せいぜい気をつけるしかないだろう。
詳しい事情は以下のブログ記事に詳しい。
「LINEウイルス」の正体とは―LINE内で流行する「ウイルス攻撃」の現状について | 情報科学屋さんを目指す人のメモ
このブログ記事はものすごく詳しくて、書き方の優しさといい、行き届いた情報といい、LINEをまったく使わないぼくも大変感銘を受けた。
他のLINE関連の記事も読んだが、LINEというのはものすごくいろいろな問題があって、しかもその問題が放置されているということが分かる。
面白過ぎて、読み耽ってしまった。
LINE以外の記事も、勉強になる。
オススメ。
ということで、完璧な記事が出てきて言うことがなくなってしまったわけだが、もしぼくが「Unicodeを使うと犯罪になるの」と、正月に親戚の子にスで聞かれたら、どう答えるべきかを考えてみる。
完璧な記事のリンクの下に劣化版の記事を書くのも何だけど、それはこのブログ前からやっていることだし、それで何か見えてくるものもあるだろう。
Unicodeとは
Unicodeというのは文字コードの一種である。コンピューターの中では、映像も、音声も、あらゆる情報が数字になって入っている。
この数字のことをコード(code 符号)と言う。
一番重要なのが文字情報であるが、これも数字になって入っている。
文字を表すのが文字コードである。
Unicode発生以前は、各国語が違う文字コードを使っていた。
アメリカ英語がASCIIで、abcABC123~!@みたいな基本的な英数字と記号が入っている。
Aが0x41(コンピューターの世界では16進数を使いがちである。0x41は10進数の65に当たる)とか、aが0x61のように数字と対応している。
1バイト(8ビット)に収まる。
正確にはASCIIの範囲であれば7ビットに収まる。
ASCIIは0x00〜0x7Fの範囲に収まっている。
ヨーロッパで使うのはISO 8859-1で、ASCIIを拡張したものである。
つまり、ヨーロッパの人がアメリカ英語を使うときは、ISO 8859-1のサブセット(部分集合)であるASCIIをそのまま使う。
Aは0x41、aは0x61である。
で、ヨーロッパにあってアメリカにない字も持っている。
フランスやスペインで使うアクセント記号がついたÀは0xC0で、ASCIIの範囲0x7Fを超えている。
面白いのがアメリカ英語でも使う記号が入っていることで、例えば著作権の©は0xA9である。
ということで、アメリカ人が英語を書くときもISO 8859-1を使っていた。
ISO 8859-1は0x00〜0xFFの範囲に収まっている。
日本でも昔、コンピューターでは英語しか使えなかった。
すぐにいわゆる半角カタカナだけ使えるようになった。
「ワタシノ ナハ イヴ・・・! コンピューター デス・・・!」
みたいな字である。
アメリカ英語(ASCII)と、いわゆる半角カナだけが使える文字コードをJIS X 0201と言う。
つまりアメリカ英語部分はやはりASCIIを使う。
上の例文では感嘆符「!」(0x21)と空白「 」(0x20)がASCII共通である。
JIS X 0201は0x00〜0xFFの範囲に収まっている。
いま
*ASCII(アメリカ英語用)
*ISO 8859-1(アメリカ英語+ヨーロッパ語)
*JIS X 0201(アメリカ英語+日本語(いわゆる半角カタカナのみ))
という3つの文字コードを紹介した。
ASCIIはISO 8859-1にとっても、JIS X 0201にとってもサブセットであるから同時に使用できる。
ていうか、ISO 8859-1やJIS X 0201を使うと、ひとりでにその一部としてASCIIも使っていることになる。
フランス人であっても日本人であっても「CIA」とか「Microsoft」とかいう言葉を使うときは同じ文字コードを使っている。
しかし、ISO 8859-1とJIS X 0201は同時に使えない。
ASCIIを超える部分である0x80〜0xFFに、それぞれ違う字が割り当てられているからである。
たとえば先ほど例示した著作権コードの「©」は、ISO 8859-1の0xA9であるが、この0xA9という16進数に、JIS X 0201ではいわゆる半角カタカナの「ゥ」という字が割り当てられている。
「トゥース」などと言う時の小書きのウである。
よって、欧米のサイトで
「©2014 Funny Corp. All rights reserved.」
などと書かれているWebページを、適切に設定されていないブラウザーで日本人が見ると、
「ゥ2014 Funny Corp. All rights reserved.」
などと見えてしまうことがある。
これが文字化けである。
さて、この文章をここまで見ていて、ちょっと面白いことがある。
この文章(ブログ記事)もインターネットで通信されている文字情報であるが、ISO 8859-1の「©」もJIS X 0201の「ゥ」も両方正しく表示されている。
これは、このブログ記事が、日本の字も、ヨーロッパの字も、全部包含する巨大な文字コード、Unicodeによって書かれているからだ。
つまり、ぼくはこのブログ記事を書くために、Unicodeを使っている。
もしUnicodeが犯罪だったら、ぼくはこの寒空に警察に逮捕されることになるが、そういう心配は一切ない。
Unicodeを使うのは犯罪ではないのである。
アプリの能力の限界
ではなぜUnicodeを使うのが犯罪、という話が出てきたのだろうか。Unicodeには、欧米、アジア、中東、アフリカなど、世界中の文字が入っている。
単純な「文字」だけではなくて、ヨーロッパのアクセント記号や日本の濁点、半濁点などをあらゆる字にくっつける特殊な文字も入っている。
たとえばアイヌ語の発音を移すために、「ト゚」というトに半濁点を付けた字を使う。
この「ト゚」は「ト」と「合成用半濁点」という、2文字のUnicodeを使って1文字を表している。
世界のありとあらゆる文字が使えて便利だが、当然日本のアプリケーションであれば日本語のUnicodeしかうまく表示できないこともある。
ヨーロッパのアプリケーションであれば日本語がうまく表示できないこともある。
つまり、各アプリケーションがUnicodeをどこまでサポートするかは、それぞれのアプリケーションを作る人にゆだねられている。
で、アプリケーションの能力の限界で、正しく表示出来ない文字が入力されたときは、想定外の事象であるから、何が起こるか分からない。
これはUnicode以前からあった問題であった。
上に書いた、著作権の©が半角カナのゥになる現象も、不具合である。
本来は著作権が設定されていることを宣言するために「©」と書いているのに、「ゥ」とか表示されてしまっては、意味がわからなくなる。
SunというコンピューターでNemacsというプログラムを使っているときは、半角カナを読むとプログラムが終わってしまった。
Nemacsは有名なエディターEmacsの日本語版である。
当時は「コンピューターで半角カナを使うほうが悪い」という論調があったが、いいとか悪いとか言っていても使う人は使うのである。
今はEmacsで半角カナは当然使える。
(このブログ記事はEmacsで書いている。)
話が散らかったが、ここまでまとめると、
・文字コードのすべてをアプリがサポートしているわけではない
・サポートしていない文字コードを読み込むと、アプリは文字化けしたり、最悪プログラムが終わってしまったりしうる
ということがある。
悪用
さて、ある文字コードがアプリを誤動作させることがわかると、それを悪用する人が出てくる。以下の例は悪用というのかわからないが、ある文字を連続入力して、手からお皿というか光線がぶわぶわぶわ・・・と表示されているツイートである。
これは、リガチャー・タイと行って、複数の字をくっつけて発音する(よく知らない)ために使う記号である。
これを大量に入力すると、アプリ側では想定外の事態であるので、どう表示していいかわからない。
iPhoneのツイッタークライアントでは、どんどん、どんどん字を重ねて表示するので、ツイートをはみだしてしまい、上のような面白いことがおこる。
他にも涙がダーと流れ落ちているツイートも見かける。
こういうの、犯罪だろうか。
想定外の事態を起こす、という意味では、見ている人がびっくりするから罪であるとは言えるが、普通の字を使っていても変なことを言って人をびっくりさせたり、イヤな気持ちにさせる人はいっぱいいるので、これぐらいなら犯罪にはならない。
今回のケースは、ある日本ではめったに使わない難しいUnicode文字を?入れると、LINEが遅くなったり落ちる、という現象のようである。
よく知らない。
ぼくはLINE使わないので、他人ごとなので、よく調べていないのである。
ゴメンナサイ。
これは、包丁を使って人を刺したら犯罪だけど、包丁を持っていたり、包丁で野菜を切ったりするぶんには犯罪にならない、ということと同じであると思われる。
ただ、包丁と違うのは、それが危険でありめったやたらに使うと迷惑であるということが、わかりにくい、ということだ。
ついうっかり包丁を使って人を刺してしまった、包丁で人を刺したら怪我をさせうるということをあいにく知らなかった、という言い訳は、さすがにどんな裁判所でも通らないだろう。
しかし、「こういう文字をこういうアプリで読むと止まるかどうか」というのはなかなか判断が難しい。
文字も、アプリも、すごいスピードで増えている。
その組み合わせもすごいスピードで増えている。
文字コードの話から離れるが、昔「F5攻撃」というのがあった。
Webを見ていて「F5」を押すと、画面が更新(リロード)される。
これは、サーバーがクライアントに情報を送り直しているのである。
当然何回もF5を押すと何回も情報を送らなければならなくなる。
F5を連打すると、サーバーが負荷に耐え切れなくなって、落ちる。
これを悪用して、政治的な理由で官公庁のサイトを落とすという行為があった。
何十人もの人が結託して、あるサイトを狙って何回もF5を押す。
これは犯罪であろう。
ただ、「画面を更新するのは犯罪です」とは、少なくとも昔の法律には書いていないので、取り締まるのもなかなか難しい。
F5攻撃は有名になったので、そのうち「同じクライアントが短い期間でリロード要求をしてきても無視する」といった対策が取られるようになった。
すると犯罪者もさるもので、今度は複数の人にプログラムをばらまいて、遠隔操作でリロード要求をするようになった。
これはDDoS攻撃というが、完全な犯罪である。
しかし、古い法律では取り締まることが出来なかった。
普通犯罪は法律の先を行っているので、こういうことが起こる。
インターネットというのは、まったくの他人と連絡を取り合う行為なので、基本性善説である。
もともとヨーロッパの核物理学者が論文を送り合ったりしていたので、それほどセキュリティには頓着しなかった。
しかし爆発的に人気が出て、みんな使うようになって、誰が何を送ってくるかわからなくなった。
困ったものである。
まとめると
・ある文字をあるアプリに送ると、そのアプリが変な表示をしたり、止まってしまったりすることがある
・知っていてやったら悪いこと。知らないでやってしまったら、まあしょうがない
・法律は犯罪の後追いなので、明らかに悪いことでも犯罪になるとは言えない
この件に関して言えば、LINEの会社(このブログもライブドアブログなので、同じ会社だが)が対策すべきだと思う。
しかしLINE側は「LINEは知り合い同士がつるむツールなので、変なことをしてくる人とは、最初からLINEでつるまなければいいんです」と言っているようだ。
この理屈は通らないと思う。
しかしネットでは、そういうことが往々にして起こる。
昔ぼくは、iPhoneのイヤホンが壊れて困っていた。
ぼくはネット依存症なので「iPhone イヤホン 壊れる」で検索した。
すると、一番上に出てきたブログに「iPhoneのイヤホンが壊れた。クソ腹立つ!!!!!」と書いてあって、その下に「交通事故で死んだ人の写真」が乗っていたのだ。
ぼくはかなり精神的にダメージを受けた。
普通受けるよ。
でも「ネットを使うと犯罪」「ブログを書くと犯罪」「画像ファイルを使うのは法律で制限すべき」ということには、今のところならないし、ぼくもそうなるべきだとは思わない。
ネットやパソコンは、人間の力を何百倍にも増幅する力があるので、いい人がいいことに使うといいんだけど、悪い人が悪いことに使うと最悪である。
まあ、せいぜい気をつけるしかないだろう。