(57)【要約】CADファイルやSTLファイルのような３Dオブジェトの３Dファイルがそのまま製造機械に送られずにセキュアなシステム内に保管される仕組みを持った、数値制御製造システムにおけるセキュア・ストリーミングの方法。代わりに、製造機械を制御する命令（例えばG-codes）だけが、製造機械にストリーミングされる。命令はセキュリティで保護されており、指定した製造機械のみが利用できる。このために命令セットをコード化できるようになっている：例えばセキュアなサーバ上でサーバ・ハッシュ・テーブルを使ってハッシュ化し、製造機械には、ハッシュ化された命令を製造機械の操作命令に復元するためにサーバのハッシュ・テーブルと疎同期されたローカル・ルックアップ・ハッシュ・テーブルが準備される。
2016513383.tif 000002
【特許請求の範囲】
【請求項１】
ストリーミング・サーバとそのストリーミング・サーバに通信チャネルを通じて接続する数値制御製造機械からなる安全な製造システムにおけるストリーミング方法であって、その方法がストリーミング・サーバに前記製造機械で製造する３Dオブジェクトの３Dモデルを供給することからなることを特徴とし、さらにその方法は、前記ストリーミング・サーバ上で、前記製造機械を操作するための製造機械に特異の命令セットに前記３Dモデルを変換し、前記命令セットに暗号ハッシュ関数を使ってハッシュ化命令セットを、前記命令セットに曖昧化関数を使って曖昧化命令セットを、前記命令セットに算術的コード化により、デジタル指紋、チェックサム計算、ハッシュ値計算、デジタルDNAを計算する、当該命令セットを暗号化する、などから選択した、少なくともひとつのプロセスを同時ないしは逐次的に応用してコード化された命令セットに前記３Dモデルを変換すること、そして前記通信チャネルを通じて前記製造機械に前記命令セットを出力することから構成される。
【請求項２】
前記ストリーミング・サーバ上にサーバ・ハッシュ・テーブルを置き、前記サーバ・ハッシュ・テーブルを使って前記命令セットをハッシュ化命令セットにハッシュ化し、そして前記ハッシュ化命令セットを前記通信チャネルを通じて前記製造機にハッシュ化命令セットのストリームとして出力する請求範囲１の方法。
【請求項３】
前記ハッシュ化ストリームを受信した製造機械上で、前記製造機械上で前記サーバ・ハッシュ・テーブルに対応してローカル・ハッシュ・テーブルを計算し、前記ハッシュ化ストリームを前記ローカル・ハッシュ・テーブルを使って命令ストリームに変換し、そして前記の変換された命令ストリームを製造機械の操作部を操作する為に出力する請求範囲２の方法。
【請求項４】
前述のハッシュ化中に、前記ハッシュ・テーブルを繰り返して生成するハッシュ化と、事前に決められたアルゴリズムによって前記ハッシュ・ストリームを前記の変換中に前記ローカル・ハッシュ・テーブルを繰り返し再生することで構成される請求範囲２から３の方法。
【請求項５】
前記命令セットの分割による命令セット分割部の生成、前記命令セットの分割部それぞれの曖昧化、前記曖昧化された分割部それぞれのハッシュ化、ストリーミング・サーバから製造機械に前記通信チャネルを通じて個別に前記のハッシュ化された曖昧化分割部のストリーミング、ストリーミングされた分割部を命令セットの分割部に変換しそして前記分割命令セットを製造機械の制御のために命令ストリームと統合することから構成される請求範囲１の方法。
【請求項６】
前記３Dモデルの前記供給が、ストリーミング・サーバと３Dモデルの供給元との間の通信チャネル上にセキュリティで保護された接続を設定し、前記３Dモデルを３Dモデルの供給元でハッシュ化し、前記ハッシュ化３Dモデルを前記ストリーミング・サーバに送信し、そして前記製造機械に向かって前記ハッシュ化３Dモデルを再ハッシュ化して送信することからなる請求範囲１から５の方法。
【請求項７】
前記３Dモデルのストリーミングの各インスタンスに対して、前記ストリーミング・サーバ上に仮想マシンを生成し、そして前記３Dモデルをストリーミングする前記インスタンスが完了した後で、前記仮想マシンを破壊することからなる請求範囲１から６の方法。
【請求項８】
前記仮想マシンを破壊して新しい仮想マシン・インスタンスを生成し、その結果ストリーミングの各インスタンスが一台以上の仮想マシンによって実行されることからなる請求範囲７の方法。
【請求項９】
ストリーミングの各インスタンスに対して一台以上の仮想マシンを生成し、前記３Dモデルの異なる部分が異なる仮想マシンによってストリーミングされることからなる請求範囲７から８の方法。
【請求項１０】
コンピュータ・デバイスからなるシステムにおいて、３Dモデルの供給元、通信チャネルを通じて前記ストリーミング・サーバに接続された前記コンピュータ・デバイス、前記３Dモデルを前記ストリーミング・サーバに供給するために前記コンピュータ・デバイス上で第一の仮想マシンを生成する方法、前記第一の仮想マシンで前記３Dモデルをハッシュ化し、前記ストリーミング・サーバ上に安全な仮想マシン・インスタンスを生成し、その安全な仮想マシン・インスタンスがハッシュ化された３Dモデルを受信し、そのハッシュ化３Dモデルをメモリ内のハッシュ・テーブルにストアし、前記の安全な仮想マシン・インスタンスをハッシュ化された仮想マシン・インスタンス・イメージ内にストアし、そのイメージが製造機械に接続した第二のコンピュータ・デバイスに送信され、その第二のコンピュータ・デバイス上で前記の安全な仮想マシン・インスタンスが実行され、そして３Dモデルの前記ハッシュが前記製造機械に局所的にストリーミングされることからなる請求範囲１から９の方法。
【請求項１１】
前記の安全な製造システムが複数台のストリーミング・サーバにおいて、各ストリーミング・サーバはインターネットに接続され、そして一台以上のストリーミング・サーバが相互連携することによって安全なストリーミングのための前記のステップが実行されることからなる請求範囲１から１０の方法。
【請求項１２】
前記ストリーミング・サーバそれぞれにおいて、製造対象となる前記３Dモデルの異なる部分をストリーミングすることからなる請求範囲１１の方法。
【請求項１３】
製造対象の３Dオブジェクトを表現する３Dモデルを受信し、前記３Dモデルを製造命令セットに変換するための変換モジュール、前記製造命令セットをハッシュ化命令セットに曖昧化・ハッシュ化するための曖昧化・ハッシュ化モジュール、前記ハッシュ化モジュールにハッシュ・テーブルを供給するためのダイナミック・ハッシュ・テーブル・データベース、そして正確な時間ベースの擬似番号生成モジュールから成るストリーミング・サーバ、通信チャネルを通じて前記ストリーミング・サーバに接続した３Dモデルの供給元、そして通信チャネルを通じて前記ストリーミング・サーバに接続した製造機械、操作モジュールから成るその製造機械、前記ハッシュ化命令セットの変換用ハッシュ・ルックアップ・モジュール、ハッシュ・ルックアップ・モジュールにハッシュ・テーブルを供給するダイナミック・ローカル・ハッシュ・テーブル・デーダベース、そして製造機械のハッシュ・テーブルを前記ストリーミング・サーバ上のハッシュ・テーブルに同期させるための正確な時間ベースの擬似番号生成モジュールから成る、セキュリティで保護された数値制御製造システム。
【請求項１４】
前記ストリーミング・サーバそれぞれがインターネットに接続し、相互に連携して前記のセキュア・ストリーミングを実現する複数台のストリーミング・サーバで構成されることからなる請求範囲１３の方法。
【請求項１５】
セキュアなモジュールを持ち、そのセキュア・モジュールを使ってクラウドに接続された３Dプリンタと、フロント・エンドアプリケーション・プログラミング・インタフェースFront End API Fとバックエンド・プログラミング・インタフェースBack End API Bからなるクラウド内に設置されたマスタ・サーバ、そこには３Dモデルを供給する少なくともひとつのマーケットプレースがAPI F経由でマスタ・サーバに接続し、システムはさらに３Dモデルのためのセキュア・ストレージを持ち、前記３DモデルはAPI B経由クラウド内のセキュア・ストレージにアップロードでき、マスタ・サーバは３Dオブジェクトのプリント・リクエストを受信でき、マスタ・サーバ内で３Dオブジェクトのプリント許可をチェックし、その３Dオブジェクトをプリントするための仮想マシンを生成し、その仮想マシンが前記マスタ・サーバにチェックインし、その仮想マシンが前記３Dプリンタを認証し、その仮想マシンがセキュア・ストレージから３Dモデルを検索し、その仮想マシンが命令を計算して３Dプリンタにストリーミングし、その仮想マシンがプリント作業の進行状況をモニタし、そしてプリント作業が完了するとその仮想マシンが破壊されることからなるセキュア３Dプリンティングのシステム。
【請求項１６】
３Dオブジェクトのプリント・リクエストを受信し、マスタ・サーバで３Dオブジェクトのプリント許可をチェックし、前記３Dオブジェクトをプリントするための仮想マシンを生成し、その仮想マシンがマスタ・サーバにチェックインし、その仮想マシンにおいて前記３Dプリンタを認証し、その仮想マシンがセキュア・ストレージから３Dモデルを検索し、その仮想マシンが３Dプリンタ用の命令を計算してストリーミングし、その仮想マシンがプリント作業をモニタし、プリントが完了した時点で仮想マシンを破壊するステップからなる、３Dプリント作業のためのセキュア・ストリーミングの方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は数値制御製造システムに関するもので、3Dプリント装置を含むアディティブ（加法）製造方法とサブトラクティブ（減法）製造方法による迅速な（ラピッド）製造と試作（プロトタイピング）の機器とシステム、安全なストリーミング・サーバから製造機械へ接続チャネルを経由して製造機械操作のための命令群を安全（セキュア）にストリーミングする方法であって、具体的には、このようなシステムにおけるデータのストリーミングに使われる手法とプロトコルに関係している。
【背景技術】
【０００２】
ラピッド製造及びラピッド・プロトタイピングは、CADデータから物理的な物体（オブジェクト）を自動的に構築する比較的新しい分野の技術である。通常これらの方法は、3Dプリンタのようなアディティブ製造技術を用いている。
【０００３】
3Dプリンティングまたはアディティブ製造（AM）とは、三次元モデル・データから材料を、通常一層ずつ付加しながらオブジェクトを作る技術で、材料を除去しながら加工する伝統的な切削加工技術に代表される、サブトラクティブ製造技術に対比されるプロセスである。ラピッド・プロトタイピングやラピッド製造向けなど産業用に幾つかの技術が使われており、家庭用や趣味向けにも急速に利用が広まる傾向にある。3Dプリンティングは、過去に２Dプリンティングがそうであったように、利用が拡大している。
【０００４】
よく知られているのは、例えば伝統的な2Dプリント環境で安全なプリント方法を公表したWO2004/006087に見られるように、PostScriptファイルに代表されるPDLプリント・ファイルとしてのプリントジョブは、プリンタが作り出す暗号キーで暗号化され、プリンタに送られて復号化され、プリントジョブとなってプリントされる。この方法は、ネットワーク内の他のデバイスがプリントジョブを妨害するのを防ぐには有効であるが、プリンタ自身の誤作動によるプリントジョブの間違った使用を防ぐことはできないことから、プリントされる書類の所有者の権利が保護されているとは言えない。
【０００５】
3Dプリンティングに3Dスキャニングを組み合わせると、3Dコピーが可能となる、すなわち、先ずある物体（オブジェクト）を3Dスキャナでスキャンして３Dオブジェクトのデジタル3Dモデルを作り、次いで3Dオブジェクトの3Dコピーを作ると、デジタル2Dコピーと同じようなプロセスでオブジェクトを複製することができる。
【０００６】
2Dプリンティングとコピーの組み合わせは、著作権法或いは他の著作権保護の仕組みで保護された資料のコピー作成に使われていることは、周知の事実である。コピーを禁止する技術として、例えばウォータマーク、ホログラム、ストラップ、UV光或いはIR光などの利用があるが、著作権付の資料あるいは他の方法で保護された資料について、そのコピーや複製を制御する普遍的な技術は存在しない。
【０００７】
3Dプリンティングとそのコピーの場合、この問題はより深刻になる。例えば、3Dオブジェクトは、それぞれ独立した知的所有権を複数持つ可能性がある：著作権（彫刻、置物、建築物など）、工業デザイン（米国ではデザイン特許：新しい形の花瓶や椅子）、3D商標、特許（米国では発明特許）あるいはユーティリティ3Dモデル、あるいは個人の権利（個人的な好み）などがある。
著作権法には、場合によって販売目的ではない個人使用に限って、コピーを許可するなど公平な使用に関する条項が存在するが（デザイン特許や発明特許の条項に類似）、知的財産権によって保護された3Dオブジェクトのコピーは、権利保有者からの明示的な事前許可（ライセンス）なしでのビジネスへの利用を目的とした場合には、禁止されている。
【０００８】
製造管理システムというタイトルで知られるJungのUS8286236では、オブジェクトの製造権を管理する安全な製造方法を紹介している、この方法では製造機械がひとつのオブジェクトを製造する為の少なくともひとつのオブジェクト・データ・ファイルを確定すること、オブジェクト・データ・ファイルに承認コードが付けられていることを確認すること、承認コードは製造機械が受け取ることを予測してつくられていること、製造機械は承認コードを受け取れるように調整されていること、この結果、製造機械は承認コードが事前に設定された条件を満たす場合のみ、オブジェクト・データ・ファイルとやり取りができることになる。この場合、製造機械は、以下にあるひとつ乃至複数の製造法に対応することができる：付加製造、サブトラクティブ製造、押出成形製造、溶融製造、凝固製造、吐出製造、ダイカスト、スタンピング。このアプローチは、３Dファイルを自由にコピー・配布できる上に、一度コードが破られると配布に全く制限がなくなるので、十分な安全性があるとは言えない。
【０００９】
Within Technologies Ltd の3Dデザインと製造システムの改善というタイトルで知られるWO2012/146943によると、暗号化済みの、3Dデザインに対応した3Dプリント・ファイルの3Dプリンタにおける、三次元（3D）対象物のプリントを認証する方法を紹介している。
この方法は、以下から構成される：3Dプリンタに連携する３Dプリント・サーバから認証リクエストを受け取ること、リスエストは３Dデザイン・ファイルに付けられた固有のデザインIDと3Dプリンタを特定する固有の３DプリンタID、受信した固有の３DデザインIDと受信した３DプリンタIDが最初の関係付けに則して関係付けられること：少なくとも受信した固有のIDのひとつを使って、検証３DデザインIDと検証３DプリンタIDにアクセスし、第二の関係付けに則してふたつの検証ID同志が相互に関係付けられる；受信したIDと検証ID間の最初と二度目の関係付けを比較する；最初の関係付けが第二の関係付けに対応していれば認証信号を発生させる；認証信号に対応して受信したIDに付随した複合キーを取得する；そして複合キーを３Dプリント・サーバに送信し、３Dプリンタで当該オブジェクトのプリントを認証し、プリントさせる。この方式が、本発明に最も近い先行発明であるかも知れない。
【００１０】
よく知られているいくつかの方法は、3Dファイルの信憑性を決定する認証コードまたは識別子を、3Dファイルに付けることを基本としている。このような3Dファイルの利用は、当該３Dファイルへのアクセスやプリントの許可に対応する、ユーザの権利によって制御される。これらの手法は、3Dファイル自体の無断使用を阻止するのには適しているが、このアプローチは著作権、意匠権（デザイン権）その他知的財産権で保護されている３Dオブジェクトそのものではなく、対象が３Dファイルに置き換えられている。ファイルを変更する事は法的になんら問題なく、禁止さるべきなのは3Dオブジェクトそのものの無断複製である。
【００１１】
3Dオブジェクトに、複製に関する任意の制限付与を、ユーザや製造業者が決定できるようにすることは重要であるが、できれば3Dオブジェクトの無断複製を実際に予防する仕組みがあればより理想的である。このシナリオにでは、3Dファイルそのものが3Dオブジェクトを代替しているので、3Dファイルの無断使用を予防する方法とは言えない、すなわち既知の手法はすべて利用できないことになる。認証方法は製造装置そのものに統合されている必要があり、すなわち、各製造工程の開始前に製造装置が権利者からの許可を得るか、制限がないことを確認することになる。
【００１２】
WO2012/146943に類似の方法を使うこともできる、すなわち、すべての３Dファイルに対し、暗号化と認証コードの付加をサービスとする３Dファイル変更サービス・プロバイダ経由で受け取る方法である。しかしながら、このシステム内で送信される３Dファイルが暗号化されているとしても、コピーも保存することもでき、傍受されて、誤用が発生する可能性もある、例えばコードが解読された３Dファイルがインターネット上で公開される、あるいはファイル共有サービスによって利用できるようになるなど。したがってより安全なシステムが必要である。
【００１３】
したがって必要なのは、３Dオプジェクトが数値制御製造システムで製造されることを前提にした、３Dオブジェクトの３Dモデルに対する無断使用を予防できる安全な方法とシステムである。
【発明の概要】
【００１４】
この発明の目標は、CADファイルやSTLファイルのような３Dオブジェクトの元３Dファイルが、製造機械に送られることなく安全なシステム内に保管され、その代わりに製造機械を制御する、製造機械に特有な命令群（例えはG-codes）だけが、ストリーミング方式で送られるような方法とシステムによって実現することである。さらに、そのような命令群はセキュリィティで保護されており、特定の製造機械のみが利用できるようになっている。その製造機械には、この命令群を製造機械操作に適合するフォーマットに処理乃至は変換する仕組みが備わっている必要がある。このために、命令セットをエンコード（コード化）することがある：例えば、セキュリティで保護されたサーバが持つハッシュ・テーブルを使って、命令群をハッシュ化し、サーバのハッシュ・テーブルと、疎に同期（疎同期）した製造機械のローカル・ルックアップ・ハッシュ・テーブルが、ハッシュ化した命令群を製造機械が読める形の命令群に変換（復元）する。例を挙げると、時間やイベントもしくは動作をベースにして、疎同期させる。
【００１５】
本発明の実施形態のひとつは、通信チャネルを通じて接続されたストリーミング・サーバと数値制御製造機械から構成される、セキュリティで保護された製造システムおいて、製造機械が製造すべき３Dオブジェクトのモデル（以下３Dモデル）をストリーミング・サーバに供給し、そのサーバ上で前記３Dモデルを製造機械操作命令セットに変換し、変換された命令セットを、暗号化ハッシュ関数を使って同時または逐次的に、ひとつあるいは複数のプロセスによって、エンコードする、このエンコード・プロセスには、前記命令セットを暗号化ハッシュ関数にかけてハッシュ化命令セットを計算する、曖昧化関数を使って命令セットから曖昧化された命令を計算する、前記命令セットに数学的なコード化操作を行う、デジタル指紋技術を使う、チェックサム計算を適用する、ハッシュ値を計算する、デジタルDNAを計算する、当該命令セットをそのまま暗号化する、などがある。そして前記通信チャネルを通じて、前記命令セットが前記製造機械に出力される。
【００１６】
３Dモデルに対するセキュリティで保護されたストリーミング・アルゴリズムは、一方向性関数である；すなわち、任意のストリーミング・ブロックに対して計算容易なストリングを導き出す関数であるが、このストリングから元のブロックを生成することはできない。さらに、このストリングを変更せずに元のブロックを変更することは不可能である。その上、同じストリングに対応する二つの異なるブロックを見出すことは不可能に近い。この暗号化ハッシュ関数としては、有名なメッセージ・ダイジェスト・アルゴリズム（MD４、MD５）、セキュア・ハッシュ・アルゴリズム（SHA-1、SHA-２、SHA-３）、Skein、Keccak RadioGatun、PANAMAなど、多くが知られている。理想的な暗号化ハッシュ関数は、４つの基本特性をもつとされる：任意のメッセージに対してハッシュ値を簡単に計算できること、あるハッシュ値に対応するメッセージを生成することはほとんど不可能であること、ハッシュ値を変えずにメッセージを変更することはできないこと、一つのハッシュ値に同時に対応する二つのメッセージを見つけることは不可能に近いこと、である。
暗号化ハッシュ関数の代わりに、非暗号化関数あるいはその他の類似の特性（すなわち、すべての入力に対する計算は容易だが、ランダムに与えられた入力イメージを復元するのが難しい）を持った一方向性（不可逆性）関数を、ハッシュ化に使うことができる。一般的なハッシュ関数を使うことはできるが、一方でハッシュ化の対象となるデータの特性に応じたハッシュ関数を設計することができる（例えば、製造機械を制御する命令体系に都合よく設計するなど）。チェックサム関数、巡回冗長チェック、チェックサムとフィンガー・プリント関数の組合せもハッシュ化に使える。ハッシュ化は、非線形テーブル・ルックアップ機能を使っても実行できる。
【００１７】
他の実施形態においては、ストリーミング・サーバ上でサーバ・ハッシュ・テーブルが生成され、このハッシュ・テーブルを使って命令セットがハッシュ化されてハッシュ化命令セットになり、通信チャネルを通じて製造機械に向かってハッシュ化命令セットがストリーミングされる。製造機械サイドでは、ハッシュ・ストリームを受信し、サーバ・ハッシュ・テーブルに、疎同期（時間ベース、アクションベースなど）したローカル・ハッシュ・テーブルが、製造機械上で計算される、このローカル・ハッシュ・テーブルを使うことにより、ハッシュ・ストリームは命令ストリームに変換（復元）され、変換（復元）された命令ストリームは、製造機械の操作部の操作を実行する。
【００１８】
実施形態のひとつでは、手法は、ハッシュ化時に周期的にハッシュ・テーブルを再生し、同時に最初に取り決められた正確な時間アルゴリズムによる、あるいはストリーミング・サーバと製造機械にそれぞれ個別に決められた、動作や状況変化に対応するアルゴリズムによる、ハッシュ化ストリームの変換中に、対応するローカル・ハッシュ・テーブルを再生することにより、サーバと製造機械間での情報の送受信を行わずに実現できる。
【００１９】
実施形態のひとつでは、前記に加えて前記命令セットを分割して複数の分割された分割命令セットを作り、各分割命令セットを曖昧化し、曖昧化した分割命令セットそれぞれをハッシュ化し、ハッシュ化・曖昧化された分割命令セットを前記の通信チャネルを使ってストリーミング・サーバから製造機械に個別に送信し、ストリームしたハッシュ化・曖昧化分割命令セットを分割命令セットに変換（復元）し、その分割命令セットを製造機械制御命令ストリームに統合する。
【００２０】
実施形態のひとつでは、前記の３Dモデルに対し、ストリーミング・サーバと３Dモデル供給元の間にセキュリティで保護された通信チャネルを設定し、３Dモデル供給元で当該３Dモデルをハッシュ化し、ハッシュ化した３Dモデルを前記ストリーミング・サーバに送信し、そのハッシュ化３Dモデルをそのまま、あるいは再ハッシュ化して、前記製造機械にストリーミングする。
【００２１】
本発明のひとつの実施形態では、ストリーミングのそれぞれのインスタンスごとに、仮想マシンを生成し、破壊する。ストリーミングが完了した時点で仮想マシンを破壊することにより、サーバ・ハッシュ・テーブルが再構成されたり、再利用されたりすることを防ぐことができる。
【００２２】
実施形態のひとつでは、前記に追加する方法として、前記仮想マシンを破壊して新規の仮想マシン・インスタンスを生成することで、ストリーミングの各インスタンスを、一台以上の仮想マシンで実行することができる。
【００２３】
実施形態のひとつでは、前記に追加する方法として、各ストリーミング・インスタンスに対して、ひとつ以上の仮想マシンを生成することにより、前記３Dモデルの別個の部分をそれぞれ異なる仮想マシンでストリーミングできる。
【００２４】
実施形態のひとつでは、システムは、さらに３Dモデルの供給元を持ったコンピュータ・デバイスと、このコンピュータ・デバイスを通信チャネル経由前記ストリーミング・サーバに接続し、そしてその方法は、前記コンピュータ・デバイス上に前記３Dモデルを前記ストリーミング・サーバに供給するための最初の仮想マシンを生成し、前記３Dモデルを前記最初の仮想マシンでハッシュ化し、前記ストリーミング・サーバ上に安全な仮想マシン・インスタンスを生成し、前記安全な仮想マシンでハッシュ化した３Dモデルを受信し、前記３Dハッシュ化モデルをメモリのハッシュ・テーブルに保管し、前記の安全な仮想マシン・インスタンスをハッシュ化仮想マシン・インスタンス・イメージに具現化し、そのイメージを製造機械に繋がっている第二のコンピュータ・デバイスへ転送し、その安全仮想マシン・インスタンスを前記第二のコンピュータ・デバイス上で稼働させ、そして前記３Dモデルのハッシュを局所的に前記製造機械へストリームするステップからなる。
【００２５】
実施形態のひとつは、セキュリティで保護された製造システムが複数のストリーミング・サーバからなるものである。各ストリーミング・サーバはインターネットに接続され、前述のセキュア・ストリーミングの各ステップを、複数台のストリーミング・サーバが相互協力して実行する。前記ストリーミング・サーバはそれぞれ、製造対象である３Dモデルの異なる部分のストリーミングを担当させるよう、設定できる。
【００２６】
本発明の複数の目標は、セキュリティで保護された数値制御製造システムでも達成できる。そのシステムは、製造の対象となる３Dオブジェクトを表現する３Dモデルを受信して前記３Dモデルを製造機械命令群に変換するための変換モジュール、前記３Dモデルを製造命令セットに変換する機能と、製造命令セットをハッシュ化命令セットにするための曖昧化・ハッシュ化モジュール、そのハッシュ化モジュールのためのハッシュ・テーブルを持つダイナミック・ハッシュ・テーブル・データベース、製造機械のハッシュ・テーブルをストリーミング・サーバのハッシュ・テーブルに個々に同期させるための正確な時間ベースの疑似番号発生モジュールを持つストリーミング・サーバ；通信チャネルを通じて前記ストリーミング・サーバに接続された３Dモデルの供給元；そして通信チャネネルを通じて前記ストリーミング・サーバに接続した製造機械、その製造機械は前記ハッシュ化された命令セットの変換用ハッシュ・ルックアップ・モジュール、ハッシュ・ルックアップ・モジュールに複数のハッシュ・テーブルを供給するダイナミック・ローカル・ハッシュ・テーブル・データベースと製造機械の複数のハッシュ・テーブルを前記ストリーミング・サーバ上で使われる複数のハッシュ・テーブルにそれぞれ個別に同期させる正確な時間ベースの擬似番号発生モジュールからなる。システムは、インターネットに接続したストリーミング・サーバそれぞれが、前記の安全なストリーミングを、相互に協調し、総体として実現する複数のストリーミング・サーバから構成されることもある。
【００２７】
実施形態のひとつは、セキュアなモジュールを具備してクラウドに接続したプリンタからなる；クラウドにマスタ・サーバを置き、そのマスタ・サーバはフロントエンド・アプリケーション・プログラミング・インターフェースFront End API Fと、バックエンド用のアプリケーソン・プログラミング・インタフェースAPI Bをもつ。３Dモデルを展示するウェブ・ストアとなるマーケット・プレースは、API F経由マスタ・サーバに接続される。３Dモデルは、バックエンドでAPI Bを使ってクラウド内のセキュリティで保護されたセキュア・セキュア・ストレージ（Secure Storage）にアップロードされる。
【００２８】
システムは以下のように稼働する。複製用の３Dオブジェクトは、マーケット・プレースに展示される（本物の３Dモデル・ファイルではなく２Dイメージが好ましい）。ユーザが複製を目的にひとつの３Dオブジェクトを選択し、次いで複製に使う３Dプリンタを選ぶ（例えば、ユーザのコンピュータにUSBポートを介して接続されているもの）。ユーザからのリクエストを受け取るとマスタ・サーバは、先ず選ばれた３Dオブジェクトの複製許可条件をチェックし、次いで３Dプリンタで３Dオブジェクトを複製するための命令セットを安全にストリーミングするために仮想マシンを生成する。この仮想マシンは、選択された３Dモデルひとつを、選択されたプリンタにストリーミングするためだけに生成される。この仮想マシンのみが、ユーザが選んだ３Dモデルを保管するセキュア・ストレージへのアクセスが許可される。選択された一台のプリンタのみが関連づけられ、一台の仮想マシンにアクセスできる。３Dプリンタの仮想マシンへの接続は、以下のように行われる。３Dプリンタがネットワークに接続されると、その３Dプリンタは個人証明書を用いてマスタ・サーバに接続する。その時セキュリティで保護された通信チャネルが、３Dプリンタとマスタ・サーバ間に構築される。
【００２９】
仮想マシンが生成されると、マスタ・サーバが仮想マシンにIPアドレスとポート番号を与える。３Dプリンタには、IPアドレスとポート番号が割り当てられ、仮想マシンとの間に、例えば仮想プライベート・ネットワーク（VPN）のような安全なネットワークが構築される。接続は個人証明書が仮想マシン上の証明書とマッチした時のみ有効となる。
【００３０】
ストリーミング・プロトコルには以下の機能が含まれる：
【００３１】
承認。仮想マシンは、マスタ・サーバから３Dモデルをプリントするための、アクセス許可を得ているかどうかをチェックする。
【００３２】
ネットワーク速度チェック（仮想マシンは十分なサイズのファイルを送信して時間を計測し、ついで３Dプリンタが他のファイルを送信する）：速度が十分であれば、セキュア・ストリーミングを開始する。速度チェックは、プリント実行中にも繰り返すことができる：ネットワークに障害が発生した場合、プリントは一時中断して再開を待つ。
【００３３】
G-codeセットを、一つのブロックにハッシュ化し、そのブロックを送信する。ブロックが送信されると、仮想マシンは、マスタ・サーバに接続して、ステータス更新を行う。
【００３４】
３Dモデルが複製された後に、仮想マシンは破壊される。
【００３５】
より高い安全性を確保するために、ひとつの３Dオブジェクトのプリントに対して、複数の仮想マシンの生成が可能である。例えば、第一の仮想マシンが生成されて３Dオブジェクトの最初の部分がストリーミングされる。最初の仮想マシンはこの時点で破壊され、第二の仮想マシンが生成されて３Dオブジェクトの第二の部分がストリーミングされる、これが３Dオブジェクト全てが完了するまで続く。そして最後の仮想マシンが破壊される。
【００３６】
本発明の方法は図１０を参照。
【図面の簡単な説明】
【００３７】
【図１】図１は、今回の申請の請求範囲を説明するための例示ブロック図である。
【００３８】
【図２】図２はセキュア・ストリーミング・サーバと製造機械のストリーム・プロセス・モジュールのひとつの実施形態を表したブロック図である。
【００３９】
【図３】図３はマルチ・モード・ストリーミング・システムのブロック図である。
【００４０】
【図４】図４は本発明のひとつの実施形態における方法のフローチャートである。
【００４１】
【図５】図５は、本発明のもうひとつの実施形態における方法のフローチャートである。
【００４２】
【図６】図６は、本発明のもうひとつの実施形態における方法のフローチャートである。
【００４３】
【図７】図７は、本発明のさらにもうひとつの実施形態における方法を説明するブロック図である。
【００４４】
【図８】図８は、本発明のひとつの実施形態のシステムを表すブロック図である。
【００４５】
【図９】図９は、本発明のひとつの実施形態におけるシステムのブロック図を示す。
【００４６】
【図１０】図１０は、本発明のひとつの実施形態における方法のフロー図を示す。
【発明を実施するための形態】
【００４７】
定義
【００４８】
３Dプリンタとは、３Dデジタル・モデルから、任意の形をした三次元の固体物（オブジェクト）を作るのに適合する任意のデバイスをいう。
【００４９】
３Dプリンティングとは、あらゆる数値制御自動製造プロセスを意味する。クラウド（あるいは、コンピューティング・クラウド）は、多数のコンピューがリアルタイム性のあるコミュニケーション・ネットワーク（典型的にはインターネット）を通じて接続されているような、多種多様なコンピューティング・コンセプトを包含する。
【００５０】
本特許申請の請求範囲は、図１にある例示システムのブロック図で示されている。システムは一台あるいはそれ以上の台数のコンピューティング・デバイス１０１，１０２そして１０３が、インターネット１０８を含むコミュニケーション・チャネル１０９を通じてストリーミング・サーバ１０４に接続されている。ストリーミング・サーバは、１台あるいはそれ以上の台数の３Dプリンタなどの製造機械１０５，１０６そして１０７に、コミュニケーション・チャネル１０９を通じて接続されている。このシステムは、ストリーミング・サーバに３Dモデルを供給する３Dモデルの供給元１１０を含んで構成される。ストリーミング・サーバ１０４と複数の製造機械は、インターネットの場合はTLSやSSLなど安全なチャネルで接続されるのが好ましい。ストリーミング・サーバは、３Dモデルを製造命令セットに変換するモジュール１０４１と、その命令セットをコード化命令セットに変換するモジュール１０４２から構成される。製造機械は、ストリーミング処理モジュール（それぞれ１０５１，１０６１と１０７１）と３Dオブジェクトの製造を担当する操作モジュール（１０５２，１０６２そして１０７２がそれぞれ対応）を持つ。
【００５１】
ここで言う３Dモデルとは、CADファイル・フォーマットのファイル、STLファイルあるいは付加製造ファイル・フォーマットなど、製造の対象となる３Dオブジェクトを表すコンピュータ・モデルを指す。さらに、あらゆるイメージ・ファイル・フォーマットを含んだ３Dオブジェクトのビューを提供するひとつ乃至は複数のファイルであってもいい。
【００５２】
製造機械とは、ラピッド・プロトタイピング用の三次元付加製造機械、三次元プリンティング、二次元プリンティング、フリーフォーム作製、固体形状自由製造、光造形など、数値制御製造機械全てを意味する。製造機械としては、掘削機、フライス加工機、切削加工機、レーザ切断機、ウォータージェット切断機、プラズマ切断機、ワイヤ放電切断機、冷間、熱間を含む鍛造金属加工機、コンピュータ数値制御加工機、付加製造機、射出成型機をも含む。さらに製造機械には押出製造機、溶融製造機、凝固製造機、射出製造機、鍛造製造機、プレス加工機、そして小片材料やブロック材料から３Dオブジェクトを組み立てる組立ロボットまでを含む。
【００５３】
製造機械には、金属、木材、氷、石、ガラス、核材料、医薬品、食用物質、生物材料、細胞、化学分子、砂、セラミック材料、アルミ、シリコン、炭化物、窒化ケイ素、炭化ケイ素、アルミと窒化ケイ素、アルミ炭化ケイ素、アルミ・ジルコニウム、アルミ・窒化アルミニウムなどの金属とセラミックの複合材料があり、さらに摩擦、加熱、冷却によって材質が変化する材料を、特性に応じて製造する製造機械がある。
【００５４】
製造命令は、例えばコンピュータ言語関連でのG-codesやそれ以外の命令体系があり、数値制御に使用されるCNCプログラミング言語だけでなく、python、java、PHPその他の高レベルな言語も含んでいる。このような命令には、プリント・ヘッド、押出ヘッド他など製造機械の可動部の動作を規定するため、どこへ移動するか、どんな速度で移動するか、移動経路はどれかなどを含む、その他の製造パラメータを規定するものが含まれる。
【００５５】
通信チャネルとは、通信媒体（すなわち有線、無線）、通信プロトコル（例えばインターネット・プロトコル、Ethernetプロトコル他）、あるいは通信範囲で類別するネットワーク（例えばニア・フィールド・ネットワーク、個人的なネットワーク、LAN、peer-to-peer接続、衛星通信など）などのコンピュータ・ネットワークであって、数値制御製造機械で使われる技術で実現するものを言う。さらに仮想プライベート・ネットワーク、ピアツピア接続、あるいは衛星通信なネルも使える可能性がある。
【００５６】
図２のブロック図は、実施形態のひとつを取り上げて、ストリーム受信モジュール２０７と操作モジュール２１２からなる製造機械２１３における、ストリーミング・サーバ２０１のアーキテクチャをさらに説明している。ストリーミング・サーバ２０１は、この実施形態において、３Dモデルの供給元２０２と、３Dモデルを製造命令群に変換するモジュール２０３、製造命令を曖昧化・ハッシュ化してハッシュ化ストリームを作りだすモジュール２０４、そしてハッシュ化されたストリームをコンピュータ・ネットワークを通じて製造機械に出力するストリーミング・モジュール２０５から構成される。ハッシュ化は、正確な時間ベースの疑似番号発生モジュール２０６により管理され、ダイナミック・ハッシュ・テーブル・データベース２０７にあるハッシュ・テーブルを使って行われる。
【００５７】
ストリーミング処理モジュール２０７は、ハッシュ化されたストリームを命令ストリームに変換するハッシュ・ルックアップ・モジュール２０８で構成される。この変換は、正確な時間ベースの疑似番号発生モジュール２１０で制御され、ダイナミック・ローカル・ハッシュ・テーブル・データベース２０９を使って実行される。変換された命令のストリームは、命令解読・ストリーマ２１１を使って操作モジュールへと送られる。
【００５８】
図３のブロック図は、マルチモード・ストリーミング・システムを示す。システムは、インターネット３０４などのコンピュータ・ネットワークやコンピュータ・ネットワークに接続した製造機械３０５と数台のセキュア・３Dオブジェクト・ストリーミング・サーバ（３０１，３０２そして３０３で示す）、そして少なくとも１台の、ストリーミングの対象となる３Dモデルを供給する３Dモデル供給元３０６からなる。
【００５９】
セキュア・ストリーミング方式を具現化したひとつの実施形態を、図４のフローチャートに示した。このセキュア・ストリーミング方式は、先ず製造する３Dオブジェクトを表現する３Dモデルを供給し４００、その３Dモデルを製造機械の操作に必要なG-codesなどの命令セットに変換し４０１、ここでオプションとして前記の命令セットを曖昧化して４０２、サーバ・ハッシュ・テーブルを供給し４０３、前記命令セットをハッシュ化し４０４、そのハッシュ化した命令セットを通信チャネルを通じて製造機械にストリーミングする４０５、というステップを踏む。製造機械サイドにおいては、ハッシュ化された命令セットを受信し４０６、前記製造機械上でのサーバ・ハッシュ・テーブルに対応して粗に同期したローカル・ハッシュ・テーブルを計算し４０７、ハッシュ化されたストリームを、前記ローカル・ハッシュ・テーブルを使って命令ストリームに変換し４０８、必要に応じて命令セットを非曖昧化し４０９、変換された命令ストリームを使って製造機械の操作部を制御する４１０といったステップからなる方法となる。
【００６０】
図５のフロー図は、本発明に一部修正を加えた実施形態を示す。安全なストリーミングの方法は、製造対象の３Dオブジェクトを表現する３Dモデルを供給し５００、３Dモデルをストリーミングするための仮想マシンを生成し５０１、製造機械を操作するためのG-codesのような命令セットに３Dモデルを変換し５０２、さらにオプションとして命令セットを曖昧化し５０３、サーバ・ハッシュ・テーブルを供給し５０４、前記命令セットをハッシュ化し５０５、サーバと製造機械間にセキュア通信チャネルを構築し５０６、セキュア通信チャネルを通じで製造機械にハッシュ化された命令セットをストリーミングし５０７、そして仮想マシンを破壊する５０８、というステップからなる。このアプローチでは、ハッシュ化に使用したハッシュ・テーブルが仮想サーバとともに永久に破壊されてしまうので、ハッシュ・テーブルを再構成することは不可能である。製造機械サイドで、この方法は：ハッシュ化された命令セットを受信し５０９、製造機械上にローカル・ハッシュ・テーブルを計算して前記サーバ・ハッシュ・テーブルに対応して疎に同期させ５１０、ハッシュ化されたストリームを前記ローカル・ハッシュ・テーブルを使って命令ストリームに変換し５１１、必要に応じて命令セット・ストリームを非曖昧化により復元し５１２、そして復元された命令ストリームを使って製造機械の操作部を制御する５１３、というステップから構成される。
【００６１】
図６にあるフロー図は、もう一つの修正した方法を示す。セキュア・ストリーミングの方法は、製造機械で複製される３Dオブジェクトを表現する３Dモデルを供給し６００、前記製造機械の命令テーブルを供給し６０１、３Dモデルを前記製造機械の操作命令セットに変換し６０２、当該命令セットをN個に分割し６０３、カウンタを１にセットし６０４、オプションとして第n個目の分割部を曖昧化し６０５、第n番目の分割部にサーバ・ハッシュ・テーブルを供給し６０６、曖昧化された第n番目の分割部をハッシュ化し６０７、セキュア通信チャネルを通じて製造機械に向かってハッシュ化した命令セットをストリーミングし６０８、さらに分割部の有無をチェックし６０９、もしあれば６０５から６０８をnがn+１になるまで繰り返す６１０。この方法は、同じストリームをハッシュ化するのに、複数のハッシュ・テーブルが使われるので安全性が向上する。製造機械においてこの方法は：ハッシュ化された命令セットの分割部を１番目からN番目までを順次受信し６１１、１からN番目の分割部に対するローカル・ハッシュ・テーブルを計算し６１２、ハッシュ化された分割部を分割命令セットに変換し６１３、必要あれば、命令セットを非曖昧化して復元し６１４、前記ハッシュ化した分割部を、製造機械を制御するための命令セット・ストリームと組み合わせ６１５、そして変換した命令ストリームを使って製造機械の操作部を制御する６１６、というステップから構成される。
【００６２】
図５に示した方法は、図６に示した方法と組み合わせることができる。すなわち各第n番目の分割部を曖昧化・ハッシュ化そしてストリーミングのための仮想マシンを生成して、第n番目の分割部のストリーミングが完了した時点で、その仮想マシンを破壊する。
【００６３】
図７は、もう一つの実勢形態のブロック図を示す。３Dモデル７０１が供給され、製造機械命令データベース７０３が使われて製造機械命令７０２が計算される。７０４〜７０６で表したように命令はN個に分割される。次に分割部７０４〜７０６は並行して処理されるが、先ず曖昧化されて曖昧化分割部７０７〜７０９が生成され、各曖昧化された分割部が、時間Nにおけるダイナミック・ハッシュ・テーブル状態７１３、時間Kにおけるダイナミック・ハッシュ・テーブル状態７１４そして、時間Qにおけるダイナミック・ハッシュ・テーブル状態７１５を使ってそれぞれハッシュ化され、ハッシュ化分割部７１０〜７１２になる。７１０〜７１２のそれぞれのハッシュ化分割部は、次に、ネットワーク７１６を通じて別個にストリーミングされるので、時間N、Q、Kは処理される分割部には関係づけされることはなく、ひとつのダイナミック・ハッシュ・テーブルはひとつ以上の分割部を処理できるし、ひとつ以上のダイナミック・ハッシュ・テーブルがひとつの分割部を処理することもある。
【００６４】
受信側である製造機械では、ハッシュ化されストリーミングされる各分割部７１７〜７１９は、時間N７２３のダイナミック・ハッシュ・ルックアップ・テーブル状態、時間N７２４のダイナミック・ハッシュ・ルックアップ・テーブル状態、時間N７２５のダイナミック・ハッシュ・ルックアップ・テーブル状態を夫々使って、命令分割部７２０〜７２２に復元され、分割部は統合され、製造機械７２６の操作部に出力される。
【００６５】
図８は、本発明のその他の実施形態を示す。この場合サーバはクラウド・サービス内で稼働させる。サーバは３Dモデル・データベース８０２、仮想マシン・ストリーミングのための曖昧化・ハッシュ化モジュール８０３、仮想マシン・インスタンス・イメージをハッシュ化するためのダイナミク・ハッシュ・テーブル・データベース８０４、そして正確な時間ベースの疑似番号発生モジュール８０５からなる。A（１）から A（N）で表わされた幾つかの仮想マシン・インスタンス（８０６〜８０８で示す）はサーバ上で起動し、各仮想マシン・インスタンスは、オペレーティング・システム８０８１、曖昧化・ハッシュ化モジュール８０８２、仮想マシン・インスタンス・イメージをハッシュ化するダイナミック・ハッシュ・テーブル・データベース８０３、正確な時間ベースの疑似番号発生モジュール８０８４、そしてストリーミング・モジュール８０８５からなる。ハッシュ化された仮想マシン・インスタンス・イメージは、製造機械８０９の受信モジュールにストリーミングされるが、このモジュールはダイナミック・ローカル・ハッシュ・テーブル・データベース８０９１、ハッシュ化仮想マシン・インスタンス・イメージ８０９２を変換するハッシュ・ルックアップ・モジュール８０９２と、正確な時間ベースの疑似番号発生モジュール８０９３から構成されている。ハッシュ化された３Dモデルは、これまでの説明で明らかなように、安全にストリームされて命令ストリームに変換される。このとき製造機械８１０の、ハッシュ・ルックアップ・モジュール８１０１、ダイナミック・ローカル・ハッシュ・テーブル・データベース８１０２、正確な時間ベースの疑似番号発生モジュール８１０３そして製造機械命令解読・ストリーマ８１０４からなるストリーミング・モジュール８１０が使われる。
【００６６】
専門知識のある人には明白なように、上に述べた方法の種々の事例は自由に組み合わせることができる。同様に、述べられたシステムの様々な事例も自由に組み合わせられる。例えば、ハッシュ化に替えて、あるいは加えて、他のエンコーディング手法が使える。例としては、命令を曖昧化するのに命令を算術符号化あるいは暗号化してもよい。仮想マシンはクラウド・システム上で稼働させてもよい。ストリーミングもクラウド・システムのサービスとして提供することもできる。ネットワークに接続した個々のコンピュータ・デバイスにセキュア・ストリーミング・サーバ用ソフトウエアを搭載することもできるので、デザイナは自分の３Dモデルを製造向けにセキュア・ストリーミングで送信できる。ピアツーピア・システムでは、ピアツーピア・ネットワークに接続したコンピュータそれぞれが、セキュア・ストリーミング・サーバとして機能するようにプログラムすることができる。ピアツーピア・ネットワークを含むコンピュータ・ネットワークに接続したコンピュータは、３Dモデルの供給元として機能することもできる。この場合、他のセキュアなストリーミング・サーバに３Dモデルを安全にストリーミングし、そのサーバから製造機械に安全にストリーミングさせることもできる、あるいは３Dモデルの供給元をセキュア・ストリーミング・サーバに統合して直接製造機械へストリーミングすることもできる。
【００６７】
暗号化ハッシュ関数として有名なメッセージ・ダイジェスト・アルゴリズム（MD4、MD5）、セキュア・ハッシュ・アルゴリズム（SHA-1、SHA-2、SHA-3）、Skeinこの暗号化ハッシュ関数には、有名なメッセージ・ダイジェスト・アルゴリズム（MD４、MD５）やセキュア・ハッシュ・アルゴリズム（SHA-1、SHA-２、SHA-３）、Skein、Keccak RadioGatun、PANAMAなど多くが知られている。理想的な暗号化ハッシュ関数は４つの基本特性を持つとされる：任意のメッセージに対してハッシュ値を簡単に計算できること、あるハッシュ値に対応するメッセージを生成することはほとんど不可能であること、ハッシュ値を変えずにメッセージを変更することはできないこと、二つのメッセージに対応する一つのハッシュ値は存在しないことである。
暗号化ハッシュ関数の代わりに、非暗号化関数あるいはその他の類似の一方向性（不可逆性）関数をハッシュ化に使うことができる（すなわち、インプットの計算は容易だが、ランダムのインプットのイメージを反転するのは難しい）。一般的なハッシュ関数を使うことはできるが、一方でハッシュ化の対象となるデータの特性に応じたハッシュ関数を設計することもできる（例えば、製造機械を制御する命令体系に都合よく設計するなど）。チェックサム関数、巡回冗長チェック、チェックサム・フィンガープリント関数もハッシュ化に使える。ハッシュ化は非線形テーブル・ルックアップ機能を使っても実行できる。
【００６８】
セキュア・ストリーミングの方法やシステムは、セキュア・ストリーミングを必要とする他の技術分野でも有効である。例えば、１．遠隔地から対象物を制御するための制御コマンドをストリーミングする場合、あるいは、２．車、飛行機、船舶、電子乃至コンピュータ・デバイスなどの操作モジュールを他のモジュールに変更するコマンドのストリーミング、３．メディアの放送（ラジオ、テレビ）、４．ストレージ・モジュールから、３D映画館の３Dプロジェクタ、３Dテレビ、SMART TV、３Dゲーム・コンソール、３Dモバイル・アプリケーション、３D仮想現実メガネ、拡張現実アプリケーションやデバイス、３Dホログラム・デバイスと関連アプリケーションと連動する３Dデバイスの展示モジュールに、３Dオブジェクトを放送配信するなど。専門知識のあるひとには一目瞭然であるが、この場合、製造機械を制御する命令の代わりに、このようなデバイスの稼働・制御に適する異なる種類の命令体系が使われる。
【００６９】
この方法は、製造機械に命令をストリーミングすることを基本にしているが、製造機械側であるいはサーバ側で、送信前にストリームを一時的にバッファしたり、キャッシュしたりすることも含まれる。
【００７０】
図９にシステムを示す。クラウドにおいては、以下から構成されるマスタ・サーバがある； 
【００７１】
API F（アプリケーション・プロクラミング・インタフェース・フロント・エンド）。これはできればセキュアなAPI（例えばSSLなどを適用）として提供され、３Dモデルのマーケットプレースで使われる。セキュア・ストリーミングは、マーケットプレース経由で起動する。
【００７２】
API B（アプリケーション・プログラミング・インタフェース・バックエンド）。これは、できればセキュアなAPI（例えばSSLなどを適用）として提供され、権利所有者が３Dモデルを安全に３Dオブジェクト・モデル用セキュア・ストレージにアップロードするときのバックエンド機能として使われる。
【００７３】
API VM（仮想マシン用アプリケーション・プログラミング・インタフェース）。これは、できればセキュアなAPIとして提供され、３Dオブジェクト・モデルのセキュア・ストレージと通信するために使われる。
【００７４】
複数台の仮想マシン。仮想マシン１（VM 1）から仮想マシンN（VM N）の各インスタンスは、複製用に決められたひとつの特定３Dオブジェクト・モデルに対して、且つその複製を担当する一台の特定プリンタに対して、事前に決められた時間の長さだけ実行される。ストリーミング・セッションが完了すると、そのセッションを担当した仮想マシンは破壊される。ストリーミング・セッションは、フローティング・ハッシュ化テーブルを使ってストリーミング処理の安全性を確保する。セキュア・ストリーミングにハッシュ・テーブルを使うことについては、ペンディングとなっているEP特許申請No EP13151981.1.に説明してある。
【００７５】
３Dプリンタの承認テーブルは、マスタ・サーバに置かれる。そのテーブルには、登録済みの３Dプリンタ、プリンタ識別子、アクセス許可（例えばライセンス許諾）、開始・終了日付け、３Dモデルがストリーミングされた時刻、登録プリンタの現在の状況（ビジー、利用可能、未接続、ネットワーク・エラー、その他）などの情報が入っている。
【００７６】
クラウドには、３Dファイル自体とパラメータ、そしてメタデータが収められた３Dファイル・セキュア・ストレージがある。マスタ・サーバはセキュア・ストレージに対して、書き込み命令のみでしかアクセスできない（Write Access Only）。正しい仮想マシンのみがセキュア・ストレージをアクセスして、セキュア・ストレージから３Dファイルを読み取ることができる。
【００７７】
クラウドにあるシステムの各部分（マスタ・サーバ、仮想マシン、フロント・エンド、バック・エンド、セキュア・ストレージ、３Dプリンタ、その他）は、仮想ネットワークやOpenVPNなどのセキュア・ネットワークを使って相互に接続している。
【００７８】
クラウド内の各部分は、専用プロトコルを使って相互に通信し合う。このプロトコルには、ハッシュ化およびその他の暗号化アルゴリズムが使われる。
【００７９】
３Dプリンタはマスタ・サーバに接続できる。３Dプリンタはどんな種類のものでもよい（USBで接続する、ネットワークに接続している、WiFiプリンタ、その他）。プリンタは３Dプリンタに内蔵されたチップ、プリンタ内のボード、あるいはプリンタに接続されたデバイス、またはプリンタ外部のソフトウエアを使ってクラウドと通信する。３Dプリンタの内部部品でも外部に置かれた部品でも、シリコンその他の材料による物理的な固体充填や金属ケースに収納することよって解体を防ぐことができるが、解体されたとしてもデバイスが稼働不能になれば安全性は確保される。
【００８０】
３Dプリンタは、複数のファイアウォールの内側にあってもクラウドには見える。３Dプリンタには外部のIPアドレスを割り当てることができるが、その必要はない。いわゆるプリンタ・ツー・サーバ・ツー仮想マシン ピアツウピア仮想ネットワーク（virtual machine peer-to-peer virtual network）で実現できる。
【００８１】
マスタ・サーバは、プロトコル、仮想ネットワーク、クラウド、マスタ・サーバ、３Dプリンタ、セキュア・ストレージ、仮想マシンなどと、ポートのスキャニング、仮想ネットワークにおける過剰なIPアドレス、APIへの誤ったリクエスト、プロトコル内の動き、サーバからのアラーム（サーバへの接続後X秒以内に実行される特殊コマンドとコード、機械への接続前のポート・ノッキング）といった、怪しい動きの発生をチェックする、いくつかの検出作業を実施するようになっている。
【００８２】
セキュア・ストリーミングに使われるセキュアな３Dプリンティング・プロトコルは、以下の部分を含む。
【００８３】
双方向SSL証明を使って、３Dプリンタと対応する仮想マシン間のセキュア通信を確立する；
【００８４】
個人証明書、識別番号などを使ったプリンタへの許可承認。
【００８５】
ネットワーク品質と速度のチェック（Ping、上りと下りの速度）。
【００８６】
ハッシュ化あるいは、理想的には暗号化したG-codes、STLファイルなどのブロック送信。
【００８７】
プリント・プロセスを制御（一時停止、停止、再開、状況、押出機の温度、その他）
【００８８】
３Dプリンティングの品質チエック、例えばプリントされたモデルのビデオや写真のストリームを提供。
【００８９】
マーケットプレースは、どんな３Dモデルの供給元にも対応する、例えば３Dモデル・ウェブストア、その他のウェブベースの３Dモデル供給元、例をあげればThingiverse, Shapeways, Cubify, GrabCad, Amazon, eBayなど。マーケットプレースは、フロント・エンドのAPI Fを経由して、マスタ・サーバに接続するフロント・エンド・ソリューションである。エンド・カスタマは、マーケットプレースから、自分が選んだ３Dプリンタへ、プリント料金を支払い、プリント条件パラメータを選び、セキュア・プロトコルを使ってモデルの一部あるいは全てに対し、３Dモデルのセキュア・ストリーミングを起動することができる。さらに、セキュアな３Dモデルをemail、facebook、twitterその他を使って配信することも可能である。このことは、ウェブページ（マーケットプレース）が、ストリーミングを購入・開始できる可能性に結びつく。
【００９０】
バックエンドは、権利保有者による３Dファイルを管理するためのシステムである。権利者は３Dファイルをアップロードしたり、保護したり、これらのファイルを販売目的に何処で発行するか（例えば、どのマーケットプレースを選ぶか）、説明書きの添付、ファイルへのタグやキーワードの添付設定、プリント許可回数設定、プリント毎の料金設定、３Dファイルの配布統計の閲覧、あるいはストアからファイルの取り下げなどができる。
【００９１】
３Dプリンタは、製造準備時にも使用中にでも、マスタ・サーバに登録することができる。
【００９２】
セキュア・ストレージは、ストレージ内の暗号化セグメントに置かれる。この暗号化ストレージ・セグメントは、少数の担当者ないしはマスタ・サーバ外にある自動ツールでのみ複合化できる。このことにより、サーバが物理的な盗難にあっても、３Dオブジェクトを持ったデータベースの第三者による回復は不可能である。
【００９３】
本発明の方法の一例を図１０に示した。その方法は、以下のステップからなる：ある３Dオブジェクト（３Dモデル、３Dプリンタ）のプリント・リクエストを受信し１０００、マスタ・サーバで３Dオブジェクトのプリント許可をチェックし１００１、前記３Dオブジェクトをプリントするための仮想マシンを生成し１００２、その仮想マシンが前記マスタ・サーバをチェックし１００３、仮想マシン上で前記３Dプリンタを承認し１００４、前記仮想マシンが３Dモデルをセキュア・ストレージから検索し１００５、前記仮想マシンが３Dプリンタ向けに命令を計算してストリーミングし１００６、前記仮想マシンがプリントの進行をモニタし１００７、プリントが完了したところで仮想マシンを破壊する１００８。
【図１】
2016513383.tif 000003
【図２】
2016513383.tif 000004
【図３】
2016513383.tif 000005
【図４】
2016513383.tif 000006
【図５】
2016513383.tif 000007
【図６】
2016513383.tif 000008
【図７】
2016513383.tif 000009
【図８】
2016513383.tif 000010
【図９】
2016513383.tif 000011
【図１０】
2016513383.tif 000012
【国際調査報告】
2016513383.tif 000013
2016513383.tif 000014
2016513383.tif 000015
2016513383.tif 000016