(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6046745
(24)【登録日】2016年11月25日
(45)【発行日】2016年12月21日
(54)【発明の名称】無効なエスクロー・キーの検出
(51)【国際特許分類】
H04L 9/14 20060101AFI20161212BHJP
G06F 21/62 20130101ALI20161212BHJP
【FI】
H04L9/00 641
G06F21/62
【請求項の数】20
【全頁数】17
(21)【出願番号】特願2014-552276(P2014-552276)
(86)(22)【出願日】2013年1月10日
(65)【公表番号】特表2015-505221(P2015-505221A)
(43)【公表日】2015年2月16日
(86)【国際出願番号】US2013020913
(87)【国際公開番号】WO2013106492
(87)【国際公開日】20130718
【審査請求日】2016年1月12日
(31)【優先権主張番号】13/350,360
(32)【優先日】2012年1月13日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】500046438
【氏名又は名称】マイクロソフト コーポレーション
(74)【代理人】
【識別番号】100140109
【弁理士】
【氏名又は名称】小野 新次郎
(74)【代理人】
【識別番号】100075270
【弁理士】
【氏名又は名称】小林 泰
(74)【代理人】
【識別番号】100101373
【弁理士】
【氏名又は名称】竹内 茂雄
(74)【代理人】
【識別番号】100118902
【弁理士】
【氏名又は名称】山本 修
(74)【代理人】
【識別番号】100173565
【弁理士】
【氏名又は名称】末松 亮太
(72)【発明者】
【氏名】レンガナタン,ヴェーンカタラマン
(72)【発明者】
【氏名】カーヴァー,ブライアン・トーマス
(72)【発明者】
【氏名】ジャンプ,ダニエル・ブラウン
(72)【発明者】
【氏名】レブラン,デーヴィッド・チャールズ
(72)【発明者】
【氏名】ワイス,サミュエル・アイラ
【審査官】
中里 裕正
(56)【参考文献】
【文献】
特開2000−267565(JP,A)
【文献】
特表2001−516913(JP,A)
【文献】
特開2008−295008(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/14
G06F 21/62
(57)【特許請求の範囲】
【請求項1】
エスクロー・キー有効性データを生成するコンピューター実装方法であって、コンピューターによって実装される、
コンピューターを用いて、ファイルを保存する命令を受ける動作と、
前記コンピューターを用いて、秘密鍵を用いてセキュア・ハッシュを生成する動作であって、前記秘密鍵が前記ファイルを暗号化するために用いられる動作と、
前記コンピューターを用いて、前記セキュア・ハッシュを用いて公開鍵をハッシュして、エスクロー・キーについての有効性データを生成する動作であって、前記有効性データが、前記ファイルに対して後に行われる動作の間に前記エスクロー・キーの有効性を判断するために、また、前記エスクロー・キーが有効であると判断したときに前記ファイルへの動作を実行するために、有効性判断動作の一部として用いられるように生成される動作と、
前記コンピューターを用いて、前記有効性データ、前記公開鍵、および前記秘密鍵を保存する動作と
を実行することを含む、コンピューター実装方法。
【請求項2】
請求項1記載のコンピューター実装方法であって、前記セキュア・ハッシュが、ハッシュ・ベース・メッセージ認証コード(「HMAC」)である、コンピューター実装方法。
【請求項3】
請求項1記載のコンピューター実装方法であって、前記ファイルに対して前記後に行われる動作が、開く動作、再保存動作、またはバックグラウンド・タスクである、コンピューター実装方法。
【請求項4】
請求項3記載のコンピューター実装方法であって、前記後に行われる動作が、前記コンピューター上で実行される、コンピューター実装方法。
【請求項5】
請求項3記載のコンピューター実装方法であって、前記後に行われる動作が、別のコンピューター上で実行される、コンピューター実装方法。
【請求項6】
請求項1記載のコンピューター実装方法であって、更に、
前記ファイルを開く命令を受ける動作と、
前記ファイルを開く命令を受け取ったことに応答して、秘密鍵の解読を求めるユーザー入力を要求する動作と、
ユーザー入力を受け取る動作と、
前記ユーザー入力が有効かを判断する動作と、
前記ユーザー入力が有効であると判断したことに応答して、
前記秘密鍵を解読する動作と、
前記秘密鍵を用いて他のセキュア・ハッシュを生成する動作と、
前記他のセキュア・ハッシュを用いて前記公開鍵をハッシュして、前記エスクロー・キーについて他の有効性データを生成する動作と、
前記有効性データを前記他の有効性データと比較する動作と、
前記有効性データが前記他の有効性データと一致した場合に、前記エスクロー・キーが有効であると判断して、前記ファイルを開く動作と、
前記有効性データが前記他の有効性データと一致しない場合に、前記エスクロー・キーが有効ではないと判断し、無効なエスクロー・キーを前記ファイルから除去する動作と
を含む、コンピューター実装方法。
【請求項7】
請求項6記載のコンピューター実装方法であって、更に、前記無効なエスクロー・キーを記録する動作を含む、コンピューター実装方法。
【請求項8】
請求項7記載のコンピューター実装方法において、前記無効なエスクロー・キーを記録する動作が、システム監査を生成する動作を含む、コンピューター実装方法。
【請求項9】
請求項1記載のコンピューター実装方法であって、更に、
前記エスクロー・キーに対してソルト値を生成する動作と、
前記ソルト値を前記セキュア・ハッシュに追加する動作と、
を含む、コンピューター実装方法。
【請求項10】
請求項1記載のコンピューター実装方法において、前記有効性データ、前記公開鍵、および前記秘密鍵を保存する動作が、前記有効性データ、前記公開鍵、および前記秘密鍵を前記ファイルに保存する動作を含む、コンピューター実装方法。
【請求項11】
請求項1記載のコンピューター実装方法において、前記有効性データ、前記公開鍵、および前記秘密鍵を保存する動作が、前記有効性データ、前記公開鍵、および前記秘密鍵を、前記ファイルを収容するファイル・コンテナーに保存する動作を含む、コンピューター実装方法。
【請求項12】
エスクロー・キーの有効性を判断するコンピューター実装方法であって、コンピューターによって実装される、
コンピューターを用いて、ファイルに対して動作を実行する命令を受ける動作であって、前記ファイルが、それに関連付けられたエスクロー・キーについての有効性データを有し、前記有効性データが、セキュア・ハッシュを用いて証明書データをハッシュすることによって生成され、前記セキュア・ハッシュが、前記ファイルに対して実行された保存動作の間に、前記ファイルを暗号化するのに用いられる秘密鍵から生成される動作と、
前記ファイルに対して前記動作を実行する前記命令を受け取ったことに応答して、前記コンピューターを用いて、前記秘密鍵の解読を求めるユーザー入力を要求する動作と、
前記コンピューターを用いて、ユーザー入力を受け取る動作と、
前記コンピューターを用いて、前記ユーザー入力が有効であるかを判断する動作と、
前記ユーザー入力が有効であると判断したことに応答して、
前記コンピューターを用いて、前記秘密鍵を解読する動作と、
前記コンピューターを用いて、前記秘密鍵を用いて他のセキュア・ハッシュを生成する動作と、
前記コンピューターを用いて、前記他のセキュア・ハッシュを用いて前記証明書データをハッシュして、前記エスクロー・キーについての他の有効性データを生成する動作と、
前記コンピューターを用いて、前記有効性データを前記他の有効性データと比較する動作と、
前記有効性データが前記他の有効性データと一致した場合に、前記コンピューターを用いて、前記エスクロー・キーが有効であると判断し、前記ファイルに対して前記動作を実行する動作と、
前記有効性データが前記他の有効性データと一致しない場合に、前記コンピューターを用いて、前記エスクロー・キーが有効ではないと判断し、無効なエスクロー・キーを、前記ファイルとの関連から除去する動作と
を実行することを含む、コンピューター実装方法。
【請求項13】
請求項12記載のコンピューター実装方法において、前記セキュア・ハッシュおよび前記他のセキュア・ハッシュが、ハッシュ・ベース・メッセージ認証コード(「HMAC」)である、コンピューター実装方法。
【請求項14】
請求項12記載のコンピューター実装方法において、前記動作が、開く動作、再保存動作、またはバックグラウンド・タスクである、コンピューター実装方法。
【請求項15】
請求項12記載のコンピューター実装方法であって、更に、前記無効なエスクロー・キーを記録する動作を含む、コンピューター実装方法。
【請求項16】
請求項15記載のコンピューター実装方法において、前記無効なエスクロー・キーを記録する動作が、システム監査を生成する動作を含む、コンピューター実装方法。
【請求項17】
請求項12記載のコンピューター実装方法において、前記ファイルに対して前記動作を実行する命令を受け取る前に、前記保存されたファイルが、前記有効性データ、前記エスクロー・キー、前記証明書データ、および前記秘密鍵を含む、コンピューター実装方法。
【請求項18】
請求項12記載のコンピューター実装方法において、前記ファイルに対して前記動作を実行する命令を受け取る前に、前記ファイルがファイル・コンテナーに保存され、前記ファイル・コンテナーが、前記有効性データ、前記エスクロー・キー、前記証明書データ、および前記秘密鍵を含む、コンピューター実装方法。
【請求項19】
コンピューター読み取り可能命令が格納されたコンピューター記憶媒体であって、前記命令がコンピューターによって実行されると、前記コンピューターに、
ファイルを開く命令を受け取らせ、前記ファイルが、それに関連付けられたエスクロー・キーについての有効性データを有し、前記有効性データが、ハッシュ・ベース・メッセージ認証コード(「HMAC」)を用いて証明書データをハッシュすることによって生成され、前記ハッシュ・ベース・メッセージ認証コードが、前記ファイルに対して実行された保存動作の間に、前記ファイルを暗号化するのに用いられる秘密鍵から生成され、
前記ファイルを開く命令を受け取ったことに応答して、前記秘密鍵の解読のために認証信任状を要求させ、
認証信任状を受け取らせ、
前記認証信任状が有効であるかを判断させ、
前記認証信任状が有効であると判断したことに応答して、
前記秘密鍵を解読させ、
前記秘密鍵を用いて、他のHMACを生成させ、
前記HMACを用いて前記証明書データをハッシュして、前記エスクロー・キーについての他の有効性データを生成させ、
前記有効性データを前記他の有効性データと比較させ、
前記有効性データが前記他の有効性データと一致した場合に、前記エスクロー・キーが有効であると判断させ、前記ファイルを開く命令に応答して前記ファイルを開かせ、
前記有効性データが前記他の有効性データと一致しないと判断した場合に、前記エスクロー・キーが有効でないと判断させ、無効なエスクロー・キーを、前記ファイルとの関連から除去させ、前記無効なエスクロー・キーを記録させる、
コンピューター記憶媒体。
【請求項20】
請求項19記載のコンピューター記憶媒体であって、更に、コンピューター読み取り可能命令が格納され、前記コンピューターによって実行されると、前記コンピューターに、
前記ファイルを開く命令を受け取る前に、前記ファイルを保存する命令を受け取らせ、
前記秘密鍵から前記HMACを生成させ、前記秘密鍵が、前記ファイルを暗号化するために用いられ、
前記HMACを用いて前記証明書データをハッシュして、前記エスクロー・キーについての有効性データを生成させ、
前記有効性データ、前記証明書データ、および前記秘密鍵を、前記ファイル、または前記ファイルを収容するファイル・コンテナーに書き込み保存させる、
コンピューター記憶媒体。
【発明の詳細な説明】
【背景技術】
【0001】
ワード・プロセッシング・アプリケーション、スプレッドシート・アプリケーション、およびプレゼンテーション・アプリケーションというような文書作成アプリケーションは、文書暗号化メカニズムを設けることがあり、このメカニズムによってユーザーはパスワードを供給することができ、その文書に収容された情報に対する不正アクセスを防止するために、この文書を暗号化するときにこのパスワードが使用される。暗号化文書内に収容された情報は、いつかそのうちパスワードに関係ない(privy to)他者によって必要とされることがある。例えば、ある会社の従業員によって作成されたパスワードによってある文書が暗号化され、この従業員が会社を辞めた場合または単にパスワードを忘れた場合、誰もこの文書にアクセスすることができなくなる。この文書は、人事または経理情報というような、重要で機密的な会社情報を含む可能性がある。
【0002】
パスワードを知ることなく暗号化文書の解読を可能にする努力において、エスクロー・キー・メカニズムを用いることができる。エスクロー・キー・メカニズムとは、パスワードで保護された文書に、エスクロー・キーと呼ばれる、証明書に基づく解読鍵を自動的に追加する構成可能なメカニズムである。エスクロー・キー・メカニズムは、パスワードの知識を必要とせず、証明書を用いて、パスワードで保護された文書を解読することを可能にし、以上で述べたような場合に、文書復元のシナリオを可能にする。
【0003】
暗号化文書は、二段階システムを利用することがある。例えば、文書が保存される毎に、ランダムに生成される秘密鍵が、文書全体を暗号化するために用いられる。新たな鍵を得るためには、ユーザーによって提供されるパスワードが用いられ、新たな鍵は、秘密鍵を暗号化するために用いられる。暗号化された秘密鍵は、文書内に平文テキストとして格納することができる。文書を解読するためには、ユーザーが入力するパスワードから鍵を導き出し、これを用いて秘密鍵を解読し、次いでこの秘密鍵を用いて文書を解読する。
【発明の概要】
【発明が解決しようとする課題】
【0004】
エスクロー・キー・メカニズムは、文書のために構成された公開鍵を用いて秘密鍵を暗号化することによって機能する。公開鍵は、証明書に含まれても含まれていなくてもよい。暗号化された秘密鍵(即ち、エスクロー・キー)は、パスワードで暗号化された秘密鍵と共に、文書にも追加される。こうして、秘密鍵を有する者は誰でも、秘密鍵を解読することができ、したがって文書を解読することができる。秘密鍵は、文書が保存される毎に変化するので、文書内にある既存のエスクロー・キーはいずれも、新たな秘密鍵で更新されなければならない。エスクロー・キー・メカニズムは、保護された文書へのアクセスを得ようとする攻撃者に対する脆弱性がない訳ではない。
【0005】
本明細書において行われる開示が開示されるのは、これらおよびその他の理由のためである。
【課題を解決するための手段】
【0006】
本明細書では、攻撃者によってファイルに挿入されたエスクロー・キーというような、無効なエスクロー・キーの検出についての概念および技術を説明する。一例として、そして以上で説明したエスクロー・キー・メカニズムの使用に伴う潜在的な脆弱性を例示するために、攻撃者がパスワードで保護されたファイルへのアクセスを得たが、この攻撃者はパスワードを有しておらず、したがってファイルを開くことができないというシナリオを考える。この攻撃者は、彼または彼女自身のエスクロー・キーを含むように、ファイル・コンテナーを変更することができる。攻撃者は秘密鍵を知らないので、新たに追加された悪意のエスクロー・キーは有効でない。言い換えると、悪意のエスクロー・キーは、実際の中間暗号化鍵以外の鍵を含む。次いで、合法的なユーザーがファイルを開き、その後再度保存すると、ファイル・コンテナー内における全てのエスクロー・キーを、新たな秘密鍵で更新することができる。この更新の結果、攻撃者の悪意のエスクロー・キーは、元々含むデータ正しくない鍵ではなく、今や有効な暗号化秘密鍵(即ち、新たな秘密鍵)を有することになる。したがって、攻撃者は、解読しファイルにアクセスすることができ、これによってエスクロー・キー・メカニズムを迂回することができる。
【0007】
本明細書において開示する概念および技術は、ファイルが保存された後に、以上の攻撃シナリオを可能にすることなく、ファイル内にある既存のエスクロー・キーをリフレッシュして維持することができるメカニズムを提供する。証明書の所有者だけがエスクロー・キーを解読することができるので、有効性をチェックするためにエスクロー・キーを解読することはできない。また、本明細書において開示する概念および技術は、証明書の秘密鍵にアクセスする必要なく、ファイル・コンテナー内において各エスクロー・キーの有効性を判断するメカニズムも提供する。
【0008】
一態様によれば、ハッシュに基づくメッセージ認証コード(「HMAC」)のようなセキュア・ハッシュが、1つの秘密情報(例えば、秘密鍵)と、各エスクロー・キーに特定の1つの公開情報(例えば、証明書ハッシュ、または公開鍵)とを用いて生成される。秘密鍵を用いることによって、エスクロー・キー有効性データが、秘密鍵を知ることによってでないと生成できないことを保証し、攻撃者がしかるべきエスクロー・キー有効性データを生成することを防止する。証明書ハッシュまたは公開鍵を公開データとして用いることによって、各エスクロー・キー有効性データを特定の証明書に結び付け、これによって、攻撃者が他のエスクロー・キーから単純に有効性データをコピーすることを防止する。無効であることが分かったエスクロー・キーはいずれも、ファイル・コンテナーから除去することができ、会社、個人、または他のエンティティが、可能なセキュリティ違反の試みを知ることができるように、監査記録(audit log)を生成することができる。以前の合法的エスクロー・キーを更新する必要性を知らなかったソフトウェアのバージョンによって文書が編集された場合、同様であるが悪意でない状態が起こり得る。いずれの場合でも、供給されたエスクロー・キーを更新すべきか否かについて、検出することができる。
【0009】
他の態様によれば、ファイルを保存するための保存動作の間、ファイル・コンテナー内の各エスクロー・キーに有効性データを追加する。次いで、ファイルを開くために行われる開く動作の間、有効性データを生成し、保存動作の間に各エスクロー・キーに追加された有効性データと比較する。一致が存在する場合、エスクロー・キーは有効であると判断する。そうでない場合、エスクロー・キーは無効であると判断され、このエスクロー・キーをファイル・コンテナーから除去し記録することができる。
【0010】
尚、以上で説明した主題は、コンピューター制御装置、コンピューター・プロセス、計算システムとして、あるいはコンピューター読み取り可能記憶媒体のような生産品目として実現できることは認められてしかるべきである。これらおよび種々の他の特徴は、以下の詳細な説明を読み、添付図面を検討することから明白になるであろう。
【0011】
この摘要は、詳細な説明において以下で更に説明する概念から選択したものを、簡略化した形態で紹介するために設けられている。この摘要は、特許請求する主題の主要な特徴や必須の特徴を特定することを意図するのではなく、またこの摘要は特許請求する主題の範囲を限定するために用いられることを意図するのでもない。更に、特許請求する主題は、本開示のいずれかの部分に記される欠点のいずれかにも欠点の全てを解決する実施態様にも限定されるのではない。
【図面の簡単な説明】
【0012】
【
図1】
図1は、例示的実施形態にしたがって、1つ以上のエスクロー・キーについての有効性データを文書に追加する方法の態様を示す流れ図である。
【
図2A】
図2Aは、例示的実施形態にしたがって、1つ以上のエスクロー・キーの有効性を判断する方法の態様を示す流れ図である。
【
図2B】
図2Bは、例示的実施形態にしたがって、1つ以上のエスクロー・キーの有効性を判断する方法の態様を示す流れ図である。
【
図3】
図3は、本明細書において紹介する実施形態の態様を実現することができる計算システムの、例示的なコンピューター・ハードウェアおよびソフトウェア・アーキテクチャーを示すコンピューター・アーキテクチャー図である。
【発明を実施するための形態】
【0013】
以下の詳細な説明は、無効なエスクロー・キーの検出のための概念および技術に関する。本明細書において説明する概念および技術の一態様によれば、HMACのようなセキュア・ハッシュを、1つの秘密情報(例えば、秘密鍵)と、各エスクロー・キーに特定的な1つの公開情報(例えば、証明書ハッシュ)とを用いて生成する。秘密鍵は、中間鍵によって保護された暗号化情報に格納することができ、この中間鍵は、文書を解読することを許可された者にしか知られていない。秘密鍵を用いることによって、エスクロー・キー有効性データが、秘密鍵を知ることによってでないと生成できないことを保証し、攻撃者がしかるべきエスクロー・キー有効性データを生成することを防止する。証明書ハッシュまたは公開鍵を公開データとして用いることによって、各エスクロー・キー有効性データを特定の証明書に結び付け、これによって、攻撃者が他のエスクロー・キーから単純に有効性データをコピーすることを防止する。無効であることが分かったエスクロー・キーはいずれも、ファイル・コンテナーから除去することができ、会社、個人、または他のエンティティが、可能なセキュリティ違反の試みを知ることができるように、システム監査記録(audit log)を生成することができる。
【0014】
本明細書において説明する主題は、オペレーティング・システムおよびアプリケーション・プログラムのコンピューター・システムにおける実行と合わせて実行するプログラム・モジュールという一般的なコンテキストで紹介するが、他の実現例も他のタイプのプログラム・モジュールと組みあわせて実行できることは当業者には認められよう。一般に、プログラム・モジュールは、ルーチン、プログラム、コンポーネント、データ構造、および他のタイプの構造を含み、特定のタスクを実行するかまたは特定の抽象データ型を実装する。更に、本明細書において説明する主題は、ハンドヘルド・デバイス、マルチプロセッサー・システム、マイクロプロセッサー・ベースまたはプログラマブル消費者用電子機器、ミニコンピューター、メインフレーム・コンピューター等を含む他のコンピューター・システム構成とでも実施できることは、当業者には認められよう。
【0015】
以下の詳細な説明では、その一部をなす添付図面を参照する。図面では、具体的な実施形態または例が、例示として示される。これより図面を参照すると、様々な図にわたって同様の参照番号は同様のエレメントを表し、無効なエスクロー・キーの検出のための計算システム、コンピューター読み取り可能記憶媒体、およびコンピューター実装方法を紹介する。
【0016】
これより
図1に移り、1つ以上のエスクロー・キーについて有効性データをファイルに追加する方法100の態様について詳細に説明する。尚、本明細書において開示する方法の動作は、必ずしもいずれかの特定の順序で提示される訳ではなく、動作の内一部または全部の実行を代わりの順序(1つまたは複数)で行うことも可能であり、想定されることは理解されてしかるべきである。動作は、説明および図示を容易にするために、例証された順序で提示されている。添付する請求項の範囲から逸脱することなく、動作を追加すること、省略すること、および/または同時に実行することもできる。
【0017】
また、図示の方法は、いずれの時点でも終了させることができ、その全体を実行する必要がないことも理解されてしかるべきである。これらの方法の一部または全部の動作、および/または実質的に同等の動作は、以下で定められるような、コンピューター記憶媒体上に含まれるコンピューター読み取り可能命令の実行によって遂行することができる。「コンピューター読み取り可能命令」という用語およびその異形は、本明細書および特許請求の範囲において用いられる場合、ルーチン、アプリケーション、アプリケーション・モジュール、プログラム・モジュール、プログラム、コンポーネント、データ構造、アルゴリズム等を含むように、ここでは広く用いられる。コンピューター読み取り可能命令は、単一プロセッサーまたはマルチプロセッサー・システム、ミニコンピューター、メインフレーム・コンピューター、パーソナル・コンピューター、ハンドヘルド計算デバイス、プロセッサー・ベースのプログラマブル消費者用電子機器、その組み合わせ等を含む、種々のシステム構成において実現することができる。
【0018】
つまり、本明細書において説明する論理動作は、(1)計算システム上で実行するコンピューター実装アクト(computer-implemented act)またはプログラム・モジュールのシーケンスとして、および/または(2)計算システム内部において相互接続された機械論理回路または回路モジュールとして実現される。実施態様は、計算システムの性能およびその他の要件に依存する選択事項である。したがって、本明細書において説明する論理動作は、状態、動作、構造的デバイス、アクト、またはモジュールといように、様々に呼ばれる。これらの動作、構造的デバイス、アクト、およびモジュールは、ソフトウェア、ファームウェア、特殊目的ディジタル・ロジック、およびそのあらゆる組みあわせで実現することができる。
【0019】
方法100について、ファイルを保存するために実行される保存動作中において実行されるものとして説明する。本明細書において以下で説明する態様は、必ずしも一定のアプリケーション、アプリケーション・タイプ、ファイル、またはファイル・タイプに特定的ではない。実施形態では、アプリケーションが、第1状態においてファイルを開き、編集または他の相互作用というようなユーザー入力を受け、第1状態とは異なる第2状態でファイルを保存するように構成される場合がある。他の実施形態では、ファイルは保存されるが、ファイル・データには変更が行われない場合もある。実施形態では、メタデータ、書式パラメータ、またはファイル・データではないがファイルに収容される他のデータに対する変更と共に、ファイルが保存される場合もある。実施形態では、アプリケーションは、ファイルを保存するように構成されるが、開くおよび保存すること以外の動作を実行する能力を有してもよく有しなくてもよい。例えば、実施態様によっては、アプリケーションがファイルを編集するようには全く構成されなくてもよい。実施形態では、保存動作がコピーおよびペースト動作を含む場合もあり、第1ファイルがコピーおよびペーストされることによって、新たなファイルを作成し保存する。
【0020】
実施形態では、ファイルが、ワード・プロセッサー文書、スプレッドシート文書、プレゼンテーション文書、描画文書、または合体文書というような文書である場合がある。実施形態では、このような文書を作成するおよび/または見るために用いられるアプリケーションが、それぞれ、ワシントン州、RedmondのMicrosoft Corporationから入手可能なMICROSOFT WORDのようなワード・プロセッシング・アプリケーション、ワシントン州、RedmondのMicrosoft Corporationから入手可能なMICROSOFT EXCELのようなスプレッドシート・アプリケーション、ワシントン州、RedmondのMicrosoft Corporationから入手可能なMICROSOFT POWERPOINTのようなプレゼンテーション・アプリケーション、ワシントン州、RedmondのMicrosoft Corporationから入手可能なMICROSOFT VISIOのような描画アプリケーション、またはワシントン州、RedmondのMicrosoft Corporationから入手可能なMICROSOFT SHAREPOINTのような合作アプリケーションである場合もある。実施形態では、アプリケーションが、文書を見ることは許可するが文章を編集することはユーザーに許可しない読み取り専用アプリケーションである場合もある。他の実施形態では、アプリケーションが、ユーザーに文書を見ることおよび編集することを可能にするように構成された読み取り/書き込みアプリケーションである場合もある。アプリケーションは、コンピューター・システム上にローカルにインストールされた単体アプリケーション、コンピューター・システムによって離れてアクセスされるリモート・システム上にインストールされたリモート・アプリケーション、またはウェブ・アプリケーションであってもよい。他の文書タイプおよび関連するアプリケーションも考えられる。
【0021】
また、方法100は、1つ以上のエスクロー・キーを収容するファイルについても説明する。あるいはまたは加えて、ファイルを収容するファイル・コンテナーが1つ以上のエスクロー・キーを収容することもできる。一部のエスクロー・キーをファイル・コンテナーに格納し、他のエスクロー・キーをファイル自体に格納することもできる。ファイル・コンテナーは、コンテナーまたはラッパ・メタ−ファイル・フォーマット(wrapper meta-file format)であり、その仕様が、どのように異なるデータ・エレメントおよびメタデータがファイル内に共存するかについて記述する。
【0022】
方法100は、動作102において開始し、ここで、ファイルをセーブする命令を受ける。このファイルをセーブする命令は、ファイルを保存するように構成されたアプリケーションによってあるいはそれのために提示されるグラフィカル・ユーザー・インターフェース(「GUI」)または他のユーザー・インターフェースを通じて受け取ることもできる。GUIは、メニューまたはメニューの一部として、アイコンとして、リボン・インターフェースまたはリボン・インターフェースの一部として、ポップアップGUIとして、これらの何らかの組み合わせとして等で表現されても良い。ファイルを保存する命令は、キーボード、キーパッド、マウス、ゲームパッド、リモート・コントロール・デバイスのようなインターフェース・デバイスによって、あるいは他のいずれかのインターフェース・デバイスによって、ユーザーがアプリケーションにファイルを保存するように命令することができるメカニズムを設ける1つ以上のボタン、タッチスクリーン、タッチパッド、マイクロフォン、または他のマン−マシン・インターフェースを通じて受け取ることができる。これらのインターフェース・デバイスの1つ以上における専用のまたはプログラミングされた物理的な保存ボタンも考えられる。
【0023】
方法100の残りの動作は、動作102において受け取ったファイルを保存する命令によってトリガーされる保存動作の間に実行される。動作102から、方法100は動作104に進み、ここで、秘密鍵を用いてセキュア・ハッシュを生成する。秘密鍵は、実施形態では、ランダムにまたは擬似ランダムに生成され、ファイルを暗号化するために用いられる。実施形態では、ユーザーによって供給されるパスワードを用いて、秘密鍵が暗号化される場合もある。実施形態では、暗号化された秘密鍵が、ファイル内に平文テキストで格納される場合もある。あるいは、暗号化された秘密鍵は、他の何らかのフォーマットでファイルに格納されてもよい。
【0024】
実施形態では、動作104において生成されたセキュア・ハッシュが、ハッシュ・メッセージ認証コード、別名ハッシュ・メッセージ認証チェックサム(「HMAC」)である場合もある。実施形態では、HMACが、秘密鍵を1つの秘密情報として用い、証明書データまたは公開鍵のような、HMACが生成されている対象である(for which)特定のエスクロー・キーに特定的な何らかの公開情報を用いて生成される場合もある。代替実施形態では、HMACの代わりに、秘密キーおよび証明書データ(または公開鍵)の規則的なハッシュが用いられる。規則的なハッシュを利用する実施形態において結果的に得られるハッシュは、暗号的に弱いが、それでもなお、規則的なハッシュの使用は、ある種のシナリオでは適用することができる。
【0025】
各保存動作の間に、または他のエントロピーの目的のために、秘密鍵が各保存動作中に変化しない場合、実施形態では、エスクロー・キー毎にランダム・ソルト値(random salt value)を生成し、各場合に応じて、ハッシュまたはHMACに含ませる。次いで、このソルト値をファイル・コンテナーに、エスクロー・キー・データの残りと共に格納する。
【0026】
動作104から、方法100は動作106に進み、ここで、動作104において生成したセキュア・ハッシュを用いて証明書データをハッシュし、エスクロー・キーについての有効性データを生成する。あるいは、証明書データの代わりに、公開鍵を用いてもよい。次いで、方法100は動作108に進み、ここで、ファイルについての有効性データ、証明書データ、および暗号化された秘密鍵を、ファイル・コンテナーに書き込む。あるいは、このデータの全部または一部が直接ファイルに書き込まれる。次いで、方法100は動作110に進み、ここで、ファイル・コンテナーを保存する。動作110から、方法100は動作112に進み、ここで方法100は終了する。
【0027】
これより
図2Aおよび
図2Bに移り、1つ以上のエスクロー・キーの有効性を判断する方法200の態様について詳細に説明する。方法200は、
図1に示した方法100を参照して以上で説明した保存動作の実行中に保存されたファイルを開くための開く動作の間に実行されるものとして説明する。本明細書において以下で説明する態様は、必ずしも一定のアプリケーション、アプリケーション・タイプ、ファイル、またはファイル・タイプに特定的ではない。実施形態では、アプリケーションがファイルを開くように構成されるが、開く以外の動作を実行する能力を有しても有さなくてもよい。例えば、実施態様によっては、アプリケーションがファイルを編集するように全く構成されなくてもよい。実施形態では、方法200にしたがってファイルを開くために用いられるアプリケーションが、以上で説明した方法100によってファイルを保存するために用いられたのと同じアプリケーションである場合もある。他の実施形態では、これらのアプリケーションが異なる場合もある。ファイルをセーブするために用いられるコンピューター・システムまたはデバイスは、ファイルを開くために用いられたコンピューター・システムまたはデバイスと同じであっても異なってもよい。
【0028】
最初に
図2Aに移ると、方法200が開始して動作202に移り、ここで、ファイルを開く命令を受ける。このファイルを開く命令に応答して、秘密鍵解読を求めるユーザー入力を要求する。実施形態では、ユーザー入力の要求は、アプリケーション内に提示される通知でありユーザーにユーザー入力を供給するように促すが、この要求は代わりの形態を取ってもよい。実施形態では、要求されるユーザー入力が、認証信任状である場合もあり、この認証信任状は、パスワード、パスコード、個人識別番号、セキュリティ質問/回答、パスフレーズ、音声パスフレーズ、他のセキュリティ証明書、これらの組み合わせ等を含むが、これらに限定されるのではない。実施形態では、要求されるユーザー入力が、以下のカテゴリの内2つ以上からの多要素認証信任状を求める要求を含む場合もある。ある者が有する何か、ある者である何か(something one is)、ある者が知る何か、ある者が行った何か、およびある者が位置するどこか。
【0029】
ファイルを開く命令は、ファイルを開くように構成されたアプリケーションによってまたはそれのために提示されるGUIあるいは他のユーザー・インターフェースを通じて受け取ることもできる。GUIは、メニューまたはメニューの一部として、アイコンとして、リボン・インターフェースまたはリボン・インターフェースの一部として、ポップアップGUIとして、これらの何らかの組み合わせとして等で表されても良い。あるいは、ファイルを開く命令は、キーボード、キーパッド、マウス、ゲームパッド、リモート・コントロール・デバイスのようなインターフェース・デバイスによって、あるいは他のいずれかのインターフェース・デバイスによって、ユーザーがアプリケーションにファイルを開くように命令することができるメカニズムを設ける1つ以上のボタン、タッチスクリーン、タッチパッド、マイクロフォン、または他のマン−マシン・インターフェースを通じて受け取ることができる。これらのインターフェース・デバイスの1つ以上における専用のまたはプログラミングされた物理的な「開く」ボタンも考えられる。
【0030】
動作202から、方法200は動作204に進み、ここで、動作202におけるユーザー入力を求める要求に応答するユーザー入力を受ける。次いで、方法200は動作206に進み、ここで、動作204において受け取ったユーザー入力が有効か否か判断する。この判断は、動作204において受け取ったユーザー入力を、予期されるパスワードまたは他の予期される認証信任状というような、予期されるユーザー入力と比較することに基づいて、行うのでもよい。予期されるユーザー入力は、アプリケーションが実行している同じコンピューターまたはデバイスに格納してもよく、あるいは動作204において受け取ったユーザー入力の有効性を判断するように構成された認証サーバー上にというように、リモートに格納してもよい。
【0031】
動作206において、ユーザー入力が有効ではないと判断された場合、方法200は動作208に進み、ここで、ユーザー入力が無効であることを示すメッセージを提示する。あるいは、ユーザー入力が無効であることを示すメッセージを提示しない。実施形態では、ユーザー入力が無効であるという判断がなされたときまたはその後に、アプリケーションが閉じる場合もある。いずれの場合でも、方法200は、次に、動作210に進み、方法200は終了する。
【0032】
動作206において、ユーザー入力が有効であると判断した場合、方法200は動作212に進み、ここで、秘密鍵を解読する。動作212から、方法200は動作214に進み、ここで、秘密鍵を用いて、セキュア・ハッシュを生成する。実施形態では、動作214において生成されるセキュア・ハッシュはHMACである。実施形態では、HMACが、秘密鍵を1つの秘密情報として用い、証明書データまたは公開鍵のような、HMACが生成されている対象である(for which)特定のエスクロー・キーに特定的な何らかの公開情報を用いて生成される場合もある。代替実施形態では、HMACの代わりに、秘密キーおよび証明書データ(または公開鍵)の規則的なハッシュが用いられる。規則的なハッシュを利用する実施形態において結果的に得られるハッシュは、暗号的に弱いが、それでもなお、規則的なハッシュの使用は、ある種のシナリオでは適用することができる。
【0033】
動作214から、方法200は動作216に進み、ここで、動作214において生成したセキュア・ハッシュを用いて証明書データをハッシュし、エスクロー・キーについての有効性データを生成する。あるいは、証明書データの代わりに、公開鍵を用いてもよい。次いで、方法200は
図2Bに、具体的には、動作218に進む。動作218において、動作216において生成された有効性データを、
図1の動作110においてファイル・コンテナーに保存した有効性データと比較する。動作218から、方法200は動作220に進み、ここで、2つの有効性データ集合間に一致が存在するか否かについて判断を行う。
【0034】
動作220において、これらの有効性データ集合間に一致が存在しないと判断した場合、方法200は動作222に進み、ここで、エスクロー・キーが無効であると判断し、無効のエスクロー・キーをファイルから除去する。次いで、方法200は動作224に進み、ここで無効のエスクロー・キーを記録する。実施形態では、会社、またはファイルのセキュリティに関心がある他のエンティティが、可能なセキュリティ違反の試みを知ることができるように、システム監査を生成する場合もある。あるいは、無効なエスクロー・キーを記録しない。いずれの場合でも、方法200は次に
図2Aに、具体的には、動作210に戻り、ここで方法200は終了する。
【0035】
他の実施形態(図示せず)では、動作224において、方法200は動作228に進み、ここで、ファイルを開く。この実施形態では、ファイルが改ざんされたことを示す警告をユーザーに提示することができる。次いで、方法200は
図2Aに、具体的には、動作210に戻り、ここで方法200は終了する。
【0036】
動作220において、有効性データ集合間に一致が存在しないと判断した場合、方法200は動作226に進み、ここで、エスクロー・キーは有効であると判断する。次いで、方法200は動作228に進み、ここでファイルを開く。動作228から、方法220は
図2Aに、具体的には、動作210に戻り、ここで方法200は終了する。
【0037】
図2では、開く動作の間にエスクロー・キーの有効性が判断されるように説明したが、代わりに、保存動作の間に、バックグラウンド・タスクとして、または特定の予め定められた入力に応答して、エスクロー・キーの有効性を判断してもよいことは理解されてしかるべきである。
【0038】
図3は、無効なエスクロー・キーの検出のために本明細書において説明したソフトウェア・コンポーネントを実行することができるデバイスの例示的なコンピューター・アーキテクチャー300を示す。つまり、
図3に示すコンピューター・アーキテクチャー300は、サーバー・コンピューター、移動体電話機、PDA、スマート・フォン、デスクトップ・コンピューター、ネットブック・コンピューター、タブレット・コンピューター、および/またはラップトップ・コンピューターのアーキテクチャーを例示する。コンピューター・アーキテクチャー300は、本明細書において紹介したソフトウェア・コンポーネントのあらゆる態様を実行するために利用することができる。
【0039】
図3に示すコンピューター・アーキテクチャー300は、中央処理ユニット302(「CPU」)、ランダム・アクセス・メモリ306(「RAM」)およびリード・オンリー・メモリ(「ROM」)308を含むシステム・メモリ304、ならびにメモリ304をCPU302に結合するシステム・バス310を含む。起動中のように、コンピューター・アーキテクチャー300内のエレメント間で情報を転送するのに役立つ基本ルーチンを収容する基本入力/出力システムが、ROM308に格納される。更に、コンピューター・アーキテクチャー300は、オペレーティング・システム314、アプリケーション316、およびデータ318を格納するための大容量記憶デバイス312も含む。データ318は、1つ以上のエスクロー・キー320、1つ以上の秘密鍵322、1つ以上の証明書または公開鍵324、1つ以上のセキュア・ハッシュ326、有効性データ328、ならびにエスクロー・キー、秘密鍵、証明書、セキュア・ハッシュ、有効性データ、および本明細書において以上で説明したファイル・データというようなファイル・データ330を含む。
【0040】
CPU302は、動作システム314を実行するように構成される。動作システム314は、コンピューター・アーキテクチャー300の動作を制御するアプリケーション・プログラムである。アプリケーション316は、オペレーティング・システム314の上で実行し、本明細書において説明した種々の機能性を設けるように構成された実行可能プログラムである。例えば、アプリケーション316は、エスクロー・キーの有効性を判断することに関して、
図1および
図2A/2Bを参照してそれぞれ以上で説明した保存動作および開く動作を行うことができる。実施形態では、アプリケーション316が、第1状態においてファイルを開き、編集または他の相互作用というようなユーザー入力を受け、第1状態とは異なる第2状態でファイルを保存するように構成される場合がある。他の実施形態では、ファイル・データ330には変更が行われないときであっても、アプリケーション316がファイルを保存するように構成される場合もある。実施形態では、メタデータ、書式パラメータ、または目視可能なデータではないがファイルに収容される他のデータに対する変更と共に、ファイルが保存される場合もある。実施形態では、アプリケーション316は、ファイルを保存するように構成されるが、開くおよび保存すること以外の動作を実行する能力を有してもよく有しなくてもよい。例えば、実施態様によっては、アプリケーション316がファイルを全く編集するように構成されなくてもよい。
【0041】
実施形態では、アプリケーション316が、ワシントン州、RedmondのMicrosoft Corporationから入手可能なMICROSOFT WORDのようなワード・プロセッシング・アプリケーション、ワシントン州、RedmondのMicrosoft Corporationから入手可能なMICROSOFT EXCELのようなスプレッドシート・アプリケーション、ワシントン州、RedmondのMicrosoft Corporationから入手可能なMICROSOFT POWERPOINTのようなプレゼンテーション・アプリケーション、ワシントン州、RedmondのMicrosoft Corporationから入手可能なMICROSOFT VISIOのような描画アプリケーション、またはワシントン州、RedmondのMicrosoft Corporationから入手可能なMICROSOFT SHAREPOINTのような合作アプリケーションである場合もある。あるいはまたは代わりに、アプリケーション316が、以上で述べた文書作成アプリケーションの1つ以上のウェブ系バージョンであり、これらの実施形態では、コンピューター・アーキテクチャー300は、アプリケーション316をウェブ系アプリケーションとして提供するように構成されたサーバー・コンピューターのアーキテクチャーとして機能する。
【0042】
大容量記憶デバイス312は、CPU302に、バス310に接続された大容量記憶コントローラー(図示せず)を通じて接続される。大容量記憶デバイス312およびそれに付随するコンピューター読み取り可能媒体は、コンピューター・アーキテクチャー300に不揮発性ストレージを設ける。本明細書に含まれるコンピューター読み取り可能媒体の説明は、ハード・ディスクまたはCD−ROMドライブというような大容量記憶デバイスに言及するが、コンピューター読み取り可能媒体は、コンピューター・アーキテクチャー300によってアクセスすることができる、あらゆる入手可能なコンピューター記憶媒体または通信媒体とすることができる。
【0043】
通信媒体は、コンピューター読み取り可能命令、データ構造、プログラム・モジュール、または他のデータを、搬送波のような変調データ信号または他の伝送メカニズムにおいて含み、あらゆる配信媒体を含む。「変調データ信号」という用語は、信号内に情報をエンコードするようなやり方で、その特性の内1つ以上が設定または変更されている信号を意味する。一例として、そして限定ではなく、通信媒体は、有線ネットワークまたは直接有線接続のような有線媒体と、音響、RF、赤外線、またはその他のワイヤレス媒体のようなワイヤレス媒体とを含む。以上の内のいずれの組み合わせも、コンピューター読み取り可能媒体の範囲内に含まれてしかるべきである。
【0044】
一例として、そして限定ではなく、コンピューター記憶媒体は、揮発性および不揮発性、リムーバブルおよび非リムーバブル媒体を含むことができ、コンピューター読み取り可能命令、データ構造、プログラム・モジュール、または他のデータというような情報の記憶のためのいずれかの方法または技術によって実現される。例えば、コンピューター媒体は、RAM、ROM、EPROM、EEPROM、フラッシュ・メモリまたは他のソリッド・ステート・メモリ技術、CD−ROM、ディジタル・バーサタイル・ディスク(「DVD」)、HD−DVD、BLU−RAY(登録商標)、または他の光ストレージ、磁気カセット、磁気テープ、磁気ディスク・ストレージまたは他の磁気記憶デバイス、あるいは所望の情報を格納するために用いることができコンピューター・アーキテクチャー300によってアクセスすることができる他のあらゆる媒体も含むが、これらに限定されるのではない。特許請求の範囲に限って言うと、「コンピューター記憶媒体」という句およびその変形は、波、信号、および/または他の一時的および/または無形通信媒体を本来(per se)含まない。
【0045】
種々の実施形態によれば、コンピューター・アーキテクチャー300は、ネットワーク322を通じて、リモート・コンピューターへの論理接続を用いてネットワーク接続環境において動作することもできる。ネットワーク322は、内部ネット(internet)、インターネット(the Internet)、イントラネット、またはエキストラネットであってもよい。ネットワーク322へのアクセスは、1つ以上の有線またはワイヤレス・アクセス・ネットワーク(図示せず)によって得ることができるが、当業者には理解されよう。
【0046】
コンピューター・アーキテクチャー300は、バス310に接続されたネットワーク・インターフェース・ユニット314を介して、ネットワーク332に接続することができる。尚、ネットワーク・インターフェース・ユニット314は、他のタイプのネットワークおよびリモート・コンピューター・システムに接続するために利用されてもよいことは認められてしかるべきである。また、コンピューター・アーキテクチャー300は、キーボード、マウス、または電子スタイラス 、あるいは他の入力デバイス(
図3には示されない)を含む多数の入力デバイスからの入力を受けて処理する入力/出力コントローラー316も含むことができる。同様に、入力/出力コントローラー316は、出力を表示画面、プリンター、または他のタイプの出力デバイス(
図3には示されない)に供給することができる。
【0047】
尚、本明細書において説明したソフトウェア・コンポーネントは、CPU302にロードされ実行されると、CPU302およびコンピューター・アーキテクチャー300全体を汎用計算システムから、本明細書において紹介した機能を容易に実行するようにカスタム化された特殊目的計算システムに変態(transform)できることは認められてしかるべきである。CPU302は、いずれの数のトランジスターまたは他のディスクリート回路エレメントからでも組み立てることができ、これらのエレメントは、個別にまたは集合的にあらゆる数の状態にでもなる(assume)ことができる。更に具体的には、CPU302は、本明細書において開示したソフトウェア・モジュール内に収容された実行可能命令に応答して、有限状態機械として動作することもできる。これらのコンピューター実行可能命令は、CPU302が状態間でどのように遷移するか指定することによって、CPU302を変態し、これによって、CPU302を構成するトランジスターまたは他のディスクリート回路エレメントを変態することができる。
【0048】
本明細書において紹介したソフトウェア・モジュールをエンコードすることによっても、本明細書において紹介したコンピューター読み取り可能媒体の物理的構造を変化させる(transform)ことができる。物理的構造の具体的な変化は、本明細書の異なる実施態様における種々の要因に依存する場合もある。このような要因の例には、コンピューター読み取り可能媒体を実現するために用いられる技術、コンピューター読み取り可能媒体が主ストレージまたは副ストレージのどちらとして特徴付けられるか等を含むことができるが、これらに限定されるのではない。例えば、コンピューター読み取り可能媒体が半導体ベース・メモリとして実現される場合、本明細書において開示したソフトウェアは、半導体メモリの物理的状態を変化させることによって、コンピューター記憶媒体上にエンコードすることができる。例えば、ソフトウェアは、半導体メモリを構成するトランジスター、キャパシター、または他のディスクリート回路エレメントの状態を変化させることもできる。また、ソフトウェアは、データを格納するために、このようなコンポーネントの物理的状態を変化させることもできる。
【0049】
他の例として、本明細書において開示したコンピューター読み取り可能媒体は、磁気または光技術を用いて実現することもできる。このような実施態様では、本明細書において紹介したソフトウェアは、このソフトウェアがエンコードされるときに、磁気媒体または光媒体の物理的状態を変化させることができる。これらの変化は、所与の磁気媒体内の特定の位置の磁気特性を変化させることを含むことができる。また、これらの変化は、所与の光媒体内における特定の位置の物理的特徴または特性を変化させ、これらの位置の光学特性を変化させることも含むことができる。本明細書の範囲および主旨から逸脱することなく、物理媒体の他の変化も可能であり、以上の例はこの論述を容易にするために与えられるに過ぎない。
【0050】
以上のことを考慮して、本明細書において説明したソフトウェア・コンポーネントを格納および実行するために、コンピューター・アーキテクチャー300内において多くのタイプの物理的変形が生ずることは認められてしかるべきである。また、コンピューター・アーキテクチャー300は、ハンドヘルド・コンピューター、埋め込み型コンピューター・システム、パーソナル・ディジタル・アシスタント、および当業者には知られている他のタイプの計算デバイスを含む、他のタイプの計算デバイスを含んでもよいことも認められてしかるべきである。また、コンピューター・アーキテクチャー300が
図3に示すコンポーネントの全てを含まなくてもよいこと、
図3には明示的に示されない他のコンポーネントを含んでもよいこと、または
図3に示すものとは完全に異なるアーキテクチャーを利用してもよいことも考えられる。
【0051】
以上の説明に基づいて、本明細書では、無効なエスクロー・キーの検出技術が開示されたことは認められてしかるべきである。本明細書において提示した主題について、コンピューターの構造的特徴、方法論的アクトまたは変形力があるアクト(transformative act)、具体的な計算機械、およびコンピューター読み取り可能媒体に特定的な文言で説明したが、添付した特許請求の範囲において定められる本発明は、必ずしも本明細書において説明したこれらの具体的な特徴にも、アクトにも、媒体にも限定されないことは、理解されてしかるべきである。逆に、これらの具体的な特徴、アクト、および媒体は、特許請求の範囲を実現する形態例として開示されたまでである。
【0052】
以上で説明した主題は、例示として提示されたに過ぎず、限定と解釈してはならない。図示および説明した実施形態例やアプリケーションに従うことなく、そして以下の特許請求の範囲において記載される、本発明の真の主旨および範囲から逸脱することなく、種々の修正および変更(modifications and changes)を本主題に対して行うことができる。