ゼロ幅文字を使ってテキストに電子透かしのようなものを埋め込む手法 95
ストーリー by hylom
こんな手法があったか 部門より
こんな手法があったか 部門より
画面には表示されない「ゼロ幅文字」を使ってコピー&ペーストを検出するという手法があるそうだ(秋元@サイボウズラボ・プログラマー・ブログ、Medium)。
この技術は、非公開の掲示板に投稿された情報が漏れていたという出来事を発端として開発されたという。非公開のサイトにアクセスするためのユーザー名をゼロ幅文字による連続した文字列に変換し、表示するテキストに埋め込むことで、その文字列がコピー&ペーストされた際にコピーを行ったユーザーアカウントを追跡できるという仕組みだ。この仕組みを導入した結果、流出したテキストから流出させたアカウントを特定できたという。
これは確かに有効に使えそう (スコア:4, 参考になる)
デモ [github.io]で適当にユーザー名を使ってコピー。
Googleの検索窓にペーストすると見た目は普通の文章。なのに、検索窓上からコピーしてデモにペーストするとユーザー名が見える。
Windows10のメモ帳にペーストするとやっぱり見た目は普通の文章。なのに、これもユーザー名が見える。
シフトJISなテキストエディタにペーストすると???が挿入されたゴミの入ってる文章。
これなら確かに気づかずやられる人は多く出そう。
Re:これは確かに有効に使えそう (スコア:2)
文字列の先頭からカーソルを[→]で移動していくとゼロ幅のとこで動きが止まりますね。
ゼロ幅の文字数分移動するとまたカーソルが動き出すと。
なんか手品とかに使えそう(違
Re: (スコア:0)
メモ帳だと認識されないのがミソだと思う。これはやられますわ。
Re: (スコア:0)
「これはやられますわ」
Re: (スコア:0)
そうか「普通」だとメモ帳って使うんだ。
Re: (スコア:0)
emacsだと、少し空白が入るけど、気がつかないかも。
vimだとみたいなものが入ってバレる。
(環境依存かもしれないけど)
Re:これは確かに有効に使えそう (スコア:1)
VS Codeは盛大に?が出た。多分atomも出る。
通常テキストいじるのに使ってるnotepad++は出ない。まずい…。
Re:これは確かに有効に使えそう (スコア:1)
使えるゼロ幅文字が少ない(4つ?)みたいなので普通の文字をエンコードしている模様
だから文字数自体は多くなっているみたい。
ためしにデモで半角a一文字でやってみると、「This」の頭のところでカーソル15回分動かなかった。
前から実施されてた? (スコア:2, おもしろおかしい)
有料データベースのデータを加工していておかしな挙動があったので調べたらゼロ幅スペースが入ってたことがあった。
ゴミかと思っていたけど、ユーザ追跡情報だったのかも?
Re:前から実施されてた? (スコア:2)
BOMはもともとZWNBSPであり、先頭にしか置けない文字ではない。
だから、HTMLテキスト中に現れるのも問題ないはず。
Ctrl+U (スコア:1)
ソース確認してからコピペが必要になりそう
#Chromeでのショートカットキー
非公開の掲示板って社内のとかで外部未公開のところかな。
Re: (スコア:0)
一度メモ帳に張り付ければバレバレな気が…
Re: (スコア:0)
そもそも貼り付けて即投稿、って人はそんなに多いのかな
コピペする必要があってもコピペした文章含めて一度は読み直すと思うんだけど…
コピペした部分はスルーしちゃうんだろうか
それにしてもアカウント名が含まれていれば気が付きそうだけど
Re:Ctrl+U (スコア:3)
そもそも貼り付けて即投稿、って人はそんなに多いのかな
コピペする必要があってもコピペした文章含めて一度は読み直すと思うんだけど…
コピペする奴は手間を省くためにコピペするんだからそんな手間かけるわけないだろう
Re:Ctrl+U (スコア:1)
>コピペする必要があってもコピペした文章含めて一度は読み直すと思うんだけど…
誰かさんは全くしませんけどね!
Re:Ctrl+U (スコア:1)
hy|omのことかー
今回のはソースやクリップバードを見ればバレバレだし、お手軽リーク案件対策なんでしょうね。
Re:Ctrl+U (スコア:1)
むしろhylomさんはtypoに見せかけた電子透かしを埋め込んでコピペ検知をしてるんでしょ?
Re:Ctrl+U (スコア:2, おもしろおかしい)
自動でユーザ毎に違うtypoを埋め込むトラップをだな…。hylom方式と名付けよう。
Re:Ctrl+U (スコア:2, おもしろおかしい)
hylamさんに突っ込み入るときには敬意を表すために名前に誤字を入れるのがマナー。
Re:Ctrl+U (スコア:1)
何にせよ実際に特定できたわけで無意味ではないでしょう。
そもそも面白半分に漏洩する阿呆なんて、常識人の岡目八目で語っても仕方ないです。
Re:Ctrl+U (スコア:1)
Re: (スコア:0)
ユーザ名そのものじゃないんですね。失礼
でも不自然な英数字とかが見えると気になる気もする
Re: (スコア:0)
と、安易に考える人が引っかかる罠です
Re: (スコア:0)
メモ帳に貼り付けても、メモ帳自体が「ゼロ幅文字」を表示できないのでバレません
Re:Ctrl+U (スコア:1)
Windowsのメモ帳の話なら、ゼロ幅なら見えない方ですね。
ゼロ幅以外の奴は、幅に応じて1文字分とか2文字分のサイズになります。
Re: 閃いた! (スコア:1)
例えばひらがな・カタカナで、濁点を濁点付きの文字で書くか、静音+合成用濁点で書くかの違いをつければ、1ビット/1濁点の密度でデータを文章中に埋め込めるんじゃないかと。
Re: (スコア:0)
クリップボードにコピーしたテキストに不可視文字が入っていたら警告・除去する拡張機能、なんて需要ありそう?
Re:Ctrl+U (スコア:1)
ゼロ幅文字やbackground-colorと同じfont color設定されている文字があればアラートを出す拡張で良いかも。
#「不可視文字」って脳が認識できない文字だったら怖いな
Re:Ctrl+U (スコア:1)
名状し難き冒涜的な文字…?
Re:Ctrl+U (スコア:1)
異常な角度をもつ段落に書かれている不浄な文字とされる。
Re:Ctrl+U (スコア:1)
「字」と呼ばれてはいるが、人が読める文字とは異なる存在である。
Re:Ctrl+U (スコア:1)
逆に目には見えないけれども脳には認識できるとか。
#文字によるサブリミナル効果
Re:Ctrl+U (スコア:2)
SCPかな…
Re: (スコア:0)
元記事読んだらわかるけど既に対策するChrome拡張が出てる
Re: (スコア:0)
フォントを細工したほうが早いんじゃないの?
というかグリフを削除すれば豆腐になるかも。
Re: (スコア:0)
非表示文字であって、タグじゃないから
ソースだろうとビューアー次第で見えないよ。
Re:Ctrl+U (スコア:2)
あ、そうなんだ、勘違いでした。
見えないようにコントロールしてるんじゃなくて元々見えないんですね。
ブログ見に行った(今さら)
外部ユーザーの攻撃で中身が漏れたというよりは、メンバーの誰かがコピーしているのでは、と考えた Tom さんは、当時気になっていたユニコードのゼロ幅文字を使ったトリックを仕掛けたそうです。
ゼロ幅スペース
https://ja.wikipedia.org/wiki/%E3%82%BC%E3%83%AD%E5%B9%85%E3%82%B9%E3%... [wikipedia.org]
文字コード
Unicodeでは、ゼロ幅スペースはU+200B zero width space (HTML: ​)に割り当てられている[2]。
#一部全角文字に改変済
そして拙速対応出てるし。
自衛ツールの登場など
この記事が広く読まれたので、Chrome拡張が早速登場。ゼロ幅文字を絵文字に変換して表示する拡張で、こういうのを入れておくと何かが埋め込まれているな、というのを見つけられますね。急いで作られたせいか、ユーザーが能動的にクリックしないと絵文字表示されないなど、実用するには今一つですが。
Re: (スコア:0)
wikiに出てた例文をコピーしてmifesに貼り付けたら単語間に?が出てくるから簡単にわかるじゃないのかな
コピペるるときには何らかのエディタ経由だろうし
Re:Ctrl+U (スコア:1)
MIFES懐かしい、REDもあったっけ。
>コピペるるときには何らかのエディタ経由だろうし
イチイチエディタ通してるるんだ。
クリップボード履歴ツールとかでcopyした文字の確認・編集できるのもあったっけ。
Re: (スコア:0)
mifes10だと半角空白の様に表示されるから、'?' で表示されるのはユニコード未対応のバージョンか?
Re: (スコア:0)
Copy Plain Text 拡張が大人気に(違う)
写経方式最強 (スコア:1)
コピペなんかするからばれるんだよ。
写経のように、一文字一文字真心を込めて打ち直せば、くだらんトリックでばれることは無い。
Unicodeの闇 (スコア:1)
昔もUnicode制御文字の左右反転なんて使ってファイル名を偽装するトラップがありましたね。
この手の文字を何かに使えないかなってみんな一度は考えるよね。
Re:Unicodeの闇 (スコア:1)
コマンドプロンプトで上手く取り扱えないからよくよく調べてみたら、ゼロ幅のUnicode制御文字っぽいものが日時の部分に挟まれてて何だこれ?って思ったんだよなぁ。
以来コピペはやめて手打ちで日時を入力するようにしたのだが、ちょっと面倒。これも一種の電子透かしなんだろうか?(多分違う
我が家の環境では動かなかった (スコア:1)
メインPCのfirefoxとIEで軽く試してみたけどusernameが表示されるであろう欄に前者では謎の文字が表示されて、後者ではまったく何も表示されず動かなかった。
どういう理屈でそうなっているのかまったくわからないが、我が家のセキュリティでは既に対応済みらしい。
逆に”お墨付き”を与える可能性 (スコア:0)
予備知識のない対象には有効だろうけど、知識のある者ならこの仕組みを逆手にとって誰かを陥れる細工も可能か?
Re: (スコア:0)
ユーザ名を平文で埋め込むわけでは無いでしょう。署名をつけるだけで改ざん防止になるかと
Re: (スコア:0)
元記事にもそう書いてありますね。
Re:フィッシングに使えそう (スコア:3, 参考になる)
IDNのルールではPunycodeに変換する前にstringprep [ietf.org]によってゼロ幅スペース(U+200B)は削られるので、その手は使えないと思われる。
Re:キャナリ・トラップ (スコア:1)
もう17世紀にはフランシス・ベーコンが、
「ちょっとだけ違う2種類のフォントで文章を打ったら、(今でいう二進法のエンコーディングで)別の情報を埋め込めるんじゃね?」
と発表してますね。