Adi Shamir 先生来訪

本日、イスラエルのAdi Shamir先生が研究所に来訪しました。言うまでもなく RSA を発明した3人のうちの "S" の人。RSA暗号の過去(完成したいきさつ)と現在、未来というテーマでお話を伺いました。

特に、過去の話は面白かったです。

  • 図書館に行ったときにテーブルの一番上におかれていたIEEE Trans. on Information Theory に、Diffie Hellman が後悔公開鍵方式の可能性について書いた記事が載っていて、それを見て興味を持った
  • が、もともとまったく暗号の知識がなかった。でもそれが逆に新しい視点で考えるのに役立った
  • なかなかうまくいかなかったが、1977年の4月のPassover(ユダヤの過ぎ越しの祭り)の時に、ワインを飲みすぎて眠れず、眠れないのでウンウン考えていたら良いアイディアが出て、それが breakthrough だった
  • 発表後、夏休み旅行に出ている間に論文希望の封筒が7000通も届いていて、オフィスのドアを開けたとたんに崩れてきて危うく死ぬところだった
  • 3人を紹介する写真を撮るときに、後ろの黒板に上段でP=NPと書いておいて、知らない人が見たらこの3人がP=NP予想を証明したとびっくりするようなジョークを仕込んだ
  • 初期のPCは遅くて512ビットRSAの復号に2分もかかった。それで、高速処理のために専用のハードウェアを作ろうとしたけど、もともと何の知識もなかったので失敗した

などなど...
このテーマで何回も話をされているらしく、まるで落語のように練れた、ユーモラスな語り口でした。

最近は、ハードウェアの電力差分解析攻撃などをやっているようです。専用ハードウェアを作ろうとした経験が役に立ったのかも。
有名な方なので既に名誉職のような感じなのかと思っていたのですが、まだまだ現役バリバリのようで、すごくパワフルでした。

The Multi-Principal OS Construction of the Gazelle Web Browser, Usenix Security 2009

Wang, H. J.; Grier, C.; Moshchuk, A.; King, S. T.; Choudhury, P. & Venter, H, The Multi-Principal OS Construction of the Gazelle Web Browser, pp.417-432, Usenix Security Symposium 2009.

Microsoftの Helen Wang らによって最近発表された、新しい、安全なブラウザのアーキテクチャの提案。
Webブラウザにロードされるコンテンツの主体 (principle) ごとに細かい単位でOSのプロセスに分離して実行される。また、既存のコンテンツとの互換性を大事にしていて、テストした20のWeb appのうち、19は動いた。

セキュリティモデル

  • Same Origin Policy (SOP)がベース。
  • ただし、<iframe>だけでなく、<object>, <embed>, <img>, ある種の <input> は、それぞれにロードされたコンテンツのオリジン単位の主体となる。つまり、SOPが plug-inのコンテンツにまで適用される。

アーキテクチャ

  • 主体 (principle) の単位で、別のOSプロセスに分離される (principle instance)。プロセスとOSの間にBrowser Kernelがいて、全体をマネージする。
  • principleの判別方法は、基本的に same-origin policyと同じで、{プロトコル、サーバ、ポート} の組で判定される。
    • 別のTabで同じURLにアクセスしても、別の principleになる
    • ただし、あるページの中のIFRAMEが親ページと同じドメインなら、デフォルトで同じ principleになる。ただし、親ページ側で制限をかけることも可能
  • Browser Kenelの仕事は
    • principle instance (プロセス) のOSリソースへのアクセスを仲介
    • ブラウザクロームの管理
    • OSからあがってきたユーザイベント(キーボード、マウスイベントなど)を principle instance にディスパッチ
    • 新しいURLにナビゲートしたときに、そのURL のための保護ドメインを作って principle instance を立ち上げたり、ブラウジングが終わったら保護ドメインを破棄したり
  • 画面描画に関しては、
    • principle instanceがコンテンツをレンダリングして bitmap にするところまで責任がある。ブラウザカーネルがbitmapをうけとって、画面のどの部分にどう描画するかを決める。
    • ページ内にフレームなどが含まれる場合、ページの principle instanceが 大家(地主)、フレームの principleが店子、になる。大家と店子の間で互いのコンテンツを干渉しないように、細かいアクセス制御が行われる。たとえば
      • 店子フレームの場所は大家しかRWできない
      • 店子フレームのサイズは大家がRW、店子は自分のサイズをRできる
      • 店子フレーム内に表示している情報は店子しか見られない
      • 店子フレームのURLは、大家はWのみ、店子はR/W可能


既存のブラウザとの違い

  • Chromeとの違い
    • Chrome では主体はサイトのドメイン名(サーバ名を含まない)だが、Gazelleでは Same-origin Policy (SOP)と同じ(サーバ名を含む)
    • ChromeではWebサイトの主体と組み込まれた主体は同じプロセス上に共存、Gazelleでは別の保護ドメインに分離
    • Chromeでは異なるサイトのプラグインのコンテンツが同じプロセス上に共存するが、Gazelleでは別の保護ドメインに分離
    • Chromeではレンダリングエンジンが複数主体の間でSOPを強制するが、Gazelleではレンダリングエンジンへの依存なし
  • IE8との違い
    • IE8ではブラウザのタブごとに別のプロセスとして動作するが、タブの中にIFRAMEがある場合などには同じプロセス内で表示されることになる
  • OP Browser[2] との違い
    • OP BrowserではHTML engine, javascript などが別のプロセスとして分離される
    • そのため、コンポーネント間のIPCのコストが高い
    • コンポーネントはWebページをレンダリングする際に運命を共にするようになってるので、ひとつがコケると殆どのページが表示されない
    • OSレベルの cross-principleな保護はできない
  • Tahoma[11]との違いは、TahomaではWeb applicationごとにVMで分離するが、Web applicationの区切りはmanifestファイルで決めるので、既存のブラウザの principleごと(SOPということ?)の保護はできない

医療の個人情報保護とセキュリティ その1

最近、医療情報の電子化とかそれに伴うプライバシー保護問題とかHIPAAとかいう話をよく聞くのだけれど、具体的にどういう問題があるのかいまひとつピンと来ない、ということが多いです。
ちょっと勉強しようと思って本を買ったので、読んでまとめてみます。

医療の個人情報保護とセキュリティ―個人情報保護法とHIPAA法

第1章

欧米の医療における個人情報保護の歴史

医療というのは患者のプライバシーに深く関係する一方で、感染性の疾患の流行を防ぐとか、様々な患者のデータを集積して新しい解決策を見出すなど、経験や情報の適切な共有も重要。この相反する要求をバランスよく解決することが、医療における個人情報保護の中心命題。

医療における医者の守秘義務は、紀元前300年ごろにギリシャの医療従事者ギルドで作られた「ヒポクラテスの誓い」にまでさかのぼり、これは近年まで殆ど変わっていない。

近年になって、1974年に制定された米国のプライバシー法 (Privacy Act.) で、「自己に関する情報に対するコントロール権」に主眼が置かれるようになって、これが大きな変革。その後、

と続く。

日本の現状

日本では憲法には直接これらの言葉は定義されていないが、現在の憲法学では憲法13条がプライバシーや個人情報を保障した権利だと解釈されている。

「すべて国民は、個人として尊重される。生命、自由および幸福追求に対する国民の権利については、公共の福祉に反しない限り、立法その他の国政の上で、最大の尊重を必要とする」

プライバシー権の内容は、

に大きく二分される。

刑法の場合

  • 刑法134条の秘密漏示罪が基本条文となる。この条文では意思、薬剤師、医薬品販売業者、助産師が業務上知りえた秘密について守秘義務を負うことが明記されている。
  • 看護士等などについては明記されていないため、近年保険師助産師看護師法が改正され、同様の条項が追加された。

民法の場合

  • アメリカでは、医師と患者の関係は、信認関係を持つ契約関係であり、医師には信認義務 (fiduciary duty) が適用されると考えられる。
  • 日本では信認義務という言葉が法律的に広く認知されておらず、医師・患者関係を準委任契約と解し、委任契約上の義務として守秘義務を定めている。
新しいプライバシーの概念とOECE8原則

1980年に制定された OECDのプライバシーガイドライン (Guidelines on the Protection of Privacy and Transborder Flows of Personal Data) では次の「個人情報の自己コントロール権」を基本とした、8つの原則がある。OECD参加国に対しては、ガイドラインに基づく法整備を考慮することを求めている。

  • 収集制限の原則
  • データ完全性の原則
  • 目的明確化の原則
  • 利用制限の原則
  • 安全管理の原則
  • 公開の原則 (個人データにかかわる開発・運用・方針を公開すべき)
  • 本人参加の原則 (データの存在を知る権利、修正・削除を求める権利)
  • 責任の原則
日本におけるカルテ開示の流れ

一般的にはプライバシー情報は本人が一番詳しいが、医療情報の場合には患者本人は内容を理解できないという、情報の不均衡がある。

  • 明治〜昭和初期には、患者に容易に読まれないようにカルテをドイツ語で書く習慣があった。
  • つまり、診療情報は、患者の精神状態や理解力を見定めた上で、医療従事者が編集した上で知らしめるという慣習があった

しかし近年、わが国でもカルテ開示が進む方向にある。これには二つの方向がある:

  • 医療訴訟などでカルテが裁判の証拠として使用される場合で、証拠保全命令によって強制的に提出させられる
  • 市民運動として、診療行為の明細やカルテの開示を求める動き

ただし、いろいろセンシティブな問題がある

  • 開示することが患者の不利益になる場合(例:がん告知で精神的ショック)
  • 本人以外のものが開示を求める場合
    • 患者が死亡した場合の遺族からの開示要求。死者のプライバシーに関してはプライバシー保護の法律で言及されていない
    • 未成年など、判断力が未熟・欠落している場合。児童虐待が疑われる場合など注意が必要。

2002年に日本医師会が「診療情報の提供に関する指針(第2版)」を発表している。

個人情報保護法などの制定

2003年5月 日本で個人情報保護に関する法律が成立した。
また、2004年12月、厚生労働省の検討会が、個人情報保護法が医療の場面で適用される場合のガイドラインを確定させて公表した。

CLAMP: Practical Prevention of Large-Scale Data Leaks

IEEE Symposium on Security and Privacy (Oakland) 2009で発表された論文を読んでみた。

SQLインジェクションなどにより、Webサーバが攻撃されて、DBに格納されている他のユーザの情報まで盗まれてしまう、というような攻撃への対策となる、Webアプリケーションサーバアーキテクチャの提案。

手法としては、Webのリクエストが来たら、ユーザ認証を行って、ユーザごとに別の仮想Webサーバ (WebStack) を作る。それぞれの WebStack は XenVM上で動くので、ユーザごとのサーバ側のアプリケーション・インスタンスが分離されるイメージ。さらに、DBのクエリーを制限するProxy (Query Restrictor) が WebStack からのDBクエリを仲介し、他のユーザに属するデータにアクセスできないような制限をかけることで、Webアプリケーションを信頼することなく、サーバ側のデータを保護できる、というもの。

感想:
今年のOaklandで発表された論文なのだが、正直あまり新しさを感じない。Xenで環境分離することによりユーザやドメインごとのデータを保護するというのは、最近ではすでにおなじみの手法だと思うし、ブラウザ側でやっているものは既にあったと思う (ちょっとどの論文だったか失念)。
Query Restrictorによる制限というのも、 「where UID=今アクセスしているユーザ」的な clause をSQL Query に追加しているだけに見える。
ユーザごとにVMインスタンスを起動するというのも、リソース使用量やパフォーマンスの面で、あまり現実的ではないのではないだろうか。

Quantifying Information Leaks in Outbound Web Traffic

Quantifying Information Leaks in Outbound Web Traffic, by Kevin Borders (Web Tap Security, Inc.), Atul Prakash (University of Michigan), IEEE Symposium on Security & Privacy 2009.

タイトルや Introduction から Webトラフィック上でのDLP (Data Leakage Prevention) の話なのかと思ったのだが、どうもそうではないらしい。前提としている脅威シナリオが最初に明確に書いてないのだが、どうやら、「ブラウザやClient上のスパイウェアが、Webトラフィックをチャネルとして利用して、外部に情報を漏洩させる可能性がある」というのが前提らしい。


ネットワークトラフィックの量は膨大なので、Sensitive dataを検出しようという試みはうまくいかない。かわりにこの論文では、実際に漏出している情報の量を定量的に評価し、制御する手法を提案する。

情報量を定量的に評価する手法は、HTTPがHTMLとJavaScriptとインタラクトするプロトコルに着目し、HTTPリクエストの期待されるコンテンツを推測する手法。実際のコンテンツと期待されるコンテンツの edit distanceが、流れている情報の量となる。

  • Webページをparseして、含まれているリンクを取り出す。たとえば、ここに含まれているリンクへのアクセスは予想の範囲内、といえる。
    • ブラウザ環境をシミュレートしてリンクを抽出する
    • HTML内のFormの名前と、HTTP Postのパラメータ名のマッチングを取る
    • HTTP headerなどの固定情報は排除する
  • また、Request/Responseのタイミングを使った covert channel も推測


メリット:

  • 情報量を知る既知の手法の一つは、gzipのような圧縮アルゴリズムを使って、繰り返し出現する文字列を圧縮してしまうプロトコル不可知な方法。しかし、提案手法のようにプロトコルのインタラクションを意識することで、より効率よく情報量を測れる。
  • 提案手法は情報量をoverestimateすることはありうるが、underestimateはしないので、情報漏えいの上限を制御できる。
  • 提案手法は完全に暗号化されたトラフィックでは使えない。

OpenAjax Hub 2.0 による安全なマッシュアップ

マッシュアップとかウィジェットなどが流行ってますが、安易に行うと、セキュリティ上の危険があります。OpenAjax Hub という業界標準技術を使って安全にウィジェットマッシュアップを行う方法の解説記事を書きました。

企業システムでも使われるウィジェット技術: 第 2 回 OpenAjax Hub 2.0 による安全なマッシュアップ