(57)【特許請求の範囲】
【請求項１】
エスクロー・キー有効性データを生成するコンピューター実装方法であって、コンピューターによって実装される、
コンピューターを用いて、ファイルを保存する命令を受ける動作と、
前記コンピューターを用いて、秘密鍵を用いてセキュア・ハッシュを生成する動作であって、前記秘密鍵が前記ファイルを暗号化するために用いられる動作と、
前記コンピューターを用いて、前記セキュア・ハッシュを用いて公開鍵をハッシュして、エスクロー・キーについての有効性データを生成する動作であって、前記有効性データが、前記ファイルに対して後に行われる動作の間に前記エスクロー・キーの有効性を判断するために、また、前記エスクロー・キーが有効であると判断したときに前記ファイルへの動作を実行するために、有効性判断動作の一部として用いられるように生成される動作と、
前記コンピューターを用いて、前記有効性データ、前記公開鍵、および前記秘密鍵を保存する動作と
を実行することを含む、コンピューター実装方法。
【請求項２】
請求項１記載のコンピューター実装方法であって、前記セキュア・ハッシュが、ハッシュ・ベース・メッセージ認証コード（「ＨＭＡＣ」）である、コンピューター実装方法。
【請求項３】
請求項１記載のコンピューター実装方法であって、前記ファイルに対して前記後に行われる動作が、開く動作、再保存動作、またはバックグラウンド・タスクである、コンピューター実装方法。
【請求項４】
請求項３記載のコンピューター実装方法であって、前記後に行われる動作が、前記コンピューター上で実行される、コンピューター実装方法。
【請求項５】
請求項３記載のコンピューター実装方法であって、前記後に行われる動作が、別のコンピューター上で実行される、コンピューター実装方法。
【請求項６】
請求項１記載のコンピューター実装方法であって、更に、
前記ファイルを開く命令を受ける動作と、
前記ファイルを開く命令を受け取ったことに応答して、秘密鍵の解読を求めるユーザー入力を要求する動作と、
ユーザー入力を受け取る動作と、
前記ユーザー入力が有効かを判断する動作と、
前記ユーザー入力が有効であると判断したことに応答して、
前記秘密鍵を解読する動作と、
前記秘密鍵を用いて他のセキュア・ハッシュを生成する動作と、
前記他のセキュア・ハッシュを用いて前記公開鍵をハッシュして、前記エスクロー・キーについて他の有効性データを生成する動作と、
前記有効性データを前記他の有効性データと比較する動作と、
前記有効性データが前記他の有効性データと一致した場合に、前記エスクロー・キーが有効であると判断して、前記ファイルを開く動作と、
前記有効性データが前記他の有効性データと一致しない場合に、前記エスクロー・キーが有効ではないと判断し、無効なエスクロー・キーを前記ファイルから除去する動作と
を含む、コンピューター実装方法。
【請求項７】
請求項６記載のコンピューター実装方法であって、更に、前記無効なエスクロー・キーを記録する動作を含む、コンピューター実装方法。
【請求項８】
請求項７記載のコンピューター実装方法において、前記無効なエスクロー・キーを記録する動作が、システム監査を生成する動作を含む、コンピューター実装方法。
【請求項９】
請求項１記載のコンピューター実装方法であって、更に、
前記エスクロー・キーに対してソルト値を生成する動作と、
前記ソルト値を前記セキュア・ハッシュに追加する動作と、
を含む、コンピューター実装方法。
【請求項１０】
請求項１記載のコンピューター実装方法において、前記有効性データ、前記公開鍵、および前記秘密鍵を保存する動作が、前記有効性データ、前記公開鍵、および前記秘密鍵を前記ファイルに保存する動作を含む、コンピューター実装方法。
【請求項１１】
請求項１記載のコンピューター実装方法において、前記有効性データ、前記公開鍵、および前記秘密鍵を保存する動作が、前記有効性データ、前記公開鍵、および前記秘密鍵を、前記ファイルを収容するファイル・コンテナーに保存する動作を含む、コンピューター実装方法。
【請求項１２】
エスクロー・キーの有効性を判断するコンピューター実装方法であって、コンピューターによって実装される、
コンピューターを用いて、ファイルに対して動作を実行する命令を受ける動作であって、前記ファイルが、それに関連付けられたエスクロー・キーについての有効性データを有し、前記有効性データが、セキュア・ハッシュを用いて証明書データをハッシュすることによって生成され、前記セキュア・ハッシュが、前記ファイルに対して実行された保存動作の間に、前記ファイルを暗号化するのに用いられる秘密鍵から生成される動作と、
前記ファイルに対して前記動作を実行する前記命令を受け取ったことに応答して、前記コンピューターを用いて、前記秘密鍵の解読を求めるユーザー入力を要求する動作と、
前記コンピューターを用いて、ユーザー入力を受け取る動作と、
前記コンピューターを用いて、前記ユーザー入力が有効であるかを判断する動作と、
前記ユーザー入力が有効であると判断したことに応答して、
前記コンピューターを用いて、前記秘密鍵を解読する動作と、
前記コンピューターを用いて、前記秘密鍵を用いて他のセキュア・ハッシュを生成する動作と、
前記コンピューターを用いて、前記他のセキュア・ハッシュを用いて前記証明書データをハッシュして、前記エスクロー・キーについての他の有効性データを生成する動作と、
前記コンピューターを用いて、前記有効性データを前記他の有効性データと比較する動作と、
前記有効性データが前記他の有効性データと一致した場合に、前記コンピューターを用いて、前記エスクロー・キーが有効であると判断し、前記ファイルに対して前記動作を実行する動作と、
前記有効性データが前記他の有効性データと一致しない場合に、前記コンピューターを用いて、前記エスクロー・キーが有効ではないと判断し、無効なエスクロー・キーを、前記ファイルとの関連から除去する動作と
を実行することを含む、コンピューター実装方法。
【請求項１３】
請求項１２記載のコンピューター実装方法において、前記セキュア・ハッシュおよび前記他のセキュア・ハッシュが、ハッシュ・ベース・メッセージ認証コード（「ＨＭＡＣ」）である、コンピューター実装方法。
【請求項１４】
請求項１２記載のコンピューター実装方法において、前記動作が、開く動作、再保存動作、またはバックグラウンド・タスクである、コンピューター実装方法。
【請求項１５】
請求項１２記載のコンピューター実装方法であって、更に、前記無効なエスクロー・キーを記録する動作を含む、コンピューター実装方法。
【請求項１６】
請求項１５記載のコンピューター実装方法において、前記無効なエスクロー・キーを記録する動作が、システム監査を生成する動作を含む、コンピューター実装方法。
【請求項１７】
請求項１２記載のコンピューター実装方法において、前記ファイルに対して前記動作を実行する命令を受け取る前に、前記保存されたファイルが、前記有効性データ、前記エスクロー・キー、前記証明書データ、および前記秘密鍵を含む、コンピューター実装方法。
【請求項１８】
請求項１２記載のコンピューター実装方法において、前記ファイルに対して前記動作を実行する命令を受け取る前に、前記ファイルがファイル・コンテナーに保存され、前記ファイル・コンテナーが、前記有効性データ、前記エスクロー・キー、前記証明書データ、および前記秘密鍵を含む、コンピューター実装方法。
【請求項１９】
コンピューター読み取り可能命令が格納されたコンピューター記憶媒体であって、前記命令がコンピューターによって実行されると、前記コンピューターに、
ファイルを開く命令を受け取らせ、前記ファイルが、それに関連付けられたエスクロー・キーについての有効性データを有し、前記有効性データが、ハッシュ・ベース・メッセージ認証コード（「ＨＭＡＣ」）を用いて証明書データをハッシュすることによって生成され、前記ハッシュ・ベース・メッセージ認証コードが、前記ファイルに対して実行された保存動作の間に、前記ファイルを暗号化するのに用いられる秘密鍵から生成され、
前記ファイルを開く命令を受け取ったことに応答して、前記秘密鍵の解読のために認証信任状を要求させ、
認証信任状を受け取らせ、
前記認証信任状が有効であるかを判断させ、
前記認証信任状が有効であると判断したことに応答して、
前記秘密鍵を解読させ、
前記秘密鍵を用いて、他のＨＭＡＣを生成させ、
前記ＨＭＡＣを用いて前記証明書データをハッシュして、前記エスクロー・キーについての他の有効性データを生成させ、
前記有効性データを前記他の有効性データと比較させ、
前記有効性データが前記他の有効性データと一致した場合に、前記エスクロー・キーが有効であると判断させ、前記ファイルを開く命令に応答して前記ファイルを開かせ、
前記有効性データが前記他の有効性データと一致しないと判断した場合に、前記エスクロー・キーが有効でないと判断させ、無効なエスクロー・キーを、前記ファイルとの関連から除去させ、前記無効なエスクロー・キーを記録させる、
コンピューター記憶媒体。
【請求項２０】
請求項１９記載のコンピューター記憶媒体であって、更に、コンピューター読み取り可能命令が格納され、前記コンピューターによって実行されると、前記コンピューターに、
前記ファイルを開く命令を受け取る前に、前記ファイルを保存する命令を受け取らせ、
前記秘密鍵から前記ＨＭＡＣを生成させ、前記秘密鍵が、前記ファイルを暗号化するために用いられ、
前記ＨＭＡＣを用いて前記証明書データをハッシュして、前記エスクロー・キーについての有効性データを生成させ、
前記有効性データ、前記証明書データ、および前記秘密鍵を、前記ファイル、または前記ファイルを収容するファイル・コンテナーに書き込み保存させる、
コンピューター記憶媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
ワード・プロセッシング・アプリケーション、スプレッドシート・アプリケーション、およびプレゼンテーション・アプリケーションというような文書作成アプリケーションは、文書暗号化メカニズムを設けることがあり、このメカニズムによってユーザーはパスワードを供給することができ、その文書に収容された情報に対する不正アクセスを防止するために、この文書を暗号化するときにこのパスワードが使用される。暗号化文書内に収容された情報は、いつかそのうちパスワードに関係ない(privy to)他者によって必要とされることがある。例えば、ある会社の従業員によって作成されたパスワードによってある文書が暗号化され、この従業員が会社を辞めた場合または単にパスワードを忘れた場合、誰もこの文書にアクセスすることができなくなる。この文書は、人事または経理情報というような、重要で機密的な会社情報を含む可能性がある。
【０００２】
パスワードを知ることなく暗号化文書の解読を可能にする努力において、エスクロー・キー・メカニズムを用いることができる。エスクロー・キー・メカニズムとは、パスワードで保護された文書に、エスクロー・キーと呼ばれる、証明書に基づく解読鍵を自動的に追加する構成可能なメカニズムである。エスクロー・キー・メカニズムは、パスワードの知識を必要とせず、証明書を用いて、パスワードで保護された文書を解読することを可能にし、以上で述べたような場合に、文書復元のシナリオを可能にする。
【０００３】
暗号化文書は、二段階システムを利用することがある。例えば、文書が保存される毎に、ランダムに生成される秘密鍵が、文書全体を暗号化するために用いられる。新たな鍵を得るためには、ユーザーによって提供されるパスワードが用いられ、新たな鍵は、秘密鍵を暗号化するために用いられる。暗号化された秘密鍵は、文書内に平文テキストとして格納することができる。文書を解読するためには、ユーザーが入力するパスワードから鍵を導き出し、これを用いて秘密鍵を解読し、次いでこの秘密鍵を用いて文書を解読する。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
エスクロー・キー・メカニズムは、文書のために構成された公開鍵を用いて秘密鍵を暗号化することによって機能する。公開鍵は、証明書に含まれても含まれていなくてもよい。暗号化された秘密鍵（即ち、エスクロー・キー）は、パスワードで暗号化された秘密鍵と共に、文書にも追加される。こうして、秘密鍵を有する者は誰でも、秘密鍵を解読することができ、したがって文書を解読することができる。秘密鍵は、文書が保存される毎に変化するので、文書内にある既存のエスクロー・キーはいずれも、新たな秘密鍵で更新されなければならない。エスクロー・キー・メカニズムは、保護された文書へのアクセスを得ようとする攻撃者に対する脆弱性がない訳ではない。
【０００５】
本明細書において行われる開示が開示されるのは、これらおよびその他の理由のためである。
【課題を解決するための手段】
【０００６】
本明細書では、攻撃者によってファイルに挿入されたエスクロー・キーというような、無効なエスクロー・キーの検出についての概念および技術を説明する。一例として、そして以上で説明したエスクロー・キー・メカニズムの使用に伴う潜在的な脆弱性を例示するために、攻撃者がパスワードで保護されたファイルへのアクセスを得たが、この攻撃者はパスワードを有しておらず、したがってファイルを開くことができないというシナリオを考える。この攻撃者は、彼または彼女自身のエスクロー・キーを含むように、ファイル・コンテナーを変更することができる。攻撃者は秘密鍵を知らないので、新たに追加された悪意のエスクロー・キーは有効でない。言い換えると、悪意のエスクロー・キーは、実際の中間暗号化鍵以外の鍵を含む。次いで、合法的なユーザーがファイルを開き、その後再度保存すると、ファイル・コンテナー内における全てのエスクロー・キーを、新たな秘密鍵で更新することができる。この更新の結果、攻撃者の悪意のエスクロー・キーは、元々含むデータ正しくない鍵ではなく、今や有効な暗号化秘密鍵（即ち、新たな秘密鍵）を有することになる。したがって、攻撃者は、解読しファイルにアクセスすることができ、これによってエスクロー・キー・メカニズムを迂回することができる。
【０００７】
本明細書において開示する概念および技術は、ファイルが保存された後に、以上の攻撃シナリオを可能にすることなく、ファイル内にある既存のエスクロー・キーをリフレッシュして維持することができるメカニズムを提供する。証明書の所有者だけがエスクロー・キーを解読することができるので、有効性をチェックするためにエスクロー・キーを解読することはできない。また、本明細書において開示する概念および技術は、証明書の秘密鍵にアクセスする必要なく、ファイル・コンテナー内において各エスクロー・キーの有効性を判断するメカニズムも提供する。
【０００８】
一態様によれば、ハッシュに基づくメッセージ認証コード（「ＨＭＡＣ」）のようなセキュア・ハッシュが、１つの秘密情報（例えば、秘密鍵）と、各エスクロー・キーに特定の１つの公開情報（例えば、証明書ハッシュ、または公開鍵）とを用いて生成される。秘密鍵を用いることによって、エスクロー・キー有効性データが、秘密鍵を知ることによってでないと生成できないことを保証し、攻撃者がしかるべきエスクロー・キー有効性データを生成することを防止する。証明書ハッシュまたは公開鍵を公開データとして用いることによって、各エスクロー・キー有効性データを特定の証明書に結び付け、これによって、攻撃者が他のエスクロー・キーから単純に有効性データをコピーすることを防止する。無効であることが分かったエスクロー・キーはいずれも、ファイル・コンテナーから除去することができ、会社、個人、または他のエンティティが、可能なセキュリティ違反の試みを知ることができるように、監査記録(audit log)を生成することができる。以前の合法的エスクロー・キーを更新する必要性を知らなかったソフトウェアのバージョンによって文書が編集された場合、同様であるが悪意でない状態が起こり得る。いずれの場合でも、供給されたエスクロー・キーを更新すべきか否かについて、検出することができる。
【０００９】
他の態様によれば、ファイルを保存するための保存動作の間、ファイル・コンテナー内の各エスクロー・キーに有効性データを追加する。次いで、ファイルを開くために行われる開く動作の間、有効性データを生成し、保存動作の間に各エスクロー・キーに追加された有効性データと比較する。一致が存在する場合、エスクロー・キーは有効であると判断する。そうでない場合、エスクロー・キーは無効であると判断され、このエスクロー・キーをファイル・コンテナーから除去し記録することができる。
【００１０】
尚、以上で説明した主題は、コンピューター制御装置、コンピューター・プロセス、計算システムとして、あるいはコンピューター読み取り可能記憶媒体のような生産品目として実現できることは認められてしかるべきである。これらおよび種々の他の特徴は、以下の詳細な説明を読み、添付図面を検討することから明白になるであろう。
【００１１】
この摘要は、詳細な説明において以下で更に説明する概念から選択したものを、簡略化した形態で紹介するために設けられている。この摘要は、特許請求する主題の主要な特徴や必須の特徴を特定することを意図するのではなく、またこの摘要は特許請求する主題の範囲を限定するために用いられることを意図するのでもない。更に、特許請求する主題は、本開示のいずれかの部分に記される欠点のいずれかにも欠点の全てを解決する実施態様にも限定されるのではない。
【図面の簡単な説明】
【００１２】
【図１】図１は、例示的実施形態にしたがって、１つ以上のエスクロー・キーについての有効性データを文書に追加する方法の態様を示す流れ図である。
【図２Ａ】図２Ａは、例示的実施形態にしたがって、１つ以上のエスクロー・キーの有効性を判断する方法の態様を示す流れ図である。
【図２Ｂ】図２Ｂは、例示的実施形態にしたがって、１つ以上のエスクロー・キーの有効性を判断する方法の態様を示す流れ図である。
【図３】図３は、本明細書において紹介する実施形態の態様を実現することができる計算システムの、例示的なコンピューター・ハードウェアおよびソフトウェア・アーキテクチャーを示すコンピューター・アーキテクチャー図である。
【発明を実施するための形態】
【００１３】
以下の詳細な説明は、無効なエスクロー・キーの検出のための概念および技術に関する。本明細書において説明する概念および技術の一態様によれば、ＨＭＡＣのようなセキュア・ハッシュを、１つの秘密情報（例えば、秘密鍵）と、各エスクロー・キーに特定的な１つの公開情報（例えば、証明書ハッシュ）とを用いて生成する。秘密鍵は、中間鍵によって保護された暗号化情報に格納することができ、この中間鍵は、文書を解読することを許可された者にしか知られていない。秘密鍵を用いることによって、エスクロー・キー有効性データが、秘密鍵を知ることによってでないと生成できないことを保証し、攻撃者がしかるべきエスクロー・キー有効性データを生成することを防止する。証明書ハッシュまたは公開鍵を公開データとして用いることによって、各エスクロー・キー有効性データを特定の証明書に結び付け、これによって、攻撃者が他のエスクロー・キーから単純に有効性データをコピーすることを防止する。無効であることが分かったエスクロー・キーはいずれも、ファイル・コンテナーから除去することができ、会社、個人、または他のエンティティが、可能なセキュリティ違反の試みを知ることができるように、システム監査記録(audit log)を生成することができる。
【００１４】
本明細書において説明する主題は、オペレーティング・システムおよびアプリケーション・プログラムのコンピューター・システムにおける実行と合わせて実行するプログラム・モジュールという一般的なコンテキストで紹介するが、他の実現例も他のタイプのプログラム・モジュールと組みあわせて実行できることは当業者には認められよう。一般に、プログラム・モジュールは、ルーチン、プログラム、コンポーネント、データ構造、および他のタイプの構造を含み、特定のタスクを実行するかまたは特定の抽象データ型を実装する。更に、本明細書において説明する主題は、ハンドヘルド・デバイス、マルチプロセッサー・システム、マイクロプロセッサー・ベースまたはプログラマブル消費者用電子機器、ミニコンピューター、メインフレーム・コンピューター等を含む他のコンピューター・システム構成とでも実施できることは、当業者には認められよう。
【００１５】
以下の詳細な説明では、その一部をなす添付図面を参照する。図面では、具体的な実施形態または例が、例示として示される。これより図面を参照すると、様々な図にわたって同様の参照番号は同様のエレメントを表し、無効なエスクロー・キーの検出のための計算システム、コンピューター読み取り可能記憶媒体、およびコンピューター実装方法を紹介する。
【００１６】
これより図１に移り、１つ以上のエスクロー・キーについて有効性データをファイルに追加する方法１００の態様について詳細に説明する。尚、本明細書において開示する方法の動作は、必ずしもいずれかの特定の順序で提示される訳ではなく、動作の内一部または全部の実行を代わりの順序（１つまたは複数）で行うことも可能であり、想定されることは理解されてしかるべきである。動作は、説明および図示を容易にするために、例証された順序で提示されている。添付する請求項の範囲から逸脱することなく、動作を追加すること、省略すること、および／または同時に実行することもできる。
【００１７】
また、図示の方法は、いずれの時点でも終了させることができ、その全体を実行する必要がないことも理解されてしかるべきである。これらの方法の一部または全部の動作、および／または実質的に同等の動作は、以下で定められるような、コンピューター記憶媒体上に含まれるコンピューター読み取り可能命令の実行によって遂行することができる。「コンピューター読み取り可能命令」という用語およびその異形は、本明細書および特許請求の範囲において用いられる場合、ルーチン、アプリケーション、アプリケーション・モジュール、プログラム・モジュール、プログラム、コンポーネント、データ構造、アルゴリズム等を含むように、ここでは広く用いられる。コンピューター読み取り可能命令は、単一プロセッサーまたはマルチプロセッサー・システム、ミニコンピューター、メインフレーム・コンピューター、パーソナル・コンピューター、ハンドヘルド計算デバイス、プロセッサー・ベースのプログラマブル消費者用電子機器、その組み合わせ等を含む、種々のシステム構成において実現することができる。
【００１８】
つまり、本明細書において説明する論理動作は、（１）計算システム上で実行するコンピューター実装アクト(computer-implemented act)またはプログラム・モジュールのシーケンスとして、および／または（２）計算システム内部において相互接続された機械論理回路または回路モジュールとして実現される。実施態様は、計算システムの性能およびその他の要件に依存する選択事項である。したがって、本明細書において説明する論理動作は、状態、動作、構造的デバイス、アクト、またはモジュールといように、様々に呼ばれる。これらの動作、構造的デバイス、アクト、およびモジュールは、ソフトウェア、ファームウェア、特殊目的ディジタル・ロジック、およびそのあらゆる組みあわせで実現することができる。
【００１９】
方法１００について、ファイルを保存するために実行される保存動作中において実行されるものとして説明する。本明細書において以下で説明する態様は、必ずしも一定のアプリケーション、アプリケーション・タイプ、ファイル、またはファイル・タイプに特定的ではない。実施形態では、アプリケーションが、第１状態においてファイルを開き、編集または他の相互作用というようなユーザー入力を受け、第１状態とは異なる第２状態でファイルを保存するように構成される場合がある。他の実施形態では、ファイルは保存されるが、ファイル・データには変更が行われない場合もある。実施形態では、メタデータ、書式パラメータ、またはファイル・データではないがファイルに収容される他のデータに対する変更と共に、ファイルが保存される場合もある。実施形態では、アプリケーションは、ファイルを保存するように構成されるが、開くおよび保存すること以外の動作を実行する能力を有してもよく有しなくてもよい。例えば、実施態様によっては、アプリケーションがファイルを編集するようには全く構成されなくてもよい。実施形態では、保存動作がコピーおよびペースト動作を含む場合もあり、第１ファイルがコピーおよびペーストされることによって、新たなファイルを作成し保存する。
【００２０】
実施形態では、ファイルが、ワード・プロセッサー文書、スプレッドシート文書、プレゼンテーション文書、描画文書、または合体文書というような文書である場合がある。実施形態では、このような文書を作成するおよび／または見るために用いられるアプリケーションが、それぞれ、ワシントン州、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のような合作アプリケーションである場合もある。実施形態では、アプリケーションが、文書を見ることは許可するが文章を編集することはユーザーに許可しない読み取り専用アプリケーションである場合もある。他の実施形態では、アプリケーションが、ユーザーに文書を見ることおよび編集することを可能にするように構成された読み取り／書き込みアプリケーションである場合もある。アプリケーションは、コンピューター・システム上にローカルにインストールされた単体アプリケーション、コンピューター・システムによって離れてアクセスされるリモート・システム上にインストールされたリモート・アプリケーション、またはウェブ・アプリケーションであってもよい。他の文書タイプおよび関連するアプリケーションも考えられる。
【００２１】
また、方法１００は、１つ以上のエスクロー・キーを収容するファイルについても説明する。あるいはまたは加えて、ファイルを収容するファイル・コンテナーが１つ以上のエスクロー・キーを収容することもできる。一部のエスクロー・キーをファイル・コンテナーに格納し、他のエスクロー・キーをファイル自体に格納することもできる。ファイル・コンテナーは、コンテナーまたはラッパ・メタ−ファイル・フォーマット(wrapper meta-file format)であり、その仕様が、どのように異なるデータ・エレメントおよびメタデータがファイル内に共存するかについて記述する。
【００２２】
方法１００は、動作１０２において開始し、ここで、ファイルをセーブする命令を受ける。このファイルをセーブする命令は、ファイルを保存するように構成されたアプリケーションによってあるいはそれのために提示されるグラフィカル・ユーザー・インターフェース（「ＧＵＩ」）または他のユーザー・インターフェースを通じて受け取ることもできる。ＧＵＩは、メニューまたはメニューの一部として、アイコンとして、リボン・インターフェースまたはリボン・インターフェースの一部として、ポップアップＧＵＩとして、これらの何らかの組み合わせとして等で表現されても良い。ファイルを保存する命令は、キーボード、キーパッド、マウス、ゲームパッド、リモート・コントロール・デバイスのようなインターフェース・デバイスによって、あるいは他のいずれかのインターフェース・デバイスによって、ユーザーがアプリケーションにファイルを保存するように命令することができるメカニズムを設ける１つ以上のボタン、タッチスクリーン、タッチパッド、マイクロフォン、または他のマン−マシン・インターフェースを通じて受け取ることができる。これらのインターフェース・デバイスの１つ以上における専用のまたはプログラミングされた物理的な保存ボタンも考えられる。
【００２３】
方法１００の残りの動作は、動作１０２において受け取ったファイルを保存する命令によってトリガーされる保存動作の間に実行される。動作１０２から、方法１００は動作１０４に進み、ここで、秘密鍵を用いてセキュア・ハッシュを生成する。秘密鍵は、実施形態では、ランダムにまたは擬似ランダムに生成され、ファイルを暗号化するために用いられる。実施形態では、ユーザーによって供給されるパスワードを用いて、秘密鍵が暗号化される場合もある。実施形態では、暗号化された秘密鍵が、ファイル内に平文テキストで格納される場合もある。あるいは、暗号化された秘密鍵は、他の何らかのフォーマットでファイルに格納されてもよい。
【００２４】
実施形態では、動作１０４において生成されたセキュア・ハッシュが、ハッシュ・メッセージ認証コード、別名ハッシュ・メッセージ認証チェックサム（「ＨＭＡＣ」）である場合もある。実施形態では、ＨＭＡＣが、秘密鍵を１つの秘密情報として用い、証明書データまたは公開鍵のような、ＨＭＡＣが生成されている対象である(for which)特定のエスクロー・キーに特定的な何らかの公開情報を用いて生成される場合もある。代替実施形態では、ＨＭＡＣの代わりに、秘密キーおよび証明書データ（または公開鍵）の規則的なハッシュが用いられる。規則的なハッシュを利用する実施形態において結果的に得られるハッシュは、暗号的に弱いが、それでもなお、規則的なハッシュの使用は、ある種のシナリオでは適用することができる。
【００２５】
各保存動作の間に、または他のエントロピーの目的のために、秘密鍵が各保存動作中に変化しない場合、実施形態では、エスクロー・キー毎にランダム・ソルト値(random salt value)を生成し、各場合に応じて、ハッシュまたはＨＭＡＣに含ませる。次いで、このソルト値をファイル・コンテナーに、エスクロー・キー・データの残りと共に格納する。
【００２６】
動作１０４から、方法１００は動作１０６に進み、ここで、動作１０４において生成したセキュア・ハッシュを用いて証明書データをハッシュし、エスクロー・キーについての有効性データを生成する。あるいは、証明書データの代わりに、公開鍵を用いてもよい。次いで、方法１００は動作１０８に進み、ここで、ファイルについての有効性データ、証明書データ、および暗号化された秘密鍵を、ファイル・コンテナーに書き込む。あるいは、このデータの全部または一部が直接ファイルに書き込まれる。次いで、方法１００は動作１１０に進み、ここで、ファイル・コンテナーを保存する。動作１１０から、方法１００は動作１１２に進み、ここで方法１００は終了する。
【００２７】
これより図２Ａおよび図２Ｂに移り、１つ以上のエスクロー・キーの有効性を判断する方法２００の態様について詳細に説明する。方法２００は、図１に示した方法１００を参照して以上で説明した保存動作の実行中に保存されたファイルを開くための開く動作の間に実行されるものとして説明する。本明細書において以下で説明する態様は、必ずしも一定のアプリケーション、アプリケーション・タイプ、ファイル、またはファイル・タイプに特定的ではない。実施形態では、アプリケーションがファイルを開くように構成されるが、開く以外の動作を実行する能力を有しても有さなくてもよい。例えば、実施態様によっては、アプリケーションがファイルを編集するように全く構成されなくてもよい。実施形態では、方法２００にしたがってファイルを開くために用いられるアプリケーションが、以上で説明した方法１００によってファイルを保存するために用いられたのと同じアプリケーションである場合もある。他の実施形態では、これらのアプリケーションが異なる場合もある。ファイルをセーブするために用いられるコンピューター・システムまたはデバイスは、ファイルを開くために用いられたコンピューター・システムまたはデバイスと同じであっても異なってもよい。
【００２８】
最初に図２Ａに移ると、方法２００が開始して動作２０２に移り、ここで、ファイルを開く命令を受ける。このファイルを開く命令に応答して、秘密鍵解読を求めるユーザー入力を要求する。実施形態では、ユーザー入力の要求は、アプリケーション内に提示される通知でありユーザーにユーザー入力を供給するように促すが、この要求は代わりの形態を取ってもよい。実施形態では、要求されるユーザー入力が、認証信任状である場合もあり、この認証信任状は、パスワード、パスコード、個人識別番号、セキュリティ質問／回答、パスフレーズ、音声パスフレーズ、他のセキュリティ証明書、これらの組み合わせ等を含むが、これらに限定されるのではない。実施形態では、要求されるユーザー入力が、以下のカテゴリの内２つ以上からの多要素認証信任状を求める要求を含む場合もある。ある者が有する何か、ある者である何か(something one is)、ある者が知る何か、ある者が行った何か、およびある者が位置するどこか。
【００２９】
ファイルを開く命令は、ファイルを開くように構成されたアプリケーションによってまたはそれのために提示されるＧＵＩあるいは他のユーザー・インターフェースを通じて受け取ることもできる。ＧＵＩは、メニューまたはメニューの一部として、アイコンとして、リボン・インターフェースまたはリボン・インターフェースの一部として、ポップアップＧＵＩとして、これらの何らかの組み合わせとして等で表されても良い。あるいは、ファイルを開く命令は、キーボード、キーパッド、マウス、ゲームパッド、リモート・コントロール・デバイスのようなインターフェース・デバイスによって、あるいは他のいずれかのインターフェース・デバイスによって、ユーザーがアプリケーションにファイルを開くように命令することができるメカニズムを設ける１つ以上のボタン、タッチスクリーン、タッチパッド、マイクロフォン、または他のマン−マシン・インターフェースを通じて受け取ることができる。これらのインターフェース・デバイスの１つ以上における専用のまたはプログラミングされた物理的な「開く」ボタンも考えられる。
【００３０】
動作２０２から、方法２００は動作２０４に進み、ここで、動作２０２におけるユーザー入力を求める要求に応答するユーザー入力を受ける。次いで、方法２００は動作２０６に進み、ここで、動作２０４において受け取ったユーザー入力が有効か否か判断する。この判断は、動作２０４において受け取ったユーザー入力を、予期されるパスワードまたは他の予期される認証信任状というような、予期されるユーザー入力と比較することに基づいて、行うのでもよい。予期されるユーザー入力は、アプリケーションが実行している同じコンピューターまたはデバイスに格納してもよく、あるいは動作２０４において受け取ったユーザー入力の有効性を判断するように構成された認証サーバー上にというように、リモートに格納してもよい。
【００３１】
動作２０６において、ユーザー入力が有効ではないと判断された場合、方法２００は動作２０８に進み、ここで、ユーザー入力が無効であることを示すメッセージを提示する。あるいは、ユーザー入力が無効であることを示すメッセージを提示しない。実施形態では、ユーザー入力が無効であるという判断がなされたときまたはその後に、アプリケーションが閉じる場合もある。いずれの場合でも、方法２００は、次に、動作２１０に進み、方法２００は終了する。
【００３２】
動作２０６において、ユーザー入力が有効であると判断した場合、方法２００は動作２１２に進み、ここで、秘密鍵を解読する。動作２１２から、方法２００は動作２１４に進み、ここで、秘密鍵を用いて、セキュア・ハッシュを生成する。実施形態では、動作２１４において生成されるセキュア・ハッシュはＨＭＡＣである。実施形態では、ＨＭＡＣが、秘密鍵を１つの秘密情報として用い、証明書データまたは公開鍵のような、ＨＭＡＣが生成されている対象である(for which)特定のエスクロー・キーに特定的な何らかの公開情報を用いて生成される場合もある。代替実施形態では、ＨＭＡＣの代わりに、秘密キーおよび証明書データ（または公開鍵）の規則的なハッシュが用いられる。規則的なハッシュを利用する実施形態において結果的に得られるハッシュは、暗号的に弱いが、それでもなお、規則的なハッシュの使用は、ある種のシナリオでは適用することができる。
【００３３】
動作２１４から、方法２００は動作２１６に進み、ここで、動作２１４において生成したセキュア・ハッシュを用いて証明書データをハッシュし、エスクロー・キーについての有効性データを生成する。あるいは、証明書データの代わりに、公開鍵を用いてもよい。次いで、方法２００は図２Ｂに、具体的には、動作２１８に進む。動作２１８において、動作２１６において生成された有効性データを、図１の動作１１０においてファイル・コンテナーに保存した有効性データと比較する。動作２１８から、方法２００は動作２２０に進み、ここで、２つの有効性データ集合間に一致が存在するか否かについて判断を行う。
【００３４】
動作２２０において、これらの有効性データ集合間に一致が存在しないと判断した場合、方法２００は動作２２２に進み、ここで、エスクロー・キーが無効であると判断し、無効のエスクロー・キーをファイルから除去する。次いで、方法２００は動作２２４に進み、ここで無効のエスクロー・キーを記録する。実施形態では、会社、またはファイルのセキュリティに関心がある他のエンティティが、可能なセキュリティ違反の試みを知ることができるように、システム監査を生成する場合もある。あるいは、無効なエスクロー・キーを記録しない。いずれの場合でも、方法２００は次に図２Ａに、具体的には、動作２１０に戻り、ここで方法２００は終了する。
【００３５】
他の実施形態（図示せず）では、動作２２４において、方法２００は動作２２８に進み、ここで、ファイルを開く。この実施形態では、ファイルが改ざんされたことを示す警告をユーザーに提示することができる。次いで、方法２００は図２Ａに、具体的には、動作２１０に戻り、ここで方法２００は終了する。
【００３６】
動作２２０において、有効性データ集合間に一致が存在しないと判断した場合、方法２００は動作２２６に進み、ここで、エスクロー・キーは有効であると判断する。次いで、方法２００は動作２２８に進み、ここでファイルを開く。動作２２８から、方法２２０は図２Ａに、具体的には、動作２１０に戻り、ここで方法２００は終了する。
【００３７】
図２では、開く動作の間にエスクロー・キーの有効性が判断されるように説明したが、代わりに、保存動作の間に、バックグラウンド・タスクとして、または特定の予め定められた入力に応答して、エスクロー・キーの有効性を判断してもよいことは理解されてしかるべきである。
【００３８】
図３は、無効なエスクロー・キーの検出のために本明細書において説明したソフトウェア・コンポーネントを実行することができるデバイスの例示的なコンピューター・アーキテクチャー３００を示す。つまり、図３に示すコンピューター・アーキテクチャー３００は、サーバー・コンピューター、移動体電話機、ＰＤＡ、スマート・フォン、デスクトップ・コンピューター、ネットブック・コンピューター、タブレット・コンピューター、および／またはラップトップ・コンピューターのアーキテクチャーを例示する。コンピューター・アーキテクチャー３００は、本明細書において紹介したソフトウェア・コンポーネントのあらゆる態様を実行するために利用することができる。
【００３９】
図３に示すコンピューター・アーキテクチャー３００は、中央処理ユニット３０２（「ＣＰＵ」）、ランダム・アクセス・メモリ３０６（「ＲＡＭ」）およびリード・オンリー・メモリ（「ＲＯＭ」）３０８を含むシステム・メモリ３０４、ならびにメモリ３０４をＣＰＵ３０２に結合するシステム・バス３１０を含む。起動中のように、コンピューター・アーキテクチャー３００内のエレメント間で情報を転送するのに役立つ基本ルーチンを収容する基本入力／出力システムが、ＲＯＭ３０８に格納される。更に、コンピューター・アーキテクチャー３００は、オペレーティング・システム３１４、アプリケーション３１６、およびデータ３１８を格納するための大容量記憶デバイス３１２も含む。データ３１８は、１つ以上のエスクロー・キー３２０、１つ以上の秘密鍵３２２、１つ以上の証明書または公開鍵３２４、１つ以上のセキュア・ハッシュ３２６、有効性データ３２８、ならびにエスクロー・キー、秘密鍵、証明書、セキュア・ハッシュ、有効性データ、および本明細書において以上で説明したファイル・データというようなファイル・データ３３０を含む。
【００４０】
ＣＰＵ３０２は、動作システム３１４を実行するように構成される。動作システム３１４は、コンピューター・アーキテクチャー３００の動作を制御するアプリケーション・プログラムである。アプリケーション３１６は、オペレーティング・システム３１４の上で実行し、本明細書において説明した種々の機能性を設けるように構成された実行可能プログラムである。例えば、アプリケーション３１６は、エスクロー・キーの有効性を判断することに関して、図１および図２Ａ／２Ｂを参照してそれぞれ以上で説明した保存動作および開く動作を行うことができる。実施形態では、アプリケーション３１６が、第１状態においてファイルを開き、編集または他の相互作用というようなユーザー入力を受け、第１状態とは異なる第２状態でファイルを保存するように構成される場合がある。他の実施形態では、ファイル・データ３３０には変更が行われないときであっても、アプリケーション３１６がファイルを保存するように構成される場合もある。実施形態では、メタデータ、書式パラメータ、または目視可能なデータではないがファイルに収容される他のデータに対する変更と共に、ファイルが保存される場合もある。実施形態では、アプリケーション３１６は、ファイルを保存するように構成されるが、開くおよび保存すること以外の動作を実行する能力を有してもよく有しなくてもよい。例えば、実施態様によっては、アプリケーション３１６がファイルを全く編集するように構成されなくてもよい。
【００４１】
実施形態では、アプリケーション３１６が、ワシントン州、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のような合作アプリケーションである場合もある。あるいはまたは代わりに、アプリケーション３１６が、以上で述べた文書作成アプリケーションの１つ以上のウェブ系バージョンであり、これらの実施形態では、コンピューター・アーキテクチャー３００は、アプリケーション３１６をウェブ系アプリケーションとして提供するように構成されたサーバー・コンピューターのアーキテクチャーとして機能する。
【００４２】
大容量記憶デバイス３１２は、ＣＰＵ３０２に、バス３１０に接続された大容量記憶コントローラー（図示せず）を通じて接続される。大容量記憶デバイス３１２およびそれに付随するコンピューター読み取り可能媒体は、コンピューター・アーキテクチャー３００に不揮発性ストレージを設ける。本明細書に含まれるコンピューター読み取り可能媒体の説明は、ハード・ディスクまたはＣＤ−ＲＯＭドライブというような大容量記憶デバイスに言及するが、コンピューター読み取り可能媒体は、コンピューター・アーキテクチャー３００によってアクセスすることができる、あらゆる入手可能なコンピューター記憶媒体または通信媒体とすることができる。
【００４３】
通信媒体は、コンピューター読み取り可能命令、データ構造、プログラム・モジュール、または他のデータを、搬送波のような変調データ信号または他の伝送メカニズムにおいて含み、あらゆる配信媒体を含む。「変調データ信号」という用語は、信号内に情報をエンコードするようなやり方で、その特性の内１つ以上が設定または変更されている信号を意味する。一例として、そして限定ではなく、通信媒体は、有線ネットワークまたは直接有線接続のような有線媒体と、音響、ＲＦ、赤外線、またはその他のワイヤレス媒体のようなワイヤレス媒体とを含む。以上の内のいずれの組み合わせも、コンピューター読み取り可能媒体の範囲内に含まれてしかるべきである。
【００４４】
一例として、そして限定ではなく、コンピューター記憶媒体は、揮発性および不揮発性、リムーバブルおよび非リムーバブル媒体を含むことができ、コンピューター読み取り可能命令、データ構造、プログラム・モジュール、または他のデータというような情報の記憶のためのいずれかの方法または技術によって実現される。例えば、コンピューター媒体は、ＲＡＭ、ＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、フラッシュ・メモリまたは他のソリッド・ステート・メモリ技術、ＣＤ−ＲＯＭ、ディジタル・バーサタイル・ディスク（「ＤＶＤ」）、ＨＤ−ＤＶＤ、ＢＬＵ−ＲＡＹ（登録商標）、または他の光ストレージ、磁気カセット、磁気テープ、磁気ディスク・ストレージまたは他の磁気記憶デバイス、あるいは所望の情報を格納するために用いることができコンピューター・アーキテクチャー３００によってアクセスすることができる他のあらゆる媒体も含むが、これらに限定されるのではない。特許請求の範囲に限って言うと、「コンピューター記憶媒体」という句およびその変形は、波、信号、および／または他の一時的および／または無形通信媒体を本来(per se)含まない。
【００４５】
種々の実施形態によれば、コンピューター・アーキテクチャー３００は、ネットワーク３２２を通じて、リモート・コンピューターへの論理接続を用いてネットワーク接続環境において動作することもできる。ネットワーク３２２は、内部ネット(internet)、インターネット(the Internet)、イントラネット、またはエキストラネットであってもよい。ネットワーク３２２へのアクセスは、１つ以上の有線またはワイヤレス・アクセス・ネットワーク（図示せず）によって得ることができるが、当業者には理解されよう。
【００４６】
コンピューター・アーキテクチャー３００は、バス３１０に接続されたネットワーク・インターフェース・ユニット３１４を介して、ネットワーク３３２に接続することができる。尚、ネットワーク・インターフェース・ユニット３１４は、他のタイプのネットワークおよびリモート・コンピューター・システムに接続するために利用されてもよいことは認められてしかるべきである。また、コンピューター・アーキテクチャー３００は、キーボード、マウス、または電子スタイラス 、あるいは他の入力デバイス（図３には示されない）を含む多数の入力デバイスからの入力を受けて処理する入力／出力コントローラー３１６も含むことができる。同様に、入力／出力コントローラー３１６は、出力を表示画面、プリンター、または他のタイプの出力デバイス（図３には示されない）に供給することができる。
【００４７】
尚、本明細書において説明したソフトウェア・コンポーネントは、ＣＰＵ３０２にロードされ実行されると、ＣＰＵ３０２およびコンピューター・アーキテクチャー３００全体を汎用計算システムから、本明細書において紹介した機能を容易に実行するようにカスタム化された特殊目的計算システムに変態(transform)できることは認められてしかるべきである。ＣＰＵ３０２は、いずれの数のトランジスターまたは他のディスクリート回路エレメントからでも組み立てることができ、これらのエレメントは、個別にまたは集合的にあらゆる数の状態にでもなる(assume)ことができる。更に具体的には、ＣＰＵ３０２は、本明細書において開示したソフトウェア・モジュール内に収容された実行可能命令に応答して、有限状態機械として動作することもできる。これらのコンピューター実行可能命令は、ＣＰＵ３０２が状態間でどのように遷移するか指定することによって、ＣＰＵ３０２を変態し、これによって、ＣＰＵ３０２を構成するトランジスターまたは他のディスクリート回路エレメントを変態することができる。
【００４８】
本明細書において紹介したソフトウェア・モジュールをエンコードすることによっても、本明細書において紹介したコンピューター読み取り可能媒体の物理的構造を変化させる(transform)ことができる。物理的構造の具体的な変化は、本明細書の異なる実施態様における種々の要因に依存する場合もある。このような要因の例には、コンピューター読み取り可能媒体を実現するために用いられる技術、コンピューター読み取り可能媒体が主ストレージまたは副ストレージのどちらとして特徴付けられるか等を含むことができるが、これらに限定されるのではない。例えば、コンピューター読み取り可能媒体が半導体ベース・メモリとして実現される場合、本明細書において開示したソフトウェアは、半導体メモリの物理的状態を変化させることによって、コンピューター記憶媒体上にエンコードすることができる。例えば、ソフトウェアは、半導体メモリを構成するトランジスター、キャパシター、または他のディスクリート回路エレメントの状態を変化させることもできる。また、ソフトウェアは、データを格納するために、このようなコンポーネントの物理的状態を変化させることもできる。
【００４９】
他の例として、本明細書において開示したコンピューター読み取り可能媒体は、磁気または光技術を用いて実現することもできる。このような実施態様では、本明細書において紹介したソフトウェアは、このソフトウェアがエンコードされるときに、磁気媒体または光媒体の物理的状態を変化させることができる。これらの変化は、所与の磁気媒体内の特定の位置の磁気特性を変化させることを含むことができる。また、これらの変化は、所与の光媒体内における特定の位置の物理的特徴または特性を変化させ、これらの位置の光学特性を変化させることも含むことができる。本明細書の範囲および主旨から逸脱することなく、物理媒体の他の変化も可能であり、以上の例はこの論述を容易にするために与えられるに過ぎない。
【００５０】
以上のことを考慮して、本明細書において説明したソフトウェア・コンポーネントを格納および実行するために、コンピューター・アーキテクチャー３００内において多くのタイプの物理的変形が生ずることは認められてしかるべきである。また、コンピューター・アーキテクチャー３００は、ハンドヘルド・コンピューター、埋め込み型コンピューター・システム、パーソナル・ディジタル・アシスタント、および当業者には知られている他のタイプの計算デバイスを含む、他のタイプの計算デバイスを含んでもよいことも認められてしかるべきである。また、コンピューター・アーキテクチャー３００が図３に示すコンポーネントの全てを含まなくてもよいこと、図３には明示的に示されない他のコンポーネントを含んでもよいこと、または図３に示すものとは完全に異なるアーキテクチャーを利用してもよいことも考えられる。
【００５１】
以上の説明に基づいて、本明細書では、無効なエスクロー・キーの検出技術が開示されたことは認められてしかるべきである。本明細書において提示した主題について、コンピューターの構造的特徴、方法論的アクトまたは変形力があるアクト(transformative act)、具体的な計算機械、およびコンピューター読み取り可能媒体に特定的な文言で説明したが、添付した特許請求の範囲において定められる本発明は、必ずしも本明細書において説明したこれらの具体的な特徴にも、アクトにも、媒体にも限定されないことは、理解されてしかるべきである。逆に、これらの具体的な特徴、アクト、および媒体は、特許請求の範囲を実現する形態例として開示されたまでである。
【００５２】
以上で説明した主題は、例示として提示されたに過ぎず、限定と解釈してはならない。図示および説明した実施形態例やアプリケーションに従うことなく、そして以下の特許請求の範囲において記載される、本発明の真の主旨および範囲から逸脱することなく、種々の修正および変更(modifications and changes)を本主題に対して行うことができる。
【図１】
0006046745.tif 000002
【図２Ａ】
0006046745.tif 000003
【図２Ｂ】
0006046745.tif 000004
【図３】
0006046745.tif 000005