(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022058872
(43)【公開日】2022-04-12
(54)【発明の名称】コンピュータセキュリティを強化するための技術、可変語長エンコーディング、および可変長デコーディング
(51)【国際特許分類】
H04L 9/18 20060101AFI20220405BHJP
G06F 21/31 20130101ALI20220405BHJP
【FI】
H04L9/18
G06F21/31
【審査請求】有
【請求項の数】1
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2022015513
(22)【出願日】2022-02-03
(62)【分割の表示】P 2019537758の分割
【原出願日】2017-09-25
(31)【優先権主張番号】15/276,380
(32)【優先日】2016-09-26
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】15/407,908
(32)【優先日】2017-01-17
(33)【優先権主張国・地域又は機関】US
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.SMALLTALK
(71)【出願人】
【識別番号】519104798
【氏名又は名称】カラ パートナーズ エルエルシー
(74)【代理人】
【識別番号】100078282
【弁理士】
【氏名又は名称】山本 秀策
(74)【代理人】
【識別番号】100113413
【弁理士】
【氏名又は名称】森下 夏樹
(74)【代理人】
【識別番号】100181674
【弁理士】
【氏名又は名称】飯田 貴敏
(74)【代理人】
【識別番号】100181641
【弁理士】
【氏名又は名称】石川 大輔
(74)【代理人】
【識別番号】230113332
【弁護士】
【氏名又は名称】山本 健策
(72)【発明者】
【氏名】ブライアン ペニー
(72)【発明者】
【氏名】デスモンド ペニー
(57)【要約】
【課題】コンピュータセキュリティを強化する技術、可変語長エンコーディングおよび可変長デコーディングの提供。
【解決手段】(1)値の第1のシーケンスを備える暗号化されていないデータストリームを取得し、(2)値の第1のシーケンスの第1の部分を第1の変数に等しい語長を有するオリジナルの第1の単語にセグメント化し、(3)値の第1のシーケンスの第2の部分を第1の変数と異なる第2の変数に等しい語長を有するオリジナルの第2の単語にセグメント化し、(4)オリジナルの第1および第2の単語内の所定の場所にランダム値を挿入し、修正された第1および第2の単語を生成するし、修正された第1および第2の単語は、第1および第2の変数と異なる第3の変数に等しい語長を有し、(5)修正された第1および第2の単語を、暗号化されたデータストリームを定義する値の第2のシーケンスに組み合わせること含む、データをセキュアに伝送する方法。
【選択図】
図1
【特許請求の範囲】
【請求項1】
明細書に記載された発明。
【発明の詳細な説明】
【技術分野】
【0001】
(関連出願の相互参照)
本PCT国際出願は、2017年1月17日に出願された米国特許出願第15/407,908号に対する優先権およびその利益を主張するものである。本PCT国際出願はまた、2016年9月26日に出願された米国特許出願第15/276,380号に対する優先権およびその利益を主張するものである。上記出願の全内容および実体は、本明細書中に完全に記載されているかのように、それらの全体が参照により本明細書中に援用される。
【0002】
概して、本開示は、コンピュータセキュリティに関する。より具体的には、本開示は、コンピュータセキュリティを強化するための技術に関する。
【背景技術】
【0003】
本開示では、文書、行為、および/または知識の項目が参照ならびに/もしくは議論される場合、そのような参照および/または議論は、文書、行為、ならびに/もしくは知識の項目、および/またはそれらの任意の組み合わせが、優先日にあった、公的に利用可能である、公共に公知である、共通の一般的知識の一部である、ならびに/もしくは別様に適用可能な法律規定の下で従来技術を構成する、および/または本開示が関係し得る任意の問題を解決するための試みに関連することが公知であることを承認するわけではない。さらに、放棄されるものはない。
【0004】
過去数十年にわたって、異なるエンティティ/ユーザの間を移動するデータの量は、指数関数的に増大している。人物/企業は、現在、それらが行うビジネスの多くを処理するためにインターネットに依拠している。これは、データがソースと宛先との間で送信されることを要求する。例えば、多くの企業は、異なる地理的場所における多くの異なるオフィスに従業員を有している。それにもかかわらず、これらのオフィスは、同じ屋根の下にいるかのように効果的に通信することが可能である必要がある。故に、企業は、外部ネットワーク、例えば、インターネットを横断するデータ通信がセキュアなままであることを確実にしようとして、膨大な金額を費やしている。言い換えると、企業(および個人)は、これらのデータ通信を傍受しようと試みるハッカーと常に闘っている。
【0005】
ハッカーに対抗するために、従来のデータ通信システムは、そのデータが外部ネットワークを経由して伝送されることに先立って、コンピュータ/サーバにおいてデータをローカルで暗号化するための暗号化アルゴリズムを含む、ユーザ認証および/またはアクセス制御のための種々の方法に依拠している。残念ながら、これらの従来のシステムの多くは、外部ネットワークに直接接続されるため、ハッカーは、単純に、ローカルコンピュータ/サーバの「バックドア」を使用し、これが暗号化される前またはこれが復号化された後のいずれかのセキュアにされるように追求されるデータを取得することができる。故に、ユーザ認証および/またはアクセス制御のためのより効果的な技術が、所望されている。
【発明の概要】
【課題を解決するための手段】
【0006】
本開示は、少なくとも部分的に、上記のうちの少なくとも1つに対処し得る。しかしながら、本開示は、他の技術分野にも有用であることを証明し得る。したがって、請求項は、必ずしも、上記のうちのいずれかに対処することに限定されるものとして解釈されるべきではない。
【0007】
本開示の例示的実施形態によると、方法が、提供される。本方法は、コンピュータによって実施されることができる。例えば、コンピュータは、メモリと、プロセッサとを備えることができ、メモリは、プロセッサによって実行されると、コンピュータに、本方法の種々のステップのうちの1つ以上のものを実施させる、論理命令を備えることができる。本方法は、データストリームを暗号化および/または復号化するステップを含むことができる。例えば、本発明のいくつかの実施形態では、デバイスは、遠隔/外部コンピュータから暗号化されていないデータストリームを受信し、暗号化されたデータストリームを外部ネットワークを経由して宛先コンピュータに伝送することに先立って、そのデータストリームを暗号化することができる。本発明のいくつかの実施形態では、デバイスは、外部ネットワークを経由してソースコンピュータから暗号化されたデータストリームを受信し、暗号化されていないデータストリームを遠隔/外部コンピュータに伝送することに先立って、暗号化されたデータストリームを復号化することができる。本発明のいくつかの実施形態では、同一のデバイスは、(1)遠隔/外部コンピュータから暗号化されていないデータストリームを受信し、暗号化されたデータストリームを外部ネットワークを経由して宛先コンピュータに伝送することに先立って、そのデータストリームを暗号化することと、(2)外部ネットワークを経由してソースコンピュータから暗号化されたデータストリームを受信し、暗号化されていないデータストリームを遠隔/外部コンピュータに伝送することに先立って、暗号化されたデータストリームを復号化することとの両方を行うことができる。
【0008】
本発明のいくつかの実施形態では、本方法は、暗号化されていないデータストリームを暗号化するステップを含む。本方法は、値の第1のシーケンスを備える暗号化されていないデータストリームを取得するステップを含むことができる。本方法はさらに、値の第1のシーケンスの第1の部分を第1の変数に等しい語長を有するオリジナルの第1の単語にセグメント化するステップと、値の第1のシーケンスの第2の部分を第1の変数と異なる第2の変数に等しい語長を有するオリジナルの第2の単語にセグメント化するステップとを含むことができる。本方法はさらに、オリジナルの第1および第2の単語内の所定の場所にランダム値を挿入し、修正された第1および第2の単語を生成するステップを含むことができる。修正された第1および第2の単語は、第1および第2の変数と異なる第3の変数に等しい語長を有することができる。本方法はさらに、修正された第1および第2の単語を、暗号化されたデータストリームを定義する値の第2のシーケンスに組み合わせるステップを含むことができる。
【0009】
本発明のいくつかの実施形態では、値の第1のシーケンス内の各値は、2進値であり得る。
【0010】
本発明のいくつかの実施形態では、値の第1のシーケンス内の各値は、16進値であり得る。
【0011】
本発明のいくつかの実施形態では、本方法は、暗号化されていないデータストリームを生成したコンピュータと異なる遠隔コンピュータによって実施されることができる。
【0012】
本発明のいくつかの実施形態では、本方法はさらに、暗号化されたデータストリームを宛先デバイスに伝送するステップを含むことができる。
【0013】
本発明のいくつかの実施形態では、第1、第2、および第3の変数は、宛先デバイスによって把握される。
【0014】
本発明のいくつかの実施形態では、第1、第2、および第3の変数は、時間の関数として変化する。
【0015】
本発明のいくつかの実施形態では、本方法は、暗号化されたデータストリームを復号化する方法を含む。本方法は、値の第2のシーケンスを備える暗号化されたデータストリームを取得するステップを含むことができる。本方法はさらに、値の第2のシーケンスの少なくとも一部を修正された第1および第2の単語にセグメント化するステップを含むことができる。修正された第1および第2の単語は、第3の変数に等しい語長を有することができる。本方法はさらに、修正された第1および第2の単語内の所定の場所における値を除去し、第1の変数に等しい語長を伴うオリジナルの第1の単語および第2の変数に等しい語長を伴うオリジナルの第2の単語を生成するステップを含むことができる。本方法はさらに、オリジナルの第1および第2の単語を、暗号化されていないデータストリームを定義する値の第1のシーケンスに組み合わせるステップを含むことができる。
【0016】
本発明のいくつかの実施形態では、本方法はさらに、暗号化されていないデータストリームを遠隔コンピュータに伝送するステップを含むことができる。
【0017】
本発明のいくつかの実施形態では、本方法はさらに、ソースデバイスから暗号化されたデータストリームを受信するステップを含むことができる。
【0018】
本発明のいくつかの実施形態では、第1、第2、および第3の変数は、ソースデバイスによって把握される。
【0019】
本発明の別の例示的実施形態では、本方法は、複数の変数および1つの変数を提供するステップを含む。複数の変数は、相互に異なる。複数の変数は、1つの変数と異なる。本方法は、第1の数体系に基づいて、複数の値を介して複数の文字をインデックス化するルックアップテーブルを提供するステップを含む。本方法は、テーブルに基づいて、メッセージを値の第1のシーケンスに変換するステップを含む。本方法は、第1の体系と異なる第2の数体系に基づいて、かつ事前設定されたフォーマットに従って、第1のシーケンスを値の第2のシーケンスに変換するステップを含む。本方法は、フォーマットを除去することを介して、第2のシーケンスを単一のシーケンスに組み合わせるステップを含む。本方法は、変数を交互にすることを介するシーケンスのセグメント化に基づいて、単一のシーケンスから第1の複数のサブシーケンスを生成するステップを含む。本方法は、第2のサブシーケンスがそれぞれ変数に従ってサイズ決定されるように、第1のサブシーケンスを第2の複数のサブシーケンスに変換するステップを含む。本方法は、第2のサブシーケンスを伝送するステップを含む。
【0020】
本開示は、付随の図面に図示される形態において具現化されてもよい。しかしながら、図面は、例証的であるという事実に注目されたい。変形例が、請求項の範囲によってのみ限定される、本開示の一部であると考慮される。
本発明は、例えば、以下を提供する。
(項目1)
データをセキュアに伝送する方法であって、
値の第1のシーケンスを備える暗号化されていないデータストリームを取得することと、
前記値の第1のシーケンスの第1の部分を第1の変数に等しい語長を有するオリジナルの第1の単語にセグメント化することと、
前記値の第1のシーケンスの第2の部分を前記第1の変数と異なる第2の変数に等しい語長を有するオリジナルの第2の単語にセグメント化することと、
前記オリジナルの第1および第2の単語内の所定の場所にランダム値を挿入し、修正された第1および第2の単語を生成することであって、前記修正された第1および第2の単語は、前記第1および第2の変数と異なる第3の変数に等しい語長を有する、ことと、
前記修正された第1および第2の単語を、暗号化されたデータストリームを定義する値の第2のシーケンスに組み合わせることと
を含む、方法。
(項目2)
前記値の第1のシーケンス内の各値は、2進値である、項目1に記載の方法。
(項目3)
前記値の第1のシーケンス内の各値は、16進値である、項目1に記載の方法。
(項目4)
前記方法は、前記暗号化されていないデータストリームを生成したコンピュータと異なる遠隔コンピュータによって実施される、項目1に記載の方法。
(項目5)
前記暗号化されたデータストリームを宛先デバイスに伝送することをさらに含む、項目1に記載の方法。
(項目6)
前記第1、第2、および第3の変数は、前記宛先デバイスによって把握される、項目5に記載の方法。
(項目7)
前記第1、第2、および第3の変数は、時間の関数として変化する、項目1に記載の方法。
(項目8)
前記暗号化されたデータストリームを復号化することをさらに含み、
前記値の第2のシーケンスを備える前記暗号化されたデータストリームを取得すことと、
前記値の第2のシーケンスの少なくとも一部を前記修正された第1および第2の単語にセグメント化することであって、前記修正された第1および第2の単語は、前記第3の変数に等しい語長を有する、ことと、
前記修正された第1および第2の単語内の所定の場所における値を除去し、前記第1の変数に等しい語長を伴う前記オリジナルの第1の単語および前記第2の変数に等しい語長を伴う前記オリジナルの第2の単語を生成することと、
前記オリジナルの第1および第2の単語を、前記暗号化されていないデータストリームを定義する前記値の第1のシーケンスに組み合わせることと
を含む、項目1に記載の方法。
(項目9)
データを復号化する方法であって、
値の第2のシーケンスを備える暗号化されたデータストリームを取得することと、
前記値の第2のシーケンスの少なくとも一部を修正された第1および第2の単語にセグメント化することであって、前記修正された第1および第2の単語は、第3の変数に等しい語長を有する、ことと、
前記修正された第1および第2の単語内の所定の場所における値を除去し、第1の変数に等しい語長を伴うオリジナルの第1の単語および第2の変数に等しい語長を伴うオリジナルの第2の単語を生成することと、
前記オリジナルの第1および第2の単語を、暗号化されていないデータストリームを定義する値の第1のシーケンスに組み合わせることと
を含む、方法。
(項目10)
前記値の第1のシーケンス内の各値は、2進値である、項目9に記載の方法。
(項目11)
前記値の第1のシーケンス内の各値は、16進値である、項目9に記載の方法。
(項目12)
前記暗号化されていないデータストリームを遠隔コンピュータに伝送することをさらに含む、項目9に記載の方法。
(項目13)
ソースデバイスから前記暗号化されたデータストリームを受信することをさらに含む、項目9に記載の方法。
(項目14)
前記第1、第2、および第3の変数は、前記ソースデバイスによって把握される、項目13に記載の方法。
(項目15)
前記第1、第2、および第3の変数は、時間の関数として変化する、項目9に記載の方法。
(項目16)
方法であって、
データの第1の部分を、デフォルトの第1の語長を有する少なくとも1つの第1のデータ語に構文解析することと、
デフォルトの語長モードにおいて、前記少なくとも1つの第1のデータ語を出力することと、
可変語長モードへの遷移を示す遷移語を出力することと、
前記遷移語の後に、第2の語長を示す第1の語長単語を出力することと、
前記データの第2の部分を、前記第2の語長を有する少なくとも1つの第2のデータ語に構文解析することと、
前記第1の語長単語の後に、前記第2の語長を有する前記少なくとも1つの第2のデータ語を出力することと
を含む、方法。
(項目17)
前記少なくとも1つの第2のデータ語のそれぞれに対応する個別のフラグビットを出力することであって、前記個別のフラグビットは、前記少なくとも1つの第2のデータ語の対応する第2のデータ語が、前記少なくとも1つの第2のデータ語の最後の第2のデータ語であるかどうかを示す、こと
をさらに含む、項目16に記載の方法。
(項目18)
個別のフラグビットが前記対応する第2のデータ語が前記少なくとも1つの第2のデータ語の最後の第2のデータ語であることを示した後に、第3の語長を示す第2の語長単語を出力することと、
前記データの第3の部分を、前記第3の語長を有する少なくとも1つの第3のデータ語に構文解析することと、
前記第2の語長単語の後に、前記第3の語長を有する前記少なくとも1つの第3のデータ語を出力することと
をさらに含む、項目17に記載の方法。
(項目19)
個別のフラグビットが前記対応する第2のデータ語が前記少なくとも1つの第2のデータ語の最後の第2のデータ語であることを示した後に、前記デフォルトの語長モードへの遷移を示す終了語を出力することと、
前記データの第3の部分を前記デフォルトの第1の語長を有する少なくとも1つの第3のデータ語に構文解析することと、
前記終了語の後に、前記デフォルトの第1の語長を有する少なくとも1つの第3のデータ語を出力することと
をさらに含む、項目17に記載の方法。
(項目20)
前記終了語の語長は、前記第1の語長単語の語長と同一である、項目19に記載の方法。
(項目21)
前記少なくとも1つの第2のデータ語の各第2のデータ語の直後に、前記第2のデータ語が前記少なくとも1つの第2のデータ語の最後の第2のデータ語であるかどうかを示す個別のフラグビットを出力することをさらに含む、項目16に記載の方法。
(項目22)
前記少なくとも1つの第2のデータ語の各第2のデータ語の直前に、前記第2のデータ語が前記少なくとも1つの第2のデータ語の最後の第2のデータ語であるかどうかを示す個別のフラグビットを出力することをさらに含む、項目16に記載の方法。
(項目23)
前記デフォルトの第1の語長は、8ビットであり、
前記遷移語は、前記デフォルトの第1の語長であり、
前記遷移語は、ASCII文字に割り当てられない、
項目16に記載の方法。
(項目24)
前記第1の語長単語は、前記第2の語長を明示的に示す、項目16に記載の方法。
(項目25)
前記第1の語長単語は、前記第2の語長にマッピングされる値を有する、項目16に記載の方法。
(項目26)
前記第1の語長単語の値は、標準テーブル内で前記第2の語長にマッピングされる、項目25に記載の方法。
(項目27)
前記第2の語長にマッピングされている前記第1の語長単語の値を示すヘッダを出力することをさらに含む、項目25に記載の方法。
(項目28)
方法であって、
データの第1の部分をデフォルトの語長を有する少なくとも1つの第1のデータ語に構文解析することと、
デフォルトの語長モードにおいて、前記デフォルトの語長を有する前記少なくとも1つの第1のデータ語を出力することと、
可変語長モードへの遷移を示す遷移語を出力することと、
前記遷移語の後に、個別の語長を示す少なくとも1つの語長単語を出力することと、
前記データの第2の部分を少なくとも1つの第2のデータ語に構文解析することであって、前記少なくとも1つの第2のデータ語はそれぞれ、個別の語長を有する、ことと、
前記少なくとも1つの語長単語のそれぞれの後に、前記少なくとも1つの第2のデータ語の対応する第2のデータ語を出力することであって、前記少なくとも1つの語長単語はそれぞれ、前記対応する第2のデータ語の個別の語長を示す、ことと
を含む、方法。
(項目29)
前記デフォルトの語長モードへの遷移を示す終了語を出力することと、
データの第3の部分を前記デフォルトの語長を有する少なくとも1つの第3のデータ語に構文解析することと、
前記終了語の後に、前記デフォルトの語長を有する前記少なくとも1つの第3のデータ語を出力することと
をさらに含む、項目28に記載の方法。
(項目30)
前記終了語は、前記少なくとも1つの第2のデータ語の第2のデータ語の直後に出力され、
前記終了語の語長は、前記少なくとも1つの語長単語の語長と同一である、
項目29に記載の方法。
(項目31)
終了語の語長を示す終了語長単語を出力することと、
前記終了語長単語を出力した後、前記デフォルトの語長モードへの遷移を示す終了語を出力することと、
データの第3の部分を前記デフォルトの語長を有する少なくとも1つの第3のデータ語に構文解析することと、
前記終了語の後に、前記デフォルトの語長を有する前記少なくとも1つの第3のデータ語を出力することと
をさらに含む、項目28に記載の方法。
(項目32)
前記終了語の語長は、前記少なくとも1つの語長単語の語長と同一である、項目31に記載の方法。
(項目33)
前記少なくとも1つの語長単語はそれぞれ、前記個別の語長にマッピングされる個別の値を有する、項目28に記載の方法。
(項目34)
前記少なくとも1つの語長単語のそれぞれの前記個別の値は、標準テーブル内で前記個別の語長にマッピングされる、項目33に記載の方法。
(項目35)
前記個別の語長にマッピングされている前記少なくとも1つの語長単語のそれぞれの前記個別の値を示すヘッダを出力することをさらに含む、項目33に記載の方法。
(項目36)
方法であって、
複数の語長単語を出力することと、
データを複数のデータ語に構文解析することであって、前記複数のデータ語はそれぞれ、個別の語長を有する、ことと、
前記複数の語長単語のそれぞれの後に、前記複数のデータ語の対応するデータ語を出力することであって、前記複数の語長単語はそれぞれ、前記対応するデータ語の前記個別の語長を示す、ことと
を含む、方法。
(項目37)
前記複数の語長単語の第1の語長単語は、第1の語長を示し、
前記第1の語長単語に対応する前記複数のデータ語の第1のデータ語は、第1の語長を有し、
前記複数の語長単語の第2の語長単語は、前記第1の語長と異なる第2の語長を示し、
前記第2の語長単語に対応する前記複数のデータ語の第2のデータ語は、前記第2の語長を有する、
項目36に記載の方法。
(項目38)
前記複数の語長単語はそれぞれ、個別の語長にマッピングされる個別の値を有する、項目36に記載の方法。
(項目39)
前記複数の語長単語のそれぞれの前記個別の値は、標準テーブル内で前記個別の語長にマッピングされる、項目38に記載の方法。
(項目40)
前記個別の語長にマッピングされている前記複数の語長単語のそれぞれの前記個別の値を示すヘッダを出力することをさらに含む、項目38に記載の方法。
(項目41)
方法であって、
第1の語長を示す第1の語長単語を出力することと、
データの第1の部分を前記第1の語長を有する少なくとも1つの第1の単語に構文解析することと、
前記第1の語長単語の後に、前記第1の語長を有する少なくとも1つの第1のデータ語を出力することと、
第2の語長を示す第2の語長単語を出力することと、
前記データの第2の部分を前記第2の語長を有する少なくとも1つの第2の単語に構文解析することと、
前記第2の語長単語の後に、前記第2の語長を有する少なくとも1つの第2のデータ語を出力することと
を含む、方法。
(項目42)
前記少なくとも1つの第1のデータ語がそれぞれ、あるデータ語であることを示す、前記少なくとも1つの第1のデータ語のそれぞれに対応する個別のフラグビットを出力することと、
前記少なくとも1つの第2のデータ語がそれぞれ、あるデータ語であることを示す、前記少なくとも1つの第2のデータ語のそれぞれに対応する個別のフラグビットを出力することと、
前記第2の語長単語が、ある語長単語であることを示す、前記第2の語長単語に対応するフラグビットを出力することと
をさらに含む、項目41に記載の方法。
(項目43)
前記少なくとも1つの第1のデータ語のそれぞれ、前記第2の語長単語、および前記少なくとも1つの第2のデータ語のそれぞれの直前に個別のフラグビットを出力することであって、前記個別の第1のフラグビットは、前記後続単語があるデータ語またはある語長単語であるかどうかを示す、こと
をさらに含む、項目41に記載の方法。
(項目44)
前記少なくとも1つの第1のデータ語の各第1のデータ語の前または後のいずれかに、前記個別の第1のデータ語が前記少なくとも1つの第1のデータ語の最後のデータ語であるかどうかを示す個別のフラグビットを出力することと、
前記少なくとも1つの第2のデータ語の各第2のデータ語の前または後のいずれかに、前記個別の第2のデータ語が前記少なくとも1つの第2のデータ語の最後のデータ語であるかどうかを示す個別のフラグビットを出力することと
をさらに含む、項目41に記載の方法。
(項目45)
前記第1の語長単語は、前記第1の語長を明示的に示し、
前記第2の語長単語は、前記第2の語長を明示的に示す、
項目41に記載の方法。
(項目46)
前記第1の語長単語は、前記第1の語長にマッピングされる第1の値を有し、
前記第2の語長単語は、前記第2の語長にマッピングされる第2の値を有する、
項目41に記載の方法。
(項目47)
前記第1の値および前記第2の値は、それぞれ、標準テーブル内で前記第1の語長および前記第2の語長にマッピングされる、項目46に記載の方法。
(項目48)
前記第1の語長にマッピングされている前記第1の値および前記第2の語長にマッピングされている前記第2の値を示すヘッダを出力することをさらに含む、項目46に記載の方法。
(項目49)
方法であって、
デフォルトの語長モードにおいて、デフォルトの第1の語長を有する少なくとも1つの第1のデータ語を受信することと、
前記受信された少なくとも1つの第1のデータ語をデータの第1の部分として組み合わせることと、
可変語長モードへの遷移を示す遷移語を受信することと、
前記遷移語の後に、第2の語長を示す第1の語長単語を受信することと、
前記第1の語長単語の後に、前記第2の語長を有する少なくとも1つの第2のデータ語を受信することと、
前記受信された少なくとも1つの第2のデータ語を前記データの第2の部分として組み合わせることと
を含む、方法。
(項目50)
前記少なくとも1つの第2のデータ語のそれぞれに対応する個別のフラグビットを受信することであって、前記個別のフラグビットは、前記少なくとも1つの第2のデータ語の対応する第2のデータ語が前記少なくとも1つの第2のデータ語の最後の第2のデータ語であるかどうかを示す、こと
をさらに含む、項目49に記載の方法。
(項目51)
個別のフラグビットが前記対応する第2のデータ語が前記少なくとも1つの第2のデータ語の最後の第2のデータ語であることを示した後に、第3の語長を示す第2の語長単語を受信することと、
前記最後の第2の語長単語の後に、前記第3の語長を有する少なくとも1つの第3のデータ語を受信することと、
前記受信された少なくとも1つの第3のデータ語を前記データの第3の部分に組み合わせることと
をさらに含む、項目50に記載の方法。
(項目52)
個別のフラグビットが前記対応する第2のデータ語が前記少なくとも1つの第2のデータ語の最後の第2のデータ語であることを示した後に、前記デフォルトの語長モードへの遷移を示す終了語を受信することと、
前記終了語の後に、前記デフォルトの第1の語長を有する少なくとも1つの第3のデータ語を受信することと、
前記受信された少なくとも1つの第3のデータ語を前記データの第3の部分に組み合わせることと
をさらに含む、項目50に記載の方法。
(項目53)
前記終了語の語長は、前記第1の語長単語の語長と同一である、項目52に記載の方法。
(項目54)
前記少なくとも1つの第2のデータ語の各第2のデータ語の直後に、前記第2のデータ語が前記少なくとも1つの第2のデータ語の最後の第2のデータ語であるかどうかを示す個別のフラグビットを受信することをさらに含む、項目49に記載の方法。
(項目55)
前記少なくとも1つの第2のデータ語の各第2のデータ語の直前に、前記第2のデータ語が前記少なくとも1つの第2のデータ語の最後の第2のデータ語であるかどうかを示す個別のフラグビットを受信することをさらに含む、項目49に記載の方法。
(項目56)
前記デフォルトの第1の語長は、8ビットであり、
前記遷移語は、前記デフォルトの第1の語長であり、
前記遷移語は、ASCII文字に割り当てられない、
項目49に記載の方法。
(項目57)
前記第1の語長単語は、前記第2の語長を明示的に示す、項目49に記載の方法。
(項目58)
前記第1の語長単語は、前記第2の語長にマッピングされる値を有する、項目49に記載の方法。
(項目59)
前記第1の語長単語の値は、標準テーブル内で前記第2の語長にマッピングされる、項目58に記載の方法。
(項目60)
前記第2の語長にマッピングされている前記第1の語長単語の値を示すヘッダを受信することをさらに含む、項目58に記載の方法。
(項目61)
方法であって、
デフォルトの語長モードにおいて、デフォルトの語長を有する前記少なくとも1つの第1のデータ語を受信することと、
前記少なくとも1つの第1のデータ語をデータの第1の部分に組み合わせることと、
可変語長モードへの遷移を示す遷移語を受信することと、
前記遷移語の後に、個別の語長を示す少なくとも1つの語長単語を受信することと、
前記少なくとも1つの語長単語のそれぞれの後に、個別の第2のデータ語を受信することであって、前記少なくとも1つの語長単語はそれぞれ、前記個別の第2のデータ語の対応する語長を示す、ことと、
前記少なくとも1つの第2のデータ語を前記データの第2の部分に組み合わせることと
を含む、方法。
(項目62)
前記デフォルトの語長モードへの遷移を示す終了語を受信することと、
前記終了語の後に、前記デフォルトの語長を有する少なくとも1つの第3のデータ語を受信することと、
前記少なくとも1つの第3のデータ語を前記データの第3の部分に組み合わせることと
をさらに含む、項目61に記載の方法。
(項目63)
前記終了語は、第2のデータ語の直後に受信され、
前記終了語の語長は、前記少なくとも1つの語長単語の語長と同一である、
項目62に記載の方法。
(項目64)
終了語の語長を示す終了語長単語を受信することと、
前記終了語長単語を受信した後、前記デフォルトの語長モードへの遷移を示す終了語を受信することと、
前記終了語の後に、前記デフォルトの語長を有する少なくとも1つの第3のデータ語を受信することと、
前記少なくとも1つの第3のデータ語を前記データの第3の部分に組み合わせることと
をさらに含む、項目61に記載の方法。
(項目65)
前記終了語の語長は、前記少なくとも1つの語長単語の語長と同一である、項目64に記載の方法。
(項目66)
前記少なくとも1つの語長単語はそれぞれ、前記個別の語長にマッピングされる個別の値を有する、項目61に記載の方法。
(項目67)
前記少なくとも1つの語長単語のそれぞれの前記個別の値は、標準テーブル内で前記個別の語長にマッピングされる、項目66に記載の方法。
(項目68)
前記個別の語長にマッピングされている前記少なくとも1つの語長単語のそれぞれの前記個別の値を示すヘッダを受信することをさらに含む、項目66に記載の方法。
(項目69)
方法であって、
複数の語長単語を受信することと、
前記複数の語長単語のそれぞれの後に、複数のデータ語の個別のデータ語を受信することであって、前記複数の語長単語はそれぞれ、前記個別のデータ語の対応する語長を示す、ことと、
前記複数のデータ語を前記対応する語長に基づいてデータに組み合わせることと
を含む、方法。
(項目70)
前記複数の語長単語の第1の語長単語は、第1の語長を示し、
前記第1の語長単語に対応する前記複数のデータ語の第1のデータ語は、前記第1の語長を有し、
前記複数の語長単語の第2の語長単語は、前記第1の語長と異なる第2の語長を示し、
前記第2の語長単語に対応する前記複数のデータ語の第2のデータ語は、前記第2の語長を有する、
項目69に記載の方法。
(項目71)
前記複数の語長単語はそれぞれ、個別の語長にマッピングされる個別の値を有する、項目69に記載の方法。
(項目72)
前記複数の語長単語のそれぞれの前記個別の値は、標準テーブル内で前記個別の語長にマッピングされる、項目71に記載の方法。
(項目73)
前記個別の語長にマッピングされている前記複数の語長単語のそれぞれの前記個別の値を示すヘッダを受信することをさらに含む、項目71に記載の方法。
(項目74)
方法であって、
第1の語長を示す第1の語長単語を受信することと、
前記第1の語長単語の後に、前記第1の語長を有する少なくとも1つの第1のデータ語を受信することと、
前記受信された少なくとも1つの第1のデータ語をデータの第1の部分に組み合わせることと、
第2の語長を示す第2の語長単語を受信することと、
前記第2の語長単語の後に、前記第2の語長を有する少なくとも1つの第2のデータ語を受信することと、
前記受信された少なくとも1つの第2のデータ語を前記データの第2の部分に組み合わせることと
を含む、方法。
(項目75)
前記少なくとも1つの第1のデータ語がそれぞれ、あるデータ語であることを示す、前記少なくとも1つの第1のデータ語のそれぞれに対応する個別のフラグビットを受信することと、
前記少なくとも1つの第2のデータ語がそれぞれ、あるデータ語であることを示す、前記少なくとも1つの第2のデータ語のそれぞれに対応する個別のフラグビットを受信することと、
前記第2の語長単語が、ある語長単語であることを示す、前記第2の語長単語に対応するフラグビットを受信することと
をさらに含む、項目74に記載の方法。
(項目76)
前記少なくとも1つの第1のデータ語のそれぞれ、前記第2の語長単語、および前記少なくとも1つの第2のデータ語のそれぞれの直前に個別のフラグビットを受信することであって、前記個別の第1のフラグビットは、前記後続単語があるデータ語またはある語長単語であるかどうかを示す、こと
をさらに含む、項目74に記載の方法。
(項目77)
前記少なくとも1つの第1のデータ語の各第1のデータ語の前または後のいずれかに、前記個別の第1のデータ語が前記少なくとも1つの第1のデータ語の最後のデータ語であるかどうかを示す個別のフラグビットを受信することと、
前記少なくとも1つの第2のデータ語の各第2のデータ語の前または後のいずれかに、前記個別の第2のデータ語が前記少なくとも1つの第2のデータ語の最後のデータ語であるかどうかを示す個別のフラグビットを受信することと
をさらに含む、項目74に記載の方法。
(項目78)
前記第1の語長単語は、前記第1の語長を明示的に示し、
前記第2の語長単語は、前記第2の語長を明示的に示す、
項目74に記載の方法。
(項目79)
前記第1の語長単語は、前記第1の語長にマッピングされる第1の値を有し、
前記第2の語長単語は、前記第2の語長にマッピングされる第2の値を有する、
項目74に記載の方法。
(項目80)
前記第1の値および前記第2の値は、それぞれ、標準テーブル内で前記第1の語長および前記第2の語長にマッピングされる、項目79に記載の方法。
(項目81)
前記第1の語長にマッピングされている前記第1の値および前記第2の語長にマッピングされている前記第2の値を示すヘッダを受信することをさらに含む、項目79に記載の方法。
(項目82)
プロセッサによって実行されると、項目1-81のうちのいずれかに記載の方法を実施するように前記プロセッサに命令する、その上に記憶されるコンピュータプログラムコードを有する、非一過性コンピュータ可読媒体。
(項目83)
装置であって、
プロセッサと、
前記プロセッサによって実行されると、項目1-81のうちのいずれかに記載の方法を実施するように前記プロセッサに命令する、その上に記憶されるコンピュータプログラムコードを有する、メモリと
を備える、装置。
【図面の簡単な説明】
【0021】
付随の図面は、本開示の例示的実施形態を図示する。そのような図面は、必ずしも、本開示を限定すると解釈されるものではない。同様の番号および/または類似する付番スキームは、全体を通して同様の、および/または類似する要素を指し得る。
【0022】
【
図1】
図1は、本開示による、コンピュータセキュリティを強化するための方法の例示的実施形態のフローチャートを示す。
【
図2】
図2は、本開示による、コンピュータセキュリティを強化するための方法の例示的実施形態のフローシートを示す。
【
図3】
図3は、本開示による、ネットワークの例示的実施形態の図を示す。
【
図4】
図4は、本開示による、コンピュータセキュリティを強化するための方法の別の例示的実施形態のフローチャートを示す。
【
図5】
図5は、本開示による、可変語長エンコーディングのための方法の例示的実施形態のフローチャートを示す。
【
図6】
図6は、本開示による、可変語長エンコーディングのための方法の別の例示的実施形態のフローチャートを示す。
【発明を実施するための形態】
【0023】
本開示は、ここで、本開示の例示的実施形態が示される、付随の図面を参照してより完全に説明されるであろう。しかしながら、本開示は、多くの異なる形態において具現化されてもよく、本明細書に記載される実施形態に限定されるものとして解釈されるべきではない。むしろ、これらの実施形態は、本開示が徹底的かつ完全であり、本開示の概念を当業者に完全に伝えるであろうように提供される。
【0024】
ある実施形態に関して説明される特徴は、種々の他の実施形態において組み合わせられてもよい。実施形態の異なる側面および要素は、類似する様式で組み合わせられてもよい。開示される実施形態は、個別に、および/または集合的に、より大きいシステムのコンポーネントであってもよく、他の手順が、それらの適用に優先される、および/または別様にそれを修正してもよい。いくつかのステップが、開示される実施形態の前、後、および/またはそれと並行して要求されてもよい。本明細書に開示されるプロセスは、本開示の原理に従って、いかようにも1つおよび/またはそれを上回るエンティティによって実施されることができる。
【0025】
本明細書で使用される専門用語は、直接的または間接的な、完全または部分的なアクションもしくは非アクションを含意し得る。例えば、ある要素が別の要素の「上にある」、それに「接続される」、またはそれに「結合される」と言及されるとき、その要素は、他の要素に直接接続または結合されることができる、もしくは介入要素が存在し得る。対照的に、ある要素が別の要素に「直接接続される」または「直接結合される」と言及されるとき、いかなる介入要素も存在しない。
【0026】
用語「第1」、「第2」等は、種々の要素、コンポーネント、領域、層、および/または区分を説明するために本明細書で使用され得るが、これらの要素、コンポーネント、領域、層、および/または区分は、これらの用語によって限定されるべきではない。これらの用語は、1つの要素、コンポーネント、領域、層、または区分を別の要素、コンポーネント、領域、層、または区分から区別するためにのみ使用される。したがって、下記に議論される第1の要素、コンポーネント、領域、層、または区分は、本開示の教示から逸脱することなく、第2の要素、コンポーネント、領域、層、または区分と称され得る。
【0027】
本明細書で使用される専門用語は、特定の実施形態を説明する目的のみのためであり、必ずしも、本開示の限定であるように意図されない。本明細書で使用されるように、単数形「a」、「an」、および「the」は、文脈が明確に別様に示さない限り、複数形も同様に含むように意図される。本明細書で使用されるとき、用語「~を備える(comprises)」、「~を含む(includes)」、および/または「~を備える(comprising)」、「~を含む(including)」は、記載される特徴、整数、ステップ、動作、要素、ならびに/もしくはコンポーネントの存在を規定するが、1つ以上の他の特徴、整数、ステップ、動作、要素、コンポーネント、ならびに/もしくはそれらの群の存在または追加を除外しない。
【0028】
別様に定義されない限り、本明細書で使用される全ての用語(技術的および科学的用語を含む)は、本開示が属する当業者によって一般的に理解されるものと同一の意味を有する。一般的に使用される辞書において定義されるもの等の用語は、関連技術の文脈におけるそれらの意味と一貫する意味を有するものとして解釈されるべきであり、本明細書にそのように明示的に定義されない限り、理想化された、または過度に正式な意味において解釈されないであろう。
【0029】
任意の開示が、参照することによって本明細書に組み込まれ、そのような組み込まれた開示が、本開示と部分的または全体的に矛盾する場合、矛盾、および/またはより広い開示、ならびに/もしくはより広い用語の定義の限りにおいて、本開示が、優先される。そのような組み込まれた開示が、部分的または全体的に相互と矛盾する場合、矛盾の限りにおいて、後の日付の開示が、優先される。
【0030】
図1は、本開示による、コンピュータセキュリティを強化するための方法の例示的実施形態のフローチャートを示す。
【0031】
プロセス100は、ブロック102-118を含む。プロセス100は、オペレーティングシステムレベルの下方、上、および/または上方で実装され得る、任意のハードウェアレベル上の1つならびに/もしくはそれを上回る回路内等のハードウェア論理、および/または1つならびに/もしくはそれを上回るソフトウェアアプリケーション内等のソフトウェア論理の任意の組み合わせを介して実装されることができる。プロセス100は、要求・応答コンピューティングにおいて実装されることができる。プロセス100は、コンピュータセキュリティへのいずれの関連にもかかわらず、より大きいプロセスの一部であり得る。例えば、種々の機能が、プロセス100のいずれか1つおよび/またはそれを上回るブロックの実施前、その間、ならびに/もしくはその後に起こることができる。代替として、プロセス100は、独自に実施されることができる。ブロック102-118は、本明細書に説明されるような順序で実施され得るが、ブロック102-118は、他の順序で実施されることもでき、いくつかのブロックは、それらの任意の順列において他のブロックの前、その間、および/またはその後に実施される。また、プロセス100は、少なくとも部分的に、英数字入力、記号入力、バイオメトリック入力、ハードウェア入力、および/またはその他に基づき得る、パスワード入力を用いて実装され得ることに留意されたい。しかしながら、プロセス100はまた、パスワードを使用することなく実装されることもできる。
【0032】
ブロック102は、ビットストリームを第1の複数の等しいサイズのストリングに構文解析するステップを含む。ビットストリームは、媒体にわたるデータのストリームを表す、101001001011110011等のビットの連続シーケンスを含む。そのようなデータは、任意のタイプである、および/または任意の目的のためであり得る。ストリームは、有線様式および/または無線様式で提供ならびに/もしくは受信されることができる。ストリームは、伝送制御プロトコル(TCP)、ユーザデータグラムプロトコル(UDP)、および/または任意の通信距離の他のネットワーク通信プロトコル等の通信プロトコルを介して通信経路を経由して、ならびに/もしくは回路、不揮発性メモリデバイス等のコンピュータメモリおよび/またはコンピュータ記憶装置内で通信されることができる。ストリームは、任意のビット量であり得る。ビットストリームは、ビットストリームソースおよびビットストリーム宛先を識別する情報を含有することができる。ビットストリームは、同様にバイトストリームでもあり得る。第1のストリングに構文解析するステップは、ビットストリームを、2、5、10、または任意の他の数等の任意の桁サイズの第1のストリングにセグメント化するステップを含む。例えば、ビットストリームが、101001001011110011を含むとき、そのようなストリームは、101001、001011、110011等の6桁ストリングに構文解析されることができる。第1のストリングに構文解析するステップは、それらのサイズおよび/または相互との関係にかかわらず、ビットストリーム全体ならびに/もしくはビットストリームの部分および/または下位部分で起こることができる。構文解析するステップは、ビットストリームの完全性に干渉することの有無を問わずに実施されることができる。構文解析するステップは、少なくとも1つの発振器/クロックを介して実施されることができる。代替として、シーケンスは、16進法等の異なる記号および/または数体系に基づき得る。
【0033】
ブロック104は、ビットストリームを第2の複数の等しいサイズのストリングに構文解析するステップを含む。第2のストリングに構文解析するステップは、ビットストリームを、2、5、10、または任意の他の数等の任意の桁サイズの第2のストリングにセグメント化するステップを含む。例えば、ビットストリームが、101001001011110011を含むとき、そのようなストリームは、101001001、011110011等の9桁ストリングに構文解析されることができる。第2のストリングに構文解析するステップは、それらのサイズおよび/または相互との関係にかかわらず、ビットストリーム全体ならびに/もしくはビットストリームの部分および/または下位部分で起こることができる。第1のストリングは、第2のストリングと異なるサイズを有する。第1のストリングおよび第2のストリングは、ビットストリームの同じ部分を構文解析することから形成されるが、他の代替実施形態では、第1のストリングおよび第2のストリングは、ビットストリームの異なる部分を構文解析することから形成されることができる。第1のストリングは、第2のストリングと異なるビット値を有することができる。第1のストリングは、第2のストリングと同じビット値を有することができる。第1のストリングおよび第2のストリングは、均等にサイズ決定される、ならびに/もしくは不均等にサイズ決定されることができる。ブロック102およびブロック104は、少なくとも1つのエンティティによって、同時に、並行して、ならびに/もしくは異なる時間に実施されることができる。ブロック104は、ブロック102の前または後に実施されることができる。構文解析するステップは、ビットストリームの完全性に干渉することの有無を問わずに実施されることができる。構文解析するステップは、少なくとも1つの発振器/クロックを介して実施されることができる。
【0034】
ブロック106は、スイッチへの第1のストリングの入力をダイレクトするステップを含む。ダイレクトするステップは、第1のストリングのうちの少なくとも1つをスイッチに入力するステップを含むことができる。代替として、ダイレクトするステップは、第1のストリングのうちの少なくとも1つをスイッチに送信するステップを含むことができる。また、代替として、ダイレクトするステップは、スイッチを介して第1のストリングのうちの少なくとも1つを受信するステップを含むことができる。また、代替として、ダイレクトするステップは、第1のストリングのうちの少なくとも1つをスイッチに伝送するステップを含むことができる。ダイレクトするステップは、スイッチ入力要求ベースであり得る。ダイレクトするステップは、有線および/または無線であり得る。ダイレクトするステップは、直接的および/または間接的であり得る。ダイレクトするステップは、暗号化される、および/または暗号化されない場合がある。
【0035】
ブロック108は、スイッチへの第2のストリングの入力をダイレクトするステップを含む。ダイレクトするステップは、第2のストリングのうちの少なくとも1つをスイッチに入力するステップを含むことができる。代替として、ダイレクトするステップは、第2のストリングのうちの少なくとも1つをスイッチに送信するステップを含むことができる。また、代替として、ダイレクトするステップは、スイッチを介して第2のストリングのうちの少なくとも1つを受信するステップを含むことができる。また、代替として、ダイレクトするステップは、第2のストリングのうちの少なくとも1つをスイッチに伝送するステップを含むことができる。ダイレクトするステップは、ブロック106のいずれかの実施へのいかなる関連にもかかわらず、スイッチ入力要求ベースであり得る。ブロック106およびブロック108は、少なくとも1つのエンティティによって、同時に、並行して、ならびに/もしくは異なる時間に実施されることができる。ブロック106は、ブロック108の前または後に実施されることができる。ダイレクトするステップは、有線および/または無線であり得る。ダイレクトするステップは、直接的および/または間接的であり得る。ダイレクトするステップは、暗号化される、および/または暗号化されない場合がある。
【0036】
ブロック110は、第1のモードと第2のモードとの間でスイッチを周期的に切り替えるステップを含む。スイッチは、回路等のハードウェアベースおよび/またはソフトウェアベースであり得る。スイッチは、A/Bスイッチであり得る。代替として、スイッチは、A/B/nスイッチであり得、nは、5、7、9、20等のいずれかであり得る、スイッチが切り替わり得るいくつかのモードに対応する。周期は、数ミリ秒、数秒、数分、数時間等の任意の時間周期に基づき得る。そのような周期的切替は、自動的である。そのような周期は、スイッチのモード持続時間に対応することができる。切替は、クロック、発振器、プロセッサ、およびハードウェアならびに/もしくはソフトウェア論理に基づく。例えば、そのような切替は、クロックに基づいて30秒毎である。したがって、30秒毎に、A/Bスイッチは、第1のモードから第2のモードに、および第2のモードから第1のモードに反復的に切り替わる。同様に、30秒毎に、A/B/nスイッチは、第1のモードから第2のモードに、第2のモードからnモードに、およびnモードから第1のモードに反復的に切り替わる。ブロック110は、ブロック102-108のいずれかおよび/または全ての前に、それと並行して、ならびに/もしくはそれと異なる時間に実施されることができる。
【0037】
ブロック112は、第1のモードにおいて第1のストリングのうちの1つをスイッチを介して出力するステップを含む。例えば、第1のストリングのうちの1つが101001であるとき、第1のモードの間、スイッチは、101001を出力する。1つを上回るストリングが、第1のモードにおいて出力されることができる。
【0038】
ブロック114は、第1のストリングの出力に基づいて、アクセスを認証/制御するステップを含む。したがって、スイッチが101001を出力するとき、アクセスを認証/制御するステップは、2進形および/または英数字、記号、バイオメトリック等の別の形式にかかわらず、パスワード101001の正しい入力に基づく。ブロック112およびブロック114は、少なくとも1つのエンティティによって、同時に、並行して、および/または異なる時間に実施されることができる。ブロック112は、ブロック114の前または後に実施されることができる。
【0039】
ブロック116は、第2のモードにおいて第2のストリングのうちの1つをスイッチを介して出力するステップを含む。例えば、第2のストリングのうちの1つが、101001001であるとき、第2のモードの間、スイッチは、101001001を出力する。1つを上回るストリングが、第2のモードにおいて出力されることができる。
【0040】
ブロック118は、第2のストリングの出力に基づいて、アクセスを認証/制御するステップを含む。したがって、スイッチが101001001を出力するとき、アクセスを認証/制御するステップは、2進形および/または英数字、記号、バイオメトリック等の別の形式にかかわらず、パスワード101001001の正しい入力に基づく。ブロック116およびブロック118は、少なくとも1つのエンティティによって、同時に、並行して、および/または異なる時間に実施されることができる。ブロック116は、ブロック118の前または後に実施されることができる。任意および/または全てのブロック112ならびに/もしくは114は、任意および/または全てのブロック116ならびに/もしくは118の後に実施されることができる。
【0041】
本明細書における実施例を使用して、スイッチが第2のモードから第1のモードに戻るように切り替わると、スイッチは、構文解析された第1のストリングのうちの次のものを出力する。したがって、第1のモードにおけるスイッチの次の反復では、スイッチは、001011を出力する。同様に、スイッチが第2のモードに再び切り替わると、スイッチは、構文解析された第2のストリングのうちの次のものを出力する。したがって、第2のモードにおけるスイッチの次の反復では、スイッチは、011110011を出力する。そのような出力はパスワードとして機能するため、認証/アクセス制御は、パスワードを切り替えることに基づき、これは、例えば、コンピュータシステム内で実装されると、コンピュータシステムのセキュリティを強化する。結果として、そのようなコードを出力するコンピュータは、そのような構造が、文字シーケンスおよびサブシーケンス生成方法の提供を介する等して、前もって事前プログラムされ得るオリジナルの技術仕様の知識を伴わずに解明ならびに/もしくは再現され得ないため、認証および/またはアクセスを許可されることができる。そのような認証/アクセス制御は、バイト内容の変動に起因して新しいコンピュータ言語作成を促進することができる。
【0042】
ビットストリームは、2つを上回る複数の等しいサイズのストリングに構文解析され得ることに留意されたい。例えば、ビットストリームは、3、9、10、20等の任意の数の等しいサイズのストリングに分割されることができる。スイッチは、2つを上回るモードの間で切り替わることができる。例えば、スイッチは、3、9、10、20等の複数のモードの間で切り替わることができる。故に、スイッチは、複数のモードにおいて複数の等しいサイズのストリングに基づいて出力することができる。そのようなスイッチ出力は、複数のストリングに基づいてアクセスを認証/制御するために使用されることができる。また、スイッチは、コンピュータの一部もしくはコンピュータと同一のロケール内等のローカルであり得る、またはスイッチは、コンピュータを介してネットワークアクセス可能等の遠隔であり得ることに留意されたい。スイッチはまた、コンピュータ間で共有され得ることに留意されたい。
【0043】
図2は、本開示による、コンピュータセキュリティを強化するための方法の例示的実施形態のフローシートを示す。本図のいくつかの要素は、上記に説明される。したがって、同一の参照文字は、上記に説明される同一または同様のコンポーネントを識別し、その任意の反復的な詳細な説明は、以降では、複雑性を回避するために省略または簡略化されるであろう。
【0044】
ビットストリーム202が、示される。ストリーム202は、複数のビットを含有する。ストリーム202は、第1の複数の等しいサイズのストリング204および第2の複数の等しいサイズのストリング206に構文解析される。構文解析するステップは、1つの周波数に従って動作し、ストリング204に構文解析する1つの発振器/クロックおよび別の周波数に従って動作し、ストリング206に構文解析する別の発振器/クロック等の少なくとも1つの発振器/クロックを介して実施されることができる。ストリング204は、6桁セグメント化に基づいて構文解析され、ストリング206は、9桁セグメント化に基づいて構文解析される。したがって、ストリング204およびストリング206は、ビットサイズが異なり、異なるストリング値を有する。しかしながら、そのようなセグメント化は、任意の桁サイズに基づき得る、および/または少なくとも1つの値を共有することができる。ストリング204および206に構文解析するステップは、少なくとも1つのエンティティによって、同時に、並行して、ならびに/もしくは異なる時間に実施されることができる。ビットストリーム202は、ビットストリーム全体またはあるビットストリームの一部であり得ることに留意されたい。
【0045】
ストリング204はそれぞれ、複数の第1の時間周期に一意に割り当てられる。そのような割当は、1対1ベース、1対多ベース、多対1ベース、および/または多対多ベースで実施されることができる。例えば、ストリング204はそれぞれ、一意に、ストリングあたり1秒等の第1の時間周期のそれぞれに1対1で対応する。同様に、ストリング206はそれぞれ、複数の第2の時間周期に一意に割り当てられる。そのような割当は、1対1ベース、1対多ベース、多対1ベース、および/または多対多ベースで実施されることができる。例えば、ストリング206はそれぞれ、一意に、ストリングあたり1/2秒等の第2の時間周期のそれぞれに1対1で対応する。第1の時間周期および第2の時間周期は、同一の基準点または時間ゼロから始まることに留意されたい。ストリング204およびストリング206は、少なくとも2つの異なるコンピュータを介して含有されることに留意されたい。
【0046】
ストリング204およびストリング206は、次いで、スイッチ208への入力のためにダイレクトされる。示されるように、スイッチ208は、30秒毎に第1のモードAと第2のモードBとの間を自動的に交互に反転するA/Bスイッチである。しかしながら、スイッチ208は、任意の数のモードに従ってモーダルであり得、スイッチ208は、本明細書に説明されるようなそのようなモードを通して反復することができる。さらに、スイッチ208は、本明細書に説明されるような技術に関連するかどうかにかかわらず、他の入力から入力を受信することができる。ストリング204およびストリング206は、少なくとも1つのエンティティによって、同時に、並行して、および/または異なる時間にかかわらず、任意の様式でダイレクトされることができる。ストリング204のうちの少なくとも1つおよびストリング206のうちの少なくとも1つが、少なくとも1つのエンティティによって、同時に、並行して、および/または異なる時間にかかわらず、スイッチ208に入力される。スイッチ208は、1ナノ秒、1ミリ秒、1秒、1分、1時間等の任意の時間測定値に基づく任意の時間周期にわたって反転されることができる。スイッチ208は、自動的に反転し、これは、手動初期アクティブ化を含むことができる。スイッチ208は、クロック、発振器、プロセッサ、およびハードウェアならびに/もしくはソフトウェア論理に基づいて切り替わる。示されるように、スイッチ208は、クロックに基づいて30秒毎に切り替わる。したがって、30秒毎に、A/Bスイッチは、第1のモードから第2のモードに、および第2のモードから第1のモードに反復的に切り替わる。スイッチへの入力は、先入れ先出し(FIFO)方法論に基づき得ることに留意されたい。
【0047】
複数の時間周期212が、ストリング204およびストリング206を参照して示されるような第1の時間周期および第2の時間周期の組み合わせに基づく。時間周期212は、ストリング204と関連付けられる時間が秒に基づき、ストリング206と関連付けられる時間がミリ秒に基づく等、異なる時間測定値に基づき得る。そのような異なる時間測定値は、任意のタイプであり得る。
【0048】
スイッチ208が、Aモードであり得る第1のモードにあるとき、時間周期212に示されるような12:00:00において、スイッチ208は、ストリング204のうちの1つを出力し、これは、示されるように、101001である。そのような出力に基づいて、認証/アクセス制御が、実施される。例えば、第1のモードの間、パスワード210は、2進形および/または英数字、記号、バイオメトリック等の別の形式にかかわらず、101001または10進法もしくは16進法における等のその値であり得る。
【0049】
時間周期212に示されるような12:00:30において、スイッチ208は、Bモードであり得る第2のモードに反転する。第2のモードの間、スイッチ208は、ストリング206のうちの1つを出力し、これは、示されるように、101001001である。そのような出力に基づいて、認証/アクセス制御が、実施される。例えば、第2のモードの間、パスワード210は、2進形および/または英数字、記号、バイオメトリック等の別の形式にかかわらず、101001001または10進法もしくは16進法における等のその値であり得る。
【0050】
時間周期212に示されるような12:01:00において、スイッチ208は、Aモードであり得る第1のモードに戻るように反転する。第1のモードの間、スイッチ208は、ストリング206のうちの次のものを出力し、これは、示されるように、001011である。そのような出力に基づいて、認証/アクセス制御が、実施される。例えば、第1のモードの間、パスワード210は、2進形および/または英数字、記号、バイオメトリック等の別の形式にかかわらず、001011または10進法もしくは16進法における等のその値であり得る。そのようなスイッチ208反転は、無期限に、またはある条件が満たされるまで継続することができる。パスワード210は、時間周期212によって示されるような時間が経過するにつれて切り替わっているため、コンピュータシステムのセキュリティは、強化されることができる。
【0051】
ビットストリーム202は、2つを上回る複数の等しいサイズのストリングに構文解析され得ることに留意されたい。例えば、ビットストリーム202は、3、9、10、20等の任意の数の等しいサイズのストリングに分割されることができる。スイッチ208は、2つを上回るモードの間で切り替わることができる。例えば、スイッチ208は、3、9、10、20等の複数のモードの間で切り替わることができる。故に、スイッチ208は、複数のモードにおいて複数の等しいサイズのストリングに基づいて出力することができる。そのようなスイッチ208出力は、複数のストリングに基づいて、パスワード210を介してアクセスを認証/制御するために使用されることができる。
【0052】
例えば、ストリーム202および複数の異なるストリームセグメント化アルゴリズムが、事前プログラミングを介する等して、複数のコンピュータに提供される。コンピュータはそれぞれ、アルゴリズムに基づいて、ストリーム202をセグメント化し、ストリング204およびストリング206をもたらし、これらは、アルゴリズムに基づいて、サイズならびに/もしくは値が相互に異なる。ストリング204およびストリング206は、複数のモードの間で交互するローカルスイッチ208に入力される。コンピュータは、交互するスイッチに基づいて変化する、パスワード210に基づいてそれぞれと通信する。パスワード210は、ストリング204およびストリング206からの入力を交互することに基づいて、時間周期212に従って周期的に変更される。入力は、モードの間で交互するスイッチに従って交互にされる。コンピュータに関して、パスワード210変更は、スイッチ208の交互に基づく等、同期的であるが、非同期的でもあり得る。また、コンピュータに関して、ストリング204およびストリング206の生成のうちの少なくとも1つは、クロックに基づく等、同期的であるが、非同期的でもあり得ることに留意されたい。さらに、コンピュータに関して、スイッチ208への入力は、クロックに基づく等、同期的であるが、非同期的でもあり得ることに留意されたい。
【0053】
図3は、本開示による、ネットワークの例示的実施形態の図を示す。本図のいくつかの要素は、上記に説明される。したがって、同一の参照文字は、上記に説明される同一または同様のコンポーネントを識別し、その任意の反復的な詳細な説明は、以降では、複雑性を回避するために省略または簡略化されるであろう。
【0054】
ネットワーク
図300は、少なくともデスクトップコンピュータ304、タブレットコンピュータ306、モバイル電話308、ラップトップコンピュータ310、メインフレーム312、サーバ314、クラウドコンピューティングネットワーク316、通信塔318、衛星320、別のネットワーク322、およびネットワーキングデバイス324と通信するネットワーク300を描写する。そのような通信は、直接的および/または間接的であり、有線および/または無線であり、暗号化される、ならびに/もしくは暗号化されない場合がある。ネットワーク302および/またはネットワーク322は、インターネットを含むことができる。
図300に示される任意の要素の1つを上回るインスタンスが、含まれることができる。
図300に示される任意および/または全ての要素は、有線ならびに/もしくは無線にかかわらず、いかようにも
図300に示される任意および/または全ての要素と通信することができる。そのような通信のうちのいずれかおよび/または全ては、
図1ならびに
図2を参照して説明されるような技術を使用して、任意の様式で実施されることができる。例えば、ビットストリームが、受信され、第1の様式で第1の発振器の第1の周波数に従って構文解析され、第1のものと異なる第2の様式で第2の発振器の第2の周波数に従って構文解析される。第1の発振器および第2の発振器の出力は、組み合わせられ、ネットワークデバイスが焦点を当てるために交互に出力するストリングの間を切り替えるスイッチとして使用される。そのような出力がネットワーク通信に組み込まれるとき、通信するネットワークデバイス間の出力が同じではない場合、そのようなネットワーク通信は、変化する認証/アクセス制御条件に起因して、可能にされない。
【0055】
いくつかの例示的実施形態では、開示される技術は、バイト内容の変動を促進することができる。結果として、発振/クロック信号は、ビットストリームを8ビット、16ビット、および/または64ビット増分に解釈する、ネットワークデバイスと異なるようにエンコードする長さを伴うビットストリームを再解釈するように、ビットストリームを種々のビット長に構文解析することによってビットストリームをセグメント化する方法のビット長を変動させる。ビットストリーム増分の長さは、発振器/クロック周波数に基づく。少なくとも2つの発振器/クロックが、使用され、第1の発振器/クロックが、構文解析またはビット分割を生成し、第1のクロックと同期する第2の発振器/クロックが、構文解析を正しく解釈する。第1のクロックの周波数を把握しないと、信号の受信機は、標準8ビット構文解析を使用して信号を正しく解釈することが可能ではないであろう。したがって、異なる周波数を有する発振器/クロックのペアが組み合わせられ、それらの発振が組み合わせられると、そのような組み合わせは、ランダムに見えるが、最終的に繰り返される、新しい波形パターンを生成する。クロックは、原子時計、水晶時計、機械時計等であり得る。いくつかの例示的実施形態では、そのような技術は、ネットワークデバイスにかかわらず、よりセキュアなネットワークデバイスアクセスを生成するために、識別番号と組み合わせられることができる。
【0056】
図4は、本開示による、コンピュータセキュリティを強化するための方法の別の例示的実施形態のフローチャートを示す。本図のいくつかの要素は、上記に説明される。したがって、同一の参照文字は、上記に説明される同一または同様のコンポーネントを識別し、その任意の反復的な詳細な説明は、以降では、複雑性を回避するために省略または簡略化されるであろう。
【0057】
プロセス400は、ブロック402-416を含む。プロセス400は、可変ルックアップテーブルおよび/または語長を使用して、論理をエンコードならびにデコードするためのものである。プロセス400は、オペレーティングシステムレベルの下方、上、および/または上方で実装され得る、任意のハードウェアレベル上の1つならびに/もしくはそれを上回る回路内等のハードウェア論理、および/または1つならびに/もしくはそれを上回るソフトウェアアプリケーション内等のソフトウェア論理の任意の組み合わせを介して実装されることができる。プロセス400は、要求・応答コンピューティングにおいて実装されることができる。プロセス400は、コンピュータセキュリティへのいずれの関連にもかかわらず、より大きいプロセスの一部であり得る。例えば、種々の機能が、プロセス400のいずれか1つおよび/またはそれを上回るブロックの実施前、その間、ならびに/もしくはその後に起こることができる。代替として、プロセス400は、独自に実施されることができる。ブロック402-416は、本明細書に説明されるような順序で実施され得るが、ブロック402-416は、他の順序で実施されることができ、いくつかのブロックは、それらの任意の順列において他のブロックの前、その間、および/またはその後に実施される。また、プロセス400は、少なくとも部分的に、英数字入力、記号入力、バイオメトリック入力、ハードウェア入力、および/またはその他に基づき得る、パスワード入力を用いて実装され得ることに留意されたい。しかしながら、プロセス400はまた、パスワードを使用することなく実装されることができる。
【0058】
ブロック402では、複数の変数が、提供される。そのような提供は、手動および/または自動的、暗号化される、および/または暗号化されていない、有線および/または無線、直接的ならびに/もしくは間接的であり得る。任意の数の変数が、使用され得ることに留意されたい。例えば、変数A、変数B、および変数Cが、提供され、変数Aは、17に設定され、変数Bは、13に設定され、変数Cは、24に設定される。変数は、1つの数体系にあるが、他の実施形態では、異なる数体系にあることに留意されたい。
【0059】
ブロック404では、ルックアップテーブルが、提供される。そのような提供は、手動および/または自動的、暗号化される、および/または暗号化されていない、有線および/または無線、直接的ならびに/もしくは間接的であり得る。テーブルは、英数字ライブラリに対応する複数の10進値を介して、英数字ライブラリ等の記号ライブラリをインデックス化する。例えば、ルックアップテーブルが、下記に提供される。他の記号、他の数体系等を介する等して、他のタイプのルックアップテーブルおよび異なるインデックス化ライブラリが、同様に使用され得ることに留意されたい。
【表1】
【0060】
ブロック406では、メッセージが、ルックアップテーブルを介して第1の数体系に変換される。そのような変換は、自動的であり、任意のタイプの数体系に関してであり得る。メッセージは、遠隔通信のため等、手動で、および/または自動的に生成されることができる。メッセージは、テキストであるが、任意のタイプであり得る。例えば、メッセージが、hello_worldである場合、ルックアップテーブルを介して、メッセージは、h=8、e=5、l=12、l=12、o=15、_=27、w=23、o=15、r=18、l=12、d=4であるように、10進法に変換される。
【0061】
ブロック408では、第1の数体系を介して現れるようなメッセージが、第1の数体系と異なる第2の数体系に変換される。そのような変換は、直接的および/または間接的にかかわらず、自動的であり、16進法等の任意のタイプの数体系に関してであり得る。h=8、e=5、l=12、l=12、o=15、_=27、w=23、o=15、r=18、l=12、d=4である上記の実施例を使用すると、そのような値は、10進法とは異なる2進法に変換される。したがって、8ビットストリングを使用すると、変換は、h=8に関して0000 1000、e=5に関して0000 0101、l=12に関して0000 1100、l=12に関して0000 1100、o=15に関して0000 1111、_=27に関して0001 1011、w=23に関して0001 0111、o=15に関して0000 1111、r=18に関して0001 0010、l=12に関して0000 1100、およびd=4に関して0000 0100をもたらす。ストリングはまた、4、16、およびその他等の他のビットサイズにあり得ることに留意されたい。
【0062】
ブロック410では、第2の数体系を介して現れるようなメッセージが、文字シーケンスに組み合わせられる。そのような組み合わせは、直接的および/または間接的にかかわらず、自動的である。ストリング0000 1000、0000 0101、0000 1100、0000 1100、0000 1111、0001 1011、0001 0111、0000 1111、0001 0010、0000 1100、0000 0100を含有する上記の実施例を使用すると、ストリングは、文字シーケンス00001000000001010000110000001100000011110001101100010111 00001111000100100000110000000100に組み合わせられる。
【0063】
ブロック412では、複数のサブシーケンスが、改変によって、ブロック402からの変数のうちの少なくとも2つをセグメント化することを介して生成される。そのような生成は、直接的および/または間接的にかかわらず、自動的である。シーケンス00001000000001010000110000001100000011110001101100010111 00001111000100100000110000000100を含有し、変数Aが17に設定され、変数Bが13に設定される上記の実施例を使用すると、サブシーケンスは、ストリームをセグメント化するように変数を交互することを介して生成される。したがって、シーケンス
【0064】
00001000000001010000110000001100000011110001101100010111 00001111000100100000110000000100は、サブシーケンスが、改変を介して生成され、変数Aおよび変数Bに基づく改変に従って対応してサイズ決定されるように、変数Aおよび変数Bを交互することを介してセグメント化される。結果として、サブシーケンスは、0000 1000 0000 01010(変数Aに従って17ビット)、0001 1000 00011(変数Bに従って13ビット)、0000 0011 1100 01101(変数Aに従って17ビット)、1000 1011 10000(変数Bに従って13ビット)、1111 0001 0010 00001(変数Aに従って17ビット)、および1000 0000 100(変数Bに従って11ビット)である。
【0065】
ブロック414では、サブシーケンスが、上記に説明されるように、すでに使用された変数と異なる、ブロック402を介して提供されるような変数のうちの少なくとも1つを使用して他のサブシーケンスに変換される。すでに使用された変数と異なる変数のうちの少なくとも1つの値に起因して、そのような変換は、ブロック412を介して生成されたサブシーケンスと異なる長さである他のサブシーケンスをもたらす。そのような変換は、直接的および/または間接的にかかわらず、自動的である。
【0066】
サブシーケンス0000 1000 0000 01010、0001 1000 00011、0000 0011 1100 01101、1000 1011 10000、1111 0001 0010 00001、および1000 0000 100が変数Aならびに変数Bに基づく上記の実施例を使用すると、そのようなサブシーケンスは、24に設定される変数Cを使用して他のサブシーケンスに変換される。変換は、変数Cとサブシーケンスのそれぞれの長さとの間の差異に基づく。例えば、変数Aに基づく17ビットサブシーケンスの変数Cに基づく24ビットサブシーケンスへの変換は、17ビットサブシーケンスに7ビットを追加することを介して実施され、合計で24ビットサブシーケンスになる。同様に、変数Bに基づく13ビットサブシーケンスの変数Cに基づく24ビットサブシーケンスへの変換は、13ビットサブシーケンスに11ビットを追加することを介して実施され、合計で24ビットサブシーケンスになる。したがって、他のサブシーケンスは、ブロック412を介して生成されるようなサブシーケンスと異なるビット長をもたらす。結果として、変数Cと17または13等の古いサブシーケンスの関連ストリング長との間の差異に対応するビットを追加することを介して変換されるため、他のサブシーケンスは、0000 0000 0001 0000 0000 1010、0000 0000 0000 0011 0000 0011、0000 0000 0000 1111 1000 1101、0000 0000 0001 0001 0111 0000、0000 0001 1110 0010 0100 0001、および0000 0000 0000 0100 0000 0100である。他の実施形態では、少なくとも1つの変数は、すでに使用された変数のうちの少なくとも1つと異ならないことに留意されたい。
【0067】
ブロック416では、他のサブシーケンスが、伝送される。そのような伝送は、手動および/または自動的、直接的および/または間接的、無線および/または有線、暗号化される、ならびに/もしくは暗号化されない場合がある。
【0068】
プロセス400に基づくデコーディングに関して、上記の実施例を使用すると、受信されたストリーム000000000001000000001010000000000000001100000011000000000000 111110001101000000000001000101110000000000011110001001000001000000000000010000000100から始める。次いで、受信されたストリームは、24である変数Cに基づく語長に変換される。そのような変換は、0000 0000 0001 0000 0000 1010、0000 0000 0000 0011 0000 0011、0000 0000 0000 1111 1000 1101、0000 0000 0001 0001 0111 0000、0000 0001 1110 0010 0100 0001、および0000 0000 0000 0100 0000 0100をもたらす。次いで、変数AおよびBを使用して、各単語から追加されたビットを削除すると、これは、0000 1000 0000 01010、0001 1000 00011、0000 0011 1100 01101、1000 1011 10000、1111 0001 0010 00001、1000 0000 100をもたらす。次いで、いずれの分離も除去すると、これは、000010000000010100001100000011000 0001111000110110001011100001111000100100000110000000100をもたらす。次いで、ストリームを8ビット語にセグメント化すると、これは、0000 1000、0000 0101、0000 1100、0000 1100、0000 1111、0001 1011、0001 0111、0000 1111、0001 0010、0000 1100、0000 0100をもたらす。次いで、単語を10進相当に変換すると、これは、8、5、12、12、15、27、23、15、18、12、4をもたらす。次いで、ルックアップテーブルを使用し、hello_worldと置換する。
(可変語長エンコーディング)
【0069】
セキュリティの追加に加えて、可変語長エンコーディングは、エンコーディングのために使用されてもよい。ある場合では、可変語長エンコーディングは、より効率的なまたはより高い分解能のエンコーディングのために使用されてもよい。当業者によって理解されるであろうように、2進語は、例えば、単位、数、文字、または記号をともに表すビットの集合である。いくつかの用途では、より短い語長は、十分な分解能が欠如し得る一方、より長い語長は、所与のタスクを遂行するために過剰な処理能力および記憶容量を要求し得る。ある場合では、可変語長エンコーディングは、これらおよび他の限定に対処し得る。
【0070】
図5は、本開示による、可変語長エンコーディングの例示的実施形態のフローチャートを示す。プロセス500は、ブロック502-510を含む。プロセス500は、可変ルックアップテーブルおよび/または語長を使用して、論理をエンコードならびにデコードするためのものである。プロセス500は、オペレーティングシステムレベルの下方、上、および/または上方で実装され得る、任意のハードウェアレベル上の1つならびに/もしくはそれを上回る回路内等のハードウェア論理、および/または1つならびに/もしくはそれを上回るソフトウェアアプリケーション内等のソフトウェア論理の任意の組み合わせを介して実装されることができる。プロセス500は、要求・応答コンピューティングにおいて実装されることができる。プロセス500は、コンピュータセキュリティへのいずれの関連にもかかわらず、より大きいプロセスの一部であり得る。例えば、種々の機能が、プロセス500のいずれか1つおよび/またはそれを上回るブロックの実施前、その間、ならびに/もしくはその後に起こることができる。代替として、プロセス500は、独自に実施されることができる。ブロック502-510は、本明細書に説明されるような順序で実施され得るが、ある場合では、ブロック502-510のうちのいくつかは、他の順序で実施されることができ、いくつかのブロックは、それらの任意の順列において他のブロックの前、その間、および/またはその後に実施される。
【0071】
ブロック502では、デフォルトの語長が、決定される。そのような決定は、手動(例えば、ユーザによって設定される)および/または自動的(例えば、プロセッサによって決定される)であり得る。ある場合では、デフォルトの語長は、プログラムのために設定されてもよい。例えば、デフォルトの語長は、限定ではないが、8ビット、16ビット、または24ビットであってもよい。
【0072】
ブロック504では、デフォルトの語長の2進語が、デフォルトの語長モードにおいて出力されてもよい。例えば、デフォルトの語長が8である場合では、米国標準情報交換コード(ASCII)テーブルにおける文字が、出力されてもよい。
【0073】
ブロック506では、デフォルトの語長の所定の2進遷移語が、可変語長モードへの遷移を示すために出力されてもよい。例えば、ASCII文字がデフォルトの語長モードの間に出力される場合では、ASCIIテーブルにおいて使用されない10進数141が、可変語長モードへの遷移を示すために出力されてもよい。
【0074】
ブロック508では、後続ビットストリームの語長を示す遷移語に続く2進長語が、出力されてもよい。ある場合では、長語は、後続ビットストリームの語長を明示的に規定し得、すなわち、長語は、後続ビットストリームの語長の数である、または代表的に、例えば、語長を示すテーブルを参照する。
【0075】
ブロック510では、示された語長の単語のビットストリームが、各単語の先頭における付加的フラグビットとともに出力される。フラグビットは、次の単語がストリーム内の単語である、または語長において変化するかどうかを示し得る。例えば、フラグビットが0であるとき、後続単語は、ストリーム内の単語であり、フラグビットが1であるとき、後続単語は、別の長語であり得る。長語が終了語、例えば、全てゼロである場合、モードは、デフォルトの語長モードに遷移し得る。しかしながら、これは、実施例にすぎない。ある場合では、1であるフラグビットは、次の単語が別の長語であることを示してもよい。他の場合では、1であるフラグビットは、デフォルトの語長モードへの遷移を示してもよく、現在の単語または次の単語は、実施形態に応じて、デフォルトの語長であってもよい。
【0076】
非限定的実施例として、デフォルトの語長がASCII文字を表す8ビットであり、遷移語が10進数141であり、長語が16ビット長であり、後続ビットストリームの語長を明示的に示し、1のフラグビットが、後続単語が別の長語であることを示す場合を検討する。本実施例では、2つのASCII文字、3つの4ビット語、2つの5ビット語、およびさらに3つのASCII文字が、出力される。本事例の例示的出力が、下記の表1に図示される。
【表2】
【0077】
図6は、本開示による、可変語長エンコーディングの別の例示的実施形態のフローチャートを示す。プロセス600は、ブロック602-610を含む。プロセス600は、可変ルックアップテーブルおよび/または語長を使用して、論理をエンコードならびにデコードするためのものである。プロセス600は、オペレーティングシステムレベルの下方、上、および/または上方で実装され得る、任意のハードウェアレベル上の1つならびに/もしくはそれを上回る回路内等のハードウェア論理、および/または1つならびに/もしくはそれを上回るソフトウェアアプリケーション内等のソフトウェア論理の任意の組み合わせを介して実装されることができる。プロセス600は、要求・応答コンピューティングにおいて実装されることができる。プロセス600は、コンピュータセキュリティへのいずれの関連にもかかわらず、より大きいプロセスの一部であり得る。例えば、種々の機能が、プロセス600のいずれか1つおよび/またはそれを上回るブロックの実施前、その間、ならびに/もしくはその後に起こることができる。代替として、プロセス600は、独自に実施されることができる。ブロック602-610は、本明細書に説明されるような順序で実施され得るが、ある場合では、ブロック602-610のうちのいくつかは、他の順序で実施されることができ、いくつかのブロックは、それらの任意の順列において他のブロックの前、その間、および/またはその後に実施される。
【0078】
ブロック602では、デフォルトの語長が、決定される。そのような決定は、手動(例えば、ユーザによって設定される)および/または自動的(例えば、プロセッサによって決定される)であり得る。ある場合では、デフォルトの語長は、プログラムのために設定されてもよい。例えば、デフォルトの語長は、限定ではないが、8ビット、16ビット、または24ビットであってもよい。
【0079】
ブロック604では、デフォルトの語長の2進語が、デフォルトの語長モードにおいて出力されてもよい。例えば、デフォルトの語長が8である場合では、米国標準情報交換コード(ASCII)テーブルにおける文字が、出力されてもよい。
【0080】
ブロック606では、デフォルトの語長の所定の2進遷移語が、可変語長モードへの遷移を示すために出力されてもよい。例えば、ASCII文字がデフォルトの語長モードの間に出力される場合では、ASCIIテーブルにおいて使用されない10進数143が、可変語長モードへの遷移を示すために出力されてもよい。
【0081】
ブロック608では、単語のビットストリームが、単語の長さを示す各単語の先頭におけるキーとともに出力される。キーは、任意の数のビット、例えば、3であってもよく、規定された語長にマッピングされてもよい。ある場合では、キーは、不変であってもよい。ある場合では、ヘッダが、キーを示してもよい。例えば、ヘッダは、2ビットキーに対応する語長値を示してもよい。
【0082】
ブロック610では、デフォルトの語長モードに戻るような遷移を示す終了語が、出力されてもよい。例えば、ASCII文字がデフォルトの語長モードの間に出力される場合では、キーが8ビット語を示すとき、ASCIIテーブルにおいて使用されない10進数143が、可変語長モードへの遷移を示すために出力されてもよい。
【0083】
非限定的実施例として、デフォルトの語長がASCII文字を表す8ビットであり、遷移語が10進数142であり、終了語が8ビット語における10進数143であり、キーが以下のキーを使用する3つのビットである場合を検討する。
【表3】
本実施例では、2つのASCII文字、1つの64ビット語、2つの16ビット語、およびさらに3つのASCII文字が、出力される。本事例の例示的出力が、下記の表2に図示される。
【表4】
【0084】
ある場合では、キーは、単語の長さを示す各単語の先頭に追加されてもよく、デフォルトの語長は、決定されない場合がある。言い換えると、全単語は、単語の長さを示すキーを有する。
図6を参照して上記に議論される実施形態のように、キーは、任意の数のビットであってもよい。
【0085】
非限定的実施例として、キーが以下のキーを使用する3つのビットである場合を検討する。
【表5】
本実施例では、2つの8ビット文字、1つの64ビット語、2つの16ビット語、およびさらに3つの8ビット文字が、出力される。本事例の例示的出力が、下記の表3に図示される。
【表6】
表3を表2と比較することによって分かり得るように、いくつかの実施形態では、いかなるデフォルトの語長モードも存在しないため、いかなる遷移語または終了語も、可変語長モードに遷移するために使用されない。
【0086】
ある場合では、2進長語が、単語の各シーケンスの前の後続ビットストリームの語長を示し得、付加的フラグビットが、次の単語がストリーム内の単語である、または語長において変化するかどうかを示すために各単語の先頭に含まれ得る。
図5を参照して上記に議論される実施形態のように、長語は、後続ビットストリームの語長を明示的に規定し得、すなわち、長語は、後続ビットストリームの語長の数である、または代表的に、例えば、語長を示すテーブルを参照する。
【0087】
非限定的実施例として、長語が16ビット長であり、後続ビットストリームの語長を明示的に示し、1のフラグビットが、後続単語が別の長語であることを示す場合を検討する。本実施例では、2つの8ビット語、3つの4ビット語、2つの5ビット語、およびさらに3つの8ビット語が、出力される。本事例の例示的出力が、下記の表4に図示される。
【表7】
表4を表1と比較することによって分かり得るように、いくつかの実施形態では、いかなるデフォルトの語長モードも存在しないため、いかなる遷移語も、可変語長モードに遷移するために使用されない。
【0088】
可変語長エンコーディングの使用に基づいて、ビットストリームは、より迅速に伝送および処理され得、ファイルサイズは、より小さくなり得、より高い分解能が、必要なときに提供され得る。ある場合では、デフォルトの語長は、事前に設定されてもよい。ある場合では、ファイルが、走査されてもよく、デフォルトの語長等の語長は、圧縮を改良するように設定されてもよい。ある場合では、ファイルが、走査されてもよく、デフォルトの語長および可変語長は、最適化されてもよい。ある場合では、デフォルトの語長は、設定されない場合があり、エンコーディングは、可変語長モードにおいてのみ実施されてもよい。
【0089】
当業者によって理解されるであろうように、本開示の側面は、システム、方法、またはコンピュータプログラム製品として具現化されてもよい。故に、本開示の側面は、全体的にハードウェアである実施形態、全体的にソフトウェアである実施形態(ファームウェア、常駐ソフトウェア、マイクロコード等を含む)、または本明細書において、全て、概して、「回路」、「モジュール」、もしくは「システム」と称され得るソフトウェアおよびハードウェア側面を組み合わせる実施形態の形態をとってもよい。さらに、本開示の側面は、その上に具現化されるコンピュータ可読プログラムコードを有する1つ以上のコンピュータ可読媒体内で具現化されるコンピュータプログラム製品の形態をとってもよい。
【0090】
1つ以上のコンピュータ可読媒体の任意の組み合わせが、利用されてもよい。コンピュータ可読媒体は、コンピュータ可読信号媒体またはコンピュータ可読記憶媒体(限定ではないが、非一過性コンピュータ可読記憶媒体を含む)であってもよい。コンピュータ可読記憶媒体は、例えば、限定ではないが、電子、磁気、光学、電磁、赤外線、または半導体システム、装置、もしくはデバイス、または前述の任意の好適な組み合わせであってもよい。コンピュータ可読記憶媒体のより具体的な実施例(非包括的リスト)は、以下、すなわち、1つ以上のワイヤを有する電気接続、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、読取専用メモリ(ROM)、消去可能プログラマブル読取専用メモリ(EPROMもしくはフラッシュメモリ)、光ファイバ、ポータブルコンパクトディスク読取専用メモリ(CD-ROM)、光学記憶デバイス、磁気記憶デバイス、または前述の任意の好適な組み合わせを含むであろう。本文書の文脈では、コンピュータ可読記憶媒体は、命令実行システム、装置、またはデバイスによって、もしくはそれと関連して使用するためのプログラムを含有または記憶し得る、任意の有形媒体であってもよい。
【0091】
コンピュータ可読信号媒体は、例えば、ベースバンド内に、または搬送波の一部として、その中に具現化されるコンピュータ可読プログラムコードを伴う伝搬データ信号を含んでもよい。そのような伝搬信号は、限定ではないが、電磁、光学、またはそれらの任意の好適な組み合わせを含む、種々の形態のうちのいずれかをとってもよい。コンピュータ可読信号媒体は、コンピュータ可読記憶媒体ではなく、命令実行システム、装置、またはデバイスによって、もしくはそれと関連して使用するためのプログラムを通信、伝搬、または輸送し得る、任意のコンピュータ可読媒体であってもよい。
【0092】
コンピュータ可読媒体上で具現化されるプログラムコードは、限定ではないが、無線、有線、光ファイバケーブル、RF等、または前述の任意の好適な組み合わせを含む、任意の適切な媒体を使用して伝送されてもよい。
【0093】
本開示の側面に関する動作を実行するためのコンピュータプログラムコードは、Java(登録商標)、Smalltalk、C++、または同等物等のオブジェクト指向プログラミング言語、および「C」プログラミング言語または類似するプログラミング言語等の従来の手続型プログラミング言語を含む、1つ以上のプログラミング言語の任意の組み合わせで書き込まれてもよい。他のタイプの言語は、XML、XBRL、およびHTML5を含む。プログラムコードは、ユーザのコンピュータ上で全体的に、ユーザのコンピュータ上で部分的に、スタンドアロンソフトウェアパッケージとして、ユーザのコンピュータ上で部分的かつ遠隔コンピュータ上で部分的に、または遠隔コンピュータもしくはサーバ上で全体的に実行されてもよい。後者のシナリオでは、遠隔コンピュータは、ユーザのコンピュータに、ローカルエリアネットワーク(LAN)もしく広域ネットワーク(WAN)を含む、任意のタイプのネットワークを通して接続されてもよい、または接続は、外部コンピュータに(例えば、インターネットサービスプロバイダを使用してインターネットを通して)成されてもよい。
【0094】
本開示の側面は、本開示の実施形態による、方法、装置(システム)、およびコンピュータプログラム製品のフローチャート図ならびに/もしくはブロック図を参照して下記に説明される。フローチャート図および/またはブロック図の各ブロックならびにフローチャート図および/またはブロック図におけるブロックの組み合わせが、コンピュータプログラム命令によって実装されることができる。これらのコンピュータプログラム命令は、コンピュータまたは他のプログラマブルデータ処理装置のプロセッサを介して実行される命令が、フローチャートならびに/もしくはブロック図のブロックまたは複数のブロックに規定された機能/行為を実装するための手段を生成するように、マシンを生産するために汎用コンピュータ、専用コンピュータ、もしくは他のプログラマブルデータ処理装置のプロセッサに提供されてもよい。
【0095】
これらのコンピュータプログラム命令はまた、コンピュータ可読媒体内に記憶される命令が、フローチャートおよび/またはブロック図のブロックもしくは複数のブロックに規定された機能/行為を実装する命令を含む製造品を生産するように、特定の様式で機能するようにコンピュータ、他のプログラマブルデータ処理装置、または他のデバイスに指図し得る、コンピュータ可読媒体内に記憶されてもよい。
【0096】
コンピュータプログラム命令はまた、コンピュータまたは他のプログラマブル装置上で実行される命令が、フローチャートならびに/もしくはブロック図のブロックまたは複数のブロック内に規定された機能/行為を実装するためのプロセスを提供するように、一連の動作ステップをコンピュータ、他のプログラマブル装置、または他のデバイス上で実施させ、コンピュータ実装プロセスを生産するために、コンピュータ、他のプログラマブルデータ処理装置、もしくは他のデバイス上にロードされてもよい。
【0097】
図におけるフローチャートおよびブロック図は、本開示の種々の実施形態による、システム、方法、およびコンピュータプログラム製品の可能性として考えられる実装のアーキテクチャ、機能性、ならびに動作を図示する。この点で、フローチャートまたはブロック図における各ブロックは、モジュール、セグメント、またはコードの一部を表し得、これは、規定された論理機能を実装するための1つ以上の実行可能命令を備える。また、いくつかの代替実装では、ブロックに留意される機能は、図に留意される順序以外で起こり得ることに留意されたい。例えば、関与する機能性に応じて、連続して示される2つのブロックは、実際には、実質的に並行して実行されてもよい、またはブロックは、時として、逆の順序で実行されてもよい。ブロック図および/またはフローチャート図の各ブロックならびにブロック図および/またはフローチャート図におけるブロックの組み合わせが、規定された機能もしくは行為を実施する専用ハードウェアベースシステムまたは専用ハードウェアおよびコンピュータ命令の組み合わせによって実装されることができる。
【0098】
下記の請求項における全ての手段またはステップ、加えて、機能要素の対応する構造、材料、行為、および均等物は、具体的に請求されるような他の請求される要素と組み合わせて機能を実施するための任意の構造、材料、または行為を含むように意図される。本開示の説明は、例証および説明の目的のために提示されており、開示される形態において本開示に包括または限定されるように意図されない。多くの修正および変形例が、本開示の範囲ならびに精神から逸脱することなく、当業者に明白となるであろう。実施形態は、本開示の原理および実践的用途を最良に解説し、当業者が、考慮される特定の使用に好適であるような種々の修正を伴う種々の実施形態に関する開示を理解することを可能にするために選定ならびに説明された。
【0099】
本明細書に描写されるフロー図は、一実施例にすぎない。本開示の精神から逸脱することなく、本図またはそれにおいて説明されるステップ(もしくは動作)の多くの変形例が存在してもよい。例えば、ステップは、異なる順序で実施されてもよい、および/またはステップは、追加、削除、ならびに/もしくは修正されてもよい。これらの変形例は全て、請求される開示の一部と見なされる。
【0100】
本開示の好ましい実施形態が、説明されたが、当業者は、現在および将来の両方で、続く請求項の範囲内に該当する種々の改良および/または拡張を行い得る。これらの請求項は、最初に説明された開示に対する適切な保護を維持するように解釈されるべきである。
【外国語明細書】