(57)【要約】（１）値の第１のシーケンスを備える暗号化されていないデータストリームを取得するステップと、（２）値の第１のシーケンスの第１の部分を第１の変数に等しい語長を有するオリジナルの第１の単語にセグメント化するステップと、（３）値の第１のシーケンスの第２の部分を第１の変数と異なる第２の変数に等しい語長を有するオリジナルの第２の単語にセグメント化するステップと、（４）オリジナルの第１および第２の単語内の所定の場所にランダム値を挿入し、修正された第１および第２の単語を生成するステップであって、修正された第１および第２の単語は、第１および第２の変数と異なる第３の変数に等しい語長を有する、ステップと、（５）修正された第１および第２の単語を、暗号化されたデータストリームを定義する値の第２のシーケンスに組み合わせるステップと含む、データをセキュアに伝送する方法。
2019535041.tif 000002
【特許請求の範囲】
【請求項１】
データをセキュアに伝送する方法であって、
値の第１のシーケンスを備える暗号化されていないデータストリームを取得することと、
前記値の第１のシーケンスの第１の部分を第１の変数に等しい語長を有するオリジナルの第１の単語にセグメント化することと、
前記値の第１のシーケンスの第２の部分を前記第１の変数と異なる第２の変数に等しい語長を有するオリジナルの第２の単語にセグメント化することと、
前記オリジナルの第１および第２の単語内の所定の場所にランダム値を挿入し、修正された第１および第２の単語を生成することであって、前記修正された第１および第２の単語は、前記第１および第２の変数と異なる第３の変数に等しい語長を有する、ことと、
前記修正された第１および第２の単語を、暗号化されたデータストリームを定義する値の第２のシーケンスに組み合わせることと
を含む、方法。
【請求項２】
前記値の第１のシーケンス内の各値は、２進値である、請求項１に記載の方法。
【請求項３】
前記値の第１のシーケンス内の各値は、１６進値である、請求項１に記載の方法。
【請求項４】
前記方法は、前記暗号化されていないデータストリームを生成したコンピュータと異なる遠隔コンピュータによって実施される、請求項１に記載の方法。
【請求項５】
前記暗号化されたデータストリームを宛先デバイスに伝送することをさらに含む、請求項１に記載の方法。
【請求項６】
前記第１、第２、および第３の変数は、前記宛先デバイスによって把握される、請求項５に記載の方法。
【請求項７】
前記第１、第２、および第３の変数は、時間の関数として変化する、請求項１に記載の方法。
【請求項８】
前記暗号化されたデータストリームを復号化することをさらに含み、
前記値の第２のシーケンスを備える前記暗号化されたデータストリームを取得すことと、
前記値の第２のシーケンスの少なくとも一部を前記修正された第１および第２の単語にセグメント化することであって、前記修正された第１および第２の単語は、前記第３の変数に等しい語長を有する、ことと、
前記修正された第１および第２の単語内の所定の場所における値を除去し、前記第１の変数に等しい語長を伴う前記オリジナルの第１の単語および前記第２の変数に等しい語長を伴う前記オリジナルの第２の単語を生成することと、
前記オリジナルの第１および第２の単語を、前記暗号化されていないデータストリームを定義する前記値の第１のシーケンスに組み合わせることと
を含む、請求項１に記載の方法。
【請求項９】
データを復号化する方法であって、
値の第２のシーケンスを備える暗号化されたデータストリームを取得することと、
前記値の第２のシーケンスの少なくとも一部を修正された第１および第２の単語にセグメント化することであって、前記修正された第１および第２の単語は、第３の変数に等しい語長を有する、ことと、
前記修正された第１および第２の単語内の所定の場所における値を除去し、第１の変数に等しい語長を伴うオリジナルの第１の単語および第２の変数に等しい語長を伴うオリジナルの第２の単語を生成することと、
前記オリジナルの第１および第２の単語を、暗号化されていないデータストリームを定義する値の第１のシーケンスに組み合わせることと
を含む、方法。
【請求項１０】
前記値の第１のシーケンス内の各値は、２進値である、請求項９に記載の方法。
【請求項１１】
前記値の第１のシーケンス内の各値は、１６進値である、請求項９に記載の方法。
【請求項１２】
前記暗号化されていないデータストリームを遠隔コンピュータに伝送することをさらに含む、請求項９に記載の方法。
【請求項１３】
ソースデバイスから前記暗号化されたデータストリームを受信することをさらに含む、請求項９に記載の方法。
【請求項１４】
前記第１、第２、および第３の変数は、前記ソースデバイスによって把握される、請求項１３に記載の方法。
【請求項１５】
前記第１、第２、および第３の変数は、時間の関数として変化する、請求項９に記載の方法。
【請求項１６】
方法であって、
データの第１の部分を、デフォルトの第１の語長を有する少なくとも１つの第１のデータ語に構文解析することと、
デフォルトの語長モードにおいて、前記少なくとも１つの第１のデータ語を出力することと、
可変語長モードへの遷移を示す遷移語を出力することと、
前記遷移語の後に、第２の語長を示す第１の語長単語を出力することと、
前記データの第２の部分を、前記第２の語長を有する少なくとも１つの第２のデータ語に構文解析することと、
前記第１の語長単語の後に、前記第２の語長を有する前記少なくとも１つの第２のデータ語を出力することと
を含む、方法。
【請求項１７】
前記少なくとも１つの第２のデータ語のそれぞれに対応する個別のフラグビットを出力することであって、前記個別のフラグビットは、前記少なくとも１つの第２のデータ語の対応する第２のデータ語が、前記少なくとも１つの第２のデータ語の最後の第２のデータ語であるかどうかを示す、こと
をさらに含む、請求項１６に記載の方法。
【請求項１８】
個別のフラグビットが前記対応する第２のデータ語が前記少なくとも１つの第２のデータ語の最後の第２のデータ語であることを示した後に、第３の語長を示す第２の語長単語を出力することと、
前記データの第３の部分を、前記第３の語長を有する少なくとも１つの第３のデータ語に構文解析することと、
前記第２の語長単語の後に、前記第３の語長を有する前記少なくとも１つの第３のデータ語を出力することと
をさらに含む、請求項１７に記載の方法。
【請求項１９】
個別のフラグビットが前記対応する第２のデータ語が前記少なくとも１つの第２のデータ語の最後の第２のデータ語であることを示した後に、前記デフォルトの語長モードへの遷移を示す終了語を出力することと、
前記データの第３の部分を前記デフォルトの第１の語長を有する少なくとも１つの第３のデータ語に構文解析することと、
前記終了語の後に、前記デフォルトの第１の語長を有する少なくとも１つの第３のデータ語を出力することと
をさらに含む、請求項１７に記載の方法。
【請求項２０】
前記終了語の語長は、前記第１の語長単語の語長と同一である、請求項１９に記載の方法。
【請求項２１】
前記少なくとも１つの第２のデータ語の各第２のデータ語の直後に、前記第２のデータ語が前記少なくとも１つの第２のデータ語の最後の第２のデータ語であるかどうかを示す個別のフラグビットを出力することをさらに含む、請求項１６に記載の方法。
【請求項２２】
前記少なくとも１つの第２のデータ語の各第２のデータ語の直前に、前記第２のデータ語が前記少なくとも１つの第２のデータ語の最後の第２のデータ語であるかどうかを示す個別のフラグビットを出力することをさらに含む、請求項１６に記載の方法。
【請求項２３】
前記デフォルトの第１の語長は、８ビットであり、
前記遷移語は、前記デフォルトの第１の語長であり、
前記遷移語は、ＡＳＣＩＩ文字に割り当てられない、
請求項１６に記載の方法。
【請求項２４】
前記第１の語長単語は、前記第２の語長を明示的に示す、請求項１６に記載の方法。
【請求項２５】
前記第１の語長単語は、前記第２の語長にマッピングされる値を有する、請求項１６に記載の方法。
【請求項２６】
前記第１の語長単語の値は、標準テーブル内で前記第２の語長にマッピングされる、請求項２５に記載の方法。
【請求項２７】
前記第２の語長にマッピングされている前記第１の語長単語の値を示すヘッダを出力することをさらに含む、請求項２５に記載の方法。
【請求項２８】
方法であって、
データの第１の部分をデフォルトの語長を有する少なくとも１つの第１のデータ語に構文解析することと、
デフォルトの語長モードにおいて、前記デフォルトの語長を有する前記少なくとも１つの第１のデータ語を出力することと、
可変語長モードへの遷移を示す遷移語を出力することと、
前記遷移語の後に、個別の語長を示す少なくとも１つの語長単語を出力することと、
前記データの第２の部分を少なくとも１つの第２のデータ語に構文解析することであって、前記少なくとも１つの第２のデータ語はそれぞれ、個別の語長を有する、ことと、
前記少なくとも１つの語長単語のそれぞれの後に、前記少なくとも１つの第２のデータ語の対応する第２のデータ語を出力することであって、前記少なくとも１つの語長単語はそれぞれ、前記対応する第２のデータ語の個別の語長を示す、ことと
を含む、方法。
【請求項２９】
前記デフォルトの語長モードへの遷移を示す終了語を出力することと、
データの第３の部分を前記デフォルトの語長を有する少なくとも１つの第３のデータ語に構文解析することと、
前記終了語の後に、前記デフォルトの語長を有する前記少なくとも１つの第３のデータ語を出力することと
をさらに含む、請求項２８に記載の方法。
【請求項３０】
前記終了語は、前記少なくとも１つの第２のデータ語の第２のデータ語の直後に出力され、
前記終了語の語長は、前記少なくとも１つの語長単語の語長と同一である、
請求項２９に記載の方法。
【請求項３１】
終了語の語長を示す終了語長単語を出力することと、
前記終了語長単語を出力した後、前記デフォルトの語長モードへの遷移を示す終了語を出力することと、
データの第３の部分を前記デフォルトの語長を有する少なくとも１つの第３のデータ語に構文解析することと、
前記終了語の後に、前記デフォルトの語長を有する前記少なくとも１つの第３のデータ語を出力することと
をさらに含む、請求項２８に記載の方法。
【請求項３２】
前記終了語の語長は、前記少なくとも１つの語長単語の語長と同一である、請求項３１に記載の方法。
【請求項３３】
前記少なくとも１つの語長単語はそれぞれ、前記個別の語長にマッピングされる個別の値を有する、請求項２８に記載の方法。
【請求項３４】
前記少なくとも１つの語長単語のそれぞれの前記個別の値は、標準テーブル内で前記個別の語長にマッピングされる、請求項３３に記載の方法。
【請求項３５】
前記個別の語長にマッピングされている前記少なくとも１つの語長単語のそれぞれの前記個別の値を示すヘッダを出力することをさらに含む、請求項３３に記載の方法。
【請求項３６】
方法であって、
複数の語長単語を出力することと、
データを複数のデータ語に構文解析することであって、前記複数のデータ語はそれぞれ、個別の語長を有する、ことと、
前記複数の語長単語のそれぞれの後に、前記複数のデータ語の対応するデータ語を出力することであって、前記複数の語長単語はそれぞれ、前記対応するデータ語の前記個別の語長を示す、ことと
を含む、方法。
【請求項３７】
前記複数の語長単語の第１の語長単語は、第１の語長を示し、
前記第１の語長単語に対応する前記複数のデータ語の第１のデータ語は、第１の語長を有し、
前記複数の語長単語の第２の語長単語は、前記第１の語長と異なる第２の語長を示し、
前記第２の語長単語に対応する前記複数のデータ語の第２のデータ語は、前記第２の語長を有する、
請求項３６に記載の方法。
【請求項３８】
前記複数の語長単語はそれぞれ、個別の語長にマッピングされる個別の値を有する、請求項３６に記載の方法。
【請求項３９】
前記複数の語長単語のそれぞれの前記個別の値は、標準テーブル内で前記個別の語長にマッピングされる、請求項３８に記載の方法。
【請求項４０】
前記個別の語長にマッピングされている前記複数の語長単語のそれぞれの前記個別の値を示すヘッダを出力することをさらに含む、請求項３８に記載の方法。
【請求項４１】
方法であって、
第１の語長を示す第１の語長単語を出力することと、
データの第１の部分を前記第１の語長を有する少なくとも１つの第１の単語に構文解析することと、
前記第１の語長単語の後に、前記第１の語長を有する少なくとも１つの第１のデータ語を出力することと、
第２の語長を示す第２の語長単語を出力することと、
前記データの第２の部分を前記第２の語長を有する少なくとも１つの第２の単語に構文解析することと、
前記第２の語長単語の後に、前記第２の語長を有する少なくとも１つの第２のデータ語を出力することと
を含む、方法。
【請求項４２】
前記少なくとも１つの第１のデータ語がそれぞれ、あるデータ語であることを示す、前記少なくとも１つの第１のデータ語のそれぞれに対応する個別のフラグビットを出力することと、
前記少なくとも１つの第２のデータ語がそれぞれ、あるデータ語であることを示す、前記少なくとも１つの第２のデータ語のそれぞれに対応する個別のフラグビットを出力することと、
前記第２の語長単語が、ある語長単語であることを示す、前記第２の語長単語に対応するフラグビットを出力することと
をさらに含む、請求項４１に記載の方法。
【請求項４３】
前記少なくとも１つの第１のデータ語のそれぞれ、前記第２の語長単語、および前記少なくとも１つの第２のデータ語のそれぞれの直前に個別のフラグビットを出力することであって、前記個別の第１のフラグビットは、前記後続単語があるデータ語またはある語長単語であるかどうかを示す、こと
をさらに含む、請求項４１に記載の方法。
【請求項４４】
前記少なくとも１つの第１のデータ語の各第１のデータ語の前または後のいずれかに、前記個別の第１のデータ語が前記少なくとも１つの第１のデータ語の最後のデータ語であるかどうかを示す個別のフラグビットを出力することと、
前記少なくとも１つの第２のデータ語の各第２のデータ語の前または後のいずれかに、前記個別の第２のデータ語が前記少なくとも１つの第２のデータ語の最後のデータ語であるかどうかを示す個別のフラグビットを出力することと
をさらに含む、請求項４１に記載の方法。
【請求項４５】
前記第１の語長単語は、前記第１の語長を明示的に示し、
前記第２の語長単語は、前記第２の語長を明示的に示す、
請求項４１に記載の方法。
【請求項４６】
前記第１の語長単語は、前記第１の語長にマッピングされる第１の値を有し、
前記第２の語長単語は、前記第２の語長にマッピングされる第２の値を有する、
請求項４１に記載の方法。
【請求項４７】
前記第１の値および前記第２の値は、それぞれ、標準テーブル内で前記第１の語長および前記第２の語長にマッピングされる、請求項４６に記載の方法。
【請求項４８】
前記第１の語長にマッピングされている前記第１の値および前記第２の語長にマッピングされている前記第２の値を示すヘッダを出力することをさらに含む、請求項４６に記載の方法。
【請求項４９】
方法であって、
デフォルトの語長モードにおいて、デフォルトの第１の語長を有する少なくとも１つの第１のデータ語を受信することと、
前記受信された少なくとも１つの第１のデータ語をデータの第１の部分として組み合わせることと、
可変語長モードへの遷移を示す遷移語を受信することと、
前記遷移語の後に、第２の語長を示す第１の語長単語を受信することと、
前記第１の語長単語の後に、前記第２の語長を有する少なくとも１つの第２のデータ語を受信することと、
前記受信された少なくとも１つの第２のデータ語を前記データの第２の部分として組み合わせることと
を含む、方法。
【請求項５０】
前記少なくとも１つの第２のデータ語のそれぞれに対応する個別のフラグビットを受信することであって、前記個別のフラグビットは、前記少なくとも１つの第２のデータ語の対応する第２のデータ語が前記少なくとも１つの第２のデータ語の最後の第２のデータ語であるかどうかを示す、こと
をさらに含む、請求項４９に記載の方法。
【請求項５１】
個別のフラグビットが前記対応する第２のデータ語が前記少なくとも１つの第２のデータ語の最後の第２のデータ語であることを示した後に、第３の語長を示す第２の語長単語を受信することと、
前記最後の第２の語長単語の後に、前記第３の語長を有する少なくとも１つの第３のデータ語を受信することと、
前記受信された少なくとも１つの第３のデータ語を前記データの第３の部分に組み合わせることと
をさらに含む、請求項５０に記載の方法。
【請求項５２】
個別のフラグビットが前記対応する第２のデータ語が前記少なくとも１つの第２のデータ語の最後の第２のデータ語であることを示した後に、前記デフォルトの語長モードへの遷移を示す終了語を受信することと、
前記終了語の後に、前記デフォルトの第１の語長を有する少なくとも１つの第３のデータ語を受信することと、
前記受信された少なくとも１つの第３のデータ語を前記データの第３の部分に組み合わせることと
をさらに含む、請求項５０に記載の方法。
【請求項５３】
前記終了語の語長は、前記第１の語長単語の語長と同一である、請求項５２に記載の方法。
【請求項５４】
前記少なくとも１つの第２のデータ語の各第２のデータ語の直後に、前記第２のデータ語が前記少なくとも１つの第２のデータ語の最後の第２のデータ語であるかどうかを示す個別のフラグビットを受信することをさらに含む、請求項４９に記載の方法。
【請求項５５】
前記少なくとも１つの第２のデータ語の各第２のデータ語の直前に、前記第２のデータ語が前記少なくとも１つの第２のデータ語の最後の第２のデータ語であるかどうかを示す個別のフラグビットを受信することをさらに含む、請求項４９に記載の方法。
【請求項５６】
前記デフォルトの第１の語長は、８ビットであり、
前記遷移語は、前記デフォルトの第１の語長であり、
前記遷移語は、ＡＳＣＩＩ文字に割り当てられない、
請求項４９に記載の方法。
【請求項５７】
前記第１の語長単語は、前記第２の語長を明示的に示す、請求項４９に記載の方法。
【請求項５８】
前記第１の語長単語は、前記第２の語長にマッピングされる値を有する、請求項４９に記載の方法。
【請求項５９】
前記第１の語長単語の値は、標準テーブル内で前記第２の語長にマッピングされる、請求項５８に記載の方法。
【請求項６０】
前記第２の語長にマッピングされている前記第１の語長単語の値を示すヘッダを受信することをさらに含む、請求項５８に記載の方法。
【請求項６１】
方法であって、
デフォルトの語長モードにおいて、デフォルトの語長を有する前記少なくとも１つの第１のデータ語を受信することと、
前記少なくとも１つの第１のデータ語をデータの第１の部分に組み合わせることと、
可変語長モードへの遷移を示す遷移語を受信することと、
前記遷移語の後に、個別の語長を示す少なくとも１つの語長単語を受信することと、
前記少なくとも１つの語長単語のそれぞれの後に、個別の第２のデータ語を受信することであって、前記少なくとも１つの語長単語はそれぞれ、前記個別の第２のデータ語の対応する語長を示す、ことと、
前記少なくとも１つの第２のデータ語を前記データの第２の部分に組み合わせることと
を含む、方法。
【請求項６２】
前記デフォルトの語長モードへの遷移を示す終了語を受信することと、
前記終了語の後に、前記デフォルトの語長を有する少なくとも１つの第３のデータ語を受信することと、
前記少なくとも１つの第３のデータ語を前記データの第３の部分に組み合わせることと
をさらに含む、請求項６１に記載の方法。
【請求項６３】
前記終了語は、第２のデータ語の直後に受信され、
前記終了語の語長は、前記少なくとも１つの語長単語の語長と同一である、
請求項６２に記載の方法。
【請求項６４】
終了語の語長を示す終了語長単語を受信することと、
前記終了語長単語を受信した後、前記デフォルトの語長モードへの遷移を示す終了語を受信することと、
前記終了語の後に、前記デフォルトの語長を有する少なくとも１つの第３のデータ語を受信することと、
前記少なくとも１つの第３のデータ語を前記データの第３の部分に組み合わせることと
をさらに含む、請求項６１に記載の方法。
【請求項６５】
前記終了語の語長は、前記少なくとも１つの語長単語の語長と同一である、請求項６４に記載の方法。
【請求項６６】
前記少なくとも１つの語長単語はそれぞれ、前記個別の語長にマッピングされる個別の値を有する、請求項６１に記載の方法。
【請求項６７】
前記少なくとも１つの語長単語のそれぞれの前記個別の値は、標準テーブル内で前記個別の語長にマッピングされる、請求項６６に記載の方法。
【請求項６８】
前記個別の語長にマッピングされている前記少なくとも１つの語長単語のそれぞれの前記個別の値を示すヘッダを受信することをさらに含む、請求項６６に記載の方法。
【請求項６９】
方法であって、
複数の語長単語を受信することと、
前記複数の語長単語のそれぞれの後に、複数のデータ語の個別のデータ語を受信することであって、前記複数の語長単語はそれぞれ、前記個別のデータ語の対応する語長を示す、ことと、
前記複数のデータ語を前記対応する語長に基づいてデータに組み合わせることと
を含む、方法。
【請求項７０】
前記複数の語長単語の第１の語長単語は、第１の語長を示し、
前記第１の語長単語に対応する前記複数のデータ語の第１のデータ語は、前記第１の語長を有し、
前記複数の語長単語の第２の語長単語は、前記第１の語長と異なる第２の語長を示し、
前記第２の語長単語に対応する前記複数のデータ語の第２のデータ語は、前記第２の語長を有する、
請求項６９に記載の方法。
【請求項７１】
前記複数の語長単語はそれぞれ、個別の語長にマッピングされる個別の値を有する、請求項６９に記載の方法。
【請求項７２】
前記複数の語長単語のそれぞれの前記個別の値は、標準テーブル内で前記個別の語長にマッピングされる、請求項７１に記載の方法。
【請求項７３】
前記個別の語長にマッピングされている前記複数の語長単語のそれぞれの前記個別の値を示すヘッダを受信することをさらに含む、請求項７１に記載の方法。
【請求項７４】
方法であって、
第１の語長を示す第１の語長単語を受信することと、
前記第１の語長単語の後に、前記第１の語長を有する少なくとも１つの第１のデータ語を受信することと、
前記受信された少なくとも１つの第１のデータ語をデータの第１の部分に組み合わせることと、
第２の語長を示す第２の語長単語を受信することと、
前記第２の語長単語の後に、前記第２の語長を有する少なくとも１つの第２のデータ語を受信することと、
前記受信された少なくとも１つの第２のデータ語を前記データの第２の部分に組み合わせることと
を含む、方法。
【請求項７５】
前記少なくとも１つの第１のデータ語がそれぞれ、あるデータ語であることを示す、前記少なくとも１つの第１のデータ語のそれぞれに対応する個別のフラグビットを受信することと、
前記少なくとも１つの第２のデータ語がそれぞれ、あるデータ語であることを示す、前記少なくとも１つの第２のデータ語のそれぞれに対応する個別のフラグビットを受信することと、
前記第２の語長単語が、ある語長単語であることを示す、前記第２の語長単語に対応するフラグビットを受信することと
をさらに含む、請求項７４に記載の方法。
【請求項７６】
前記少なくとも１つの第１のデータ語のそれぞれ、前記第２の語長単語、および前記少なくとも１つの第２のデータ語のそれぞれの直前に個別のフラグビットを受信することであって、前記個別の第１のフラグビットは、前記後続単語があるデータ語またはある語長単語であるかどうかを示す、こと
をさらに含む、請求項７４に記載の方法。
【請求項７７】
前記少なくとも１つの第１のデータ語の各第１のデータ語の前または後のいずれかに、前記個別の第１のデータ語が前記少なくとも１つの第１のデータ語の最後のデータ語であるかどうかを示す個別のフラグビットを受信することと、
前記少なくとも１つの第２のデータ語の各第２のデータ語の前または後のいずれかに、前記個別の第２のデータ語が前記少なくとも１つの第２のデータ語の最後のデータ語であるかどうかを示す個別のフラグビットを受信することと
をさらに含む、請求項７４に記載の方法。
【請求項７８】
前記第１の語長単語は、前記第１の語長を明示的に示し、
前記第２の語長単語は、前記第２の語長を明示的に示す、
請求項７４に記載の方法。
【請求項７９】
前記第１の語長単語は、前記第１の語長にマッピングされる第１の値を有し、
前記第２の語長単語は、前記第２の語長にマッピングされる第２の値を有する、
請求項７４に記載の方法。
【請求項８０】
前記第１の値および前記第２の値は、それぞれ、標準テーブル内で前記第１の語長および前記第２の語長にマッピングされる、請求項７９に記載の方法。
【請求項８１】
前記第１の語長にマッピングされている前記第１の値および前記第２の語長にマッピングされている前記第２の値を示すヘッダを受信することをさらに含む、請求項７９に記載の方法。
【請求項８２】
プロセッサによって実行されると、請求項１−８１のうちのいずれかに記載の方法を実施するように前記プロセッサに命令する、その上に記憶されるコンピュータプログラムコードを有する、非一過性コンピュータ可読媒体。
【請求項８３】
装置であって、
プロセッサと、
前記プロセッサによって実行されると、請求項１−８１のうちのいずれかに記載の方法を実施するように前記プロセッサに命令する、その上に記憶されるコンピュータプログラムコードを有する、メモリと
を備える、装置。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願の相互参照）
本ＰＣＴ国際出願は、２０１７年１月１７日に出願された米国特許出願第１５／４０７，９０８号に対する優先権およびその利益を主張するものである。本ＰＣＴ国際出願はまた、２０１６年９月２６日に出願された米国特許出願第１５／２７６，３８０号に対する優先権およびその利益を主張するものである。上記出願の全内容および実体は、本明細書中に完全に記載されているかのように、それらの全体が参照により本明細書中に援用される。
【０００２】
概して、本開示は、コンピュータセキュリティに関する。より具体的には、本開示は、コンピュータセキュリティを強化するための技術に関する。
【背景技術】
【０００３】
本開示では、文書、行為、および／または知識の項目が参照ならびに／もしくは議論される場合、そのような参照および／または議論は、文書、行為、ならびに／もしくは知識の項目、および／またはそれらの任意の組み合わせが、優先日にあった、公的に利用可能である、公共に公知である、共通の一般的知識の一部である、ならびに／もしくは別様に適用可能な法律規定の下で従来技術を構成する、および／または本開示が関係し得る任意の問題を解決するための試みに関連することが公知であることを承認するわけではない。さらに、放棄されるものはない。
【０００４】
過去数十年にわたって、異なるエンティティ／ユーザの間を移動するデータの量は、指数関数的に増大している。人物／企業は、現在、それらが行うビジネスの多くを処理するためにインターネットに依拠している。これは、データがソースと宛先との間で送信されることを要求する。例えば、多くの企業は、異なる地理的場所における多くの異なるオフィスに従業員を有している。それにもかかわらず、これらのオフィスは、同じ屋根の下にいるかのように効果的に通信することが可能である必要がある。故に、企業は、外部ネットワーク、例えば、インターネットを横断するデータ通信がセキュアなままであることを確実にしようとして、膨大な金額を費やしている。言い換えると、企業（および個人）は、これらのデータ通信を傍受しようと試みるハッカーと常に闘っている。
【０００５】
ハッカーに対抗するために、従来のデータ通信システムは、そのデータが外部ネットワークを経由して伝送されることに先立って、コンピュータ／サーバにおいてデータをローカルで暗号化するための暗号化アルゴリズムを含む、ユーザ認証および／またはアクセス制御のための種々の方法に依拠している。残念ながら、これらの従来のシステムの多くは、外部ネットワークに直接接続されるため、ハッカーは、単純に、ローカルコンピュータ／サーバの「バックドア」を使用し、これが暗号化される前またはこれが復号化された後のいずれかのセキュアにされるように追求されるデータを取得することができる。故に、ユーザ認証および／またはアクセス制御のためのより効果的な技術が、所望されている。
【発明の概要】
【課題を解決するための手段】
【０００６】
本開示は、少なくとも部分的に、上記のうちの少なくとも１つに対処し得る。しかしながら、本開示は、他の技術分野にも有用であることを証明し得る。したがって、請求項は、必ずしも、上記のうちのいずれかに対処することに限定されるものとして解釈されるべきではない。
【０００７】
本開示の例示的実施形態によると、方法が、提供される。本方法は、コンピュータによって実施されることができる。例えば、コンピュータは、メモリと、プロセッサとを備えることができ、メモリは、プロセッサによって実行されると、コンピュータに、本方法の種々のステップのうちの１つ以上のものを実施させる、論理命令を備えることができる。本方法は、データストリームを暗号化および／または復号化するステップを含むことができる。例えば、本発明のいくつかの実施形態では、デバイスは、遠隔／外部コンピュータから暗号化されていないデータストリームを受信し、暗号化されたデータストリームを外部ネットワークを経由して宛先コンピュータに伝送することに先立って、そのデータストリームを暗号化することができる。本発明のいくつかの実施形態では、デバイスは、外部ネットワークを経由してソースコンピュータから暗号化されたデータストリームを受信し、暗号化されていないデータストリームを遠隔／外部コンピュータに伝送することに先立って、暗号化されたデータストリームを復号化することができる。本発明のいくつかの実施形態では、同一のデバイスは、（１）遠隔／外部コンピュータから暗号化されていないデータストリームを受信し、暗号化されたデータストリームを外部ネットワークを経由して宛先コンピュータに伝送することに先立って、そのデータストリームを暗号化することと、（２）外部ネットワークを経由してソースコンピュータから暗号化されたデータストリームを受信し、暗号化されていないデータストリームを遠隔／外部コンピュータに伝送することに先立って、暗号化されたデータストリームを復号化することとの両方を行うことができる。
【０００８】
本発明のいくつかの実施形態では、本方法は、暗号化されていないデータストリームを暗号化するステップを含む。本方法は、値の第１のシーケンスを備える暗号化されていないデータストリームを取得するステップを含むことができる。本方法はさらに、値の第１のシーケンスの第１の部分を第１の変数に等しい語長を有するオリジナルの第１の単語にセグメント化するステップと、値の第１のシーケンスの第２の部分を第１の変数と異なる第２の変数に等しい語長を有するオリジナルの第２の単語にセグメント化するステップとを含むことができる。本方法はさらに、オリジナルの第１および第２の単語内の所定の場所にランダム値を挿入し、修正された第１および第２の単語を生成するステップを含むことができる。修正された第１および第２の単語は、第１および第２の変数と異なる第３の変数に等しい語長を有することができる。本方法はさらに、修正された第１および第２の単語を、暗号化されたデータストリームを定義する値の第２のシーケンスに組み合わせるステップを含むことができる。
【０００９】
本発明のいくつかの実施形態では、値の第１のシーケンス内の各値は、２進値であり得る。
【００１０】
本発明のいくつかの実施形態では、値の第１のシーケンス内の各値は、１６進値であり得る。
【００１１】
本発明のいくつかの実施形態では、本方法は、暗号化されていないデータストリームを生成したコンピュータと異なる遠隔コンピュータによって実施されることができる。
【００１２】
本発明のいくつかの実施形態では、本方法はさらに、暗号化されたデータストリームを宛先デバイスに伝送するステップを含むことができる。
【００１３】
本発明のいくつかの実施形態では、第１、第２、および第３の変数は、宛先デバイスによって把握される。
【００１４】
本発明のいくつかの実施形態では、第１、第２、および第３の変数は、時間の関数として変化する。
【００１５】
本発明のいくつかの実施形態では、本方法は、暗号化されたデータストリームを復号化する方法を含む。本方法は、値の第２のシーケンスを備える暗号化されたデータストリームを取得するステップを含むことができる。本方法はさらに、値の第２のシーケンスの少なくとも一部を修正された第１および第２の単語にセグメント化するステップを含むことができる。修正された第１および第２の単語は、第３の変数に等しい語長を有することができる。本方法はさらに、修正された第１および第２の単語内の所定の場所における値を除去し、第１の変数に等しい語長を伴うオリジナルの第１の単語および第２の変数に等しい語長を伴うオリジナルの第２の単語を生成するステップを含むことができる。本方法はさらに、オリジナルの第１および第２の単語を、暗号化されていないデータストリームを定義する値の第１のシーケンスに組み合わせるステップを含むことができる。
【００１６】
本発明のいくつかの実施形態では、本方法はさらに、暗号化されていないデータストリームを遠隔コンピュータに伝送するステップを含むことができる。
【００１７】
本発明のいくつかの実施形態では、本方法はさらに、ソースデバイスから暗号化されたデータストリームを受信するステップを含むことができる。
【００１８】
本発明のいくつかの実施形態では、第１、第２、および第３の変数は、ソースデバイスによって把握される。
【００１９】
本発明の別の例示的実施形態では、本方法は、複数の変数および１つの変数を提供するステップを含む。複数の変数は、相互に異なる。複数の変数は、１つの変数と異なる。本方法は、第１の数体系に基づいて、複数の値を介して複数の文字をインデックス化するルックアップテーブルを提供するステップを含む。本方法は、テーブルに基づいて、メッセージを値の第１のシーケンスに変換するステップを含む。本方法は、第１の体系と異なる第２の数体系に基づいて、かつ事前設定されたフォーマットに従って、第１のシーケンスを値の第２のシーケンスに変換するステップを含む。本方法は、フォーマットを除去することを介して、第２のシーケンスを単一のシーケンスに組み合わせるステップを含む。本方法は、変数を交互にすることを介するシーケンスのセグメント化に基づいて、単一のシーケンスから第１の複数のサブシーケンスを生成するステップを含む。本方法は、第２のサブシーケンスがそれぞれ変数に従ってサイズ決定されるように、第１のサブシーケンスを第２の複数のサブシーケンスに変換するステップを含む。本方法は、第２のサブシーケンスを伝送するステップを含む。
【００２０】
本開示は、付随の図面に図示される形態において具現化されてもよい。しかしながら、図面は、例証的であるという事実に注目されたい。変形例が、請求項の範囲によってのみ限定される、本開示の一部であると考慮される。
【図面の簡単な説明】
【００２１】
付随の図面は、本開示の例示的実施形態を図示する。そのような図面は、必ずしも、本開示を限定すると解釈されるものではない。同様の番号および／または類似する付番スキームは、全体を通して同様の、および／または類似する要素を指し得る。
【００２２】
【図１】図１は、本開示による、コンピュータセキュリティを強化するための方法の例示的実施形態のフローチャートを示す。
【図２】図２は、本開示による、コンピュータセキュリティを強化するための方法の例示的実施形態のフローシートを示す。
【図３】図３は、本開示による、ネットワークの例示的実施形態の図を示す。
【図４】図４は、本開示による、コンピュータセキュリティを強化するための方法の別の例示的実施形態のフローチャートを示す。
【図５】図５は、本開示による、可変語長エンコーディングのための方法の例示的実施形態のフローチャートを示す。
【図６】図６は、本開示による、可変語長エンコーディングのための方法の別の例示的実施形態のフローチャートを示す。
【発明を実施するための形態】
【００２３】
本開示は、ここで、本開示の例示的実施形態が示される、付随の図面を参照してより完全に説明されるであろう。しかしながら、本開示は、多くの異なる形態において具現化されてもよく、本明細書に記載される実施形態に限定されるものとして解釈されるべきではない。むしろ、これらの実施形態は、本開示が徹底的かつ完全であり、本開示の概念を当業者に完全に伝えるであろうように提供される。
【００２４】
ある実施形態に関して説明される特徴は、種々の他の実施形態において組み合わせられてもよい。実施形態の異なる側面および要素は、類似する様式で組み合わせられてもよい。開示される実施形態は、個別に、および／または集合的に、より大きいシステムのコンポーネントであってもよく、他の手順が、それらの適用に優先される、および／または別様にそれを修正してもよい。いくつかのステップが、開示される実施形態の前、後、および／またはそれと並行して要求されてもよい。本明細書に開示されるプロセスは、本開示の原理に従って、いかようにも１つおよび／またはそれを上回るエンティティによって実施されることができる。
【００２５】
本明細書で使用される専門用語は、直接的または間接的な、完全または部分的なアクションもしくは非アクションを含意し得る。例えば、ある要素が別の要素の「上にある」、それに「接続される」、またはそれに「結合される」と言及されるとき、その要素は、他の要素に直接接続または結合されることができる、もしくは介入要素が存在し得る。対照的に、ある要素が別の要素に「直接接続される」または「直接結合される」と言及されるとき、いかなる介入要素も存在しない。
【００２６】
用語「第１」、「第２」等は、種々の要素、コンポーネント、領域、層、および／または区分を説明するために本明細書で使用され得るが、これらの要素、コンポーネント、領域、層、および／または区分は、これらの用語によって限定されるべきではない。これらの用語は、１つの要素、コンポーネント、領域、層、または区分を別の要素、コンポーネント、領域、層、または区分から区別するためにのみ使用される。したがって、下記に議論される第１の要素、コンポーネント、領域、層、または区分は、本開示の教示から逸脱することなく、第２の要素、コンポーネント、領域、層、または区分と称され得る。
【００２７】
本明細書で使用される専門用語は、特定の実施形態を説明する目的のみのためであり、必ずしも、本開示の限定であるように意図されない。本明細書で使用されるように、単数形「ａ」、「ａｎ」、および「ｔｈｅ」は、文脈が明確に別様に示さない限り、複数形も同様に含むように意図される。本明細書で使用されるとき、用語「〜を備える（ｃｏｍｐｒｉｓｅｓ）」、「〜を含む（ｉｎｃｌｕｄｅｓ）」、および／または「〜を備える（ｃｏｍｐｒｉｓｉｎｇ）」、「〜を含む（ｉｎｃｌｕｄｉｎｇ）」は、記載される特徴、整数、ステップ、動作、要素、ならびに／もしくはコンポーネントの存在を規定するが、１つ以上の他の特徴、整数、ステップ、動作、要素、コンポーネント、ならびに／もしくはそれらの群の存在または追加を除外しない。
【００２８】
別様に定義されない限り、本明細書で使用される全ての用語（技術的および科学的用語を含む）は、本開示が属する当業者によって一般的に理解されるものと同一の意味を有する。一般的に使用される辞書において定義されるもの等の用語は、関連技術の文脈におけるそれらの意味と一貫する意味を有するものとして解釈されるべきであり、本明細書にそのように明示的に定義されない限り、理想化された、または過度に正式な意味において解釈されないであろう。
【００２９】
任意の開示が、参照することによって本明細書に組み込まれ、そのような組み込まれた開示が、本開示と部分的または全体的に矛盾する場合、矛盾、および／またはより広い開示、ならびに／もしくはより広い用語の定義の限りにおいて、本開示が、優先される。そのような組み込まれた開示が、部分的または全体的に相互と矛盾する場合、矛盾の限りにおいて、後の日付の開示が、優先される。
【００３０】
図１は、本開示による、コンピュータセキュリティを強化するための方法の例示的実施形態のフローチャートを示す。
【００３１】
プロセス１００は、ブロック１０２−１１８を含む。プロセス１００は、オペレーティングシステムレベルの下方、上、および／または上方で実装され得る、任意のハードウェアレベル上の１つならびに／もしくはそれを上回る回路内等のハードウェア論理、および／または１つならびに／もしくはそれを上回るソフトウェアアプリケーション内等のソフトウェア論理の任意の組み合わせを介して実装されることができる。プロセス１００は、要求・応答コンピューティングにおいて実装されることができる。プロセス１００は、コンピュータセキュリティへのいずれの関連にもかかわらず、より大きいプロセスの一部であり得る。例えば、種々の機能が、プロセス１００のいずれか１つおよび／またはそれを上回るブロックの実施前、その間、ならびに／もしくはその後に起こることができる。代替として、プロセス１００は、独自に実施されることができる。ブロック１０２−１１８は、本明細書に説明されるような順序で実施され得るが、ブロック１０２−１１８は、他の順序で実施されることもでき、いくつかのブロックは、それらの任意の順列において他のブロックの前、その間、および／またはその後に実施される。また、プロセス１００は、少なくとも部分的に、英数字入力、記号入力、バイオメトリック入力、ハードウェア入力、および／またはその他に基づき得る、パスワード入力を用いて実装され得ることに留意されたい。しかしながら、プロセス１００はまた、パスワードを使用することなく実装されることもできる。
【００３２】
ブロック１０２は、ビットストリームを第１の複数の等しいサイズのストリングに構文解析するステップを含む。ビットストリームは、媒体にわたるデータのストリームを表す、１０１００１００１０１１１１００１１等のビットの連続シーケンスを含む。そのようなデータは、任意のタイプである、および／または任意の目的のためであり得る。ストリームは、有線様式および／または無線様式で提供ならびに／もしくは受信されることができる。ストリームは、伝送制御プロトコル（ＴＣＰ）、ユーザデータグラムプロトコル（ＵＤＰ）、および／または任意の通信距離の他のネットワーク通信プロトコル等の通信プロトコルを介して通信経路を経由して、ならびに／もしくは回路、不揮発性メモリデバイス等のコンピュータメモリおよび／またはコンピュータ記憶装置内で通信されることができる。ストリームは、任意のビット量であり得る。ビットストリームは、ビットストリームソースおよびビットストリーム宛先を識別する情報を含有することができる。ビットストリームは、同様にバイトストリームでもあり得る。第１のストリングに構文解析するステップは、ビットストリームを、２、５、１０、または任意の他の数等の任意の桁サイズの第１のストリングにセグメント化するステップを含む。例えば、ビットストリームが、１０１００１００１０１１１１００１１を含むとき、そのようなストリームは、１０１００１、００１０１１、１１００１１等の６桁ストリングに構文解析されることができる。第１のストリングに構文解析するステップは、それらのサイズおよび／または相互との関係にかかわらず、ビットストリーム全体ならびに／もしくはビットストリームの部分および／または下位部分で起こることができる。構文解析するステップは、ビットストリームの完全性に干渉することの有無を問わずに実施されることができる。構文解析するステップは、少なくとも１つの発振器／クロックを介して実施されることができる。代替として、シーケンスは、１６進法等の異なる記号および／または数体系に基づき得る。
【００３３】
ブロック１０４は、ビットストリームを第２の複数の等しいサイズのストリングに構文解析するステップを含む。第２のストリングに構文解析するステップは、ビットストリームを、２、５、１０、または任意の他の数等の任意の桁サイズの第２のストリングにセグメント化するステップを含む。例えば、ビットストリームが、１０１００１００１０１１１１００１１を含むとき、そのようなストリームは、１０１００１００１、０１１１１００１１等の９桁ストリングに構文解析されることができる。第２のストリングに構文解析するステップは、それらのサイズおよび／または相互との関係にかかわらず、ビットストリーム全体ならびに／もしくはビットストリームの部分および／または下位部分で起こることができる。第１のストリングは、第２のストリングと異なるサイズを有する。第１のストリングおよび第２のストリングは、ビットストリームの同じ部分を構文解析することから形成されるが、他の代替実施形態では、第１のストリングおよび第２のストリングは、ビットストリームの異なる部分を構文解析することから形成されることができる。第１のストリングは、第２のストリングと異なるビット値を有することができる。第１のストリングは、第２のストリングと同じビット値を有することができる。第１のストリングおよび第２のストリングは、均等にサイズ決定される、ならびに／もしくは不均等にサイズ決定されることができる。ブロック１０２およびブロック１０４は、少なくとも１つのエンティティによって、同時に、並行して、ならびに／もしくは異なる時間に実施されることができる。ブロック１０４は、ブロック１０２の前または後に実施されることができる。構文解析するステップは、ビットストリームの完全性に干渉することの有無を問わずに実施されることができる。構文解析するステップは、少なくとも１つの発振器／クロックを介して実施されることができる。
【００３４】
ブロック１０６は、スイッチへの第１のストリングの入力をダイレクトするステップを含む。ダイレクトするステップは、第１のストリングのうちの少なくとも１つをスイッチに入力するステップを含むことができる。代替として、ダイレクトするステップは、第１のストリングのうちの少なくとも１つをスイッチに送信するステップを含むことができる。また、代替として、ダイレクトするステップは、スイッチを介して第１のストリングのうちの少なくとも１つを受信するステップを含むことができる。また、代替として、ダイレクトするステップは、第１のストリングのうちの少なくとも１つをスイッチに伝送するステップを含むことができる。ダイレクトするステップは、スイッチ入力要求ベースであり得る。ダイレクトするステップは、有線および／または無線であり得る。ダイレクトするステップは、直接的および／または間接的であり得る。ダイレクトするステップは、暗号化される、および／または暗号化されない場合がある。
【００３５】
ブロック１０８は、スイッチへの第２のストリングの入力をダイレクトするステップを含む。ダイレクトするステップは、第２のストリングのうちの少なくとも１つをスイッチに入力するステップを含むことができる。代替として、ダイレクトするステップは、第２のストリングのうちの少なくとも１つをスイッチに送信するステップを含むことができる。また、代替として、ダイレクトするステップは、スイッチを介して第２のストリングのうちの少なくとも１つを受信するステップを含むことができる。また、代替として、ダイレクトするステップは、第２のストリングのうちの少なくとも１つをスイッチに伝送するステップを含むことができる。ダイレクトするステップは、ブロック１０６のいずれかの実施へのいかなる関連にもかかわらず、スイッチ入力要求ベースであり得る。ブロック１０６およびブロック１０８は、少なくとも１つのエンティティによって、同時に、並行して、ならびに／もしくは異なる時間に実施されることができる。ブロック１０６は、ブロック１０８の前または後に実施されることができる。ダイレクトするステップは、有線および／または無線であり得る。ダイレクトするステップは、直接的および／または間接的であり得る。ダイレクトするステップは、暗号化される、および／または暗号化されない場合がある。
【００３６】
ブロック１１０は、第１のモードと第２のモードとの間でスイッチを周期的に切り替えるステップを含む。スイッチは、回路等のハードウェアベースおよび／またはソフトウェアベースであり得る。スイッチは、Ａ／Ｂスイッチであり得る。代替として、スイッチは、Ａ／Ｂ／ｎスイッチであり得、ｎは、５、７、９、２０等のいずれかであり得る、スイッチが切り替わり得るいくつかのモードに対応する。周期は、数ミリ秒、数秒、数分、数時間等の任意の時間周期に基づき得る。そのような周期的切替は、自動的である。そのような周期は、スイッチのモード持続時間に対応することができる。切替は、クロック、発振器、プロセッサ、およびハードウェアならびに／もしくはソフトウェア論理に基づく。例えば、そのような切替は、クロックに基づいて３０秒毎である。したがって、３０秒毎に、Ａ／Ｂスイッチは、第１のモードから第２のモードに、および第２のモードから第１のモードに反復的に切り替わる。同様に、３０秒毎に、Ａ／Ｂ／ｎスイッチは、第１のモードから第２のモードに、第２のモードからｎモードに、およびｎモードから第１のモードに反復的に切り替わる。ブロック１１０は、ブロック１０２−１０８のいずれかおよび／または全ての前に、それと並行して、ならびに／もしくはそれと異なる時間に実施されることができる。
【００３７】
ブロック１１２は、第１のモードにおいて第１のストリングのうちの１つをスイッチを介して出力するステップを含む。例えば、第１のストリングのうちの１つが１０１００１であるとき、第１のモードの間、スイッチは、１０１００１を出力する。１つを上回るストリングが、第１のモードにおいて出力されることができる。
【００３８】
ブロック１１４は、第１のストリングの出力に基づいて、アクセスを認証／制御するステップを含む。したがって、スイッチが１０１００１を出力するとき、アクセスを認証／制御するステップは、２進形および／または英数字、記号、バイオメトリック等の別の形式にかかわらず、パスワード１０１００１の正しい入力に基づく。ブロック１１２およびブロック１１４は、少なくとも１つのエンティティによって、同時に、並行して、および／または異なる時間に実施されることができる。ブロック１１２は、ブロック１１４の前または後に実施されることができる。
【００３９】
ブロック１１６は、第２のモードにおいて第２のストリングのうちの１つをスイッチを介して出力するステップを含む。例えば、第２のストリングのうちの１つが、１０１００１００１であるとき、第２のモードの間、スイッチは、１０１００１００１を出力する。１つを上回るストリングが、第２のモードにおいて出力されることができる。
【００４０】
ブロック１１８は、第２のストリングの出力に基づいて、アクセスを認証／制御するステップを含む。したがって、スイッチが１０１００１００１を出力するとき、アクセスを認証／制御するステップは、２進形および／または英数字、記号、バイオメトリック等の別の形式にかかわらず、パスワード１０１００１００１の正しい入力に基づく。ブロック１１６およびブロック１１８は、少なくとも１つのエンティティによって、同時に、並行して、および／または異なる時間に実施されることができる。ブロック１１６は、ブロック１１８の前または後に実施されることができる。任意および／または全てのブロック１１２ならびに／もしくは１１４は、任意および／または全てのブロック１１６ならびに／もしくは１１８の後に実施されることができる。
【００４１】
本明細書における実施例を使用して、スイッチが第２のモードから第１のモードに戻るように切り替わると、スイッチは、構文解析された第１のストリングのうちの次のものを出力する。したがって、第１のモードにおけるスイッチの次の反復では、スイッチは、００１０１１を出力する。同様に、スイッチが第２のモードに再び切り替わると、スイッチは、構文解析された第２のストリングのうちの次のものを出力する。したがって、第２のモードにおけるスイッチの次の反復では、スイッチは、０１１１１００１１を出力する。そのような出力はパスワードとして機能するため、認証／アクセス制御は、パスワードを切り替えることに基づき、これは、例えば、コンピュータシステム内で実装されると、コンピュータシステムのセキュリティを強化する。結果として、そのようなコードを出力するコンピュータは、そのような構造が、文字シーケンスおよびサブシーケンス生成方法の提供を介する等して、前もって事前プログラムされ得るオリジナルの技術仕様の知識を伴わずに解明ならびに／もしくは再現され得ないため、認証および／またはアクセスを許可されることができる。そのような認証／アクセス制御は、バイト内容の変動に起因して新しいコンピュータ言語作成を促進することができる。
【００４２】
ビットストリームは、２つを上回る複数の等しいサイズのストリングに構文解析され得ることに留意されたい。例えば、ビットストリームは、３、９、１０、２０等の任意の数の等しいサイズのストリングに分割されることができる。スイッチは、２つを上回るモードの間で切り替わることができる。例えば、スイッチは、３、９、１０、２０等の複数のモードの間で切り替わることができる。故に、スイッチは、複数のモードにおいて複数の等しいサイズのストリングに基づいて出力することができる。そのようなスイッチ出力は、複数のストリングに基づいてアクセスを認証／制御するために使用されることができる。また、スイッチは、コンピュータの一部もしくはコンピュータと同一のロケール内等のローカルであり得る、またはスイッチは、コンピュータを介してネットワークアクセス可能等の遠隔であり得ることに留意されたい。スイッチはまた、コンピュータ間で共有され得ることに留意されたい。
【００４３】
図２は、本開示による、コンピュータセキュリティを強化するための方法の例示的実施形態のフローシートを示す。本図のいくつかの要素は、上記に説明される。したがって、同一の参照文字は、上記に説明される同一または同様のコンポーネントを識別し、その任意の反復的な詳細な説明は、以降では、複雑性を回避するために省略または簡略化されるであろう。
【００４４】
ビットストリーム２０２が、示される。ストリーム２０２は、複数のビットを含有する。ストリーム２０２は、第１の複数の等しいサイズのストリング２０４および第２の複数の等しいサイズのストリング２０６に構文解析される。構文解析するステップは、１つの周波数に従って動作し、ストリング２０４に構文解析する１つの発振器／クロックおよび別の周波数に従って動作し、ストリング２０６に構文解析する別の発振器／クロック等の少なくとも１つの発振器／クロックを介して実施されることができる。ストリング２０４は、６桁セグメント化に基づいて構文解析され、ストリング２０６は、９桁セグメント化に基づいて構文解析される。したがって、ストリング２０４およびストリング２０６は、ビットサイズが異なり、異なるストリング値を有する。しかしながら、そのようなセグメント化は、任意の桁サイズに基づき得る、および／または少なくとも１つの値を共有することができる。ストリング２０４および２０６に構文解析するステップは、少なくとも１つのエンティティによって、同時に、並行して、ならびに／もしくは異なる時間に実施されることができる。ビットストリーム２０２は、ビットストリーム全体またはあるビットストリームの一部であり得ることに留意されたい。
【００４５】
ストリング２０４はそれぞれ、複数の第１の時間周期に一意に割り当てられる。そのような割当は、１対１ベース、１対多ベース、多対１ベース、および／または多対多ベースで実施されることができる。例えば、ストリング２０４はそれぞれ、一意に、ストリングあたり１秒等の第１の時間周期のそれぞれに１対１で対応する。同様に、ストリング２０６はそれぞれ、複数の第２の時間周期に一意に割り当てられる。そのような割当は、１対１ベース、１対多ベース、多対１ベース、および／または多対多ベースで実施されることができる。例えば、ストリング２０６はそれぞれ、一意に、ストリングあたり１／２秒等の第２の時間周期のそれぞれに１対１で対応する。第１の時間周期および第２の時間周期は、同一の基準点または時間ゼロから始まることに留意されたい。ストリング２０４およびストリング２０６は、少なくとも２つの異なるコンピュータを介して含有されることに留意されたい。
【００４６】
ストリング２０４およびストリング２０６は、次いで、スイッチ２０８への入力のためにダイレクトされる。示されるように、スイッチ２０８は、３０秒毎に第１のモードＡと第２のモードＢとの間を自動的に交互に反転するＡ／Ｂスイッチである。しかしながら、スイッチ２０８は、任意の数のモードに従ってモーダルであり得、スイッチ２０８は、本明細書に説明されるようなそのようなモードを通して反復することができる。さらに、スイッチ２０８は、本明細書に説明されるような技術に関連するかどうかにかかわらず、他の入力から入力を受信することができる。ストリング２０４およびストリング２０６は、少なくとも１つのエンティティによって、同時に、並行して、および／または異なる時間にかかわらず、任意の様式でダイレクトされることができる。ストリング２０４のうちの少なくとも１つおよびストリング２０６のうちの少なくとも１つが、少なくとも１つのエンティティによって、同時に、並行して、および／または異なる時間にかかわらず、スイッチ２０８に入力される。スイッチ２０８は、１ナノ秒、１ミリ秒、１秒、１分、１時間等の任意の時間測定値に基づく任意の時間周期にわたって反転されることができる。スイッチ２０８は、自動的に反転し、これは、手動初期アクティブ化を含むことができる。スイッチ２０８は、クロック、発振器、プロセッサ、およびハードウェアならびに／もしくはソフトウェア論理に基づいて切り替わる。示されるように、スイッチ２０８は、クロックに基づいて３０秒毎に切り替わる。したがって、３０秒毎に、Ａ／Ｂスイッチは、第１のモードから第２のモードに、および第２のモードから第１のモードに反復的に切り替わる。スイッチへの入力は、先入れ先出し（ＦＩＦＯ）方法論に基づき得ることに留意されたい。
【００４７】
複数の時間周期２１２が、ストリング２０４およびストリング２０６を参照して示されるような第１の時間周期および第２の時間周期の組み合わせに基づく。時間周期２１２は、ストリング２０４と関連付けられる時間が秒に基づき、ストリング２０６と関連付けられる時間がミリ秒に基づく等、異なる時間測定値に基づき得る。そのような異なる時間測定値は、任意のタイプであり得る。
【００４８】
スイッチ２０８が、Ａモードであり得る第１のモードにあるとき、時間周期２１２に示されるような１２：００：００において、スイッチ２０８は、ストリング２０４のうちの１つを出力し、これは、示されるように、１０１００１である。そのような出力に基づいて、認証／アクセス制御が、実施される。例えば、第１のモードの間、パスワード２１０は、２進形および／または英数字、記号、バイオメトリック等の別の形式にかかわらず、１０１００１または１０進法もしくは１６進法における等のその値であり得る。
【００４９】
時間周期２１２に示されるような１２：００：３０において、スイッチ２０８は、Ｂモードであり得る第２のモードに反転する。第２のモードの間、スイッチ２０８は、ストリング２０６のうちの１つを出力し、これは、示されるように、１０１００１００１である。そのような出力に基づいて、認証／アクセス制御が、実施される。例えば、第２のモードの間、パスワード２１０は、２進形および／または英数字、記号、バイオメトリック等の別の形式にかかわらず、１０１００１００１または１０進法もしくは１６進法における等のその値であり得る。
【００５０】
時間周期２１２に示されるような１２：０１：００において、スイッチ２０８は、Ａモードであり得る第１のモードに戻るように反転する。第１のモードの間、スイッチ２０８は、ストリング２０６のうちの次のものを出力し、これは、示されるように、００１０１１である。そのような出力に基づいて、認証／アクセス制御が、実施される。例えば、第１のモードの間、パスワード２１０は、２進形および／または英数字、記号、バイオメトリック等の別の形式にかかわらず、００１０１１または１０進法もしくは１６進法における等のその値であり得る。そのようなスイッチ２０８反転は、無期限に、またはある条件が満たされるまで継続することができる。パスワード２１０は、時間周期２１２によって示されるような時間が経過するにつれて切り替わっているため、コンピュータシステムのセキュリティは、強化されることができる。
【００５１】
ビットストリーム２０２は、２つを上回る複数の等しいサイズのストリングに構文解析され得ることに留意されたい。例えば、ビットストリーム２０２は、３、９、１０、２０等の任意の数の等しいサイズのストリングに分割されることができる。スイッチ２０８は、２つを上回るモードの間で切り替わることができる。例えば、スイッチ２０８は、３、９、１０、２０等の複数のモードの間で切り替わることができる。故に、スイッチ２０８は、複数のモードにおいて複数の等しいサイズのストリングに基づいて出力することができる。そのようなスイッチ２０８出力は、複数のストリングに基づいて、パスワード２１０を介してアクセスを認証／制御するために使用されることができる。
【００５２】
例えば、ストリーム２０２および複数の異なるストリームセグメント化アルゴリズムが、事前プログラミングを介する等して、複数のコンピュータに提供される。コンピュータはそれぞれ、アルゴリズムに基づいて、ストリーム２０２をセグメント化し、ストリング２０４およびストリング２０６をもたらし、これらは、アルゴリズムに基づいて、サイズならびに／もしくは値が相互に異なる。ストリング２０４およびストリング２０６は、複数のモードの間で交互するローカルスイッチ２０８に入力される。コンピュータは、交互するスイッチに基づいて変化する、パスワード２１０に基づいてそれぞれと通信する。パスワード２１０は、ストリング２０４およびストリング２０６からの入力を交互することに基づいて、時間周期２１２に従って周期的に変更される。入力は、モードの間で交互するスイッチに従って交互にされる。コンピュータに関して、パスワード２１０変更は、スイッチ２０８の交互に基づく等、同期的であるが、非同期的でもあり得る。また、コンピュータに関して、ストリング２０４およびストリング２０６の生成のうちの少なくとも１つは、クロックに基づく等、同期的であるが、非同期的でもあり得ることに留意されたい。さらに、コンピュータに関して、スイッチ２０８への入力は、クロックに基づく等、同期的であるが、非同期的でもあり得ることに留意されたい。
【００５３】
図３は、本開示による、ネットワークの例示的実施形態の図を示す。本図のいくつかの要素は、上記に説明される。したがって、同一の参照文字は、上記に説明される同一または同様のコンポーネントを識別し、その任意の反復的な詳細な説明は、以降では、複雑性を回避するために省略または簡略化されるであろう。
【００５４】
ネットワーク図３００は、少なくともデスクトップコンピュータ３０４、タブレットコンピュータ３０６、モバイル電話３０８、ラップトップコンピュータ３１０、メインフレーム３１２、サーバ３１４、クラウドコンピューティングネットワーク３１６、通信塔３１８、衛星３２０、別のネットワーク３２２、およびネットワーキングデバイス３２４と通信するネットワーク３００を描写する。そのような通信は、直接的および／または間接的であり、有線および／または無線であり、暗号化される、ならびに／もしくは暗号化されない場合がある。ネットワーク３０２および／またはネットワーク３２２は、インターネットを含むことができる。図３００に示される任意の要素の１つを上回るインスタンスが、含まれることができる。図３００に示される任意および／または全ての要素は、有線ならびに／もしくは無線にかかわらず、いかようにも図３００に示される任意および／または全ての要素と通信することができる。そのような通信のうちのいずれかおよび／または全ては、図１ならびに図２を参照して説明されるような技術を使用して、任意の様式で実施されることができる。例えば、ビットストリームが、受信され、第１の様式で第１の発振器の第１の周波数に従って構文解析され、第１のものと異なる第２の様式で第２の発振器の第２の周波数に従って構文解析される。第１の発振器および第２の発振器の出力は、組み合わせられ、ネットワークデバイスが焦点を当てるために交互に出力するストリングの間を切り替えるスイッチとして使用される。そのような出力がネットワーク通信に組み込まれるとき、通信するネットワークデバイス間の出力が同じではない場合、そのようなネットワーク通信は、変化する認証／アクセス制御条件に起因して、可能にされない。
【００５５】
いくつかの例示的実施形態では、開示される技術は、バイト内容の変動を促進することができる。結果として、発振／クロック信号は、ビットストリームを８ビット、１６ビット、および／または６４ビット増分に解釈する、ネットワークデバイスと異なるようにエンコードする長さを伴うビットストリームを再解釈するように、ビットストリームを種々のビット長に構文解析することによってビットストリームをセグメント化する方法のビット長を変動させる。ビットストリーム増分の長さは、発振器／クロック周波数に基づく。少なくとも２つの発振器／クロックが、使用され、第１の発振器／クロックが、構文解析またはビット分割を生成し、第１のクロックと同期する第２の発振器／クロックが、構文解析を正しく解釈する。第１のクロックの周波数を把握しないと、信号の受信機は、標準８ビット構文解析を使用して信号を正しく解釈することが可能ではないであろう。したがって、異なる周波数を有する発振器／クロックのペアが組み合わせられ、それらの発振が組み合わせられると、そのような組み合わせは、ランダムに見えるが、最終的に繰り返される、新しい波形パターンを生成する。クロックは、原子時計、水晶時計、機械時計等であり得る。いくつかの例示的実施形態では、そのような技術は、ネットワークデバイスにかかわらず、よりセキュアなネットワークデバイスアクセスを生成するために、識別番号と組み合わせられることができる。
【００５６】
図４は、本開示による、コンピュータセキュリティを強化するための方法の別の例示的実施形態のフローチャートを示す。本図のいくつかの要素は、上記に説明される。したがって、同一の参照文字は、上記に説明される同一または同様のコンポーネントを識別し、その任意の反復的な詳細な説明は、以降では、複雑性を回避するために省略または簡略化されるであろう。
【００５７】
プロセス４００は、ブロック４０２−４１６を含む。プロセス４００は、可変ルックアップテーブルおよび／または語長を使用して、論理をエンコードならびにデコードするためのものである。プロセス４００は、オペレーティングシステムレベルの下方、上、および／または上方で実装され得る、任意のハードウェアレベル上の１つならびに／もしくはそれを上回る回路内等のハードウェア論理、および／または１つならびに／もしくはそれを上回るソフトウェアアプリケーション内等のソフトウェア論理の任意の組み合わせを介して実装されることができる。プロセス４００は、要求・応答コンピューティングにおいて実装されることができる。プロセス４００は、コンピュータセキュリティへのいずれの関連にもかかわらず、より大きいプロセスの一部であり得る。例えば、種々の機能が、プロセス４００のいずれか１つおよび／またはそれを上回るブロックの実施前、その間、ならびに／もしくはその後に起こることができる。代替として、プロセス４００は、独自に実施されることができる。ブロック４０２−４１６は、本明細書に説明されるような順序で実施され得るが、ブロック４０２−４１６は、他の順序で実施されることができ、いくつかのブロックは、それらの任意の順列において他のブロックの前、その間、および／またはその後に実施される。また、プロセス４００は、少なくとも部分的に、英数字入力、記号入力、バイオメトリック入力、ハードウェア入力、および／またはその他に基づき得る、パスワード入力を用いて実装され得ることに留意されたい。しかしながら、プロセス４００はまた、パスワードを使用することなく実装されることができる。
【００５８】
ブロック４０２では、複数の変数が、提供される。そのような提供は、手動および／または自動的、暗号化される、および／または暗号化されていない、有線および／または無線、直接的ならびに／もしくは間接的であり得る。任意の数の変数が、使用され得ることに留意されたい。例えば、変数Ａ、変数Ｂ、および変数Ｃが、提供され、変数Ａは、１７に設定され、変数Ｂは、１３に設定され、変数Ｃは、２４に設定される。変数は、１つの数体系にあるが、他の実施形態では、異なる数体系にあることに留意されたい。
【００５９】
ブロック４０４では、ルックアップテーブルが、提供される。そのような提供は、手動および／または自動的、暗号化される、および／または暗号化されていない、有線および／または無線、直接的ならびに／もしくは間接的であり得る。テーブルは、英数字ライブラリに対応する複数の１０進値を介して、英数字ライブラリ等の記号ライブラリをインデックス化する。例えば、ルックアップテーブルが、下記に提供される。他の記号、他の数体系等を介する等して、他のタイプのルックアップテーブルおよび異なるインデックス化ライブラリが、同様に使用され得ることに留意されたい。
【表１】
2019535041.tif 000003
【００６０】
ブロック４０６では、メッセージが、ルックアップテーブルを介して第１の数体系に変換される。そのような変換は、自動的であり、任意のタイプの数体系に関してであり得る。メッセージは、遠隔通信のため等、手動で、および／または自動的に生成されることができる。メッセージは、テキストであるが、任意のタイプであり得る。例えば、メッセージが、ｈｅｌｌｏ＿ｗｏｒｌｄである場合、ルックアップテーブルを介して、メッセージは、ｈ＝８、ｅ＝５、ｌ＝１２、ｌ＝１２、ｏ＝１５、＿＝２７、ｗ＝２３、ｏ＝１５、ｒ＝１８、ｌ＝１２、ｄ＝４であるように、１０進法に変換される。
【００６１】
ブロック４０８では、第１の数体系を介して現れるようなメッセージが、第１の数体系と異なる第２の数体系に変換される。そのような変換は、直接的および／または間接的にかかわらず、自動的であり、１６進法等の任意のタイプの数体系に関してであり得る。ｈ＝８、ｅ＝５、ｌ＝１２、ｌ＝１２、ｏ＝１５、＿＝２７、ｗ＝２３、ｏ＝１５、ｒ＝１８、ｌ＝１２、ｄ＝４である上記の実施例を使用すると、そのような値は、１０進法とは異なる２進法に変換される。したがって、８ビットストリングを使用すると、変換は、ｈ＝８に関して００００  １０００、ｅ＝５に関して００００  ０１０１、ｌ＝１２に関して００００  １１００、ｌ＝１２に関して００００  １１００、ｏ＝１５に関して００００  １１１１、＿＝２７に関して０００１  １０１１、ｗ＝２３に関して０００１  ０１１１、ｏ＝１５に関して００００  １１１１、ｒ＝１８に関して０００１  ００１０、ｌ＝１２に関して００００  １１００、およびｄ＝４に関して００００  ０１００をもたらす。ストリングはまた、４、１６、およびその他等の他のビットサイズにあり得ることに留意されたい。
【００６２】
ブロック４１０では、第２の数体系を介して現れるようなメッセージが、文字シーケンスに組み合わせられる。そのような組み合わせは、直接的および／または間接的にかかわらず、自動的である。ストリング００００  １０００、００００  ０１０１、００００  １１００、００００  １１００、００００  １１１１、０００１  １０１１、０００１  ０１１１、００００  １１１１、０００１  ００１０、００００  １１００、００００  ０１００を含有する上記の実施例を使用すると、ストリングは、文字シーケンス００００１００００００００１０１００００１１００００００１１００００００１１１１０００１１０１１０００１０１１１  ００００１１１１０００１００１０００００１１０００００００１００に組み合わせられる。
【００６３】
ブロック４１２では、複数のサブシーケンスが、改変によって、ブロック４０２からの変数のうちの少なくとも２つをセグメント化することを介して生成される。そのような生成は、直接的および／または間接的にかかわらず、自動的である。シーケンス００００１００００００００１０１００００１１００００００１１００００００１１１１０００１１０１１０００１０１１１  ００００１１１１０００１００１０００００１１０００００００１００を含有し、変数Ａが１７に設定され、変数Ｂが１３に設定される上記の実施例を使用すると、サブシーケンスは、ストリームをセグメント化するように変数を交互することを介して生成される。したがって、シーケンス
【００６４】
００００１００００００００１０１００００１１００００００１１００００００１１１１０００１１０１１０００１０１１１  ００００１１１１０００１００１０００００１１０００００００１００は、サブシーケンスが、改変を介して生成され、変数Ａおよび変数Ｂに基づく改変に従って対応してサイズ決定されるように、変数Ａおよび変数Ｂを交互することを介してセグメント化される。結果として、サブシーケンスは、００００  １０００  ００００  ０１０１０（変数Ａに従って１７ビット）、０００１  １０００  ０００１１（変数Ｂに従って１３ビット）、００００  ００１１  １１００  ０１１０１（変数Ａに従って１７ビット）、１０００  １０１１  １００００（変数Ｂに従って１３ビット）、１１１１  ０００１  ００１０  ００００１（変数Ａに従って１７ビット）、および１０００  ００００  １００（変数Ｂに従って１１ビット）である。
【００６５】
ブロック４１４では、サブシーケンスが、上記に説明されるように、すでに使用された変数と異なる、ブロック４０２を介して提供されるような変数のうちの少なくとも１つを使用して他のサブシーケンスに変換される。すでに使用された変数と異なる変数のうちの少なくとも１つの値に起因して、そのような変換は、ブロック４１２を介して生成されたサブシーケンスと異なる長さである他のサブシーケンスをもたらす。そのような変換は、直接的および／または間接的にかかわらず、自動的である。
【００６６】
サブシーケンス００００  １０００  ００００  ０１０１０、０００１  １０００  ０００１１、００００  ００１１  １１００  ０１１０１、１０００  １０１１  １００００、１１１１  ０００１  ００１０  ００００１、および１０００  ００００  １００が変数Ａならびに変数Ｂに基づく上記の実施例を使用すると、そのようなサブシーケンスは、２４に設定される変数Ｃを使用して他のサブシーケンスに変換される。変換は、変数Ｃとサブシーケンスのそれぞれの長さとの間の差異に基づく。例えば、変数Ａに基づく１７ビットサブシーケンスの変数Ｃに基づく２４ビットサブシーケンスへの変換は、１７ビットサブシーケンスに７ビットを追加することを介して実施され、合計で２４ビットサブシーケンスになる。同様に、変数Ｂに基づく１３ビットサブシーケンスの変数Ｃに基づく２４ビットサブシーケンスへの変換は、１３ビットサブシーケンスに１１ビットを追加することを介して実施され、合計で２４ビットサブシーケンスになる。したがって、他のサブシーケンスは、ブロック４１２を介して生成されるようなサブシーケンスと異なるビット長をもたらす。結果として、変数Ｃと１７または１３等の古いサブシーケンスの関連ストリング長との間の差異に対応するビットを追加することを介して変換されるため、他のサブシーケンスは、００００  ００００  ０００１  ００００  ００００  １０１０、００００  ００００  ００００  ００１１  ００００  ００１１、００００  ００００  ００００  １１１１  １０００  １１０１、００００  ００００  ０００１  ０００１  ０１１１  ００００、００００  ０００１  １１１０  ００１０  ０１００  ０００１、および００００  ００００  ００００  ０１００  ００００  ０１００である。他の実施形態では、少なくとも１つの変数は、すでに使用された変数のうちの少なくとも１つと異ならないことに留意されたい。
【００６７】
ブロック４１６では、他のサブシーケンスが、伝送される。そのような伝送は、手動および／または自動的、直接的および／または間接的、無線および／または有線、暗号化される、ならびに／もしくは暗号化されない場合がある。
【００６８】
プロセス４００に基づくデコーディングに関して、上記の実施例を使用すると、受信されたストリーム０００００００００００１００００００００１０１０００００００００００００００１１００００００１１００００００００００００  １１１１１０００１１０１０００００００００００１０００１０１１１０００００００００００１１１１０００１００１０００００１０００００００００００００１０００００００１００から始める。次いで、受信されたストリームは、２４である変数Ｃに基づく語長に変換される。そのような変換は、００００  ００００  ０００１  ００００  ００００  １０１０、００００  ００００  ００００  ００１１  ００００  ００１１、００００  ００００  ００００  １１１１  １０００  １１０１、００００  ００００  ０００１  ０００１  ０１１１  ００００、００００  ０００１  １１１０  ００１０  ０１００  ０００１、および００００  ００００  ００００  ０１００  ００００  ０１００をもたらす。次いで、変数ＡおよびＢを使用して、各単語から追加されたビットを削除すると、これは、００００  １０００  ００００  ０１０１０、０００１  １０００  ０００１１、００００  ００１１  １１００  ０１１０１、１０００  １０１１  １００００、１１１１  ０００１  ００１０  ００００１、１０００  ００００  １００をもたらす。次いで、いずれの分離も除去すると、これは、００００１００００００００１０１００００１１００００００１１０００  ０００１１１１０００１１０１１０００１０１１１００００１１１１０００１００１０００００１１０００００００１００をもたらす。次いで、ストリームを８ビット語にセグメント化すると、これは、００００  １０００、００００  ０１０１、００００  １１００、００００  １１００、００００  １１１１、０００１  １０１１、０００１  ０１１１、００００  １１１１、０００１  ００１０、００００  １１００、００００  ０１００をもたらす。次いで、単語を１０進相当に変換すると、これは、８、５、１２、１２、１５、２７、２３、１５、１８、１２、４をもたらす。次いで、ルックアップテーブルを使用し、ｈｅｌｌｏ＿ｗｏｒｌｄと置換する。
（可変語長エンコーディング）
【００６９】
セキュリティの追加に加えて、可変語長エンコーディングは、エンコーディングのために使用されてもよい。ある場合では、可変語長エンコーディングは、より効率的なまたはより高い分解能のエンコーディングのために使用されてもよい。当業者によって理解されるであろうように、２進語は、例えば、単位、数、文字、または記号をともに表すビットの集合である。いくつかの用途では、より短い語長は、十分な分解能が欠如し得る一方、より長い語長は、所与のタスクを遂行するために過剰な処理能力および記憶容量を要求し得る。ある場合では、可変語長エンコーディングは、これらおよび他の限定に対処し得る。
【００７０】
図５は、本開示による、可変語長エンコーディングの例示的実施形態のフローチャートを示す。プロセス５００は、ブロック５０２−５１０を含む。プロセス５００は、可変ルックアップテーブルおよび／または語長を使用して、論理をエンコードならびにデコードするためのものである。プロセス５００は、オペレーティングシステムレベルの下方、上、および／または上方で実装され得る、任意のハードウェアレベル上の１つならびに／もしくはそれを上回る回路内等のハードウェア論理、および／または１つならびに／もしくはそれを上回るソフトウェアアプリケーション内等のソフトウェア論理の任意の組み合わせを介して実装されることができる。プロセス５００は、要求・応答コンピューティングにおいて実装されることができる。プロセス５００は、コンピュータセキュリティへのいずれの関連にもかかわらず、より大きいプロセスの一部であり得る。例えば、種々の機能が、プロセス５００のいずれか１つおよび／またはそれを上回るブロックの実施前、その間、ならびに／もしくはその後に起こることができる。代替として、プロセス５００は、独自に実施されることができる。ブロック５０２−５１０は、本明細書に説明されるような順序で実施され得るが、ある場合では、ブロック５０２−５１０のうちのいくつかは、他の順序で実施されることができ、いくつかのブロックは、それらの任意の順列において他のブロックの前、その間、および／またはその後に実施される。
【００７１】
ブロック５０２では、デフォルトの語長が、決定される。そのような決定は、手動（例えば、ユーザによって設定される）および／または自動的（例えば、プロセッサによって決定される）であり得る。ある場合では、デフォルトの語長は、プログラムのために設定されてもよい。例えば、デフォルトの語長は、限定ではないが、８ビット、１６ビット、または２４ビットであってもよい。
【００７２】
ブロック５０４では、デフォルトの語長の２進語が、デフォルトの語長モードにおいて出力されてもよい。例えば、デフォルトの語長が８である場合では、米国標準情報交換コード（ＡＳＣＩＩ）テーブルにおける文字が、出力されてもよい。
【００７３】
ブロック５０６では、デフォルトの語長の所定の２進遷移語が、可変語長モードへの遷移を示すために出力されてもよい。例えば、ＡＳＣＩＩ文字がデフォルトの語長モードの間に出力される場合では、ＡＳＣＩＩテーブルにおいて使用されない１０進数１４１が、可変語長モードへの遷移を示すために出力されてもよい。
【００７４】
ブロック５０８では、後続ビットストリームの語長を示す遷移語に続く２進長語が、出力されてもよい。ある場合では、長語は、後続ビットストリームの語長を明示的に規定し得、すなわち、長語は、後続ビットストリームの語長の数である、または代表的に、例えば、語長を示すテーブルを参照する。
【００７５】
ブロック５１０では、示された語長の単語のビットストリームが、各単語の先頭における付加的フラグビットとともに出力される。フラグビットは、次の単語がストリーム内の単語である、または語長において変化するかどうかを示し得る。例えば、フラグビットが０であるとき、後続単語は、ストリーム内の単語であり、フラグビットが１であるとき、後続単語は、別の長語であり得る。長語が終了語、例えば、全てゼロである場合、モードは、デフォルトの語長モードに遷移し得る。しかしながら、これは、実施例にすぎない。ある場合では、１であるフラグビットは、次の単語が別の長語であることを示してもよい。他の場合では、１であるフラグビットは、デフォルトの語長モードへの遷移を示してもよく、現在の単語または次の単語は、実施形態に応じて、デフォルトの語長であってもよい。
【００７６】
非限定的実施例として、デフォルトの語長がＡＳＣＩＩ文字を表す８ビットであり、遷移語が１０進数１４１であり、長語が１６ビット長であり、後続ビットストリームの語長を明示的に示し、１のフラグビットが、後続単語が別の長語であることを示す場合を検討する。本実施例では、２つのＡＳＣＩＩ文字、３つの４ビット語、２つの５ビット語、およびさらに３つのＡＳＣＩＩ文字が、出力される。本事例の例示的出力が、下記の表１に図示される。
【表２】
2019535041.tif 000004
【００７７】
図６は、本開示による、可変語長エンコーディングの別の例示的実施形態のフローチャートを示す。プロセス６００は、ブロック６０２−６１０を含む。プロセス６００は、可変ルックアップテーブルおよび／または語長を使用して、論理をエンコードならびにデコードするためのものである。プロセス６００は、オペレーティングシステムレベルの下方、上、および／または上方で実装され得る、任意のハードウェアレベル上の１つならびに／もしくはそれを上回る回路内等のハードウェア論理、および／または１つならびに／もしくはそれを上回るソフトウェアアプリケーション内等のソフトウェア論理の任意の組み合わせを介して実装されることができる。プロセス６００は、要求・応答コンピューティングにおいて実装されることができる。プロセス６００は、コンピュータセキュリティへのいずれの関連にもかかわらず、より大きいプロセスの一部であり得る。例えば、種々の機能が、プロセス６００のいずれか１つおよび／またはそれを上回るブロックの実施前、その間、ならびに／もしくはその後に起こることができる。代替として、プロセス６００は、独自に実施されることができる。ブロック６０２−６１０は、本明細書に説明されるような順序で実施され得るが、ある場合では、ブロック６０２−６１０のうちのいくつかは、他の順序で実施されることができ、いくつかのブロックは、それらの任意の順列において他のブロックの前、その間、および／またはその後に実施される。
【００７８】
ブロック６０２では、デフォルトの語長が、決定される。そのような決定は、手動（例えば、ユーザによって設定される）および／または自動的（例えば、プロセッサによって決定される）であり得る。ある場合では、デフォルトの語長は、プログラムのために設定されてもよい。例えば、デフォルトの語長は、限定ではないが、８ビット、１６ビット、または２４ビットであってもよい。
【００７９】
ブロック６０４では、デフォルトの語長の２進語が、デフォルトの語長モードにおいて出力されてもよい。例えば、デフォルトの語長が８である場合では、米国標準情報交換コード（ＡＳＣＩＩ）テーブルにおける文字が、出力されてもよい。
【００８０】
ブロック６０６では、デフォルトの語長の所定の２進遷移語が、可変語長モードへの遷移を示すために出力されてもよい。例えば、ＡＳＣＩＩ文字がデフォルトの語長モードの間に出力される場合では、ＡＳＣＩＩテーブルにおいて使用されない１０進数１４３が、可変語長モードへの遷移を示すために出力されてもよい。
【００８１】
ブロック６０８では、単語のビットストリームが、単語の長さを示す各単語の先頭におけるキーとともに出力される。キーは、任意の数のビット、例えば、３であってもよく、規定された語長にマッピングされてもよい。ある場合では、キーは、不変であってもよい。ある場合では、ヘッダが、キーを示してもよい。例えば、ヘッダは、２ビットキーに対応する語長値を示してもよい。
【００８２】
ブロック６１０では、デフォルトの語長モードに戻るような遷移を示す終了語が、出力されてもよい。例えば、ＡＳＣＩＩ文字がデフォルトの語長モードの間に出力される場合では、キーが８ビット語を示すとき、ＡＳＣＩＩテーブルにおいて使用されない１０進数１４３が、可変語長モードへの遷移を示すために出力されてもよい。
【００８３】
非限定的実施例として、デフォルトの語長がＡＳＣＩＩ文字を表す８ビットであり、遷移語が１０進数１４２であり、終了語が８ビット語における１０進数１４３であり、キーが以下のキーを使用する３つのビットである場合を検討する。
【表３】
2019535041.tif 000005
本実施例では、２つのＡＳＣＩＩ文字、１つの６４ビット語、２つの１６ビット語、およびさらに３つのＡＳＣＩＩ文字が、出力される。本事例の例示的出力が、下記の表２に図示される。
【表４】
2019535041.tif 000006
【００８４】
ある場合では、キーは、単語の長さを示す各単語の先頭に追加されてもよく、デフォルトの語長は、決定されない場合がある。言い換えると、全単語は、単語の長さを示すキーを有する。図６を参照して上記に議論される実施形態のように、キーは、任意の数のビットであってもよい。
【００８５】
非限定的実施例として、キーが以下のキーを使用する３つのビットである場合を検討する。
【表５】
2019535041.tif 000007
本実施例では、２つの８ビット文字、１つの６４ビット語、２つの１６ビット語、およびさらに３つの８ビット文字が、出力される。本事例の例示的出力が、下記の表３に図示される。
【表６】
2019535041.tif 000008
表３を表２と比較することによって分かり得るように、いくつかの実施形態では、いかなるデフォルトの語長モードも存在しないため、いかなる遷移語または終了語も、可変語長モードに遷移するために使用されない。
【００８６】
ある場合では、２進長語が、単語の各シーケンスの前の後続ビットストリームの語長を示し得、付加的フラグビットが、次の単語がストリーム内の単語である、または語長において変化するかどうかを示すために各単語の先頭に含まれ得る。図５を参照して上記に議論される実施形態のように、長語は、後続ビットストリームの語長を明示的に規定し得、すなわち、長語は、後続ビットストリームの語長の数である、または代表的に、例えば、語長を示すテーブルを参照する。
【００８７】
非限定的実施例として、長語が１６ビット長であり、後続ビットストリームの語長を明示的に示し、１のフラグビットが、後続単語が別の長語であることを示す場合を検討する。本実施例では、２つの８ビット語、３つの４ビット語、２つの５ビット語、およびさらに３つの８ビット語が、出力される。本事例の例示的出力が、下記の表４に図示される。
【表７】
2019535041.tif 000009
表４を表１と比較することによって分かり得るように、いくつかの実施形態では、いかなるデフォルトの語長モードも存在しないため、いかなる遷移語も、可変語長モードに遷移するために使用されない。
【００８８】
可変語長エンコーディングの使用に基づいて、ビットストリームは、より迅速に伝送および処理され得、ファイルサイズは、より小さくなり得、より高い分解能が、必要なときに提供され得る。ある場合では、デフォルトの語長は、事前に設定されてもよい。ある場合では、ファイルが、走査されてもよく、デフォルトの語長等の語長は、圧縮を改良するように設定されてもよい。ある場合では、ファイルが、走査されてもよく、デフォルトの語長および可変語長は、最適化されてもよい。ある場合では、デフォルトの語長は、設定されない場合があり、エンコーディングは、可変語長モードにおいてのみ実施されてもよい。
【００８９】
当業者によって理解されるであろうように、本開示の側面は、システム、方法、またはコンピュータプログラム製品として具現化されてもよい。故に、本開示の側面は、全体的にハードウェアである実施形態、全体的にソフトウェアである実施形態（ファームウェア、常駐ソフトウェア、マイクロコード等を含む）、または本明細書において、全て、概して、「回路」、「モジュール」、もしくは「システム」と称され得るソフトウェアおよびハードウェア側面を組み合わせる実施形態の形態をとってもよい。さらに、本開示の側面は、その上に具現化されるコンピュータ可読プログラムコードを有する１つ以上のコンピュータ可読媒体内で具現化されるコンピュータプログラム製品の形態をとってもよい。
【００９０】
１つ以上のコンピュータ可読媒体の任意の組み合わせが、利用されてもよい。コンピュータ可読媒体は、コンピュータ可読信号媒体またはコンピュータ可読記憶媒体（限定ではないが、非一過性コンピュータ可読記憶媒体を含む）であってもよい。コンピュータ可読記憶媒体は、例えば、限定ではないが、電子、磁気、光学、電磁、赤外線、または半導体システム、装置、もしくはデバイス、または前述の任意の好適な組み合わせであってもよい。コンピュータ可読記憶媒体のより具体的な実施例（非包括的リスト）は、以下、すなわち、１つ以上のワイヤを有する電気接続、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ（ＲＡＭ）、読取専用メモリ（ＲＯＭ）、消去可能プログラマブル読取専用メモリ（ＥＰＲＯＭもしくはフラッシュメモリ）、光ファイバ、ポータブルコンパクトディスク読取専用メモリ（ＣＤ−ＲＯＭ）、光学記憶デバイス、磁気記憶デバイス、または前述の任意の好適な組み合わせを含むであろう。本文書の文脈では、コンピュータ可読記憶媒体は、命令実行システム、装置、またはデバイスによって、もしくはそれと関連して使用するためのプログラムを含有または記憶し得る、任意の有形媒体であってもよい。
【００９１】
コンピュータ可読信号媒体は、例えば、ベースバンド内に、または搬送波の一部として、その中に具現化されるコンピュータ可読プログラムコードを伴う伝搬データ信号を含んでもよい。そのような伝搬信号は、限定ではないが、電磁、光学、またはそれらの任意の好適な組み合わせを含む、種々の形態のうちのいずれかをとってもよい。コンピュータ可読信号媒体は、コンピュータ可読記憶媒体ではなく、命令実行システム、装置、またはデバイスによって、もしくはそれと関連して使用するためのプログラムを通信、伝搬、または輸送し得る、任意のコンピュータ可読媒体であってもよい。
【００９２】
コンピュータ可読媒体上で具現化されるプログラムコードは、限定ではないが、無線、有線、光ファイバケーブル、ＲＦ等、または前述の任意の好適な組み合わせを含む、任意の適切な媒体を使用して伝送されてもよい。
【００９３】
本開示の側面に関する動作を実行するためのコンピュータプログラムコードは、Ｊａｖａ（登録商標）、Ｓｍａｌｌｔａｌｋ、Ｃ＋＋、または同等物等のオブジェクト指向プログラミング言語、および「Ｃ」プログラミング言語または類似するプログラミング言語等の従来の手続型プログラミング言語を含む、１つ以上のプログラミング言語の任意の組み合わせで書き込まれてもよい。他のタイプの言語は、ＸＭＬ、ＸＢＲＬ、およびＨＴＭＬ５を含む。プログラムコードは、ユーザのコンピュータ上で全体的に、ユーザのコンピュータ上で部分的に、スタンドアロンソフトウェアパッケージとして、ユーザのコンピュータ上で部分的かつ遠隔コンピュータ上で部分的に、または遠隔コンピュータもしくはサーバ上で全体的に実行されてもよい。後者のシナリオでは、遠隔コンピュータは、ユーザのコンピュータに、ローカルエリアネットワーク（ＬＡＮ）もしく広域ネットワーク（ＷＡＮ）を含む、任意のタイプのネットワークを通して接続されてもよい、または接続は、外部コンピュータに（例えば、インターネットサービスプロバイダを使用してインターネットを通して）成されてもよい。
【００９４】
本開示の側面は、本開示の実施形態による、方法、装置（システム）、およびコンピュータプログラム製品のフローチャート図ならびに／もしくはブロック図を参照して下記に説明される。フローチャート図および／またはブロック図の各ブロックならびにフローチャート図および／またはブロック図におけるブロックの組み合わせが、コンピュータプログラム命令によって実装されることができる。これらのコンピュータプログラム命令は、コンピュータまたは他のプログラマブルデータ処理装置のプロセッサを介して実行される命令が、フローチャートならびに／もしくはブロック図のブロックまたは複数のブロックに規定された機能／行為を実装するための手段を生成するように、マシンを生産するために汎用コンピュータ、専用コンピュータ、もしくは他のプログラマブルデータ処理装置のプロセッサに提供されてもよい。
【００９５】
これらのコンピュータプログラム命令はまた、コンピュータ可読媒体内に記憶される命令が、フローチャートおよび／またはブロック図のブロックもしくは複数のブロックに規定された機能／行為を実装する命令を含む製造品を生産するように、特定の様式で機能するようにコンピュータ、他のプログラマブルデータ処理装置、または他のデバイスに指図し得る、コンピュータ可読媒体内に記憶されてもよい。
【００９６】
コンピュータプログラム命令はまた、コンピュータまたは他のプログラマブル装置上で実行される命令が、フローチャートならびに／もしくはブロック図のブロックまたは複数のブロック内に規定された機能／行為を実装するためのプロセスを提供するように、一連の動作ステップをコンピュータ、他のプログラマブル装置、または他のデバイス上で実施させ、コンピュータ実装プロセスを生産するために、コンピュータ、他のプログラマブルデータ処理装置、もしくは他のデバイス上にロードされてもよい。
【００９７】
図におけるフローチャートおよびブロック図は、本開示の種々の実施形態による、システム、方法、およびコンピュータプログラム製品の可能性として考えられる実装のアーキテクチャ、機能性、ならびに動作を図示する。この点で、フローチャートまたはブロック図における各ブロックは、モジュール、セグメント、またはコードの一部を表し得、これは、規定された論理機能を実装するための１つ以上の実行可能命令を備える。また、いくつかの代替実装では、ブロックに留意される機能は、図に留意される順序以外で起こり得ることに留意されたい。例えば、関与する機能性に応じて、連続して示される２つのブロックは、実際には、実質的に並行して実行されてもよい、またはブロックは、時として、逆の順序で実行されてもよい。ブロック図および／またはフローチャート図の各ブロックならびにブロック図および／またはフローチャート図におけるブロックの組み合わせが、規定された機能もしくは行為を実施する専用ハードウェアベースシステムまたは専用ハードウェアおよびコンピュータ命令の組み合わせによって実装されることができる。
【００９８】
下記の請求項における全ての手段またはステップ、加えて、機能要素の対応する構造、材料、行為、および均等物は、具体的に請求されるような他の請求される要素と組み合わせて機能を実施するための任意の構造、材料、または行為を含むように意図される。本開示の説明は、例証および説明の目的のために提示されており、開示される形態において本開示に包括または限定されるように意図されない。多くの修正および変形例が、本開示の範囲ならびに精神から逸脱することなく、当業者に明白となるであろう。実施形態は、本開示の原理および実践的用途を最良に解説し、当業者が、考慮される特定の使用に好適であるような種々の修正を伴う種々の実施形態に関する開示を理解することを可能にするために選定ならびに説明された。
【００９９】
本明細書に描写されるフロー図は、一実施例にすぎない。本開示の精神から逸脱することなく、本図またはそれにおいて説明されるステップ（もしくは動作）の多くの変形例が存在してもよい。例えば、ステップは、異なる順序で実施されてもよい、および／またはステップは、追加、削除、ならびに／もしくは修正されてもよい。これらの変形例は全て、請求される開示の一部と見なされる。
【０１００】
本開示の好ましい実施形態が、説明されたが、当業者は、現在および将来の両方で、続く請求項の範囲内に該当する種々の改良および／または拡張を行い得る。これらの請求項は、最初に説明された開示に対する適切な保護を維持するように解釈されるべきである。
【図１】
2019535041.tif 000010
【図２】
2019535041.tif 000011
【図３】
2019535041.tif 000012
【図４】
2019535041.tif 000013
【図５】
2019535041.tif 000014
【図６】
2019535041.tif 000015
【国際調査報告】
2019535041.tif 000016
2019535041.tif 000017
2019535041.tif 000018