(57)【要約】  例示の実施態様はコードパッケージバリアントに関する。本システムはクライアントサーバと開発環境とデジタル署名環境と中央サーバとを備える。開発環境はコードパッケージの第１部分の複数のバリアントを生成する。デジタル署名環境は、コードパッケージの同じ第２部分を用いて、コードパッケージの第１部分の複数のバリアントの各バリアントについて異なるデジタル署名を作成する。中央サーバは、コードパッケージの第１部分の複数のバリアントのうちのあるバリアントをコードパッケージの第２部分及び対応するデジタル署名とともに含む完全なコードパッケージをクライアントサーバに送信する。中央サーバは、コードパッケージの第２部分を伴わない、コードパッケージの第１部分の複数のバリアントの残余と、複数のバリアントの残余の各デジタル署名とを含む不完全なコードパッケージをクライアントサーバに送信する。【選択図】図１
2019522834.tif 000002
【特許請求の範囲】
【請求項１】
クライアントサーバと、
コードパッケージの第１の部分の複数のバリアントを生成する開発環境と、
前記コードパッケージの同じ第２の部分を用いて、前記コードパッケージの前記第１の部分の前記複数のバリアントの各バリアントについて異なるデジタル署名を作成するデジタル署名環境と、
中央サーバであって、
前記コードパッケージの前記第１の部分の前記複数のバリアントのうちの１つのバリアントを、前記コードパッケージの前記第２の部分及び対応するデジタル署名とともに含む完全なコードパッケージを前記クライアントサーバに送信することと、
前記コードパッケージの前記第２の部分を伴わない、前記コードパッケージの前記第１の部分の前記複数のバリアントの残余と、前記複数のバリアントの前記残余のそれぞれのデジタル署名とを含む不完全なコードパッケージを前記クライアントサーバに送信することと
を行う、中央サーバと
を備えてなるシステム。
【請求項２】
前記完全なコードパッケージは、ファームウェアコードイメージを含む、請求項１に記載のシステム。
【請求項３】
前記複数のバリアントの各バリアントは、前記複数のバリアントの他のバリアントと異なるバイナリコード要素を含む機能的に同等のコード要素を含む、請求項１に記載のシステム。
【請求項４】
前記クライアントサーバによって管理される複数のクライアントデバイスの各クライアントデバイスは、前記コードパッケージの同じ前記第２の部分と、前記コードパッケージの前記第１の部分の前記複数のバリアントのうちの異なるバリアントとを含むコードパッケージを受信する、請求項１に記載のシステム。
【請求項５】
前記コードパッケージは、パッケージファイルを含む、請求項１に記載のシステム。
【請求項６】
前記コードパッケージの前記第１の部分は、オペレーティングシステムパッケージファイルを含む、請求項５に記載のシステム。
【請求項７】
前記コードパッケージの前記第１の部分の前記複数のバリアントは、前記コードパッケージのオペレーティングシステムパッケージファイル部分内の動的リンクライブラリブロックと機能ブロックとサブ機能ブロックとをランダム化することによって生成される、請求項１に記載のシステム。
【請求項８】
プロセッサによって実行可能な命令を含む非一時的コンピュータ可読媒体であって、該命令は前記プロセッサに対し、
第１の部分と、第２の部分と、完全なコードパッケージに対応するデジタル署名とを含む該完全なコードパッケージを受信させ、
複数の不完全なコードパッケージであって、該複数の不完全なコードパッケージのそれぞれは、前記第２の部分を伴わない、前記第１の部分の複数のバリアントのそれぞれのバリアントと、前記第１の部分の前記バリアント及び前記第２の部分に対応するデジタル署名とを含む、複数の不完全なコードパッケージを受信させ、
前記完全なコードパッケージ及び前記複数の不完全なコードパッケージを利用して、複数の完全なコードパッケージバリアントを生成させる
ことを特徴とする、非一時的なコンピュータ可読媒体。
【請求項９】
前記第１の部分の前記複数のバリアントは、前記コードパッケージのオペレーティングシステムパッケージファイル部分内のライブラリブロックと機能ブロックとサブ機能ブロックとをランダム化することによって生成される、請求項８に記載の非一時的なコンピュータ可読媒体。
【請求項１０】
前記第１の部分及び前記完全なコードパッケージに対応する前記デジタル署名を前記複数の不完全なコードパッケージのうちの１つの不完全なコードパッケージと交換することによって、前記複数の完全なコードパッケージバリアントのうちの１つの完全なコードパッケージバリアントを生成する命令を更に含む、請求項８に記載の非一時的なコンピュータ可読媒体。
【請求項１１】
前記複数の不完全なコードパッケージのそれぞれは、前記完全なコードパッケージよりも小さいものである、請求項１０に記載の非一時的なコンピュータ可読媒体。
【請求項１２】
中央サーバから複数のデバイスを管理するクライアントサーバに対し、
第１の部分と、第２の部分と、完全なコードパッケージに対応するデジタル署名とを含む該完全なコードパッケージと、
複数の不完全なコードパッケージバリアントであって、該複数の不完全なコードパッケージバリアントの各不完全なコードパッケージバリアントは、前記第２の部分を伴わない、前記第１の部分の複数のバリアントのそれぞれのバリアントと、前記第１の部分の前記複数のバリアントのうちの前記バリアント及び前記第２の部分に対応するデジタル署名とを含む、複数の不完全なコードパッケージバリアントと
を送信するステップと、
複数の完全なコードパッケージバリアントを、前記クライアントサーバにおいて構築するステップであって、該複数の完全なコードパッケージバリアントの各完全なコードパッケージバリアントは、異なる不完全なコードパッケージバリアントと、前記完全なコードパッケージからの前記第２の部分とを含むものである、前記クライアントサーバにおいて構築するステップと、
前記複数のデバイスにわたって前記複数の完全なコードパッケージバリアントをインストールするステップと
を含んでなる方法。
【請求項１３】
前記複数のデバイスに対するファームウェア更新の要求を前記中央サーバにおいて受信するステップを含み、前記送信するステップは、該要求を受信するステップに応答して行われる、請求項１２に記載の方法。
【請求項１４】
前記要求において指定されたコードダイバーシティレベルに基づいて、送信する不完全なコードパッケージバリアントの量を前記中央サーバにおいて決定するステップを含む、請求項１３に記載の方法。
【請求項１５】
前記複数の不完全なコードパッケージバリアントの各不完全なコードパッケージバリアントは、前記複数の不完全なコードバリアントの他の不完全なコードパッケージバリアントと異なるバイナリコード要素を含む機能的に同等のコード要素を含む、請求項１２に記載の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
サイバー攻撃は、ネットワーク上のデバイス内にあるコードイメージに存在する攻撃ベクトルを利用することができる。サイバー攻撃の効力を低減する戦略は、ネットワーク上のデバイス間にわたるコードダイバーシティを用いることを含みうる。コードダイバーシティ戦略は、攻撃者が単一のコードイメージ内に攻撃ベクトルを発見した場合にターゲットとすることができるネットワーク上のデバイスの数を削減することができる。
【図面の簡単な説明】
【０００２】
【図１】本開示によるコードパッケージバリアント（code package variants：コードパッケージ変異体）のシステムの一例の図である。
【図２】本開示によるコードパッケージバリアントのシステムの一例のブロック図である。
【図３】本開示によるコードパッケージバリアントの一例示の方法を示す図である。
【発明を実施するための形態】
【０００３】
ネットワークにわたるデバイス間でインストール用のコードイメージを多様化することによって、ネットワーク上でのサイバー攻撃によって利用することができる攻撃ベクトルの拡散を減少させることができる。例えば、コードダイバーシティの幾つかの手法は、コードイメージのビルド（build）時点においてデバイスのコードイメージの複数のバリアントを作成することによって、同じ攻撃ベクトルがデバイスの複数のコードイメージに存在する確率を低減することができる。コードダイバーシティの幾つかの手法は、特定のデバイスのデバイスモデルごとに異なるコードイメージを作成することができる。
【０００４】
これとは対照的に、本明細書において説明する例は、稼働時（ビルド時点の後）に展開されるデバイスモデルごとに複数の異なるコードイメージを有するより高レベルのコードダイバーシティを実施することができる。本明細書において用いられるようなコードイメージは、コンピューティングネットワーク上のデバイスにインストールすることができるバイナリコードを含みうる。コードイメージは、ファームウェア又はソフトウェアなどのバイナリコードを含みうる。バイナリコードは、プロセッサによって実行可能なコンピュータ命令の集合体を含みうる。バイナリコードは、その結果、コンピュータ命令の実行の結果からもたらされる動作によって規定される機能を有することができるか又はこの機能に関連付けることができる。コードイメージは、イメージ署名や、シェルスクリプトや、構成データファイルや、デバイスによって用いられる他の初期化データなども含みうる。
【０００５】
コードダイバーシティ戦略を実施することは、コードイメージの複数のバリアントを作成、記憶、及び／又は送信することを伴うことができる。例えば、コードイメージは、特定のサイズを有することができる。例えば、コードイメージは、１００メガバイト、１００００個のコードイメージ、１テラバイトなどでありうる。コードイメージが１００メガバイトである一例では、１００００個の多様なコードイメージを記憶するのに、多様化されたコードイメージのリリース当たり、１テラバイトの記憶空間が消費される。そのようなリリースの送信時間は、リリースのサイズに依存し得る。大きなリリースほど、送信を完了するのにより長い期間が利用され得る。
【０００６】
本開示によるコードイメージの複数の部分のバリアントを送信することは、複数のパッケージバリアントを生成するために、完全なコードパッケージと、完全なコードパッケージの対応する部分と反復して交換されるコードパッケージの部分の複数のバリアントとを送信することを含むコードダイバーシティ戦略を実施することができる。また、コードパッケージの第１の部分の各バリアントは、完全なコードパッケージに存在するコードパッケージの第２の部分を含まないので、データ記憶及び／又はデータ送信の節約を実現することができる。
【０００７】
図１は、本開示による、コードパッケージバリアントを送信するシステム１００の図を示している。本明細書において用いられるようなコードパッケージは、コードイメージを含みうる。このコードパッケージは、クライアントデバイス用のソフトウェアコードイメージ及び／又はファームウェアコードイメージであるコードイメージを含みうる。例えば、コードパッケージは、クライアントサーバによって管理されるデバイスを印刷するソフトウェア更新及び／又はファームウェア更新を含みうる。
【０００８】
コードパッケージは、複数の異なる及び／又は個別のイメージ、バンドル又はパッケージファイルを含みうる。パッケージファイルは、クライアントデバイスの個々の構成要素、機能、特定用途向け集積回路（ＡＳＩＣｓ）、及び／又はプロセッサに対応することができる。例えば、クライアントデバイスは、プリンタの印刷エンジンの制御、プリンタの制御パネルの管理、プリンタの内蔵ＦＡＸの管理、プリンタのスキャナの管理、プリンタの紙送り機構の管理、プリンタのビンの管理、プリンタのトレイの管理、プリンタのステープラの管理、及び／又はプリンタのフィニッシャの管理を行う異なる構成要素、機能、ＡＳＩＣｓ、及び／又はプロセッサを備えることができる。パッケージファイルは、これらの異なる構成要素、機能、ＡＳＩＣｓ、及び／又はプロセッサのそれぞれに対応するコードを含みうる。コードパッケージは、クライアントデバイスのアプリケーションコード、接続性／ネットワーキングファームウェア、オペレーティングシステムファームウェア、印刷エンジンファームウェア、及び／又は他の構成要素ファームウェアの個別のパッケージファイルを含みうる。
【０００９】
システム１００は、コードパッケージの開発、ビルド、テスト、及び／又は展開に関連したコンピューティングシステムを備えることができる。システム１００は、中央サーバ１０２を備えることができる。中央サーバ１０２は、コードパッケージの開発、ビルド、テスト、及び／又は展開に関連したサーバを含みうる。中央サーバ１０２は、コードパッケージの開発、ビルド、テスト、及び／又は展開に関連した個別のコンピューティングシステムに対してデータを送受信することができる。中央サーバ１０２は、クライアントデバイスファームウェア更新などのサービスをクライアントサーバ１０４に提供するコンピューティングシステムを備えることができる。中央サーバ１０２は、複数のクライアントサーバ１０４及び／又はクライアントデバイスが利用することができる複数のコードパッケージを備えることができる。例えば、中央サーバ１０２は、クライアントデバイスの製造業者及び／又はサービスプロバイダに関連付けることができ、クライアントデバイスに関連したファームウェア更新を展開するのに利用することができる。中央サーバ１０２は、クライアントデバイスとの通信及び／又はクライアントデバイスを管理するクライアントサーバ１０４へのファームウェア更新の配信を行うのに利用されるウェブサイトに関連したウェブサーバでありうる。中央サーバ１０２は、ファイル（例えば、パッケージファイル、コードパッケージなど）をサービングするファイルサーバでありうる。中央サーバ１０２は、ウェブサービス記憶ロケーションなどの共有記憶ロケーションに記憶されたファイルのレポジトリを備えることができる。
【００１０】
システム１００は、パッケージファイルを開発する開発環境１１０を備えることができる。中央サーバ１０２は、パッケージファイルを開発する開発環境１１０を備えることができる。中央サーバ１０２は、パッケージファイルを開発する開発環境１１０に関連した個別のコンピューティングシステムに対してデータを送受信することができる。中央サーバ１０２は、後処理ソフトウェアをパッケージファイルに対して実行して、機能的に同等であるパッケージファイルのバイナリコードバリアントを作成する後処理環境を備えることができる。中央サーバ１０２は、後処理ソフトウェアをパッケージファイルに対して実行して、機能的に同等であるパッケージファイルのバイナリコードバリアントを作成する後処理環境に関連した個別のコンピューティングシステムに対してデータを送受信することができる。
【００１１】
システム１００は、クライアントサーバ１０４を備えることができる。クライアントサーバ１０４は、複数のクライアントデバイスを管理するサーバ及び／又はデバイス管理ツールを含みうる。クライアントサーバ１０４は、クライアント／サーバソフトウェアアーキテクチャのクライアント側における、クライアントネットワーク上のエンタープライズ多機能プリンタなどの複数のクライアントデバイスを管理するコンピューティングシステムを含みうる。
【００１２】
クライアントサーバ１０４は、ローカルエリアネットワーク（ＬＡＮ）又はインターネットなどのワイドエリアネットワーク（ＷＡＮ）などのコンピュータネットワークを介して中央サーバ１０２と通信することができる。クライアントサーバ１０４は、様々なコマンド、要求、及びファイル（例えば、パッケージファイル、コードパッケージなど）を中央サーバ１０２と往復して送受信することができる。Ｎの受信の管理、及び／又は完全なコードパッケージ１０６及び完全なコクライアントサーバ１０４は、クライアントデバイスの管理運営、完全なコードパッケージ１０６及び不完全なコードパッケージ１０８−１、１０８−２．．．１０８−Ｎの送信の要求の管理、完全なコードパッケージ１０６及び不完全なコードパッケージ１０８−１．．．１０８−ードパッケージバリアントのデバイスへの分配の管理を行うクライアントデバイス管理ツールを含みうる。
【００１３】
システム１００は、完全なコードパッケージ１０６及び不完全なコードパッケージ１０８−１．．．１０８−Ｎをビルドする開発環境１１０の構成要素を備えることができる。中央サーバ１０２は、完全なコードパッケージ１０６及び不完全なコードパッケージ１０８−１．．．１０８−Ｎをビルドする開発環境１１０の構成要素を備えることができる。中央サーバ１０２は、完全なコードパッケージ１０６及び不完全なコードパッケージ１０８−１．．．１０８−Ｎをビルドする開発環境１１０に関連した個別のコンピューティングシステムに対してデータを送受信することができる。開発環境１１０は、完全なコードパッケージ１０６及び不完全なコードパッケージ１０８−１．．．１０８−Ｎのパッケージファイル構成要素をビルドするコンピューティング構成要素を備えることができる。上記で説明したように、コードパッケージは、ファームウェア更新に対応する複数のパッケージファイルを含みうる。開発環境１１０は、これらのパッケージファイルのコードイメージをビルドするコンピューティング構成要素を備えることができる。
【００１４】
システム１００は、コードパッケージの第１の部分の複数のバリアントを生成する後処理構成要素を備えることができる。中央サーバ１０２は、後処理構成要素も備えることができる。中央サーバ１０２は、後処理構成要素に関連した個別のコンピューティングシステムに対してデータを送受信することができる。例えば、後処理構成要素は、コードパッケージの第１の部分の複数のバリアントを生成する後処理ソフトウェアを含みうる。コードパッケージの第１の部分は、コードパッケージのオペレーティングシステムファームウェアバンドル部分に対応するパッケージファイル（例えば、ＯＳパッケージ）でありうる。例えば、コードパッケージが、Ｗｉｎｄｏｗｓ  ＣＥを動作させるデバイスを対象としている場合、第１の部分は、Ｗｉｎｄｏｗｓ  ＣＥオペレーティングシステムファームウェアパッケージファイルでありうる。
【００１５】
後処理構成要素は、ビルドプロセス中にＯＳパッケージに対して処理を行うことができる。後処理構成要素は、ＯＳパッケージファイルを処理して、ＯＳパッケージファイルの複数のバリアントを生成することができる。コードパッケージの第１の部分のバリアントは、第１の部分のバイナリコードバリアントとすることができる。例えば、バリアントは、ＯＳパッケージファイルと異なるとともに互いに異なるバイナリコードを有するＯＳパッケージバリアントでありうる。第１の部分及び第１の部分のバリアントは、バイナリコードバリアントであるにもかかわらず、クライアントデバイス上でのそれらの実行の最終効果に関して機能的に同等とすることができる。
【００１６】
コードパッケージの第１の部分のバリアントは、オリジナルの第１の部分を処理することによって生成することができる。例えば、オリジナルのＯＳパッケージファイルをビルドすることができる。このＯＳパッケージファイルのバリアントは、オリジナルのＯＳパッケージファイル内のライブラリ（例えば、動的リンクライブラリブロック）、機能ブロック、及び／又はサブ機能ブロックのランダム化によって生成することができる。複数のバリアントの各バリアントは、機能的に同等であるが、複数のバリアントの他のバリアントと異なるバイナリコードを含むバイナリコードバリアントとすることができる。
【００１７】
第１の部分と複数のバリアントとの間のコード変異性（code variability）及び第１の部分の複数のバリアント間のコード変異性は、コードパッケージのセキュリティ強度を改善することができる。例えば、第１の部分の１つのバリアントを対象にして成功したコードインジェクション攻撃は、異なるバイナリコードイメージを有する別のバリアントに対して成功する可能性は極めて低い。
【００１８】
第１の部分のバリアントは、不完全なコードパッケージ１０８−１．．．１０８−Ｎとして利用することができる。不完全なコードパッケージ１０８−１．．．１０８−Ｎは、ＯＳパッケージのバリアントなどの第１の部分バリアントを含みうる。不完全なコードパッケージ１０８−１．．．１０８−Ｎは、完全なコードパッケージ１０６に含まれる他のパッケージファイルなどの、完全なコードパッケージ１０６に存在する他の部分を除外することができる。不完全なコードパッケージ１０８−１．．．１０８−Ｎは、ファームウェア更新のＯＳパッケージファイルのバイナリコードバリアントに限定することができる。
【００１９】
システム１００は、コードパッケージの異なるデジタル署名を作成するデジタル署名環境１１２を備えることができる。デジタル署名環境１１２は、中央サーバとは別のサーバ上に配置することができ、制御された環境において保守することができる。デジタル署名環境１１２は、完全なコードパッケージ１０６の異なるデジタル署名を作成するのに利用することができる。ソフトウェアコードイメージ及び／又はファームウェアコードイメージに関するデジタル署名は、コードイメージに不正変更を加えることを防止することができ、創作者によってビルドされた真正なコードイメージとしてソフトウェアコードイメージ及び／又はファームウェアコードイメージを認証することを可能にすることができる。デジタル署名を作成することは、秘密鍵を含むハードウェアセキュリティモジュールを用いて、完全なコードパッケージ１０６を処理することを含みうる。ハッシュを、完全なコードパッケージ１０６及び／又はコードパッケージ１０６のパッケージファイル構成要素に関して計算することができる。秘密鍵は、このハッシュに基づいてデジタル署名値を計算するのに用いることができる。そして、結果として得られたデジタル署名は、完全なコードパッケージ１０６に付加する（appended：アペンドする）ことができる（例えば、クライアントサーバにおいて付加することができる）。その結果、完全なコードパッケージ１０６は、複数のパッケージファイル及び付加されたデジタル署名を含みうる。
【００２０】
デジタル署名環境１１２は、完全なコードパッケージ１０６において利用されるのと同じ第２の部分を用いて、コードパッケージの第１の部分の複数のバリアントの各バリアントについて異なるデジタル署名を作成するのに利用することができる。コードパッケージの第２の部分は、第１の部分を除外したコードパッケージ１０６の部分を含みうる。例えば、第２の部分は、第１の部分バリアントを生成する後処理ソフトウェアによって処理されたＯＳパッケージファイル以外の完全なコードパッケージ１０６のパッケージファイルを含みうる。完全なコードパッケージ１０６の第２の部分は、完全なコードパッケージ１０６に付加されたデジタル署名を除外することができる。
【００２１】
デジタル署名環境１１２は、秘密鍵を含むハードウェアセキュリティモジュールを用いて、完全なコードパッケージ１０６の第１の部分バリアント及び第２の部分を処理することによって第１の部分バリアントのそれぞれのデジタル署名を作成することができる。ハッシュを、コードパッケージ１０６及び／又はそのパッケージファイルの第１の部分バリアント及び第２の部分に関して計算することができる。秘密鍵は、このハッシュに基づいてデジタル署名値を計算するのに用いることができる。そして、結果として得られたデジタル署名は、対応する不完全なコードパッケージ１０８−１．．．１０８−Ｎに付加することができる。不完全なコードパッケージ１０８−１．．．１０８−Ｎは、完全なコードパッケージ１０６の第１の部分のバリアントと、不完全なコードパッケージ１０８−１．．．１０８−Ｎに付加された対応するデジタル署名と含みうるが、不完全なコードパッケージ１０８−１．．．１０８−Ｎは、第１の部分のバリアント及び第２の部分に関して計算されたハッシュに基づいている付加されたデジタル署名を含むにもかかわらず、完全なコードパッケージ１０６の第２の部分を除外することができる。
【００２２】
中央サーバ１０２は、ネットワークにわたってファイルをクライアントサーバ１０４に送信することができる。例えば、中央サーバ１０２は、完全なコードパッケージ１０６をクライアントサーバ１０４に送信することができる。完全なコードパッケージ１０６を送信することは、様々なパッケージファイルを含むファームウェアコードイメージを送信することを含みうる。完全なコードパッケージ１０６を送信することは、コードパッケージの第１の部分の複数のバリアントのうちの１つのバリアントを送信することを含みうる。例えば、完全なコードパッケージ１０６を送信することは、ビルドプロセス中にビルドされたオリジナルの第１の部分でありかつ他の第１の部分バリアントの基礎であるコードパッケージの第１の部分の複数のバリアントのうちの上記１つのバリアントを送信することを含みうる。第１の部分の複数のバリアントのうちの上記１つのバリアントを送信することは、ＯＳパッケージファイルなどのパッケージファイルを送信することを含みうる。
【００２３】
完全なコードパッケージ１０６を送信することは、コードパッケージの第２の部分を送信することを含みうる。第２の部分を送信することは、第１の部分以外のファームウェア更新の部分を送信することを含みうる。第２の部分を送信することは、第１の部分バリアントとともに加えられると、ファームウェア更新リリース全体を構成する残りのパッケージファイルを送信することを含みうる。例えば、第２の部分を送信することは、ＯＳパッケージファイルとともに、クライアントデバイスのファームウェア更新リリースに関連したパッケージファイルの全体を構成するＯＳパッケージファイル以外のパッケージファイルを送信することを含みうる。
【００２４】
完全なコードパッケージ１０６を送信することは、コードパッケージの第１の部分及び第２の部分に対応するデジタル署名を送信することを含みうる。例えば、デジタル署名を送信することは、完全なコードパッケージ１０６の第１の部分及び第２の部分に関して計算されたハッシュからのデジタル署名を送信することを含みうる。
【００２５】
中央サーバ１０２は、不完全なコードパッケージ１０８−１．．．１０８−Ｎをクライアントサーバ１０４に送信することができる。不完全なコードパッケージ１０８−１．．．１０８−Ｎを送信することは、コードパッケージの第１の部分の複数のバリアントの残余を送信することを含みうる。コードパッケージの第１の部分の複数のバリアントの残余を送信することは、オリジナルのＯＳパッケージファイルのバイナリバリアントを生成する後処理を受けたオリジナルのＯＳパッケージファイル以外のＯＳパッケージファイルのバイナリコードバリアントを送信することを含みうる。例えば、中央サーバ１０２は、完全なコードパッケージ１６０に組み込まれることになるオリジナルのＯＳパッケージファイルをビルドすることができる。加えて、中央サーバは、オリジナルのＯＳパッケージファイルの３つのバイナリコードバリアントを生成することができる。これらの３つのバイナリコードバリアントは、３つの不完全なコードパッケージ１０８−１．．．１０８−Ｎを作成するのに利用される。そのような例では、コードパッケージの第１の部分の複数のバリアントの残余を送信することは、オリジナルのＯＳパッケージファイルの３つのバイナリコードバリアントを送信することを含みうる。
【００２６】
加えて、不完全なコードパッケージ１０８−１．．．１０８−Ｎをクライアントサーバ１０４に送信することは、複数のバリアントの残余のそれぞれのデジタル署名を送信することを含みうる。例えば、不完全なコードパッケージ１０８−１．．．１０８−Ｎを送信することは、第１の部分の特定のバリアントに関連した不完全な特定のコードパッケージに付加された、この特定のバリアントに対応するデジタル署名を送信することを含みうる。
【００２７】
不完全なコードパッケージ１０８−１．．．１０８−Ｎを送信することは、コードパッケージの第２の部分を有しないコードパッケージの第１の部分の複数のバリアントの残余と、それらの複数のバリアントの残余のそれぞれのデジタル署名とを送信することを含みうる。例えば、不完全なコードパッケージ１０８−１．．．１０８−Ｎを送信することは、ファームウェア更新の残りの非ＯＳパッケージファイルを含めずに、ＯＳパッケージファイルバリアントと、ＯＳパッケージファイルバリアント及びファームウェア更新の残りの非ＯＳパッケージファイルから計算されたハッシュに基づくそれらの対応するデジタル署名とを送信することを含みうる。したがって、不完全なコードパッケージ１０８−１．．．１０８−Ｎは、完全なコードパッケージ１０６よりも小さなものでありうる。なぜならば、完全なコードパッケージ１０６は、ファームウェア更新の残りの非ＯＳパッケージファイルを含みうるからである。
【００２８】
クライアントサーバ１０４は、完全なコードパッケージ１０６及び／又は不完全なコードパッケージ１０８−１．．．１０８−Ｎを受信することができる。クライアントサーバ１０４は、完全なコードパッケージ１０６及び複数の不完全なコードパッケージ１０８−１．．．１０８−Ｎを利用して複数の完全なコードパッケージバリアントを生成することができる。クライアントサーバ１０４は、複数の完全なコードパッケージバリアントをクライアントデバイスにインストールすることができる。複数のクライアントデバイスのうちの、クライアントサーバ１０４によって管理されるクライアントデバイスのそれぞれは、コードパッケージの同じ第２の部分と、コードパッケージの第１の部分の複数のバリアントのうちの異なるバリアントとを含む完全なコードパッケージバリアントをクライアントサーバ１０４から受信することができる。
【００２９】
図２は、本開示による、コードパッケージバリアントの一例示のシステム２２０のブロック図である。システム２２０は、図１に示すシステム１００と同じものとすることもできるし、異なるものとすることもできる。システム２２０は、少なくとも１つのリモートシステムと通信することが可能な少なくとも１つのコンピューティングデバイスを備えることができる。図２の例では、システム２２０は、プロセッサ２２２及びコンピュータ可読媒体２２４を備える。以下の説明は、単一のプロセッサ及び単一のコンピュータ可読媒体に言及するが、これらの説明は、複数のプロセッサ及びコンピュータ可読媒体を有するシステムにも当てはまり得る。そのような例では、命令を複数のコンピュータ可読媒体にわたって分散（例えば、記憶）することができ、命令を複数のプロセッサにわたって分散（例えば、複数のプロセッサによって実行）することができる。
【００３０】
プロセッサ２２２は、中央処理装置（ＣＰＵ）、マイクロプロセッサ、及び／又はコンピュータ可読媒体２２４に記憶された命令の取り出し及び実行に適した他のハードウェアデバイスでありうる。図２に示す特定の例では、プロセッサ２２２は、コードパッケージバリアントを送信する命令２２６、２２８及び２３０を、受信、決定及び送信することができる。命令の取り出し及び実行に代えて又はこれらに加えて、プロセッサ２２２は、コンピュータ可読媒体２２４内の命令の機能を実行する或る数の電子構成要素を備える電子回路を備えることができる。本明細書において説明及び図示する実行可能命令の表現（例えば、ボックス）に関して、実行可能命令及び／又は電子回路の一部又は全ては、特定のボックス内に含めることができ、及び／又は、図示した異なるボックス若しくは図示しない異なるボックスに含めることができることが理解されるであろう。
【００３１】
コンピュータ可読媒体２２４は、実行可能命令を記憶する任意の電子記憶デバイス、磁気記憶デバイス、光記憶デバイス、又は他の物理記憶デバイスとすることができる。したがって、コンピュータ可読媒体２２４は、例えば、ランダムアクセスメモリ（ＲＡＭ）、電気的消去可能プログラマブルリードオンリーメモリ（ＥＥＰＲＯＭ）、記憶ドライブ、光ディスクなどでありうる。コンピュータ可読媒体２２４は、図２に示すように、システム２２０内に配置することができる。この状況では、実行可能命令は、システム２２０上に「インストール」することができる。加えて及び／又は代替的に、コンピュータ可読媒体２２４は、例えば、システム２２０がポータブル／外部／リモート記憶媒体から命令をダウンロードすることを可能にするポータブル記憶媒体、外部記憶媒体又はリモート記憶媒体とすることができる。この状況では、実行可能命令は、「インストールパッケージ」の一部とすることができる。本明細書において説明するように、コンピュータ可読媒体２２４は、宛先マーク（destination marks）とともに、スキャンする実行可能命令を用いてコード化することができる。
【００３２】
図２を参照すると、完全なコードパッケージ命令２２６は、プロセッサ（例えば、２２２）によって実行されると、第１の部分と、第２の部分と、完全なコードパッケージに対応するデジタル署名とを含む当該完全なコードパッケージをシステム２２０に受信させることができる。完全なコードパッケージは、クライアントサーバにおいて受信することができ、中央サーバから受信することができる。完全なコードパッケージは、クライアントサーバによって管理される複数のデバイスのファームウェア更新及び／又はソフトウェア更新を含みうる。完全なコードパッケージは、累積することでファームウェア更新及び／又はソフトウェア更新を構成する複数のパッケージファイルを含みうる。
【００３３】
完全なコードパッケージは、少なくとも２つの部分から構成することができる。第１の部分は、バイナリコードバリエーションの導入のターゲットとされる特定のパッケージファイルを含みうる。例えば、第１の部分は、ターゲットとされるクライアントデバイス（例えば、特定のタイプのクライアントデバイス、クライアントデバイスモデル、特定のソフトウェアを実行しているクライアントデバイスなど）のオペレーティングシステムに関連したＯＳパッケージファイルでありうる。第１の部分は、オペレーティングシステム、デバイスドライバ、カーネルライブラリ、及び／又はターゲットとされるクライアントデバイスのファームウェアの他の基礎的部分を含みうる。
【００３４】
第２の部分は、バイナリコードバリエーションの導入のターゲットとされる特定のパッケージファイル以外のパッケージファイルを含みうる。例えば、第２の部分は、アプリケーションコード、接続性／ネットワーキングファームウェア、エンジンファームウェア、及び／又は他のクライアントデバイス構成要素にそれぞれ関連した複数のパッケージファイルでありうる。第２の部分は、ファームウェア更新リリースを構成するＯＳパッケージファイル以外の残りのパッケージファイルを含みうる。
【００３５】
不完全なコードパッケージ命令２２８は、プロセッサ（例えば、２２２）によって実行されると、複数の不完全なコードパッケージをシステム２２０に受信させることができる。これらの複数の不完全なコードパッケージのそれぞれは、第２の部分を伴わない第１の部分の複数のバリアントのそれぞれのバリアントと、第１の部分のバリアント及び第２の部分に対応するデジタル署名とを含む。不完全なコードパッケージは、第２の部分を含まないので、完全なコードパッケージよりも小さなものでありうる。例えば、完全なコードパッケージは、第１のデータサイズを有することができる一方、コードパッケージの第１の部分のみ及び／又はコードパッケージの第１の部分のバリアントは、第１のデータサイズのごく一部（例えば、１０％、１５％など）である第２のデータサイズのＯＳパッケージファイルでありうる。例えば、第１のデータサイズが１５０メガバイトであり、第２のデータサイズが２０メガバイトである場合、完全なコードパッケージ及び不完全なコードパッケージの１００００個の第１の部分バリアントを送信することを含むシステム２２０を利用することは、２００ギガバイトの第１の部分バリアント及び１５０メガバイトの完全なコードパッケージを送信すること及び／又は受信することを伴うことができる。これとは対照的に、同じ１００００個の第１の部分バリアントのそれぞれを第２の部分とともに送信することは、１．５テラバイトを送信すること及び／又は受信することを伴う。システム２２０は、送信時間及び／又は中央サーバ若しくはクライアントサーバ上のデータ記憶の８７パーセントの削減を生み出すことができる。
【００３６】
完全なコードパッケージバリアント命令２３０は、プロセッサ（例えば、２２２）によって実行されると、完全なコードパッケージ及び複数の不完全なコードパッケージを利用して複数の完全なコードパッケージバリアントをシステム２２０に生成させることができる。バリアント命令２３０は、プロセッサ（例えば、２２２）によって実行されると、第１の部分及び完全なコードパッケージに対応するデジタル署名を、複数の不完全なコードパッケージのうちの１つの不完全なコードパッケージと交換することによって、複数の完全なコードパッケージバリアントのうちの１つの完全なコードパッケージバリアントをシステム２２０に生成させることができる。したがって、システム２２０は、上述した交換を利用することによって、異なる第１の部分バリアントと、同じ第２の部分と、一意の異なる第１の部分バリアント及び同じ第２の部分の組み合わせに対応するデジタル署名とを有する複数の完全なコードパッケージバリアントを構築可能とすることができる。複数の完全なバリアントは、完全なコードパッケージの第２の部分を再利用し、署名及び異なる第１の部分バリアントを、複数の異なる第１の部分バリアント及び対応するデジタル署名の組み合わせのうちの別の組み合わせと反復して取り替えることによって生成することができる。上掲の例を１００００個の第１の部分バリアントについて続けると、システム２２０は、１つの完全なコードパッケージ及び１００００個の不完全なコードパッケージを利用して、１０００１個の異なる完全なコードパッケージバリアントを生成することができる。コードパッケージバリアントを構築する命令は、プリンタなどの複数のクライアントデバイスを管理するクライアントサーバ上にロードされるプロセッサ実行可能命令を含みうる。
【００３７】
バリアントインストール命令（図示せず）は、プロセッサ（例えば、２２２）によって実行されると、複数の完全なコードパッケージバリアントのクライアントデバイスへのインストールをシステム２２０に行わせることができる。例えば、クライアントサーバは、複数の完全なコードパッケージバリアントを、クライアントサーバによって管理される複数の対応するデバイスに分配することができる。これらの完全なコードパッケージバリアントは、クライアントデバイスに対する追加の変更を伴わない（例えば、クライアントデバイスに対する追加のファームウェア変更を用いない）標準的な形式でクライアントデバイス上にインストールすることができる。例えば、クライアントデバイスの観点からは、完全なコードパッケージバリアントは、インストールされて、コードパッケージバリアントの第１の部分及び第２の部分が１つのコードパッケージバリアントとして同時に受信されたかのように機能することができる。
【００３８】
図３は、本開示による、コードパッケージバリアントの一例示の方法３４０を示している。３４２において、方法３４０は、中央サーバから、複数のデバイスを管理するクライアントサーバに、完全なコードパッケージを送信することを含みうる。この完全なコードパッケージは、第１の部分と、第２の部分と、完全なコードパッケージに対応するデジタル署名とを含みうる。
【００３９】
３４２において、方法３４０は、中央サーバから、複数のデバイスを管理するクライアントサーバに、複数の不完全なコードパッケージバリアントを送信することを更に含みうる。これらの複数の不完全なコードパッケージバリアントの各不完全なコードパッケージバリアントは、第２の部分を伴わない第１の部分の複数のバリアントのそれぞれのバリアントと、第１の部分の複数のバリアントのうちのこのバリアント及び第２の部分に対応するデジタル署名とを含みうる。
【００４０】
これらの完全なコードパッケージ及び複数の不完全なコードパッケージバリアントの送信は、クライアントサーバによって管理される複数のデバイスに対するファームウェア更新の要求を中央サーバにおいて受信することに応答して実行することができる。例えば、クライアントサーバは、当該クライアントサーバが管理しているクライアントデバイスに対するファームウェア更新の要求を中央サーバに送信することができる。この要求に基づいてクライアントサーバに送信する不完全なコードパッケージの量は、中央サーバにおいて決定することができる。中央サーバは、要求を受信すると、完全なコードパッケージ及び不完全なコードパッケージをクライアントサーバに送信することができる。
【００４１】
３４４において、方法３４０は、クライアントサーバにおいて、複数の完全なコードパッケージバリアントを構築することを含むことができ、これらの複数の完全なコードパッケージバリアントの各完全なコードパッケージバリアントは、異なる不完全なコードパッケージバリアントと、完全なコードパッケージからの第２の部分とを含む。異なる不完全なコードパッケージバリアントは、機能的に同等であるファームウェア更新のＯＳパッケージファイルのバイナリコードバリアントを含みうる。第２の部分は、ファームウェア更新の一部であるＯＳパッケージファイル以外の複数のパッケージファイルを含みうる。不完全なコードパッケージバリアントを、対応するデジタル署名とともに、完全なコードパッケージに存在する第１の部分及びデジタル署名に反復して置き換えることができる。
【００４２】
３４６において、方法３４０は、複数のデバイスにわたって複数の完全なコードパッケージバリアントをインストールすることを含みうる。複数の完全なコードパッケージバリアントをインストールすることは、異なるバイナリコードイメージを有する機能的に同等の完全なコードパッケージを、クライアントサーバによって管理される同じモデルのクライアントデバイスにわたってインストールすることを含みうる。
【００４３】
本開示の上記詳細な説明では、本開示の一部をなす添付図面への言及がなされている。添付図面には、例示として、本開示の例をどのように実施することができるのかが示されている。これらの例は、当業者が本開示の例を実施することができるように十分詳細に説明されており、他の例を利用することができること、並びに、本開示の範囲から逸脱することなく、プロセスの変更、電気的な変更、及び／又は構造的な変更を行うことができることが理解されるであろう。
【００４４】
本開示における図は、番号付けの慣例に従っており、最初の桁は図面の図番に対応し、残りの桁は図面における要素又は構成要素を特定する。本開示における様々な図に示す要素は、本開示の或る数の追加例を提供するために追加、交換、及び／又削除することができる。加えて、図に提供された要素の大きさ及び相対縮尺は、本開示の例を示すことを意図したものであり、限定的な意味に解釈されるべきでない。特に図面における参照符号に関して本明細書において用いられるような指示子「Ｎ」は、そのような指示子が付された或る数の特定の特徴部を、本開示の例を用いて含めることができることを示している。指示子は、同じ数又は異なる数の特定の特徴部を表すことができる。さらに、本明細書において用いられるような「或る数」の要素及び／又は特徴部は、そのような要素及び／又は特徴部のうちの１つ以上を指すことができる。
【００４５】
本明細書において用いられるような「ロジック」は、本明細書において説明した特定の動作及び／又は機能などを実行する代替的な又は追加の処理リソースであり、この処理リソースは、メモリに記憶されてプロセッサによって実行可能なコンピュータ実行可能命令、例えば、ソフトウェア、ファームウェアなどと対照的なハードウェア、例えば、様々な形態のトランジスタロジック、特定用途向け集積回路（ＡＳＩＣ）などを含む。
【図１】
2019522834.tif 000003
【図２】
2019522834.tif 000004
【図３】
2019522834.tif 000005
【国際調査報告】
2019522834.tif 000006