(57)【要約】本システムおよび方法の実施形態は、誤り耐性フィールドに依拠せず、それによって、透かしを入れるのに適するとは考えられなかったデータ中への透かしの組み込みを提供する、データ透かし入れを提供することができる。例えば、ある実施形態において、データに透かしを入れるためのコンピュータ実施方法は、フォーマット保持暗号化を必要とするフィールド中へ透かしデータを挿入することを含んでよい。
2021529364.tif 000002
【特許請求の範囲】
【請求項１】
データに透かしを入れるためのコンピュータ実装方法であって、前記方法は、
フォーマット保持暗号化を必要とするフィールド中へ透かしデータを挿入するステップ
を含む、方法。
【請求項２】
前記挿入するステップは、
前記フォーマット保持暗号化を必要とするフィールドをデータ・フォーマットに関する制約条件を保持するように暗号化するステップと、
暗号化されたデータセットの少なくとも１つのサブセットへ前記透かしデータをマッピングすることによって、前記フォーマット保持暗号化を必要とするフィールド中へ前記透かしデータを挿入するステップと
を含む、請求項１に記載の方法。
【請求項３】
前記少なくとも１つのサブセットは、前記データセットによって用いられていないとして識別された、請求項２に記載の方法。
【請求項４】
前記データセットによって用いられていないとして識別された少なくとも１つのサブセットが、前記データセットによって実際には使用中であることが見出された場合には、前記データセットによって用いられていないとして識別された異なるサブセットへ前記透かしデータをマッピングするステップ
をさらに含む、請求項３に記載の方法。
【請求項５】
前記少なくとも１つのサブセットは、前記データセットのデータ・ドメインをスパース表現からより密な表現へ変換するために追加的な情報の挿入を許容する、前記データセットの特性を見出すことによって識別された、請求項４に記載の方法。
【請求項６】
前記挿入するステップは、
前記少なくとも１つのサブセット中、または前記少なくとも１つのサブセットの数値中に透かしデータの各数値をエンコードするステップ
を含む、請求項５に記載の方法。
【請求項７】
前記透かしを挿入するステップは、誤りを生み出さず、前記挿入は、可逆的である、請求項６に記載の方法。
【請求項８】
前記利用可能なサブセットが、
マッピング・ルール、マッピング・テーブル、または両方を用いて、前記入力データセットからの複数の数値をエンコードされた数値へマッピングすることと、
機械学習またはエキスパート知識を用いて、使用中のエンコードされたデータの群を識別することと、
前記エンコードされたデータの識別された前記群に含まれていない利用可能なサブセットを見出すことと、
によって見出される、請求項３に記載の方法。
【請求項９】
データに透かしを入れるためのシステムであって、
プロセッサと、
前記プロセッサによってアクセス可能なメモリと、
前記メモリに格納されて、フォーマット保持暗号化を必要とするフィールド中へ透かしデータを挿入するステップを行うために前記プロセッサによって実行可能であるコンピュータ・プログラム命令と、
を備える、システム。
【請求項１０】
前記挿入するステップは、
前記フォーマット保持暗号化を必要とするフィールドをデータ・フォーマットに関する制約条件を保持するように暗号化するステップと、
暗号化されたデータセットの少なくとも１つのサブセットへ前記透かしデータをマッピングすることによって、前記フォーマット保持暗号化を必要とするフィールド中へ前記透かしデータを挿入するステップと
を含む、請求項９に記載のシステム。
【請求項１１】
前記少なくとも１つのサブセットは、前記データセットによって用いられていないとして識別された、請求項１０に記載のシステム。
【請求項１２】
前記データセットによって用いられていないとして識別された少なくとも１つのサブセットが、前記データセットによって実際には使用中であることが見出された場合には、前記データセットによって用いられていないとして識別された異なるサブセットへ前記透かしデータをマッピングするステップ
をさらに含む、請求項１１に記載のシステム。
【請求項１３】
前記少なくとも１つのサブセットは、前記データセットのデータ・ドメインをスパース表現からより密な表現へ変換するために追加的な情報の挿入を許容する、前記データセットの特性を見出すことによって識別された、請求項１２に記載のシステム。
【請求項１４】
前記挿入するステップは、
前記少なくとも１つのサブセット中、または前記少なくとも１つのサブセットの数値中に透かしデータの各数値をエンコードするステップ
を含む、請求項１３に記載のシステム。
【請求項１５】
前記透かしを挿入するステップは、誤りを生み出さず、前記挿入は、可逆的である、請求項１４に記載のシステム。
【請求項１６】
前記利用可能なサブセットが、
マッピング・ルール、マッピング・テーブル、または両方を用いて、前記入力データセットからの複数の数値をエンコードされた数値へマッピングすることと、
機械学習またはエキスパート知識を用いて、使用中のエンコードされたデータの群を識別することと、
前記エンコードされたデータの識別された前記群に含まれていない利用可能なサブセットを見出すことと、
によって見出される、請求項１１に記載のシステム。
【請求項１７】
データに透かしを入れるためのコンピュータ・プログラム製品であって、前記コンピュータ・プログラム製品は、それをもって具現されたプログラム命令を有する非一時的コンピュータ可読ストレージを備え、前記プログラム命令は、
フォーマット保持暗号化を必要とするフィールド中へ透かしデータを挿入するステップを含む方法をコンピュータに行わせるために、前記コンピュータによって実行可能である、コンピュータ・プログラム製品。
【請求項１８】
前記挿入するステップは、
前記フォーマット保持暗号化を必要とするフィールドをデータ・フォーマットに関する制約条件を保持するように暗号化するステップと、
暗号化されたデータセットの少なくとも１つのサブセットへ前記透かしデータをマッピングすることによって、前記フォーマット保持暗号化を必要とするフィールド中へ前記透かしデータを挿入するステップと
を含む、請求項１７に記載のコンピュータ・プログラム製品。
【請求項１９】
前記少なくとも１つのサブセットは、前記データセットによって用いられていないとして識別された、請求項１８に記載のコンピュータ・プログラム製品。
【請求項２０】
前記データセットによって用いられていないとして識別された少なくとも１つのサブセットが、前記データセットによって実際には使用中であることが見出された場合には、前記データセットによって用いられていないとして識別された異なるサブセットへ前記透かしデータをマッピングするステップ
をさらに含む、請求項１９に記載のコンピュータ・プログラム製品。
【請求項２１】
前記少なくとも１つのサブセットは、前記データセットのデータ・ドメインをスパース表現からより密な表現へ変換するために追加的な情報の挿入を許容する、前記データセットの特性を見出すことによって識別された、請求項２０に記載のコンピュータ・プログラム製品。
【請求項２２】
前記挿入するステップは、
前記少なくとも１つのサブセット中、または前記少なくとも１つのサブセットの数値中に透かしデータの各数値をエンコードするステップ
を含む、請求項２１に記載のコンピュータ・プログラム製品。
【請求項２３】
前記暗号化のセキュリティは、低下しない、請求項２１に記載のコンピュータ・プログラム製品。
【請求項２４】
前記透かしを挿入するステップは、誤りを生み出さず、前記挿入は、可逆的である、請求項２２に記載のコンピュータ・プログラム製品。
【請求項２５】
前記利用可能なサブセットが、
マッピング・ルール、マッピング・テーブル、または両方を用いて、前記入力データセットからの複数の数値をエンコードされた数値へマッピングすることと、
機械学習またはエキスパート知識を用いて、使用中のエンコードされたデータの群を識別することと、
前記エンコードされたデータの識別された前記群に含まれていない利用可能なサブセットを見出すことと、
によって見出される、請求項１９に記載のコンピュータ・プログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フォーマット保持暗号化を用いたデータ透かし入れのための技法に関する。
【０００２】
透かし入れは、データ内に情報を秘密裏に埋め込むことを伴う。デジタル透かしは、誤りもしくはノイズ耐性のある信号またはデータ、例えば、オーディオ、ビデオまたは画像データ中に秘密裏に埋め込まれうる情報である。例えば、デジタル透かし入れは、信号またはデータの著作権の所有権を識別するために用いられてよい。デジタル透かし入れは、信号またはデータセットを修正することを伴うので、誤りもしくはノイズ耐性は、信号またはデータの使用に対するかかる修正の否定的影響を軽減する。
【０００３】
誤り耐性のあるフィールドを、たとえあったとしても、わずかしかもたないデータセットは、チャネル容量の減少に起因する、透かし入れシステムに対する課題を提示する。かかる状況では、透かしが埋め込まれてよいスペースがわずかしかない。既存のデータ透かし入れ技法は、データ中へ透かしを埋め込むために誤りに耐えうるフィールドの存在に依拠する。これが意味するのは、いくつかのケースで、透かし容量が、大量の情報を含むのに小さ過ぎるであろう、あるいはまた、誤り補正の量を削減して、その結果、透かしのロバストネスを減少させるであろうということである。
【０００４】
誤り耐性のあるフィールドに依拠せず、それによって、透かしを入れるのに適するとは考えられなかったデータ中への透かしの組み込みを提供する、データ透かし入れを提供しうる技法の必要性が生じる。
【発明の概要】
【０００５】
本システムおよび方法の実施形態は、誤り耐性のあるフィールドに依拠せず、それによって、透かしを入れるのに適するとは考えられなかったデータ中への透かしの組み込みを提供する、データ透かし入れを提供できる。
【０００６】
例えば、ある実施形態において、データに透かしを入れるためのコンピュータ実施方法は、フォーマット保持暗号化を必要とするフィールド中へ透かしデータを挿入するステップを含んでよい。
【０００７】
複数の実施形態において、挿入するステップは、フォーマット保持暗号化を必要とするフィールドをデータ・フォーマットに関する制約条件を保持するように暗号化するステップと、暗号化されたデータセットの少なくとも１つのサブセットへ透かしデータをマッピングすることによって、フォーマット保持暗号化を必要とするフィールド中へ透かしデータを挿入するステップとを含んでよい。少なくとも１つのサブセットは、データセットによって用いられていないとして識別されてよい。データセットによって用いられていないとして識別された少なくとも１つのサブセットが、データセットによって実際には使用中であることが見出された場合には、データセットによって用いられていないとして識別された異なるサブセットへ透かしデータをマッピングする。少なくとも１つのサブセットは、データセットのデータ・ドメインをスパース表現からより密な表現へ変換するために追加的な情報の挿入を許容する、データセットの特性を見出すことによって識別されてよい。挿入するステップは、少なくとも１つのサブセット中、または少なくとも１つのサブセットの数値中に透かしデータの各数値をエンコードするステップを含んでよい。透かしを挿入するステップは、誤りを生み出しえず、挿入は、可逆的であってよい。利用可能なサブセットは、マッピング・ルール、マッピング・テーブル、または両方を用いて、入力データセットからの複数の数値をエンコードされた数値へマッピングし、使用中のエンコードされたデータの群を機械学習またはエキスパート知識を用いて識別して、エンコードされたデータの識別された群に含まれていない利用可能なサブセットを見出すことによって見出されてよい。
【０００８】
ある実施形態において、データに透かしを入れるためのシステムは、プロセッサ、プロセッサによってアクセス可能なメモリ、およびメモリに格納されて、フォーマット保持暗号化されたフィールド中へ透かしデータを挿入するステップを行うためにプロセッサによって実行可能であるコンピュータ・プログラム命令を備えてよい。
【０００９】
ある実施形態において、データに透かしを入れるためのコンピュータ・プログラム製品は、それをもって具現されたプログラム命令を有する非一時的コンピュータ可読ストレージを備えてよく、プログラム命令は、フォーマット保持暗号化されたフィールド中へ透かしデータを挿入するステップを含む方法をコンピュータに行わせるためにコンピュータによって実行可能である。
【００１０】
本発明の詳細は、その構造およびオペレーションの両方について、同様の参照番号および指定が同様の要素を指す、添付図面を参照することによって最もよく理解できる。
【図面の簡単な説明】
【００１１】
【図１】記載される実施形態が実装されてよいシステムを示す。
【図２】本実施形態に含まれる透かし入れプロセスの例示的なデータ・フロー図である。
【図３】本実施形態に含まれる前処理の例示的なフロー図である。
【図４】本実施形態に含まれる透かし入れおよび暗号化プロセスの例示的なフロー図である。
【図５】本実施形態に含まれる動的に変化するデータベースにおける透かし入れおよび暗号化プロセスの例示的なフロー図である。
【図６】本明細書に記載される実施形態に含まれるプロセスが実装されてよいコンピュータ・システムの例示的なブロック図である。
【発明を実施するための形態】
【００１２】
本システムおよび方法の実施形態は、誤り耐性のあるフィールドに依拠せず、それによって、透かしを入れるのに適するとは考えられなかったデータ中への透かしの組み込みを提供する、データ透かし入れを提供できる。
【００１３】
本システムおよび方法の実施形態は、検証などの理由でデータのフォーマットを維持することが必要なときにデータを暗号化するために用いられる方法である、フォーマット保持暗号化（ＦＰＥ：ｆｏｒｍａｔ  ｐｒｅｓｅｒｖｉｎｇ  ｅｎｃｒｙｐｔｉｏｎ）を用いてよい。標準的な暗号化と比較すると、フォーマット保持暗号化は、暗号化されたデータがオリジナル・データから識別できないというさらなる利点を有する。本システムおよび方法の実施形態は、透かし入れプロセスとフォーマット保持暗号化とを、損失のない仕方で、統合することによって、ＦＰＥフィールドを現在有するデータセット中に透かしを入れるための容量の増加を提供できる。
【００１４】
透かし入れとフォーマット保持暗号化方法とを統合すると、透かし入れに適するとは現在考えられなかったデータ中への透かしの組み込みを提供することができ、全体的な透かし入れ容量の増加を提供できる。複数の実施形態において、この統合は、可逆的な透かし入れ方法のために提供されてよい。かかる可逆的な透かし入れ方法は、自然画像、信号、電子メール・アドレス、パスポート番号リストなどのような、データセットにおいて共通に満たされる、ビットワイズ／要素間の特性に関する一定の前提条件を有してよい。別の状況では、いくつかのケースで、プレーン・データ特性に依存して、これらの前提条件を透かし入れ前プロセスを通じて満たすことができる。エキスパート知識または機械学習技法を用いて行われてよい、前処理は、データ特性を変換し、オリジナル・データに関して予め適用可能ではなかった一定の透かし入れ技法を適用可能にしてよい。
【００１５】
本システムおよび方法の実施形態が実装されてよい、システム１００の例示的なブロック図が図１に示される。この例では、システム１００は、データ・ソース１０２Ａ〜Ｎおよびコンピュータ・システム１０４を含む。データ・ソース１０２Ａ〜Ｎは、インターネット、コンピュータ・システム、他のコンピューティング・デバイス、例えば、スマートフォン、タブレットなどのようなデータのソース、あるいはコンピュータ・システム１０４上に存在する、またはそれへ転送されるファイルのようなデータ・ソースを含んでよい。コンピュータ・システム１０４は、１つ以上のプログラムされた汎用コンピュータ・システム、例えば、エンベデッド・プロセッサ、システム・オン・チップ、パーソナル・コンピュータ、ワークステーション、サーバ・システム、およびミニコンピュータまたはメインフレーム・コンピュータを用いて、あるいは分散型ネットワーク化コンピューティング環境において実装されてよい。コンピュータ・システム１０４は、透かし入れ処理１０６および暗号化処理１０８を含んでよい。透かし入れ処理１０６は、本明細書に開示される技法に従ってデータの透かし入れを行ってよい。同様に、暗号化処理１０８は、本明細書に開示される技法に従ってデータの暗号化を行ってよい。コンピュータ・システム１０４において行われる処理の結果として、出力データセット１１０が生成されてよい。
【００１６】
本システムおよび方法の実施形態は、ＦＰＥを用いて暗号化されたフィールド中へ透かしを組み込んでよい。かかる処理の例が図２に示される。この例では、入力データ２０２は、その各々が複数のデータ・フィールド２０６Ａ〜Ｎを含みうる、複数のデータ・レコード２０４Ａ〜Ｚを含んでよい。例えば、ある実施形態は、データ内の局在性のような、データのビットワイズの特性を活用してよい。例えば、２０４Ａおよび（図示されない）２０４Ｂのような、データセット内で位置的に接近したレコードは、接近した数値、数値／桁の出現の間の相関性、レコード内／間の順序などを有してよい。これらの特性は、画像および音響データ、電子メール・アドレス、順序づけられた識別番号リストなどのような、自然にサンプリングされたデータ中に見出されうる。すでに暗号化されたデータ、ランダム・データ、圧縮されたデータなどのような、高エントロピー・データには、かかる相関性を示す特性が存在しない。かかる相関性を示す特性が存在するときに、透かし入れ処理２０８Ａ〜Ｎが適用されてよい。図２に示されるように、複数の実施形態において、データ・フィールドのコンテンツに依存して、異なる透かし入れ処理２０８Ａ〜Ｎが各データ・フィールド２０６Ａ〜Ｎに適用されてよい。透かし入れ処理２０８Ａ〜Ｎは、例えば、単一のレコードまたはレコードの群に関するテキストから整数へのマッピングで始まってよい。前述の特性を利用する、可逆的な透かし入れ方法が次に適用されてよい。２１０Ａ〜Ｎにおいて、整数フォーマット保持暗号化（ＩＦＰＥ：Ｉｎｔｅｇｅｒ  Ｆｏｒｍａｔ  Ｐｒｅｓｅｒｖｉｎｇ  Ｅｎｃｒｙｐｔｉｏｎ）および整数からテキストへのマッピングが適用されてよい。結果として生じる出力データ２１２は、透かしも含むフォーマットされ、暗号化されたレコード（単数または複数）２１４Ａ〜Ｚを含んでよい。複数の実施形態において、結果として生じた出力データ２１２は、暗号化プロセスに起因して、透かしを入れてない暗号化されたレコードから識別できないであろう。
【００１７】
例えば、ＦＰＥを用いると、入力データ・ドメインは、出力データ・ドメインと同じサイズであってよい。例えば、ＦＰＥを用いて暗号化された１６桁のクレジット・カード番号のケースでは、暗号化された出力もクレジット・カード番号フォーマットに従って１６桁の番号であってよい。この１対１マッピング（１６桁イン、１６桁アウト）のゆえに、追加的な情報（透かし入れ情報）を挿入するために、現在の技法の実施形態は、用いられていない１６桁内のサブセット（数値、領域、サブセットなど）を識別してよい。これらの用いられていないサブセットが透かし入れ情報を挿入するために次に用いられてよい。例えば、挿入されることになる透かし入れ情報のデータ値ごとに、各データ値をエンコードするために、用いられていない少なくとも１つのデータ値が必要とされてよい。
【００１８】
ある実施形態において、相関性を示す特性を得るために前処理が用いられてよい。かかる前処理３００の例が図３に示される。かかる前処理は、例えば、学習または構成のいずれかを行うことができるいくつかのパターンをもつスパース・データセットに適用されてよい。例えば、データセットおよびデータセットのフォーマットが解析されてよく、用いられていないサブセット（数値、領域、サブセットなど）が識別されてよい。かかる用いられていないサブセットが、例えば、エキスパート知識または機械学習を用いることによって識別されてよい。かかるサブセットは、例えば、データセットのスパースネスまたはフォーマットの制約条件などの結果として発生しうる。例えば、１６桁のクレジット・カード番号のセットを考えよう。いずれの有効なクレジット・カード番号も４桁の「００００」で始まらないかもしれないが、それでもなおフォーマット制限によればそれが有効な場合がある。そのときには、「００００」で始まるクレジット・カード番号のサブセットが、透かし情報をエンコードする際に使用可能であるとして識別されてよい。いくつかの事例では、用いられていないとして識別されたあるサブセットが実際には使用中であることが見出されることがある。すなわち、処理中にこのサブセット中の１つ以上の数値に遭遇することがある。これらの事例では、実際には使用中であることが見出されたサブセットの代わりに別のサブセットが用いられてよい。
【００１９】
例えば、言語フォーマットＬに準拠するＮ個のトークンの入力データセット３０２を考慮すると、３０４において、ソリューション（ＮがＬ中のワードの数よりはるかに小さいと仮定する）は、すべてのトークンをＬの２つ以上の互いに素のサブセットへマッピングすることであってよい。３０６において、各データ値を表す（またはエンコードする）ためにあるサブセットを選択することによって、透かしを入れたデータが生成されてよい。例えば、各々のサブセットがビットの異なる組み合わせの透かしエンコーディングを表してよい。透かし入れプロセス中に、透かしビットに従って適切なサブセットが選ばれてよく、各サブセットからデータに従って適切なワードが選ばれてよい。次に、透かしを入れたデータセット３０８が生成されてよい。例えば、「００００」で始まるクレジット・カード番号が利用可能であるとして識別された、クレジット・カード番号を仮定すると、「０」の透かしビットは、修正されていないクレジット・カード番号を用いることによって表されてよく、一方で「１」の透かしビットは、その他の点ではクレジット・カード番号フォーマットを満たすが、「００００」で始まる１６桁の番号を用いて表現されてよい。別の例として、１０個の１６桁のクレジット・カード番号を含むデータセットを仮定しよう。第１のクレジット・カード番号は、例えば、「０」の透かしビットをエンコードするために、「１００００００００００００００１」へマッピングされてよく、例えば、「１」の透かしビットをエンコードするために、「１１０００００００００００００１」へマッピングされてよい。第２のクレジット・カード番号は、例えば、「０」の透かしビットをエンコードするために、「１００００００００００００００２」へマッピングされてよく、例えば、「１」の透かしビットをエンコードするために、「１１０００００００００００００２」へマッピングされてよいなどである。かかるエンコーディングは、データセットのサイズであるマッピング・テーブルを必要とするかもしれない。エキスパート知識または機械学習のいずれかを用いて、マッピング・テーブルのサイズが縮小されて、データ内の冗長性を利用しうるコンパクトな関数で置き換えられてよい。かかるコンパクトなエンコーダは、各数値を１対１の様式で表さないことがある。かかるケースのために、マッピング・テーブルが用いられてよい。
【００２０】
ある実施形態において、透かし入れおよび暗号化プロセス４００の例が図４に示される。プロセス４００は、透かし入れデータを格納するために利用可能でありうる、データセット中のデータ値／領域を見出すために、およびこれらの利用可能なデータ値／領域へデータをエンコードするためのエンコーディング・ルールおよび／またはマッピング・テーブルを生成するために、入力データセット４０２を処理する。４０４において、透かし入れより前に、データセット４０２をその現在の状態において用いてエンコーダを構築するためにオフラインの学習および／またはマニュアル・ルール構成プロセスが行われてよい。４０６において、入力データセット４０２からの数値が、エンコードされた数値へマッピングされてよい。かかるマッピングは、例えば、マッピング・ルールのセットおよび／または１つ以上のマッピング・テーブル中に格納されてよい。４０８において、入力データ・セット４０４からの数値を用いて透かしを入れたデータを生成するために、生成されたマッピングが用いられてよい。機械学習は、データ内の下地パターンを発見するため、および用いられていないかもしれず、透かし入れデータを格納するために利用可能でありうるデータ中のデータ値／領域を見出すために用いられてよい。真にランダムなデータについては、かかる利用可能な数値／領域を見出すことができないかもしれない。しかしながら、多くのケースについて、データは、真にランダムではない。レコードの群をコンパクトに記載しうる、クラスタリングのような機械学習技法がこのプロセスのために用いられてよい。クラスタリングを通じて、別の方法では知られなかった、または専門家にしか知られなかったであろうルールが学習されてよい。これらの学習されたルールは、利用可能なデータ値／領域を見出すことによって、データセットの特性に基づいて、データ・ドメインをスパース表現から密な表現へ変換するために次に用いられてよい。例えば、クレジット・カード番号を見ると、非常にありふれた番号プレフィックスがありうるが、一方で他のプレフィックスは、決して用いられない。プレフィックスについて検出されたクラスタが、それゆえに、決して用いられない数値へマッピングされてよい。加えて、いくつかの透かし入れ方法は、データが「透かし入れ可能」であるか、すなわち、それが一定の特性を満たすかどうかを決定してよく、さらに、データの透かし容量を決定することが可能であってよい。この決定は、機械学習プロセス４０４のためのコスト関数として用いられてよく、機械学習プロセス４０４中に変換されたデータが所望の特性を保持するまで用いられてよい。そのようにして、容量が増加され、または最大化されてよく、一方では、いずれのメモリ使用量閾値も超過することはない。
【００２１】
４１０において、透かしを入れたデータ４０８を生成した後に、各数値の変換が可逆的であることを確かめるために透かし入れプロセス４０８がテストされてよい。４１２において、透かし入れプロセス４０８が１対１の様式で変換できないワードについて、この変換されないデータをマッピングするためにマッピング・テーブルが構築されてよい。４１４において、データセットおよびフォーマット言語サイズの制限の下で構築された、変換関数を用いて、データセット中のワードごとのビット・エンコーディングが定義されてよい。例えば、ある透かしビットおよびデータセットからのあるワードが与えられると、変換関数は、両方を表す（言語Ｌのフォーマットでの）ワードを示してよい。複数の実施形態において、変換関数は、各ワードにおける複数の、透かしを入れたビットを表してよい。加えて、学習段階が、いくつかの実施形態において、反復的であってよいので、いずれの先行データも必要としないであろう。
【００２２】
初期のマッピング段階後に、４１６において、Ｌと同じフォーマットを踏襲するが、今や情報を秘密裏にエンコードしうる新しい、透かしを入れたデータセット４１６が定義された。複数の実施形態において、透かしそれ自体を生成する関数は、いずれか既知の、または新たに開発された透かし入れ方法から選ばれてよい。同様に、リレーショナル・データベースのためのいずれか既知の、または新たに開発された透かし入れ方法を用いて、レコードがデータベース中へ挿入されてよい。かかる方法は、透かし取り出しを依然として許容しつつ、動的に変化するデータベース中へ透かしを挿入しうる。ある実施形態において、動的に変化するデータベースにおける透かし入れおよび暗号化プロセス５００の例が図５に示される。５０２において、新しいレコードがデータベースへ追加されるにつれて、すでに構築された透かし入れプロセス４０８を用いて、新しいワードがテストされてよい。５０４において、新しいワードが適切に取り扱われないケースでは、これらのワードがマッピング・テーブルへ追加されてよい。５０６において、透かしを入れたワードに関してフォーマット保持暗号化（ＦＰＥ）が行われてよい。５１０において、透かしを得る必要性が生じたときには、ワードがマップ中に現れるときにそのテーブル・マップを用いて、透かしを入れたワードをデコードすることによって、あるいは別の状況ではエンコーダを用いることによってフォーマット保持復号化（ＦＰＤ）が行われてよい。５１２において、透かしがオリジナル・トークンから分離されて、透かし入れ関数を用いて透かしが抽出されてよい。
【００２３】
本明細書に記載される実施形態に含まれるプロセスが実装されてよい、コンピュータ・システム６０２の例示的なブロック図が図６に示される。コンピュータ・システム６０２は、１つ以上のプログラムされた汎用コンピュータ・システム、例えば、エンベデッド・プロセッサ、システム・オン・チップ、パーソナル・コンピュータ、ワークステーション、サーバ・システム、およびミニコンピュータまたはメインフレーム・コンピュータを用いて、あるいは分散型ネットワーク化コンピューティング環境において実装されてよい。コンピュータ・システム６０２は、１つ以上のプロセッサ（ＣＰＵ）６０２Ａ〜６０２Ｎ、入力／出力回路素子６０４、ネットワーク・アダプタ６０６、およびメモリ６０８を含んでよい。ＣＰＵ６０２Ａ〜６０２Ｎは、本通信システムおよび方法の機能を実施するためにプログラム命令を実行する。典型的に、ＣＰＵ６０２Ａ〜６０２Ｎは、１つ以上のマイクロプロセッサ、例えば、ＩＮＴＥＬ  ＣＯＲＥ（Ｒ）プロセッサである。図６は、コンピュータ・システム６０２が単一のマルチ・プロセッサ・コンピュータ・システムとして実装された、ある実施形態を示し、このコンピュータ・システムでは複数のプロセッサ６０２Ａ〜６０２Ｎがシステム・リソース、例えば、メモリ６０８、入力／出力回路素子６０４、およびネットワーク・アダプタ６０６を共有する。しかしながら、本通信システムおよび方法は、コンピュータ・システム６０２が、シングルプロセッサ・コンピュータ・システム、マルチプロセッサ・コンピュータ・システム、またはそれらの混合であってよい、複数のネットワーク化コンピュータ・システムとして実装された実施形態も含む。
【００２４】
入力／出力回路素子６０４は、コンピュータ・システム６０２へデータを入力するための能力、またはそれからデータを出力するための能力を提供する。例えば、入力／出力回路素子は、入力デバイス、例えば、キーボード、マウス、タッチパッド、トラックボール、スキャナ、アナログ・デジタル変換器など、出力デバイス、例えば、ビデオ・アダプタ、モニタ、プリンタなど、および入力／出力デバイス、例えば、モデムなどを含んでよい。ネットワーク・アダプタ６０６は、デバイス６００をネットワーク６１０とインターフェース接続する。ネットワーク６１０は、インターネットを含むが、それには限定されない、いずれかのパブリックもしくはプロプライエタリＬＡＮまたはＷＡＮであってよい。
【００２５】
メモリ６０８は、コンピュータ・システム６０２の機能を行うために、ＣＰＵ６０２によって実行されるプログラム命令、およびＣＰＵ６０２によって用いられ、処理されるデータを格納する。メモリ６０８は、例えば、電子メモリ・デバイス、例えば、ランダム・アクセス・メモリ（ＲＡＭ：ｒａｎｄｏｍ−ａｃｃｅｓｓ  ｍｅｍｏｒｙ）、リード・オンリ・メモリ（ＲＯＭ：ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）、プログラマブル・リード・オンリ・メモリ（ＰＲＯＭ：ｐｒｏｇｒａｍｍａｂｌｅ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）、電気的消去可能プログラマブル・リード・オンリ・メモリ（ＥＥＰＲＯＭ：ｅｌｅｃｔｒｉｃａｌｌｙ  ｅｒａｓａｂｌｅ  ｐｒｏｇｒａｍｍａｂｌｅ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）、フラッシュ・メモリなど、および電気機械メモリ、例えば、磁気ディスク・ドライブ、テープ・ドライブ、光ディスク・ドライブなどを含んでよく、これらのメモリは、ｉｎｔｅｇｒａｔｅｄ  ｄｒｉｖｅ  ｅｌｅｃｔｒｏｎｉｃｓ（ＩＤＥ）インターフェース、またはそのバリエーションもしく拡張、例えば、ｅｎｈａｎｃｅｄ  ＩＤＥ（ＥＩＤＥ）またはｕｌｔｒａ−ｄｉｒｅｃｔ  ｍｅｍｏｒｙ  ａｃｃｅｓｓ（ＵＤＭＡ）、あるいはｓｍａｌｌ  ｃｏｍｐｕｔｅｒ  ｓｙｓｔｅｍ  ｉｎｔｅｒｆａｃｅ（ＳＣＳＩ）ベース・インタフェース、またはそのバリエーションもしくは拡張、例えば、ｆａｓｔ−ＳＣＳＩ、ｗｉｄｅ−ＳＣＳＩ、ｆａｓｔ  ｗｉｄｅ−ＳＣＳＩなど、あるいはＳｅｒｉａｌ  Ａｄｖａｎｃｅｄ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｔｔａｃｈｍｅｎｔ（ＳＡＴＡ）、またはそのバリエーションもしくは拡張、あるいはｆｉｂｅｒ  ｃｈａｎｎｅｌ−ａｒｂｉｔｒａｔｅｄ  ｌｏｏｐ（ＦＣ−ＡＬ）インターフェースを用いてよい。
【００２６】
メモリ６０８のコンテンツは、コンピュータ・システム６０２が行うようにプログラムされた機能に依存して変化してよい。図６に示される例では、上記のプロセスの実施形態のためのルーチンおよびデータを表す例示的なメモリ・コンテンツが示される。しかしながら、これらのルーチンは、それらのルーチンに関係するメモリ・コンテンツとともに、１つのシステムまたはデバイス上に含まれなくてもよく、むしろよく知られた工学的考察に基づいて、複数のシステムまたはデバイス間に分散されてもよいことを当業者は認識するであろう。本通信システムおよび方法は、あらゆるかかる配置を含んでよい。
【００２７】
複数の実施形態において、図６に示されるソフトウェアの少なくとも一部分は、現在のリーダ・サーバ上に実装されてよい。同様に、複数の実施形態において、図６に示されるソフトウェアの少なくとも一部分が現在のリーダ・サーバ以外のコンピュータ・システム上に実装されてもよい。
【００２８】
図６に示される例において、メモリ６０８は、学習ルーチン６１２、透かし入れルーチン６１４、暗号化ルーチン６１６、入力データセット６１８、エンコードされたデータセット６２０、変換／マッピング・データ６２２およびオペレーティング・システム６２０を含んでよい。学習ルーチン６１２は、図２に示される、ルール生成器２０６、節抽出２２２、編集２２４、および評価２２６を実装するような、事前計算処理タスクを行うためのソフトウェア・ルーチンを含んでよい。ランタイム・ルーチン６１４は、図２に示される、ターゲット識別２４６、リクエスト書き換え２４８、ランタイム節評価２５０、リクエスト低減２５２、およびリクエスト実行２５４のような、ランタイム処理タスクを行うためのソフトウェア・ルーチンを含んでよい。データ６１６は、図２に示される、ターゲット・データ２３０、コンテキスト・データ２３２、同意データ２３４、編集されたＵｂｅｒルール２３６、および評価された節２３８のような、例えば、データ・レーク２２８中に格納されてよい、データを含んでよい。データ６１８は、図２に示される、アクセス特性２１０、ポリシー２１２、データ・スキーマ２１４、データ・ターゲット２１６、クエリ２４０、ルール・エンジン・ルール２４２、アクセス・ルール２４４および準拠データ２５６のようなデータを含んでよい。オペレーティング・システム６２０は、総合的なシステム機能性を提供できる。
【００２９】
図６に示されるように、本通信システムおよび方法は、マルチ・プロセッサ、マルチ・タスキング、マルチ・プロセス、および／またはマルチ・スレッド・コンピューティングを提供する１つもしくは複数のシステム上の実装、ならびにシングル・プロセッサ、シングル・スレッド・コンピューティングのみを提供する複数のシステム上の実装を含んでよい。マルチ・プロセッサ・コンピューティングは、１つより多いプロセッサを用いてコンピューティングを行うことを伴う。マルチ・タスキング・コンピューティングは、１つより多いオペレーティング・システム・タスクを用いてコンピューティングを行うことを伴う。タスクとは、実行されているプログラムとオペレーティング・システムによって用いられるブックキーピング情報との組み合わせを指すオペレーティング・システム概念である。プログラムが実行されるときにはいつでも、オペレーティング・システムがそのための新しいタスクを生み出す。タスクは、タスク番号をもつプログラムをそれが識別して、他のブックキーピング情報をそれにアタッチするという点でプログラムのためのエンベロープのようなものである。Ｌｉｎｕｘ（Ｒ）、ＵＮＩＸ（Ｒ）、ＯＳ／２（Ｒ）およびＷｉｎｄｏｗｓ（Ｒ）を含めて、多くのオペレーティング・システムが多くのタスクを同時に作動させることが可能であり、マルチタスキング・オペレーティング・システムと呼ばれる。マルチ・タスキングは、１つより多い実行ファイルを同時に実行するためのオペレーティング・システムの能力である。各実行ファイルは、それ自体のアドレス・スペース内で作動しており、つまり、複数の実行ファイルがそれらのメモリのいずれかを共有することはできない。これは、いずれのプログラムもシステム上で作動している他のプログラムのいずれかの実行を損なうことが不可能であるため、有利である。しかしながら、これらのプログラムは、オペレーティング・システムを通じて（またはファイル・システム上に格納されたファイルを読み取ることによる）以外、いずれの情報も交換することができない。タスクおよびプロセスという用語がしばしば同義で用いられるので、マルチ・プロセス・コンピューティングは、マルチ・タスキング・コンピューティングと同様であるが、いくつかのオペレーティング・システムは、２つを区別する。
【００３０】
本発明は、いずれか可能な技術的に詳細な統合レベルにおけるシステム、方法、および／またはコンピュータ・プログラム製品であってよい。コンピュータ・プログラム製品は、本発明の態様をプロセッサに実施させるためのコンピュータ可読プログラム命令をその上に有する（１つもしくは複数の）コンピュータ可読ストレージ媒体を含んでよい。コンピュータ可読ストレージ媒体は、命令実行デバイスによる使用のための命令を保持して格納できる有形のデバイスとすることができる。
【００３１】
コンピュータ可読ストレージ媒体は、例えば、以下には限定されないが、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、または前述のものの任意の適切な組み合わせであってよい。コンピュータ可読ストレージ媒体のより具体的な例の非網羅的なリストは、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、リード・オンリ・メモリ（ＲＯＭ）、消去可能プログラマブル・リード・オンリ・メモリ（ＥＰＲＯＭ：ｅｒａｓａｂｌｅ  ｐｒｏｇｒａｍｍａｂｌｅ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙまたはフラッシュ・メモリ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ：ｓｔａｔｉｃ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）、ポータブル・コンパクト・ディスク・リード・オンリ・メモリ（ＣＤ−ＲＯＭ：ｃｏｍｐａｃｔ  ｄｉｓｃ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）、デジタル多用途ディスク（ＤＶＤ：ｄｉｇｉｔａｌ  ｖｅｒｓａｔｉｌｅ  ｄｉｓｋ）、メモリ・スティック、フレキシブル・ディスク、パンチ・カードもしくはその上に記録された命令を有する溝中の隆起構造のような、機械的にエンコードされたデバイス、および前述のものの任意の適切な組み合わせを含む。コンピュータ可読ストレージ媒体は、本明細書では、それ自体が一時的な信号、例えば、電波または他の自由伝搬する電磁波、導波路もしくは他の伝送媒体を通って伝搬する電磁波（例えば、光ファイバ・ケーブルを通過する光パルス）、あるいは線を通って伝送される電気信号であると解釈されるべきではない。
【００３２】
本明細書に記載されるコンピュータ可読プログラム命令をコンピュータ可読ストレージ媒体からそれぞれのコンピューティング／処理デバイスへ、あるいはネットワーク、例えば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワークおよび／または無線ネットワークを介して外部コンピュータもしくは外部ストレージ・デバイスへダウンロードできる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイヤウォール、スイッチ、ゲートウェイ・コンピュータ、および／またはエッジ・サーバを備えてよい。各コンピューティング／処理デバイス中のネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、コンピュータ可読プログラム命令をネットワークから受信して、それらのコンピュータ可読プログラム命令をそれぞれのコンピューティング／処理デバイス内のコンピュータ可読ストレージ媒体中に格納するために転送する。
【００３３】
本発明のオペレーションを実施するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ（ＩＳＡ：ｉｎｓｔｒｕｃｔｉｏｎ−ｓｅｔ−ａｒｃｈｉｔｅｃｔｕｒｅ）命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路素子のための構成データ、あるいはＳｍａｌｌｔａｌｋ、Ｃ＋＋、または同様のもののようなオブジェクト指向プログラミング言語、ならびに「Ｃ」プログラミング言語または同様のプログラミング言語のような、手続き型プログラミング言語を含めて、１つ以上のプログラミング言語のいずれかの組合せで書かれたソース・コードまたはオブジェクト・コードのいずれかであってよい。コンピュータ可読プログラム命令は、全体的にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンド・アローンのソフトウェア・パッケージとして、部分的にユーザのコンピュータ上かつ部分的にリモート・コンピュータ上で、あるいは全体的にリモート・コンピュータまたはサーバ上で実行してよい。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）またはワイド・エリア・ネットワーク（ＷＡＮ）を含めて、いずれかのタイプのネットワークを通してユーザのコンピュータへ接続されてもよく、あるいは（例えば、インターネット・サービス・プロバイダを用いてインターネットを通して）外部コンピュータへ接続が行われてもよい。いくつかの実施形態において、例えば、プログラマブル・ロジック回路素子、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ：ｆｉｅｌｄ−ｐｒｏｇｒａｍｍａｂｌｅ  ｇａｔｅ  ａｒｒａｙ）、またはプログラマブル・ロジック・アレイ（ＰＬＡ：ｐｒｏｇｒａｍｍａｂｌｅ  ｌｏｇｉｃ  ａｒｒａｙｓ）を含む電子回路素子は、本発明の態様を行うために、電子回路素子をパーソナライズすべくコンピュータ可読プログラム命令の状態情報を利用することによってコンピュータ可読プログラム命令を実行してよい。
【００３４】
本発明の態様は、本発明の実施形態による方法、装置（システム）、ならびにコンピュータ・プログラム製品のフローチャート説明図および／またはブロック図を参照して本明細書に記載される。フローチャート説明図および／またはブロック図の各ブロック、ならびにフローチャート説明図および／またはブロック図におけるブロックの組み合わせをコンピュータ可読プログラム命令によって実装できることが理解されるであろう。
【００３５】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサを介して実行する、それらの命令が、フローチャートおよび／またはブロック図の１つもしくは複数のブロックにおいて指定された機能／作用を実装するための手段を生み出すような、マシンを作り出すために汎用コンピュータ、専用コンピュータ、または他のプログラマブル・データ処理装置のプロセッサへ提供されてよい。これらのコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体中に格納されてもよく、これらのプログラム命令は、その中に格納された命令を有するコンピュータ可読ストレージ媒体が、フローチャートおよび／またはブロック図の１つもしくは複数のブロックにおいて指定された機能／作用の態様を実装する命令を含む製造品を備えるような、特定の仕方で機能するようにコンピュータ、プログラマブル・データ処理装置、および／または他のデバイスに命令できる。
【００３６】
コンピュータ可読プログラム命令は、コンピュータ、他のプログラマブル装置、または他のデバイス上で実行する命令が、フローチャートおよび／またはブロック図の１つもしくは複数のブロックにおいて指定された機能／作用を実装するような、コンピュータ実装プロセスを作り出すために一連の動作ステップがコンピュータ、他のプログラマブル装置または他のデバイス上で行われるようにするためにコンピュータ、他のプログラマブル・データ処理装置、または他のデバイス上へロードされてもよい。
【００３７】
図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能性、およびオペレーションを示す。この点において、フローチャートまたはブロック図中の各ブロックは、指定された論理機能（単数または複数）を実装するための１つ以上の実行可能な命令を備える、モジュール、セグメント、または命令の一部を表してよい。いくつかの代わりの実装では、ブロック中に記された機能が図中に記された順序以外で発生してもよい。例えば、含まれる機能性に依存して、連続して示される２つのブロックが、実際には、実質的に同時に実行されてもよく、またはブロックがときには逆の順序で実行されてもよい。ブロック図および／またはフローチャート説明図の各ブロック、ならびにブロック図および／またはフローチャート説明図におけるブロックの組み合わせを、指定された機能または作用を行う、あるいは専用ハードウェアとコンピュータ命令との組み合わせを実施する専用ハードウェア・ベース・システムによって実装できることにも気付くであろう。
【００３８】
本発明の具体的な実施形態が記載されたが、記載された実施形態と同等の他の実施形態があることが当業者によって理解されるであろう。従って、本発明は、具体的に示された実施形態によってではなく、添付される請求項の範囲によってのみ限定されることが理解されるべきである。
【図１】
2021529364.tif 000003
【図２】
2021529364.tif 000004
【図３】
2021529364.tif 000005
【図４】
2021529364.tif 000006
【図５】
2021529364.tif 000007
【図６】
2021529364.tif 000008
【手続補正書】
【提出日】令和3年5月19日(2021.5.19)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
プロセッサが実行する、データに透かしを入れるための方法であって、
フォーマット保持暗号化を必要とするフィールド中へ透かしデータを挿入するステップ
を含む、方法。
【請求項２】
前記挿入するステップは、
前記フォーマット保持暗号化を必要とするフィールドをデータ・フォーマットに関する制約条件を保持するように暗号化するステップと、
暗号化されたデータセットの少なくとも１つのサブセットへ前記透かしデータをマッピングすることによって、前記フォーマット保持暗号化を必要とするフィールド中へ前記透かしデータを挿入するステップと
を含む、請求項１に記載の方法。
【請求項３】
前記少なくとも１つのサブセットは、前記データセットによって用いられていないとして識別された、請求項２に記載の方法。
【請求項４】
前記データセットによって用いられていないとして識別された少なくとも１つのサブセットが、前記データセットによって実際には使用中であることが見出された場合には、前記データセットによって用いられていないとして識別された異なるサブセットへ前記透かしデータをマッピングするステップ
をさらに含む、請求項３に記載の方法。
【請求項５】
前記少なくとも１つのサブセットは、前記データセットのデータ・ドメインをスパース表現からより密な表現へ変換するために追加的な情報の挿入を許容する、前記データセットの特性を見出すことによって識別された、請求項４に記載の方法。
【請求項６】
前記挿入するステップは、
前記少なくとも１つのサブセット中、または前記少なくとも１つのサブセットの数値中に透かしデータの各数値をエンコードするステップ
を含む、請求項５に記載の方法。
【請求項７】
前記透かしを挿入するステップは、誤りを生み出さず、前記挿入は、可逆的である、請求項６に記載の方法。
【請求項８】
利用可能なサブセットが、
マッピング・ルール、マッピング・テーブル、または両方を用いて、入力された前記データセットからの複数の数値をエンコードされた数値へマッピングすることと、
機械学習またはエキスパート知識を用いて、使用中のエンコードされたデータの群を識別することと、
前記エンコードされたデータの識別された前記群に含まれていない利用可能なサブセットを見出すことと、
によって見出される、請求項３に記載の方法。
【請求項９】
データに透かしを入れるためのシステムであって、
プロセッサと、
前記プロセッサによってアクセス可能なメモリと、
前記メモリに格納されて、請求項１から８のいずれか一項に記載の方法における各ステップを前記プロセッサに実行させるコンピュータ・プログラム命令と、
を備える、システム。
【請求項１０】
データに透かしを入れるためのコンピュータ・プログラムであって、請求項１から８のいずれか一項に記載の方法における各ステップをプロセッサに実行させる、コンピュータ・プログラム。
【請求項１１】
請求項１０に記載のコンピュータ・プログラムを記録した、コンピュータ可読ストレージ媒体。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００９
【補正方法】変更
【補正の内容】
【０００９】
ある実施形態において、データに透かしを入れるためのコンピュータ・プログラム製品は、それをもって具現されたプログラム命令を有する非一時的コンピュータ可読ストレージを備えてよく、プログラム命令は、フォーマット保持暗号化されたフィールド中へ透かしデータを挿入するステップを含む方法をコンピュータに行わせるためにコンピュータによって実行可能である。データに透かしを入れるための方法、システム、コンピュータ・プログラム、およびコンピュータ・プログラム製品では、暗号化のセキュリティは、低下しない。
【国際調査報告】
2021529364.tif 000009
2021529364.tif 000010