下記の様々な実施例では、データの不正アクセスを防止する技術が説明される。コンピューティングリソースサービスプロバイダにより運用される様々なネットワークに入る及び/またはそのようなネットワークに沿って移動するデータは、暗号化され、バックエンドサービスまたは機密データの他の休止ポイントへのネットワーク経路沿いの様々な仲介者による不正アクセスから保護される。さらに、コンピューティングリソースサービスプロバイダにより運用される様々なネットワークから出る暗号化された機密データは、クライアントデバイスにより機密データがアクセス可能となるように、復号化され得る。この機密データには、クレジットカード番号、電子メールアドレス、物理的住所、パスポート番号、電話番号、連絡先、パスワード、銀行取引情報、顧客識別情報、通信、あるいは顧客が個人的及び/または機密的であるとみなし得る任意の他の情報が含まれ得る。コンピューティングリソースサービスプロバイダは、顧客にサービスを提供する他のエンティティに対し、様々なサービス及び/またはサポートを提供し得る(例えばコンピューティングリソースへのアクセスを提供することにより)。
これらのサービスは、顧客に様々なサービスエンドポイントを公開する(例えば公衆通信ネットワーク介してインターフェースを利用可能にする)ことができ、サービスエンドポイントは、インターネットなどの公衆ネットワークに接続され得る。例えば、顧客は、顧客に対しウェブサイトとして公開された小売サービスと対話することができる。顧客対話は、小売サービス、または要求に対応する他のバックエンドサービスへ送信されるハイパーテキスト転送プロトコル(HTTP)要求(例えばGET及びPOST要求)を含み得る。さらに、要求は、様々なプロキシデバイス及び/またはプロキシフリートにより、バックエンドサービスへ送られ得る。前述のように、機密データは様々な暗号化技術、例えばトランスポートレイヤセキュリティ(TLS)、セキュアソケットレイヤ(SSL)、及び/またはハイパーテキスト転送プロトコルセキュア(HTTPS)、並びに後述されるような他の技術を使用して保護される。しかしながら、方法は、例えば好適なバックエンドサービスへデータがルーティングされ得るように、プロキシデバイス及び/またはプロキシフリートによりデータが復号化されること、並びに/あるいは機密データが復号化されること、または暗号化データストリームに対し他の修正が行われことを、伴う。従って、結果的に機密データが公開されないことを確保するため、下記にさらに詳しく説明されるように、プロキシデバイス及び/またはプロキシフリートの動作が修正され、セキュリティ及び効率性が向上され得る。
本開示で説明されるように、機密データの保護を提供するために、データ保護モジュールがプロキシデバイス及び/またはプロキシフリートにより実行され得る。データ保護モジュールは、隔離された環境で実行され得る、あるいはデータ保護モジュールの外部からのアクセスから保護され得る。バックエンドサービスに少なくとも部分的に基づいて、構成情報が生成され、プロキシデバイス及び/またはプロキシフリートにより実行されるデータ保護モジュールへ提供され得る。構成情報は、暗号化材料、機密データの様々な定義、ポリシー情報、または機密データを保護するのに好適な他の情報など、下記にさらに詳しく説明される様々な情報を含み得る。各データ保護モジュールは、単一のバックエンドサービスまたは複数のバックエンドサービスに対し、サービスを提供し得る。さらに、データ保護モジュールは、公開キー暗号化標準(PKCS)などの下記にさらに詳しく説明される様々な暗号化アルゴリズムを実施し得る。
データ保護モジュールは、コンピューティングリソースサービスプロバイダ環境を出入りするデータに対し、異なる動作を実行し得る。例えば、バックエンドサービスからクライアントデバイスへ送られた機密データは、クライアントデバイスへ送られた機密データを復号化する前に、クライアントデバイスによる表示のために、まずレンダリングされ得る、あるいはフォーマット化され得る。様々な実施形態において、機密データは、署名、またはデータ保護モジュールが機密データを復号化する前に検証されるべき他の情報を含み得る。上記のように、機密データは、TLSなどの安全なリンクを使用して、コンピューティングリソースサービスプロバイダ環境の外部で保護され得る。機密データを保護するための他の機構も本開示の範囲に含まれるとみなされ、例えば、顧客に対応付けられたクライアントデバイスへ機密データを送信する前に、機密データは、顧客に対応付けられた公開キーにより暗号化され得る。
様々な実施例では、プロキシデバイス及び/またはプロキシフリートは、様々なコンテンツ配信ネットワーク(CDN)の一部であり得る、またはその中に統合され得る。これらのCDNにより、顧客と遅延の少ない通信が可能となり、顧客の要求に対し効率的な処理が提供される。前述のように、CDNに含まれるプロキシデバイス及び/またはプロキシフリートにより、データ保護モジュールが実施され得る。さらに、コンピューティングリソースサービスプロバイダまたは他のエンティティは、暗号化材料及び/または暗号化機能への効率的なアクセスを提供するために、下記にさらに詳しく説明されるキー管理システムを運用し得る。例えば、暗号化または復号化する機密データを受信すると、データ保護モジュールは、キー管理サービスによる動作の実行を要求し得る。キー管理サービスは、プロキシデバイス及び/またはプロキシフリートのプロセスであり得る、またはデータ保護モジュールによりアクセス可能な別個のコンピューティングデバイス上で実行され得る。
上記または下記の説明において、様々な技術が説明される。説明目的で、技術を実施する可能な方法の完全な理解をもたらすために、具体的な構成及び詳細が明記される。しかしながら、下記に説明される技術は、具体的な詳細なしに異なる構成で実施されてもよいことも明らかであろう。さらに、説明される技術が曖昧になることを避けるために、よく知られている特徴は、省略または簡略化され得る。
図1は、実施形態による、セキュアプロキシフリート106が機密データを保護して、コンピューティングリソースサービスプロバイダ環境との仲介者に公開されないようにし得る環境100を示す。コンピューティングリソースサービスプロバイダ104は、顧客102に様々なバックエンドサービス108へのアクセスを提供し得る。バックエンドサービス108は、コンピューティングリソースサービスプロバイダ104または他のエンティティにより運用され得る。例えば、コンピューティングリソースサービスプロバイダ104は、ストリーミングメディアサービス、ウェブサイト、または他のアプリケーションなど、顧客102に公開される様々なサービスを実施するために、コンピューティングリソースサービスプロバイダ104により提供されるコンピューティングリソースへのアクセスを有する組織を提供し得る。コンピューティングリソースサービスプロバイダ104は、様々なネットワーク、コンピューティングデバイス、サービス、アプリケーション、または他のコンピューティングリソースを運用し、顧客102及び他のエンティティに、様々な動作を実行するためのアクセスを提供し得る。
図1に示されるように、顧客102は、コンピューティングリソースサービスプロバイダ104によりホストされる1つ以上のバックエンドサービス108と、機密データを送受信し得る。さらに、機密データは、1つ以上のバックエンドサービス108へのネットワーク経路沿いの1つ以上の仲介者110に、公開され得る。様々な実施形態において、仲介者110は、機密データにアクセスすることを認可され得ない。さらに、仲介者110は、コンピューティングリソースサービスプロバイダ104または他のエンティティにより運用される任意のコンピューティングリソースを含み得る。例えば、特定の仲介者は、ネットワーク上を移動するパケットへのアクセスを有するコンピューティングリソースサービスプロバイダ104のネットワーク輻輳サービスを含み得る。
機密データに対応付けられた顧客102または他のエンティティは、信頼性のあるエンティティ、すなわちコンピューティングデバイス及び個人の両方に限定された、機密データに対する読み出しアクセス及び/または書き込みアクセスを行うことを所望し得る。前述のように、コンピューティングリソースサービスプロバイダ104は、規制、法的特権、競合性、契約(例えばベンダとの価格設定もしくは他の条件)、または機密データを保護する任意の他の必要性により、機密情報のセキュリティ及びプライバシーを維持するための様々な要件を定義及び特定し得る。機密データには、住所、パスポート番号、納税者識別番号、法的情報、財務情報、顧客リスト及び/または特定の顧客識別情報、合併吸収、従業員健康記録及び人事ファイル、ならびに顧客支払手段が含まれる。さらに、機密データには、機密として分類され得る、あるいは保護対象データとして分類され得る任意のデータが含まれ得る。機密データを保護するために、コンピューティングリソースサービスプロバイダ104は、セキュアプロキシフリート106を運用し得る。セキュアプロキシフリート106は、機密データがコンピューティングリソースサービスプロバイダ環境(例えばデータセンタ、ネットワーク、及びコンピューティングリソースサービスプロバイダ104により運用される他のコンピューティングリソース)に入ってくる時に暗号化し、暗号化した機密データを、コンピューティングリソースサービスプロバイダ環境内部の信用できる単一ポイント(例えば1つ以上のバックエンドサービス108の保護されたリソース)へ送り得る。
機密データは暗号化され、これにより、機密データを暗号化するのに使用した暗号化材料へのアクセスを制御することにより、機密データへのアクセスは制御され得る。例えば、機密データへのアクセスは、下記にさらに詳しく説明されるキー管理サービスにより提供され得、キー管理サービスは、機密データを暗号化するために使用する暗号化キーを配布する。暗号化は、PKCSなどの本開示に記載される様々な暗号化規格を使用して行われ得る。さらに、機密データを保護するために、他の保護手段が使用されてもよい。例えば、必ず機密データが最大20秒しかメモリに記憶されず、それ以降は要求が不履行となり、再試行されなければならないようにするため、セキュリティポリシーまたは他の機構が使用される。ネットワークデバイス及びサーバコンピュータシステムを含むコンピューティングリソースサービスプロバイダ104の物理的コンピューティングリソースを使用して、セキュアプロキシフリート106は実施され得る。
セキュアプロキシフリート106は、アプリケーション、または物理コンピューティングリソースにより実行される他の実行可能コードを含み得る。下記にさらに詳しく説明されるように、セキュアプロキシフリート106は、機密データを暗号化するための暗号化材料を管理し保持し得る。さらに、セキュアプロキシフリート106は、1つ以上のバックエンドサービス108と顧客102との間で、要求をプロキシする、あるいは転送する。例えば、特定のサービスは、インターネットなどの公衆ネットワーク上のエンドポイントを公開し得る。エンドポイントは、顧客102が、公衆ネットワーク上で公開されているエンドポイントにサービス要求を送ることにより、特定のバックエンドサービスと通信することを可能にし得る。セキュアプロキシフリート106は、エンドポイントへ送られたサービス要求を取得し、サービス要求に含まれる情報に少なくとも部分的に基づいて、要求を特定のバックエンドサービスへ転送し得る。本開示の目的のため、要求、サービスコール、または他のデータは、要求、サービスコール、または他のデータの「送信先」であるエンティティに対応付けられた宛先アドレス(例えばIPアドレス、電子メールアドレス、SMS番号など)へ送られ得る。
さらに、セキュアプロキシフリート106は、各バックエンドサービス及び/または顧客102に公開されているエンドポイントに対し、単一のプロキシを運用し得る。例えば、特定のバックエンドサービスは、顧客識別情報用の第1のエンドポイント及び顧客支払情報用の第2のエンドポイントなど、様々な種類の機密データのための異なるエンドポイントを公開する。セキュアプロキシフリート106は、例えば物理的隔離(例えば異なる物理的コンピューティングハードウェアにより分離された処理)または論理的隔離(例えばサンドボックスを使用したプロセス隔離)により、各エンドポイントへ送られる要求の処理を隔離し得る。
バックエンドサービス108は、前述のように、コンピューティングリソースサービスプロバイダ104により提供されてもよく、またはコンピューティングリソースサービスプロバイダ104のコンピューティングリソースを利用する1つ以上の他のエンティティにより提供されてもよい。バックエンドサービス108には、小売サービス、コンピューティングインスタンスサービス、オンデマンドストレージサービス、ブロックレベルストレージサービス、ネットワークサービス、通知サービス、ドキュメント管理サービス、メッセージサービス、またはコンピューティングリソースサービスプロバイダ104のコンピューティングリソースを使用して実施される任意の他のサービスなど、多数のサービスが含まれ得る。例えば、バックエンドサービス108は、内部ウェブサービスを通して、図7及び図14に示されるデータストアにアクセスし得る。
仲介者110は、コンピューティングリソースサービスプロバイダ104の任意の数のコンピューティングリソース及び/またはサービスを含み得る。さらに、仲介者は、コンピューティングリソースサービスプロバイダ104とは別の他のエンティティにより、運用されてもよい。例えば、特定の仲介者は、顧客102とデータを送受信するために、コンピューティングリソースサービスプロバイダ104の様々なネットワークを利用するデータストレージサービスを含み得る。仲介者110はまた、様々なセキュリティポリシー及び/またはセキュリティレベルを施行し得る。
図2は、実施形態による、セキュアプロキシフリート206及びプロキシフリートが、保護された機密データをバックエンドサービス208と送受信し得る環境200を示す。コンピューティングリソースサービスプロバイダ204は、顧客にバックエンドサービス208へのアクセスを提供し得る。顧客は、ウェブページ202を通して、またはスタンドアロンアプリケーションもしくはモバイルアプリケーションなど、ネットワークを介してバックエンドサービスにデータを通信する他のアプリケーションを通して、バックエンドサービス208にアクセスし得る。バックエンドサービス208は、コンピューティングリソースサービスプロバイダ204または他のエンティティにより運用され得る。例えば、コンピューティングリソースサービスプロバイダ204は、ストリーミングメディアサービス、ウェブサイト、または他のアプリケーションなど、顧客に公開される様々なサービスを実施するために、コンピューティングリソースサービスプロバイダ204により提供されるコンピューティングリソースへのアクセスを有する組織を提供し得る。コンピューティングリソースサービスプロバイダ204は、様々なネットワーク、コンピューティングデバイス、サービス、アプリケーション、または他のコンピューティングリソースを運用し、顧客及び他のエンティティに、様々な動作を実行するためのアクセスを提供し得る。
図2に示されるように、顧客は、コンピューティングリソースサービスプロバイダ204によりホストされる1つ以上のバックエンドサービス208と、機密データ及び非機密データを送受信し得る。さらに、機密データ及び非機密データは、バックエンドサービス208へのネットワーク経路沿いの1つ以上の仲介者210に、公開され得る。様々な実施形態において、仲介者210は、機密データにアクセスすることを認可され得ない。さらに、仲介者210は、コンピューティングリソースサービスプロバイダ204または他のエンティティにより運用される任意のコンピューティングリソースを含み得る。例えば、特定の仲介者は、ネットワーク上を移動するパケットへのアクセスを有するコンピューティングリソースサービスプロバイダ204のネットワーク輻輳サービスを含み得る。
図2に戻ると、顧客のコンピューティングデバイスは、コンピューティングリソースサービスプロバイダ204のオンラインプロキシフリート216またはセキュアプロキシフリート206に対し、1つ以上のHTTP要求を送信し得る。オンラインプロキシフリート216及びセキュアプロキシフリート206は、実行可能命令を含むコンピューティングリソースの集合(例えば論理グループまたは物理グループ)であり得、実行可能命令は、コンピューティングリソースの1つ以上のプロセッサにより実行されると結果的に、コンピューティングリソースに、HTTP要求を受信させ、これらのHTTP要求をコンピューティングリソースサービスプロバイダ204の1つ以上のバックエンドサービス206に送らせる。オンラインプロキシフリート216及びセキュアプロキシフリート206は、処理のために、コンピューティングリソースサービスプロバイダ204の好適なバックエンドサービス208に要求を送ることを担当し得る。
オンラインプロキシフリート216及びセキュアプロキシフリート206は、ウェブページ202との顧客対話の結果得られた顧客の要求を、ストリーミング及び/または送信し得る。オンラインプロキシフリート216及びセキュアプロキシフリート206は、同じコンピューティングリソースにおいて実行され得る、またはコンピューティングリソース内で実行される同じプロセスにおいて実行され得る。このように、機密データまたは非機密データを含む要求は、好適に処理され得る。例えば、機密データを含む要求は、他のデータを含む要求と同じプロキシデバイス(例えばオンラインプロキシフリート216及びセキュアプロキシフリート206の両方を実行するコンピューティングデバイス)に送信され得る。要求の送信先であるエンドポイントに少なくとも部分的に基づいて、プロキシデバイスにてトラフィックが区別され得る。例えば、機密データを含むHTTP要求は、セキュアプロキシフリート206により監視されるエンドポイントへ送られるように、ウェブページ202は構成され得る。さらに、ウェブページ202は、非機密データを含むHTTP要求を、オンラインプロキシフリート216により監視されるエンドポイントに送り得る。
図3は、実施形態による、セキュアプロキシフリート306が、機密データを受信し、機密データをバックエンドサービス308に転送する前に機密データを保護する環境300を示す。コンピューティングリソースサービスプロバイダ304は、顧客302にバックエンドサービス308へのアクセスを提供し得る。顧客302は、ウェブページ、サービスコール、ユーザインターフェース、またはネットワークを介してバックエンドサービス308にデータを通信するスタンドアロンアプリケーションもしくはモバイルアプリケーションなどのアプリケーションを通して、バックエンドサービス308にアクセスし得る。バックエンドサービス308は、コンピューティングリソースサービスプロバイダ304または他のエンティティにより運用され得る。例えば、コンピューティングリソースサービスプロバイダ304は、ストリーミングメディアサービス、ウェブサイト、または他のアプリケーションなど、顧客302に公開される様々なサービスを実施するために、コンピューティングリソースサービスプロバイダ304により提供されるコンピューティングリソースへのアクセスを有する組織を提供し得る。コンピューティングリソースサービスプロバイダ304は、様々なネットワーク、コンピューティングデバイス、サービス、アプリケーション、または他のコンピューティングリソースを運用し、顧客及び他のエンティティに、様々な動作を実行するためのアクセスを提供し得る。
図3に示されるように、顧客302は、コンピューティングリソースサービスプロバイダ304によりホストされる1つ以上のバックエンドサービス308に、機密データを送信し得る。機密データは、バックエンドサービス308により運用される信頼性のあるエンティティまたは場所に送られ得る。さらに、1つ以上のバックエンドサービス308へのネットワーク経路沿いの1つ以上の仲介者310に、機密データが公開されないように、機密データは、セキュアプロキシフリート306のデータ保護モジュール312により暗号化され得る。様々な実施形態において、仲介者310は、機密データにアクセスすることを認可され得ない。さらに、仲介者310は、コンピューティングリソースサービスプロバイダ304または他のエンティティにより運用される任意のコンピューティングリソースを含み得る。例えば、特定の仲介者は、コンピューティングリソースサービスプロバイダ環境のコンピューティングリソースへのアクセスを有するコンピューティングリソースサービスプロバイダ304のストリームサービスを含み得る。
仲介者310は、コンピューティングリソースサービスプロバイダ304の任意の数のコンピューティングリソース及び/またはサービスを含み得る。さらに、仲介者310は、コンピューティングリソースサービスプロバイダ304とは別の他のエンティティにより、運用されてもよい。例えば、特定の仲介者は、顧客302とデータを送受信するために、コンピューティングリソースサービスプロバイダ304の様々なネットワークを利用するデータストレージサービスを含み得る。仲介者310はまた、様々なセキュリティポリシー及び/またはセキュリティレベルを施行し得る。
下記にさらに詳しく説明されるように、データ保護モジュール312は、バックエンドサービスへ送られる要求またはデータストリームから取得される機密データを検出し得る。さらに、セキュアプロキシフリート306及び/またはデータ保護モジュール312は、TLSまたは他の安全な接続のためのターミネータであり得る。言い換えると、セキュアプロキシフリート306及び/またはデータ保護モジュール312は、顧客302とバックエンドサービス308との間の安全なリンクの一端を確立し維持することを担当し得る。いくつかの実施例では、セキュアプロキシフリート306は、TLS接続を用いて、暗号化されたネットワーク接続を確立する。他の実施例では、キー交換アルゴリズムを用いて対称キーを交渉することにより、暗号化されたネットワーク接続が確立される。
データ保護モジュール312は、セキュアプロキシフリート306を実行する同じコンピュータシステムにより実行されるプロセスまたはアプリケーションであり得る。さらに他の実施形態では、セキュアプロキシフリート306は、セキュアプロキシフリート306の構成要素としてデータ保護モジュール312も実行する専用ハードウェアにより実行され得る。下記にさらに詳しく説明されるように、データ保護モジュール312は、バックエンドサービス308、コンピューティングリソースサービスプロバイダ304、または他のエンティティにより生成される構成情報を用いて、実施され得る。構成情報は、データ保護モジュール312に対し、機密データ、機密データの検出方法、機密データの処理及び/または保護方法、機密データの暗号化方法、機密データを暗号化する暗号化アルゴリズム、暗号化キー、暗号化データの送信先であるエンドポイント、または機密データを保護するのに好適な任意の他の情報を示し得る。
図3に示されるように、機密データは暗号化され、1つ以上の仲介者310を介して、バックエンドサービス308へ送信され得る。バックエンドサービス308は、機密データを復号化するのに必要な暗号化材料を取得し得る、または既に含み得る。後述される他の実施形態では、バックエンドサービス308は、キー管理サービスのために、暗号化材料または暗号化材料の復号化を要求し得る。さらに、セキュアプロキシフリート306は、機密ではないデータは平文で、バックエンドサービス308に送信し得る。例えば、顧客は、顧客の電話番号を含むHTTP POST要求を、特定のバックエンドサービスに送信することができ、セキュアプロキシフリート306は、HTTP POST要求に含まれる電話番号を暗号化して、暗号化キーなしでは電話番号を解読できないようにするが、HTTP POST要求の残りは平文のままにして、要求が好適なバックエンドサービスへルーティングされ得、要求全体の復号化を求めることなく少なくとも部分的に処理され得るようにすることができる。
図4は、実施形態による、セキュアプロキシフリート406が、機密データを受信し、機密データをバックエンドサービス408に転送する前に、暗号化キーサービス420を使用して機密データを保護する環境400を示す。コンピューティングリソースサービスプロバイダ404は、顧客402にバックエンドサービス408へのアクセスを提供し得る。顧客402は、ウェブページ、サービスコール、ユーザインターフェース、コマンドラインインターフェース、または1つ以上のネットワーク410を介してバックエンドサービス408にデータを通信するスタンドアロンアプリケーションもしくはモバイルアプリケーションなどのアプリケーションを通して、バックエンドサービス408にアクセスし得る。バックエンドサービス408は、コンピューティングリソースサービスプロバイダ404または他のエンティティにより運用され得る。例えば、コンピューティングリソースサービスプロバイダ404は、オンライン小売りサービス、ウェブサイト、または他のアプリケーションなど、顧客402に公開される様々なサービスを実施するために、コンピューティングリソースサービスプロバイダ404により提供されるコンピューティングリソースへのアクセスを有する組織を提供し得る。コンピューティングリソースサービスプロバイダ404は、様々なネットワーク、コンピューティングデバイス、サービス、アプリケーション、または他のコンピューティングリソースを運用し、顧客及び他のエンティティに、様々な動作を実行するためのアクセスを提供し得る。
図4に示されるように、顧客402は、コンピューティングリソースサービスプロバイダ404または他のエンティティによりホストされる暗号化キーサービス420の使用を通じて保護された機密データを送受信し得る。機密データは、バックエンドサービス408により運用される信頼性のあるエンティティまたは場所に送られ得る。さらに、1つ以上のバックエンドサービス408への1つ以上のネットワーク410のネットワーク経路沿いで機密データが公開されないように、機密データは、セキュアプロキシフリート406の暗号化モジュール414により暗号化され得る。様々な実施形態において、暗号化モジュール414は、機密データを暗号化するために、暗号化キーサービス420にAPIコールを送信し得る。一実施例では、暗号化モジュール414は、機密データを暗号化するために使用するキー材料を、暗号化キーサービス420に要求し得る。
さらに、キー材料は、暗号化キーサービス420により暗号化され得る。言い換えると、暗号化キーサービス420に送信されたデータは、単に暗号化キーサービス420から暗号化キーを取得して暗号化することにより、縮小され得る。別の実施例では、暗号化モジュール414は、暗号化要求内で機密データを暗号化キーサービス420に送信することができ、これに応じて、暗号化キーサービス420は、暗号化された機密データを返し、いくつかの実施形態では、暗号化キーサービス420は暗号化キー(暗号化された、または平文の暗号化キー)を暗号化モジュール414へ返す。
図4に描かれる暗号化キーサービス420は別個のエンティティとして示されるが、暗号化キーサービス420の機能の全てまたは一部は、セキュアプロキシフリート406及び/またはバックエンドサービス408に含まれ得る。例えば、暗号化キーサービス420の一部は、セキュアプロキシフリート406により、カーネルレベルプロセスまたはマイクロサービスとして実行され得る。これらの事例では、暗号化モジュール414は、セキュアプロキシフリート406により実行される暗号化キーサービス420のカーネルレベルプロセスに対し、暗号化材料を取得する要求を送信し得る。さらに、暗号化キーサービス420は、セキュアプロキシフリート406により実行される暗号化キーサービス420のカーネルレベルプロセスが保持する暗号化キー材料を、定期的または非定期的に送信し及び/または更新し得る。
図4に戻ると、コンピューティングリソースサービスプロバイダ環境内に1つ以上のネットワーク410が示されるが、1つ以上のネットワーク410は、様々なエンティティにより実施される様々な異なるネットワークを含み得る。例えば、1つ以上のネットワーク410には、インターネットなどの公的にアドレス指定可能なネットワークの一部であるネットワークバックボーンまたは他のネットワーク構造が含まれ得る。下記にさらに詳しく説明されるように、ネットワーク410には、公衆ネットワーク、プライベートネットワーク、コンテンツ配信ネットワーク、ならびに異なるエンティティ及び/またはサービスにより実施され得、異なるセキュリティポリシーを施行し得、異なるエンティティ及び/またはサービスによりアクセス可能であり得る他のネットワークが含まれ得る。さらに、様々なコンピューティングデバイスは、顧客402とバックエンドサービス408との間にルーティングされると、機密データを含む要求及び/またはデータオブジェクトを受信し得る。例えば、要求処理デバイスは、特定のバックエンドサービスに送られた暗号化済み機密データを含む要求を、セキュアプロキシフリート406から受信し、要求をバックエンドサービスの好適なインスタンスにルーティングし得る。
検出モジュール412により、セキュアプロキシフリート406は、機密データを検出することが可能となり得る。検出モジュール412及び暗号化モジュール414の両者は、単一プロセスもしくは複数のプロセス、アプリケーション、または実行可能コードであり得、セキュアプロキシフリート406の1つ以上のプロセッサにより実行されると、セキュアプロキシフリート406に、本開示で説明される動作を実行させる。さらに、検出モジュール412及び暗号化モジュール414の両者は、構成情報がプッシュされ得る、あるいは提供され得る。構成情報は、バックエンドサービス408、またはバックエンドサービス408に対応付けられた管理者もしくは他のエンティティにより生成されたテンプレート情報を含み得る。検出モジュール412及び暗号化モジュール414を実行するプロセスのプロビジョニングまたはインスタンス化にて、構成情報は、検出モジュール412及び暗号化モジュール414に提供され得る。さらに、構成情報は、機密データを識別するのに好適な情報を含むことができ、各バックエンドサービス、ウェブサイト、アプリケーション、及び/または顧客は、自身の構成情報を提供し得る。構成情報は、機密データに対応付けられたデータタイプ、フィールド、フォーマット、またはフラグを示すことができ、これらは、機密データを検出するために検出モジュール412により使用され得る。
図4には示されていないが、TLSターミネータは、暗号化セキュア通信チャネル(例えばHTTPS接続)を介して送信された暗号化済みデータを平文に変換し、検出モジュール412へ復号化済みデータを転送あるいは提供し得る。様々な実施形態において、検出モジュール412は、受信したデータ(例えば平文)を構文解析し、受信したデータが機密データを含むと検出モジュール412が判定した場合、検出モジュール412は、暗号化すべきデータを暗号化モジュール414に転送あるいは提供し得る。例えば、検出モジュール412は、TLSターミネータからHTTP要求を受信し、HTTP要求を構文解析して、HTTP要求が顧客識別情報フィールドを含むと判定し、顧客識別情報フィールド内のデータの複製を、暗号化モジュールに提供し得る。
データ暗号化モジュール414は、暗号化された機密データを返し得る。暗号化された機密データは、データオブジェクトまたは下記にさらに詳しく説明される他のフォーマットで返され得る。様々な実施形態において、データ検出モジュール412は、暗号化された機密データを受信し、次いで機密データを暗号化された機密データで置き換え得る。セキュアプロキシフリート406の別のサービスまたはプロセスは、暗号化された機密データを含むデータをバックエンドサービスに転送あるいは提供する前に、TLSターミネータから受信したデータを、フォーマット化あるいは処理し得る。例えば、セキュアプロキシフリートは、平文の機密データを暗号化された機密データで置き換えた結果として要求に含まれる長さ情報を修正し得る。
バックエンドサービス408はまた、クライアントデバイスへ送られる機密データを暗号化し保護し得る。このような実施形態において、バックエンドサービス408は、暗号化キー管理サービス420に対するライブラリコールまたはAPIコールを生成し得る。クライアントデバイスへ送信する機密データを暗号化する要求は、前述と同じであり得る。コンピューティングリソースサービスプロバイダ404のサービスであり得る暗号化キー管理サービス420は、ホストコンピュータシステムへの暗号化キー(例えば秘密キー)の透過的な配布を管理し得る。バックエンドサービス408は、機密データを暗号化するために、単にAPIコールまたは他のコールを暗号化サービスに送信し得、暗号化キー管理サービス420は、1つ以上の暗号化ワークフローを実行して、暗号化された機密データを返し得る。
一実施例では、バックエンドサービス408は、顧客パスポート番号を、遠隔サービスまたはローカルサービス(例えばバックエンドサービス408のホストコンピュータシステムを実行させるデーモン)であり得る暗号化管理サービス420へ送信し得、次に暗号化管理サービス420は、暗号化したパスポート番号をバックエンドサービス408に返す。暗号化キー管理サービス420により返される暗号化済みデータは、タイムスタンプまたは署名などの他の情報を含み得る。バックエンドサービス408は次に、顧客402により運用されるクライアントデバイスなどのエンドポイントへ送信するための、暗号化された機密データを含む応答、要求、及び/またはコンテンツを生成し得る。
暗号化された機密データは、処理のために、1つ以上のネットワーク410を介して、セキュアプロキシサービス408または他のサービスまたはコンピュータシステムに向けてルーティングされ得る。例えば、バックエンドサービス408は、顧客402へウェブページを送信し得、レンダリングフリートは、バックエンドサービス408から暗号化された機密データを含むデータを受信し、データをハイパーテキストマークアップ言語(HTML)または他のフォーマットに変換し得る。さらに、セキュアプロキシフリート406は、機密データの復号化及び挿入の前、または機密データの復号化及び挿入と共に、データの追加処理を実行し得る。前述のように、セキュアプロキシフリート406は、顧客に送られるウェブページが機密データを含むことを、セキュアプロキシフリート406により送信及び/または傍受されたデータに含まれるフラグまたは他のマーカの存在に少なくとも部分的に基づいて、判定し得る。セキュアプロキシフリート406は、要求/応答のアンラッピング及び修正などの様々な処理動作を実行し得る。
暗号化キー管理サービス420は、暗号化キーに対応付けられたメタデータを保持し得、セキュリティポリシー及び/またはメタデータに少なくとも部分的に基づいて、暗号化キーへのアクセス権を判定し得る。さらに、特定の暗号化材料は、特定のデータタイプに対応付けられ得る。暗号化キー管理サービス420はまた、ローカルまたは集中型の暗号化キーストアを保持し得る。キーストアは、非対称キーまたは対称キーを含み得る。さらに、暗号化キー管理サービス420を使用して、デジタル封筒暗号化が提供され得る。さらに、秘密キー(非対称の場合)または対称キー(デジタル封筒暗号化の場合)の安全な帯域外送信の様々な方法が、暗号化キー管理サービス420により維持され得、定期的監査及び非定期的監査の両方の対象となり得る。
図5は、実施形態による、機密データを顧客502に転送する前に、セキュアプロキシフリート506が、1つ以上のバックエンドサービス508から機密データを受信する環境500を示す。コンピューティングリソースサービスプロバイダ504は、バックエンドサービス508が顧客502と通信することを可能にするために、セキュアプロキシフリート506を提供し得る。バックエンドサービス508は、ウェブページ、ウェブサイト、サービスコール、ユーザインターフェース、コマンドラインインターフェース、または1つ以上の仲介者510を介してバックエンドサービス508から顧客502へデータを通信するスタンドアロンアプリケーションもしくはモバイルアプリケーションなどのアプリケーションを通して、顧客502と通信し得る。バックエンドサービス508は、コンピューティングリソースサービスプロバイダ504または他のエンティティにより運用され得る。例えば、コンピューティングリソースサービスプロバイダ504は、オンライン小売りサービス、ウェブサイト、または他のアプリケーションなど、顧客502に公開される様々なサービスを実施するために、コンピューティングリソースサービスプロバイダ504により提供されるコンピューティングリソースへのアクセスを有する組織を提供し得る。コンピューティングリソースサービスプロバイダ504は、様々なネットワーク、コンピューティングデバイス、サービス、アプリケーション、または他のコンピューティングリソースを運用し、顧客及び他のエンティティに、様々な動作を実行するためのアクセスを提供し得る。
図5に示されるように、バックエンドサービス508は、機密データを含むデータを顧客502に送り得る。機密データは、前述のように、バックエンドサービス508により暗号化され得る。さらに、暗号化された機密データは、セキュアプロキシフリートにより傍受され、機密データが顧客502によりアクセス可能となり得るように、処理あるいは復号化され得る。セキュアプロキシフリート506は、レンダリングモジュール512と、復号化モジュール514とを含み得る。レンダリングモジュール512及び復号化モジュール514は、セキュアプロキシフリート506の1つ以上のプロセッサにより実行されるアプリケーションまたはプロセスであり得る。さらに、本開示で説明される様々なモジュール及びコンピューティングリソースは、物理的もしくは仮想的なコンピューティングリソース、またはこれらの組み合わせを含み得る。例えば、セキュアプロキシフリート506は、物理ホストコンピュータシステムによりサポートされる仮想コンピュータシステムインスタンスにより実行され得る。
図5に戻ると、レンダリングモジュール512は、顧客502のクライアントデバイスへ送られる機密データを含むデータをレンダリングし得る。例えば、レンダリングされるデータは、機密情報を含むウェブページを含み得る。レンダリングモジュールは、暗号化された機密情報を含むウェブページをレンダリングすることができ、暗号化されたコンテンツを復号化するために、レンダリングされたウェブページを復号化モジュール514に提供し得る。さらに他の実施形態では、レンダリングモジュール512は、レンダリングされたウェブページ内の暗号化された機密データを検出し、暗号化された機密データを復号化モジュール514に提供し得る。復号化モジュールは、レンダリングされたウェブページにレンダリングモジュール512により挿入され得る機密データの平文を返し得る。いくつかの実施形態では、ウェブページの全てまたは一部は、セキュアプロキシフリートに到達する前にレンダリングされ得る。例えば、1つ以上の仲介者510は、レンダリングフリートを含むことができ、レンダリングフリートは、バックエンドサービス508からウェブページデータを受信し、セキュアプロキシフリートへ転送され得るレンダリングされたウェブページコンテンツを生成する。さらに、仲介者510は、セキュアプロキシフリート506に送信されるデータに、コンテンツを挿入し得る。
図5にバックエンドサービス508からの機密データのエンドポイントとして顧客502が示されているが、機密データは、例えばサービス間コールにおいて、セキュアプロキシフリート506により別のサービスに配布されてもよい。さらに、顧客502は、様々な異なるコンピューティングデバイスまたはシステムを含み得る。例えば、顧客502は、顧客502により運用されるデータセンタに含まれる安全なストレージ場所を含み得る。前述のように、セキュアプロキシフリート506、レンダリングモジュール512、及び復号化モジュール514は、様々な構成要素の動作を定義し得る構成情報を受信し得る。例えば、構成情報は、レンダリングモジュールが暗号化されたデータを検出することを可能にする仕組みを示し得る。別の実施例では、構成情報は、暗号化された機密データを復号化するために復号化モジュールにより使用される暗号化アルゴリズムまたは暗号化キーを示し得る。
バックエンドサービス508はまた、図7に関連して下記にさらに詳しく説明される認可データストレージを保持し得る。これらの認可データストレージは、バックエンドサービス508内に存在してもよく、またはバックエンドサービス508に対し遠隔位置に存在してもよく、単一のデータストアまたは分散されたデータストアを含み得る。バックエンドサービス508は、認可データストレージにアクセスするための暗号化キー及び/またはクレデンシャル情報を保持し得る。バックエンドサービス508は、様々なコンピューティングデバイス(例えばベアメタルハイパバイザー、仮想マシン、または仮想化コンテナ)を使用して実行され得る。
仲介者510は、データの機密レベルに関して信頼性のない、または機密情報への認可されたアクセス権を有さない、任意の数の信頼性のない仲介コンピュータシステムもしくはサービスを含み得る。さらに、仲介者510は、バックエンドサービス508からセキュアプロキシフリート506に要求を送ることを担当し得る。例えば、バックエンドサービス508により送信されたデータは、仲介者により認証及び認可され、次いでセキュアプロキシフリート506へ転送され得る。セキュアプロキシフリート506は、暗号化された機密データが送信先で使用されるかどうかを判定し得る。例えば、クライアントデバイスは、機密データを受信することを認可され、次いでセキュアプロキシフリートは、送信先が機密データを使用することが可能であることを判定し得る。データが送信先(例えばサービスまたは顧客デバイス)により使用される場合、機密データは復号化される。例えば、機密データは、セキュアプロキシフリート506により安全なストレージ場所でローカルに、または例えば前述のように暗号化キー管理サービスにより遠隔に格納され得る秘密キーにより、復号され得る。様々な実施形態では、セキュアプロキシフリート506は、復号化された機密データを、5〜20秒などの短い時間間隔の間、メモリに保持する。
バックエンドサービス508は、ページレット、ウィジェット、及び/またはサーブレットを含む、プロキシウェブサイトページへのサービスコールを含むセキュアプロキシフリート506へのサービスコールを生成し得る。各バックエンドサービスは、セキュアプロキシフリートのテナントとみなすことができ、テナント識別子を有し得る。各テナントは、セキュアプロキシフリート506内に指定され隔離されたコンテナを有することができ、これは、他のテナント及びセキュアプロキシフリート506により実行される任意の他のプロセス(例えばオペレーティングシステム)から、隔離され得る。下記にさらに詳しく説明されるように、オペレーティングシステムに含まれるプロセス分離及び強制アクセス制御を伴うランタイムは、このようなプロセス隔離を施行する。その結果、セキュアプロキシフリート506または構成要素の動作に任意の変更があった場合には、プロセスの終了及び新しい構成情報でのプロセスの再プロビジョニングが求められ得る。
各テナントコンテナ(例えばテナントに対応付けられた各隔離プロセス)は、復号化のための秘密キーもしくはデジタル封筒対称キー、提示フォーマット、公開エンドポイントのアドレス情報(例えば公的にアドレス指定可能なアドレス)、または保護された機密情報を配布するのに好適な他の情報を含む構成情報により定義され得る。遠隔デバイス及びシステムに機密データを提供する時、セキュアプロキシフリート506は、暗号化保護された通信チャネルを確立し得る。いくつかの実施形態では、セキュアプロキシフリート506は、顧客502がバックエンドサービス508に要求を提出したことに応じて生成されたTLS接続を、再確立または再使用し得る。機密データが復号化モジュール514により一度復号化されており、これから顧客に送信される場合、機密データを保護するために他の機構が使用され得る。例えば、復号化された機密データを含む、顧客に送信されるデータは、顧客の公開キーにより暗号化され得る。
図6は、実施形態による、データストリーム602を示す図600である。データストリーム602は、前述のようにセキュアプロキシフリートで受信され得る。データストリーム602は、前述のように顧客のクライアントデバイスまたはバックエンドサービスから取得され得る。データストリーム602は、様々な圧縮アルゴリズムを使用して圧縮され得る。さらに、データストリームは、暗号化されたペイロード606を含み得る。暗号化された機密データ606及びデータストリーム602は、様々な異なるフォーマット化規則に従って、ソースによりフォーマット化され得る。フォーマット化規則は、コンピューティングリソースサービスプロバイダにより確立され得、データストリーム602、及びデータストリーム602に含まれる情報の効率的な処理を可能にし得る。
例えば、バックエンドサービスは、顧客に送るHTTP応答を生成し、HTTP応答をフォーマット化して圧縮データストリームを生成し、圧縮データストリームを顧客に送信する。前述のように、セキュアプロキシフリートが要求を処理し、暗号化済み機密データを復号化することを可能にするために、応答は、特定のフォーマットに従って暗号化され得た暗号化済み機密データを含み得る。暗号化されたペイロード606は、任意の長さを有し得、暗号化されたペイロード606をデータストリーム602において送信する前に、把握されていなくても、あるいは特定されていなくてもよい。
暗号化されたペイロード606の存在を示すために、フラグまたはマーカ604がデータストリームに含まれ得る。例えば、実施形態において、暗号化されたペイロード606の前のフラグまたはマーカ604は、フラグまたはマーカ604に続くデータが、暗号化されたペイロード606を含む機密データであることを示す。暗号化されたペイロード606に続くフラグまたはマーカ604は、暗号化されたペイロード606の終わりを示し得る。代替的実施形態では、暗号化されたペイロード606の前のフラグまたはマーカ604は、暗号化されたペイロード606のデータ長を含み、このようにして、暗号化されたペイロード606の終わりは、暗号化されたペイロード606に続く別のフラグまたはマーカ604に頼ることなく特定され得る。
特定のフォーマットに従って、またはバックエンドサービスの動作に少なくとも部分的に基づいて、暗号化されたペイロード606に含まれる他の情報には、サービスタイプ、ウェブサイトタイプ、タイムスタンプ、署名、キー材料、ルーティング情報、アクセスポリシー、認証情報、認可情報、または暗号化されたペイロード606に含めるのに好適な任意の他の情報が含まれる。暗号化されたペイロードのフォーマットは、1つ以上のバックエンドサービス、コンピューティングリソースサービスプロバイダ、ウェブサイト運営者、顧客、公的基準設定委員会、または任意の他のエンティティにより設定され得る。
ペイロード606及び/またはデータストリーム602は、認可のないコンピューティングリソースには解読不可能なメタデータを含み得る。特定の実施形態では、ペイロード606は、メタデータがなければ解読不可能であり得、メタデータは、ペイロード606の暗号化に使用したキー材料に対応付けられた情報、ペイロードの暗号化を担当するエンティティ、監査情報、認証情報、または他のこのような情報を含む様々な情報を示し得る。
図7は、実施形態による、セキュアプロキシフリート706が1つ以上の公開エンドポイント702から機密データを受信し、1つ以上のバックエンドサービス708の1つ以上の認可データストア718に機密データを送信する前に、機密データを暗号化する環境700を示す。コンピューティングリソースサービスプロバイダは、前述のように、バックエンドサービス708が公開エンドポイント702を通して顧客と通信することを可能にするために、セキュアプロキシフリート706を提供し得る。公開エンドポイント702は、ウェブページ、ウェブサイト、サービスコール、ユーザインターフェース、コマンドラインインターフェース、またはスタンドアロンアプリケーションもしくはモバイルアプリケーションなどのアプリケーションを介した通信を可能にするネットワークの公的にアドレス指定可能なリソースを含み得る。例えば、公開エンドポイント702は、アドレス「secure.example.com」を含み得る。
バックエンドサービス708及び認可データストア718は、コンピューティングリソースサービスプロバイダ704または他のエンティティにより運用され得る。例えば、コンピューティングリソースサービスプロバイダ704は、安全なストレージサービスなど、顧客に公開される様々なサービスを実施するために、コンピューティングリソースサービスプロバイダ704により提供されるコンピューティングリソースへのアクセスを有する組織を提供し得る。コンピューティングリソースサービスプロバイダ704はまた、様々なネットワーク、コンピューティングデバイス、サービス、アプリケーション、または他のコンピューティングリソースを運用し、顧客及び他のエンティティに、様々な動作を実行するためのアクセスを提供し得る。認可データストア718は、様々なストレージリソースを含むことができ、オンデマンドストレージサービスまたはブロックレベルストレージサービスなどの1つ以上のサービスにより実施され得る。さらに、認可データストア718は、機密データを保持するための安全なストレージ場所を提供し得る。
図7に示されるように、セキュアプロキシフリート706は、オペレーティングシステム710を実施し得る。さらに、オペレーティングシステム710は、複数の隔離された実行環境712を提供し得る。オペレーティングシステム710は、セキュア実行Linux(登録商標)などの隔離及び/またはセキュア実行をサポートするオペレーティングシステムであり得る。例えば、オペレーティングシステム710は、プロセスを制御し、認可されていないプロセスの通信及び動作を防止するカーネルレベルのアプリケーションを含む。これらのオペレーティングシステムは、隔離された実行環境712内で実行されるプロセスへのアクセスを防止し得る。セキュアプロキシフリートは、公開エンドポイント702に送信されたHTTP要求が取得され復号化されるように、TLSターミネータを実行し得る。
さらに、オペレーティングシステム710により実行されるセキュアプロキシフリート706または他のプロセスは、プロキシ714を使用して、隔離された実行環境712に要求を送信し得る。オペレーティングシステム710は、プロセスが保護された方法で、隔離された実行環境712と通信できるように、プロキシ714を提供し得る。例えば、プロキシ714は、UNIX(登録商標)ドメインソケットを含み得、これは、TLSターミネータなどのオペレーティングシステム710により実行されるプロセスからのデータを、隔離された実行環境712に送信する。様々な実施形態において、検出モジュール、暗号化モジュール、レンダリングモジュール、復号化モジュール、または本開示で説明される他のプロセスは、オペレーティングシステム710の隔離された実行環境712内で実行される。
図7に戻ると、バックエンドサービス708は、バックエンドサービス708への要求及び/またはコールが相互に認証され認可されていることを検証し得る。バックエンドサービス708を呼び出す各コンピュータシステム自体は、名前、アドレス、タイプ、及び/または要求されるペイロードフォーマットにより識別され得る。機密データを受信すると、セキュアプロキシフリート706は、キャッシュまたは永続ストレージから、バックエンドサービス708のための暗号化キーを取得し、ペイロードフォーマットに従ってペイロードを構築する。このフォーマット情報は、隔離された実行環境内でプロセスをプロビジョニングするのに使用される構成情報に含まれ得る。さらに、構成及び/またはフォーマット情報は、宛先システムに対するヘッダフォーマットを示す情報、及びバックエンドサービス708に送信する機密データの処理方法に関する他の情報を含み得る。公開エンドポイント702を介して取得された要求は、直接またはAPIを介して、バックエンドサービス708に送られ得る。適切に認証され認可されているのであれば、バックエンドサービス708は、ウェブサイトもしくは他のサービスの場合は要求システムへ、またはクライアントコンピューティングサービスと識別され認可されている場合はクライアントコンピューティングサービスへ、データを返し得る。
図8は、実施形態による、コンテンツ配信ネットワーク816に統合されたセキュアプロキシ806が、顧客802から機密データを受信し、機密データを1つ以上のバックエンドサービス808に送信する前に、機密データを暗号化する環境800を示す。コンテンツ配信ネットワーク816は、前述のようにコンピューティングリソースサービスプロバイダにより実施されるバックエンドサービス808が、顧客802と通信することを可能にするために、セキュアプロキシ806を提供し得る。バックエンドサービス808は、コンピューティングリソースサービスプロバイダまたは他のエンティティにより運用され得る。例えば、コンピューティングリソースサービスプロバイダは、安全なストリーミングメディアサービスなど、顧客に公開される様々なサービスを実施するために、コンピューティングリソースサービスプロバイダにより提供されるコンピューティングリソースへのアクセスを有する組織を提供し得る。コンピューティングリソースサービスプロバイダはまた、様々なネットワーク、コンピューティングデバイス、サービス、アプリケーション、または他のコンピューティングリソースを運用し、顧客及び他のエンティティに、様々な動作を実行するためのアクセスを提供し得る。
図8に示されるように、1つ以上のネットワーク810は、様々なエンティティにより実施される様々な異なるネットワークを含み得る。例えば、1つ以上のネットワーク810には、インターネットなどの公的にアドレス指定可能なネットワークの一部であるネットワークバックボーンまたは他のネットワーク構造が含まれ得る。下記にさらに詳しく説明されるように、ネットワーク810には、公衆ネットワーク、プライベートネットワーク、コンテンツ配信ネットワーク、ならびに異なるエンティティ及び/またはサービスにより実施され得、異なるセキュリティポリシーを施行し得、異なるエンティティ及び/またはサービスによりアクセス可能であり得る他のネットワークが含まれ得る。
コンテンツ配信ネットワーク816を使用して、地理的近接度及び/またはネットワーク近接度(例えばネットワークホップ数)が顧客802により近いネットワーク場所から、顧客802に対し、高速コンテンツがキャッシュされ供給され得る。顧客802は、バックエンドサービス808からのコンテンツを要求することができ、これは、利用可能なコンテンツの全てを保持し得るデータセンタ内で実行されることができる。一方、コンテンツ配信ネットワーク816は、遅延を短縮するために、顧客802のより近くで、利用可能なコンテンツの一部を記憶またはキャッシュし得る。遅延は一往復時間(RTT)で測定することができ、よって、頻度の高い要求は、顧客のより近くでコンテンツを提供することで、ネットワーク費用が削減され、顧客802により良い体験が提供され得る。
コンテンツ配信ネットワーク816は、接続ターミネータ804を使用して、セッションの確立及び終了を行い得る。顧客802からネットワークエッジデバイス(例えば存在点(POP)デバイス)への接続が確立され得る。様々な実施形態において、ネットワークエッジデバイスと顧客802との間で送信されるコンテンツ及び/または要求は、TLSまたはSSLなどの暗号化保護された通信チャネルを介して送信され得る。ネットワークエッジデバイス及び顧客802は、相互に認証が行われ得る。さらに、TLS接続などの暗号化保護された通信チャネルによる接続は、長命のセッションであり得る。
コンテンツ配信ネットワーク816は、顧客802とは異なるエンティティ、及びコンピューティングリソースサービスプロバイダにより運用され得る。接続ターミネータ804は、前述のように、顧客802から要求を取得し、要求を復号化し得る。これにより、機密データを含み得る要求の平文表現が公開され得る。接続ターミネータ804及びセキュアプロキシ806は、前述のように、隔離された実行環境をサポートするオペレーティングシステムにおいて実行され得る。さらに、セキュアプロキシ806は、前述のように、データ保護モジュールを含み得る。様々な実施形態において、接続ターミネータ804は、顧客からの要求を復号化し、要求をセキュアプロキシ806に提供する。
前述のように、データ保護モジュールは、機密データを検出し、バックエンドサービス808に要求を送信する前に、機密データを暗号化し得る。さらに、コンピューティングリソースサービスプロバイダ、または暗号化キーサービスなどのコンピューティングリソースサービスプロバイダのサービスは、キー材料をセキュアプロキシ806に提供し得る。キー材料は、前述のように、機密データを暗号化及び復号化するために使用され得る。さらに、キー材料は、セキュアプロキシ806が接続ターミネータ804から要求を取得することとは分離して送信され得る。セキュアプロキシ806が機密データを検出することを可能にするために、要求は、HTTP POST、マルチパートPOST、JSON、XML、または検出可能で、所有者を示し得るトークンもしくはフィールドを含む他のフォーマットなど、構造化されたフォーマットに従い得る。次いでデータ保護モジュールは、データの所有者を示す情報に少なくとも部分的に基づいて、暗号化または復号化を行い得る。例えば、データの公開キーでデータを暗号化すること、または所有者の秘密キーでデータを暗号化するのに使用される対称キーを暗号化して、暗号化した対称キーを所有者に送ることが挙げられる。
コンテンツ配信ネットワーク816は、機密データのセキュリティ及び保護を強化するために、プロセス隔離及び強制アクセス制御を伴うランタイムによりオペレーティングシステムを実行する1つ以上のサーバラックを含み得る。さらに別の実施形態では、各ベアメタルサーバが1つのエンティティにのみ割り当てられるコンテンツ配信ネットワーク環境において実行される仮想ホストにより、コンテンツ配信ネットワーク816は実行され得る。さらに、ハードウェア層(例えば専用ラック及び/または専用ホスト)における十分な隔離により、セキュアプロキシ806は、コンテナインスタンス内で実行され得る。
図9は、実施形態による、コンテンツ配信ネットワーク916に接続されたセキュアプロキシ906が、顧客902から機密データを受信し、機密データを1つ以上のバックエンドサービス908に送信する前に、機密データを暗号化する環境900を示す。コンテンツ配信ネットワーク916は、前述のようにコンピューティングリソースサービスプロバイダにより実施されるバックエンドサービス908が、顧客902と通信することを可能にするために、セキュアプロキシ906との接続を確立する。バックエンドサービス908は、コンピューティングリソースサービスプロバイダまたは他のエンティティにより運用され得る。例えば、コンピューティングリソースサービスプロバイダは、安全なストリーミングメディアサービスなど、顧客に公開される様々なサービスを実施するために、コンピューティングリソースサービスプロバイダにより提供されるコンピューティングリソースへのアクセスを有する組織を提供し得る。コンピューティングリソースサービスプロバイダはまた、様々なネットワーク、コンピューティングデバイス、サービス、アプリケーション、または他のコンピューティングリソースを運用し、顧客及び他のエンティティに、様々な動作を実行するためのアクセスを提供し得る。
図9に示されるように、1つ以上のネットワーク910は、様々なエンティティにより実施される様々な異なるネットワークを含み得る。例えば、1つ以上のネットワーク910には、インターネットなどの公的にアドレス指定可能なネットワークの一部であるネットワークバックボーンまたは他のネットワーク構造が含まれ得る。下記にさらに詳しく説明されるように、ネットワーク910には、公衆ネットワーク、プライベートネットワーク、コンテンツ配信ネットワーク、ならびに異なるエンティティ及び/またはサービスにより実施され得、異なるセキュリティポリシーを施行し得、異なるエンティティ及び/またはサービスによりアクセス可能であり得る他のネットワークが含まれ得る。
コンテンツ配信ネットワーク916を使用して、地理的近接度及び/またはネットワーク近接度(例えばネットワークホップ数)が顧客902により近いネットワーク場所から、顧客902に対し、高速コンテンツがキャッシュされ供給され得る。顧客902は、バックエンドサービス908からのコンテンツを要求することができ、これは、利用可能なコンテンツの全てを保持し得るデータセンタ内で実行されることができる。一方、コンテンツ配信ネットワーク916は、遅延を短縮するために、顧客902のより近くで、利用可能なコンテンツの一部を記憶またはキャッシュし得る。遅延は一往復時間(RTT)で測定することができ、よって、頻度の高い要求は、顧客のより近くでコンテンツを提供することで、ネットワーク費用が削減され、顧客902により良い体験が提供され得る。
コンテンツ配信ネットワーク916は、接続ターミネータ904を使用して、セッションの確立及び終了を行い得る。顧客902からネットワークエッジデバイス(例えば存在点(POP)デバイス)への接続が確立され得る。様々な実施形態において、ネットワークエッジデバイスと顧客902との間で送信されるコンテンツ及び/または要求は、TLSまたはSSLなどの暗号化保護された通信チャネルを介して送信され得る。ネットワークエッジデバイス及び顧客902は、相互に認証が行われ得る。さらに、TLS接続などの暗号化保護された通信チャネルによる接続は、長命のセッションであり得る。図9に示されるように、接続ターミネータ904はまた、セキュアプロキシ906との接続を確立し得る。セキュアプロキシ906は、コンピューティングリソースサービスプロバイダにより実行されてもよく、コンテンツ配信ネットワーク916とは異なるネットワークに接続されてもよい。
コンテンツ配信ネットワーク916は、顧客902とは異なるエンティティ、及びコンピューティングリソースサービスプロバイダにより運用され得る。接続ターミネータ904は、前述のように、顧客902から要求を取得し、要求を復号化し得る。これにより、機密データを含み得る要求の平文表現が公開され得る。接続ターミネータ904は次に、要求を暗号化し、暗号化保護された通信チャネルを介してセキュアプロキシ906に要求を送信し得る。例えば、接続ターミネータ904は、セキュアプロキシ906と、長命TLS接続を確立し得る。これにより、接続ターミネータ904とセキュアプロキシ906との間でデータを送信する時に、キー材料を再交渉する必要性が削減され得る。このような実施形態において、セキュアプロキシは、自身のTLSターミネータを実行させ得るが、説明を簡潔にするため図9には示されていない。さらに、セキュアプロキシ906は、前述のように、データ保護モジュールを含み得る。様々な実施形態において、接続ターミネータ904は、顧客からの要求を復号化し、要求をセキュアプロキシ906に提供する。
前述のように、データ保護モジュールは、機密データを検出し、バックエンドサービス908に要求を送信する前に、機密データを暗号化し得る。さらに、コンピューティングリソースサービスプロバイダ、または暗号化キーサービスなどのコンピューティングリソースサービスプロバイダのサービスは、キー材料をセキュアプロキシ906に提供し得る。キー材料は、前述のように、機密データを暗号化及び復号化するために使用され得る。さらに、キー材料は、セキュアプロキシ906が接続ターミネータ904から要求を取得することとは分離して送信され得る。セキュアプロキシ906が機密データを検出することを可能にするために、要求は、HTTP POST、マルチパートPOST、JSON、XML、または検出可能で、所有者を示し得るトークンもしくはフィールドを含む他のフォーマットなど、構造化されたフォーマットに従い得る。次いでデータ保護モジュールは、データの所有者を示す情報に少なくとも部分的に基づいて、暗号化または復号化を行い得る。例えば、データの公開キーでデータを暗号化すること、または所有者の秘密キーでデータを暗号化するのに使用される対称キーを暗号化して、暗号化した対称キーを所有者に送ることが挙げられる。
図9に示される環境において、機密データを保護するプロセスは、コンテンツ配信ネットワーク916とセキュアプロキシ906との間に追加のネットワークホップが加えられたことを除いては、前述と同じであり得る。いくつかの実施形態では、コンテンツ配信ネットワークは、図8に関連して前述されたように、セキュアプロキシ906を含む。これらの実施形態では、所与の要求に関して、コンテンツ配信ネットワークまたはそのプロセスは、コンテンツ配信ネットワーク916内で実行されるセキュアプロキシにて要求を処理するか、コンピューティングリソースサービスプロバイダにより実行されるセキュアプロキシ906へ、処理のために要求を転送するかを、決定し得る。
例えば、コンテンツ配信ネットワーク916が機密データを暗号化する場合、コンテンツ配信ネットワーク916は、フラグを追加することで、機密データが保護されているためデータを無視することができることを、ダウンストリームデータ保護モジュールに知らせ得る。コンテンツ配信ネットワーク916は、公開が許容できない状況の場合、機密データを暗号化することを決定し得る。別の実施例では、コンテンツ配信ネットワーク916は、機密データに対応付けられたデータタイプに基づいて、機密データを暗号化することを決定し得る。従って、機密性の低いデータタイプであると示されるデータに関しては、コンテンツ配信ネットワーク916は、機密データを含む要求を、保護のためにセキュアプロキシ906に転送し得る。コンテンツ配信ネットワーク916による機密データの暗号化は、前述の仕組みのうちのいずれかを使用して実行され得る。
さらに、コンテンツ配信ネットワーク916はまた、顧客902にデータを提供するために使用され得る。暗号化された機密データを顧客に提供する時、コンテンツ配信ネットワーク916は、前述のように、要求を構文解析し、機密データを復号化し、暗号化された機密データを復号化された機密データで置き換え得る。しかし、コンテンツ配信ネットワーク916の場合、データは、構造化されていないフォーマットまたはデータストリームに含まれていてもよい。データに含まれるフラグまたは他のマーカを使用して、機密データ、機密データを復号化するか否か、機密データを無視するか否か、機密データをコンテンツ配信ネットワーク916において復号化するか、コンピューティングリソースサービスプロバイダ環境内で復号化するか、または機密データの処理方法に関する任意の他の指示が示され得る。
図10は、実施形態による、バックエンドサービスへ送る機密データを保護するプロセス1000の実施例を示すブロック図である。プロセス1000は、図3に関連して前述されたセキュアプロキシフリートなどの任意の好適なシステムにより実行され得る。プロセス1000(または説明される任意の他のプロセス、あるいはこれらのプロセスの変形及び/または組み合わせ)のうちの一部または全ては、実行可能命令及び/または他のデータを含む1つ以上のコンピュータシステムの制御の下で実行され得、1つ以上のプロセッサ上で集合的に実行される実行可能命令として実施され得る。実行可能命令及び/または他のデータは、非一時的なコンピュータ可読記憶媒体上に記憶され得る(例えば磁気媒体、光学媒体、またはフラッシュ媒体に永続的に記憶されるコンピュータプログラム)。
プロセス1000は、暗号化保護送信の要求を受信すること(1002)を含む。暗号化保護送信には、TLSまたはSSLなど、データを暗号化して、安全ではないネットワークを介してデータを送信する様々な方法が含まれ得る。さらに、要求は、顧客とアプリケーションとの対話に応じて、クライアントデバイスにより実行されるアプリケーションにより生成され得る。例えば、顧客は、ウェブブラウザを使用して、特定のウェブページに移動し得る。要求は、前述のように、セキュアプロキシフリート、または接続ターミネータなどのセキュアプロキシフリートの構成要素にて、受信され得る。次に、セキュアプロキシフリートまたは接続ターミネータは、暗号化保護送信を確立し得る(1004)。暗号化保護送信は、前述のように、アルゴリズムのプロトコルに少なくとも部分的に基づいて確立され得る。
暗号化保護送信が一度確立されると、セキュアプロキシフリートは、暗号化保護送信を介してデータを受信し得る(1006)。データには、要求、サービスコール、フォーマット化及び非フォーマット化データ(例えばデータストリーム)、または顧客によりバックエンドサービスに提出され得る任意の他の情報が含まれ得る。次に、接続ターミネータがデータを復号化し得る(1008)。例えば、データがHTTPS要求を含む場合、接続ターミネータは、暗号化されたデータを復号化し、HTTP要求を生成し得る。次に、セキュアプロキシフリート、またはルーティング構成要素などのセキュアプロキシフリートの構成要素が、復号化されたデータに少なくとも部分的に基づいて、エンドポイント及びルーティング情報を特定し得る(1010)。エンドポイント及びルーティング情報は、データを送る特定のバックエンドサービス及びネットワーク経路を示し得る。さらに、この情報は、データを処理するセキュアプロキシフリートの特定のデータ保護モジュールを決定するために使用され得る。前述のように、セキュアプロキシフリート及び/またはデータ保護モジュールは、単一のテナント(例えば単一のバックエンドサービスまたはバックエンドサービスの公開エンドポイント)のために構成され得、よって単一のテナントに送られる要求のみを処理し得る。
図10に戻ると、プロセス1000を実行するシステムは次に、データ保護モジュールにデータを提供し得る(1012)。復号化されたデータは、安全なチャネルを介してストリーミングされ得る、あるいはデータ保護モジュールに提供され得る。例えば、セキュアプロキシフリートは、復号化されたデータを、UNIX(登録商標)ドメインソケットを介してデータ保護モジュールにデータを提供し得る。データ保護モジュールは、データを受信し、データの構成オプションを選択し得る(1014)。構成オプションは、前述の構成情報に少なくとも部分的に基づいて選択され得る。例えば、データ保護モジュールは、要求フォーマットなどのデータのフォーマット、及び機密データを暗号化するために使用する暗号化キーを選択し得る。
次にデータ保護モジュールは、構成オプションに少なくとも部分的に基づいて、データを暗号化し得る(1016)。データ保護モジュールは、構成オプションにより示される機密データのみを暗号化し得る。前述のように、データ保護モジュールは、暗号化キーサービスを使用して、暗号化ワークフローの様々な動作を実行し得る。セキュアプロキシフリートは次に、暗号化されたデータを、1つ以上の仲介者を介して、エンドポイントへ送信し得る(1018)。仲介者は、前述のように、様々なネットワーク及びコンピュータシステムを含み得る。さらに、暗号化されたデータは、バックエンドサービスへの要求に挿入され、バックエンドサービスに対応付けられたエンドポイントに送信され得る。
1002〜1018において行われる動作のうちの1つ以上は、同時実施を含む様々な順序及び組み合わせで行われてもよいことに留意されたい。例えば、いくつかの実施形態において、動作1002〜1008は省略されてもよく、単にセキュアプロキシがクライアントデバイスから平文データを受信してもよい。さらに、いくつかの実施態様において、セキュアプロキシフリートは、複数のデータ保護モジュール及び/または複数のプロキシを保持してもよく、このような場合、セキュアプロキシフリートにて、プロセス1000の複数のインスタンスが同時に実行され得る。
図11は、実施形態による、バックエンドサービスからクライアントデバイスへ送られる機密データを保護するプロセス1100の実施例を示すブロック図である。プロセス1100は、図5に関連して前述されたセキュアプロキシフリートなどの任意の好適なシステムにより実行され得る。プロセス1100(または説明される任意の他のプロセス、あるいはこれらのプロセスの変形及び/または組み合わせ)のうちの一部または全ては、実行可能命令及び/または他のデータを含む1つ以上のコンピュータシステムの制御の下で実行され得、1つ以上のプロセッサ上で集合的に実行される実行可能命令として実施され得る。実行可能命令及び/または他のデータは、非一時的なコンピュータ可読記憶媒体上に記憶され得る(例えば磁気媒体、光学媒体、またはフラッシュ媒体に永続的に記憶されるコンピュータプログラム)。
プロセス1100は、データの要求を受信すること(1102)を含む。要求は、顧客により運用されるクライアントデバイス、コンピューティングリソースサービスプロバイダの別のサービス、または第三者から、受信され得る。例えば、顧客は、第1のサービスへのアクセスを要求し得、これは次に、第1のサービスによる顧客への応答に含める機密データを、バックエンドサービスに要求し得る。次にバックエンドサービスは、データが機密データであると判定し得る(1104)。バックエンドサービスは、データに対応付けられたカテゴリまたはタイプに少なくとも部分的に基づいて、データが機密であると判定し得る。その結果、バックエンドサービスは、機密データを暗号化し得る(1106)。前述のように、機密データを保護するために、任意の数の暗号化アルゴリズム及び規格が使用され得る。例えば、バックエンドサービスは、機密データを暗号化するために使用された暗号化キーを、デジタル封筒暗号化を使用して保護し得る。
次にバックエンドサービスは、暗号化されたデータを含むデータストリームを、エンドポイントに送信し得る(1108)。データストリームは、セキュアプロキシフリートにより、送信、再送信、及び/または傍受され得る。さらに、前述のような1つ以上の仲介者が、データストリームを取得し修正し得る。例えば、レンダリングフリートは、データストリームを取得し、データストリームに含まれるデータに少なくとも部分的に基づいて、HTMLを生成し得る。次にセキュアプロキシフリートが、データストリームを受信し得る(1110)。セキュアプロキシフリートは、コンテンツ配信ネットワークに統合され得る、またはコンピューティングリソースサービスプロバイダのコンピューティングリソースを使用して実行され得る。
次にセキュアプロキシフリートは、暗号化されたデータを検出し得る(1112)。暗号化されたデータは、前述のように、データストリームに含まれるフラグまたはマーカに少なくとも部分的に基づいて、検出され得る。次にセキュアプロキシフリート、またはレンダリングモジュールなどのセキュアプロキシフリートの構成要素は、データストリームをレンダリングし得る(1114)。データストリームをレンダリングすることは、クライアントデバイスにより使用されるデータを処理し編成する任意の数の動作を含み得る。例えば、データをレンダリングすることは、データから全ての実行可能コードを削除することを含み得る。セキュアプロキシフリート、または復号化モジュールなどのセキュアプロキシフリートの構成要素は、データを復号化し得る(1116)。前述のように、セキュアプロキシフリートのメモリに記憶され得る、または暗号化キーサービスから取得され得る暗号化キーを使用して、データが復号化され得る。
次にセキュアプロキシフリートは、レンダリングされたデータストリームに復号化されたデータを挿入し得る(1118)。レンダリングされたデータストリームは、特定のクライアントデバイスにより使用されるために編成されて特定のクライアントデバイスへ送られるデータを含み得る。例えば、レンダリングされたデータストリームは、顧客によるウェブページコンテンツ要求を含み得る。復号化されたデータを挿入することは、暗号化されたデータを、レンダリングデータストリーム内の復号化されたデータで上書きすることを含み得る。次にセキュアプロキシフリートは、レンダリングされたデータストリームをエンドポイントに送信し得る(1120)。例えば、セキュアプロキシフリートは、顧客に対応付けられたIPアドレスを使用して、インターネットを介して、顧客にレンダリングされたデータストリームを送信し得る。
1102〜1120において行われる動作のうちの1つ以上は、同時実施を含む様々な順序及び組み合わせで行われてもよいことに留意されたい。例えば、いくつかの実施形態において、動作1102〜1108は省略されてもよく、単にセキュアプロキシが暗号化されたデータを受信してもよい。さらに、いくつかの実施態様において、セキュアプロキシフリートは、複数のデータ保護モジュール及び/または複数のプロキシを保持してもよく、このような場合、セキュアプロキシフリートにて、プロセス1100の複数のインスタンスが同時に実行され得る。
図12は、実施形態による、データ保護モジュールにより機密データを保護するプロセス1200の実施例を示すブロック図である。プロセス1200は、図3に関連して前述されたデータ保護モジュールなどの任意の好適なシステムにより実行され得る。プロセス1200(または説明される任意の他のプロセス、あるいはこれらのプロセスの変形及び/または組み合わせ)のうちの一部または全ては、実行可能命令及び/または他のデータを含む1つ以上のコンピュータシステムの制御の下で実行され得、1つ以上のプロセッサ上で集合的に実行される実行可能命令として実施され得る。実行可能命令及び/または他のデータは、非一時的なコンピュータ可読記憶媒体上に記憶され得る(例えば磁気媒体、光学媒体、またはフラッシュ媒体に永続的に記憶されるコンピュータプログラム)。
プロセス1200は、構成情報を取得すること(1202)を含む。構成情報は、前述のようにバックエンドサービスから取得され得、機密データ及びバックエンドサービスとの通信を保護するのに好適な情報を含み得る。例えば、構成情報は、バックエンドサービスの公開キーと、バックエンドサービスに対応付けられた要求フォーマットとを含み得る。次にデータ保護モジュールは、接続ターミネータから平文データを含む要求を受信し得る(1204)。要求は、前述のようにセキュアプロキシフリートまたはエッジネットワークデバイスから、転送あるいは提供され得る。要求には、HTTP要求またはサービス要求を含む任意の数の要求が含まれ得る。
次にデータ保護モジュールは、要求が機密データを含むかどうかを判定し得る(1206)。データ保護モジュールは、前述のようにフラグまたはデータタイプにより示され得る構成情報に少なくとも部分的に基づいて、機密データを検出し得る。要求が機密データを含まない場合、データ保護モジュールまたはセキュアプロキシフリートは、要求をエンドポイントに送信し得る(1208)。しかし、データ保護モジュールが機密データを検出した場合、データ保護モジュールは、機密データを暗号化モジュールに提供し得る(1210)。暗号化モジュールは、前述のように、セキュアプロキシフリートにより実行される別個のプロセスであり得る。暗号化モジュールはまた、機密データを暗号化するために、暗号化キーサービスと対話し得る。
次にデータ保護モジュールは、暗号化モジュールから暗号化された機密データを受信し得る(1212)。次にデータ保護モジュールは、バックエンドサービスへの要求をフォーマット化し得る(1214)。要求は、構成情報に少なくとも部分的に基づいてフォーマット化され得る。要求が一度フォーマット化されると、データ保護モジュールは、平文の機密データを暗号化された機密データで置き換え得る(1216)。これにより、修正された要求で要求が行われ得る。データ保護モジュールは次に、バックエンドサービスに対応付けられたエンドポイントへ、要求を送信し得る(1218)。
1202〜1218において行われる動作のうちの1つ以上は、同時実施を含む様々な順序及び組み合わせで行われてもよいことに留意されたい。例えば、いくつかの実施形態において、動作1202〜1206は省略されてもよく、単にデータ保護モジュールが、データ保護モジュールに提供されるデータ全てを暗号化してもよい。さらに、いくつかの実施態様において、セキュアプロキシフリートは、複数のデータ保護モジュール及び/または複数のプロキシを保持してもよく、このような場合、セキュアプロキシフリートにて、プロセス1200の複数のインスタンスが同時に実行され得る。
図13は、実施形態による、セキュアプロキシフリートのためのキー管理を実行するプロセス1300の実施例を示すブロック図である。プロセス1300は、図4に関連して前述された暗号化キー管理サービスなどの任意の好適なシステムにより実行され得る。プロセス1300(または説明される任意の他のプロセス、あるいはこれらのプロセスの変形及び/または組み合わせ)のうちの一部または全ては、実行可能命令及び/または他のデータを含む1つ以上のコンピュータシステムの制御の下で実行され得、1つ以上のプロセッサ上で集合的に実行される実行可能命令として実施され得る。実行可能命令及び/または他のデータは、非一時的なコンピュータ可読記憶媒体上に記憶され得る(例えば磁気媒体、光学媒体、またはフラッシュ媒体に永続的に記憶されるコンピュータプログラム)。
プロセス1300は、キー材料を受信すること(1302)を含む。前述のように、暗号化キー管理サービスは、定期的または非定期的にキー材料を受信し得るカーネルレベルのアプリケーションを、セキュアプロキシフリート上で実行し得る。暗号化キー管理サービスは次に、機密データを暗号化する要求を受信し得る(1304)。要求は、前述のように、データ保護モジュールまたは暗号化モジュールから取得され得る。暗号化キー管理サービスは次に、対称キーにより機密データを暗号化し得る(1306)。対称キーは、プロセス1300を実行するシステムにより生成され得る、またはキー材料から取得され得る。
さらに、暗号化キー管理サービスは、検証情報を生成し得る(1308)。検証情報は、前述のようにタイムスタンプまたは署名を含み得る。次に暗号化キー管理サービスは、エンドポイントキー情報を特定し得る(1310)。エンドポイントキー情報は、公開キーなどのエンドポイントに対応付けられた特定の暗号化キーを示すメタデータまたは他の情報を含み得る。暗号化キー管理サービスは次に、エンドポイントキーにより対称キーを暗号化し得る(1312)。例えば、暗号化キー管理サービスは、エンドポイントにのみアクセス可能なキーで、対称キーを暗号化し得る。
次に暗号化キー管理サービスは、暗号化されたデータを返し得る(1314)。暗号化されたデータは、データ保護モジュールまたはセキュアプロキシフリートの他の構成要素に返され得る。さらに、暗号化されたデータは、暗号化された機密データ、暗号化された対称キー、及び検証情報を含み得る。1302〜1314において行われる動作のうちの1つ以上は、同時実施を含む様々な順序及び組み合わせで行われてもよいことに留意されたい。例えば、いくつかの実施形態において、動作1308は省略されてもよく、単に暗号化キー管理サービスが、検証情報を生成せずに、機密データを暗号化してもよい。
図14は、様々な実施形態による態様を実行する例示的な環境1400の態様を示す。説明のためにウェブベースの環境が使われているが、様々な実施形態を実行するために、異なる環境が適宜使用され得ることが理解されよう。環境は電子クライアントデバイス1402を含み、電子クライアントデバイス1402には、好適なネットワーク1404を介して要求、メッセージ、または情報を送信及び/または受信し、いくつかの実施形態ではデバイスのユーザに情報を返送するように作動可能な任意の好適なデバイスが含まれ得る。このようなクライアントデバイスの実施例には、パーソナルコンピュータ、携帯電話、手持ち型メッセージングデバイス、ラップトップコンピュータ、タブレットコンピュータ、セットトップボックス、パーソナルデータアシスタント、埋め込み式コンピュータシステム、及び電子書籍リーダなどが含まれる。ネットワークには、イントラネット、インターネット、セルラーネットワーク、ローカルエリアネットワーク、衛星ネットワーク、または任意の他のこのようなネットワーク、並びに/あるいはこれらの組み合せを含む、任意の好適なネットワークが含まれ得る。このようなシステムに使用される構成要素は、選択されるネットワーク及び/または環境の種類に少なくとも部分的に依拠し得る。このようなネットワークを介して通信を行う多数のプロトコル及び構成要素はよく知られているため、本明細書では詳しく論述しない。ネットワークを介した通信は、有線接続、または無線接続、及びこれらの組み合せにより、可能となり得る。この実施例では、ネットワークにはインターネット及び/または公的にアドレス指定可能な他の通信ネットワークが含まれ、よって要求を受信し、それに応じてコンテンツを提供するウェブサーバ1406が環境に含まれるが、当業者には明らかであるように、他のネットワークでは、同様の目的にかなう代替的なデバイスが使用され得る。
例示的環境には、少なくとも1つのアプリケーションサーバ1408と、データストア1410とが含まれる。例示的環境には、いくつかのアプリケーションサーバ、レイヤもしくは他の要素、プロセス、または構成要素が存在し得、これらは、好適なデータストアからデータを取得するといったタスクを実行するために対話できるように、連結あるいは構成され得ることを理解されたい。本明細書において使用されるサーバは、ハードウェアデバイスまたは仮想コンピュータシステムなど、様々な方法で実施され得る。いくつかの文脈では、サーバは、コンピュータシステム上で実行されるプログラミングモジュールを指し得る。本明細書において使用される用語「データストア」は、特に明記されないまたは文脈から明らかでない限り、データ記憶、データアクセス、及びデータ取得が可能な任意のデバイスまたはデバイスの組み合わせを指し、これには、任意の標準環境、分散環境、仮想環境、またはクラスタ環境における任意の組み合わせ及び数のデータサーバ、データベース、データストレージデバイス、及びデータ記憶媒体が含まれ得る。アプリケーションサーバには、クライアントデバイス用の1つ以上のアプリケーションの態様を実行するために必要に応じてデータストアと統合し、アプリケーション用のデータアクセス及びビジネスロジックの一部または全てを処理する、任意の好適なハードウェア、ソフトウェア、及びファームウェアが含まれ得る。アプリケーションサーバは、データストアと協働してアクセス制御サービスを提供することができ、テキスト、画像、音声、映像、及び/またはユーザに提供される利用可能な他のコンテンツを含むがこれに限定されないコンテンツを生成可能であり、生成されたコンテンツは、ハイパーテキストマークアップ言語(「HTML」)、拡張マークアップ言語(「XML」)、ジャバスクリプト、階層式スタイルシート(「CSS」)、ジャバスクリプトオブジェクト表記(JSON)、及び/または別の好適なクライアント側構造化言語の形式で、ウェブサーバによりユーザへ提供され得る。クライアントデバイスへ転送されるコンテンツは、クライアントデバイスにより処理され、ユーザが聴覚、視覚、及び/または他の感覚を通して知覚可能な形式を含むがこれに限定されない1つ以上の形式で、コンテンツが提供され得る。クライアントデバイス1402とアプリケーションサーバ1408との間の全ての要求及び応答の処理、ならびにコンテンツ配信は、PHP:ハイパーテキストプリプロセッサ(「PHP」)、Python、Ruby、Perl、Java(登録商標)、HTML、XML、JSON、及び/または当実施例における別の好適なサーバ側構造化言語を使用して、ウェブサーバにより処理され得る。さらに、単一デバイスにより実行されると本明細書で説明される動作は、文脈から明らかでない限り、分散及び/または仮想システムを形成し得る多数のデバイスにより集合的に実行されてもよい。
データストア1410は、本開示の特定の態様に関連するデータを記憶するために、いくつかの別個のデータテーブル、データベース、データ文書、動的データストレージスキーム、及び/または他のデータストレージ機構及び媒体を含み得る。例えば、示されるデータストアは、生成データ1412及びユーザ情報1416を記憶する機構を含むことができ、これらは、コンテンツを生成側に提供するために使用され得る。データストアはまた、ログデータ1414を記憶する機構も含むことが示され、これは、報告、分析、または他のこのような目的のために使用され得る。ページ画像情報及びアクセス権限情報など、データストアに記憶される必要があり得る多数の他の態様が存在し得、これらは、上記の機構のうちの好適ないずれかに適宜記憶され得る、またはデータストア1410内の追加機構に記憶され得ることを、理解されたい。データストア1410は、データストア1410に対応付けられたロジックを通して、アプリケーションサーバ1408から指示を受信し、それに応じてデータを取得、更新、あるいは処理するように作動可能である。アプリケーションサーバ1408は、受信された指示に応じて、静的データ、動的データ、または静的データ及び動的データの組み合わせを提供し得る。ウェブログ(ブログ)に使用されるデータなどの動的データ、ショッピングアプリケーション、ニュースサービス、及び他のこのようなアプリケーションは、本明細書において説明されるようにサーバ側構造化言語により生成され得る、あるいはアプリケーションサーバ上で作動するまたはアプリケーションサーバの制御下で作動するコンテンツ管理システム(「CMS」)により提供され得る。一実施例では、ユーザは、ユーザが操作するデバイスを通して、ある種類のアイテムの検索要求を提出し得る。この場合、データストアは、ユーザ情報にアクセスしてユーザの身元を確認し、カタログ詳細情報にアクセスしてその種類のアイテムに関する情報を取得し得る。その後、取得された情報は、ユーザデバイス1402のブラウザを介してユーザが見ることができるウェブページ上の結果一覧などで、ユーザに返され得る。特定の注目アイテムに関する情報は、ブラウザの専用ページまたは専用ウィンドウで見ることができる。しかしながら、本開示の実施形態は、必ずしもウェブページという状況に限定されず、一般的要求の処理に、より汎用的に適用可能であり得、要求は必ずしもコンテンツの要求とは限らないことに、留意されたい。
各サーバは、そのサーバの一般管理及び動作に関する実行可能プログラム命令を提供するオペレーティングシステムを通常含み、命令を記憶するコンピュータ可読記憶媒体(例えばハードディスク、ランダムアクセスメモリ、読み取り専用メモリなど)を通常含み、命令がサーバのプロセッサにより実行された場合(すなわち実行された結果)、サーバはその想定される機能を実行することが可能となる。
一実施形態における環境は、1つ以上のコンピュータネットワークまたは直接接続を使用して、通信リンクを介して相互接続されたいくつかのコンピュータシステム及び構成要素を利用する分散及び/または仮想コンピューティング環境である。しかし、このようなシステムは、図14に示される構成要素よりも少ないまたは多い数の構成要素を有するシステムにおいても、同等に良く作動し得ることが、当業者には理解されよう。従って、図14におけるシステム1400の描写は、本来例示としてみなされるべきであり、開示範囲を限定するものではない。
様々な実施形態はさらに、多様な動作環境において実施することができ、いくつかの事例では動作環境は、多数のアプリケーションのうちのいずれかを作動させるのに使用され得る1つ以上のユーザコンピュータ、コンピューティングデバイス、または処理デバイスを含み得る。ユーザデバイスまたはクライアントデバイスには、標準のオペレーティングシステムを実行するデスクトップ、ラップトップ、またはタブレットコンピュータ、ならびにモバイルソフトウェアを実行し、多数のネットワーク及びメッセージ通信プロトコルに対応可能なセルラーデバイス、無線デバイス、及び手持ち型デバイスなど、多数のコンピュータのうちのいずれかが含まれ得る。このようなシステムはまた、開発及びデータベース管理などの目的で、様々な市販のオペレーティングシステム及び他の周知のアプリケーションのうちのいずれかを実行する多数のワークステーションを含み得る。これらのデバイスには、ダミー端末、シンクライアント、ゲーム機、及びネットワークを介して通信可能な他のデバイスなど、他の電子デバイスも含まれ得る。これらのデバイスには、仮想マシン、ハイパーバイザ、及びネットワークを介して通信可能な他の仮想デバイスなど、仮想デバイスも含まれ得る。
伝送制御プロトコル/インターネットプロトコル(「TCP/IP」)、ユーザデータグラムプロトコル(「UDP」)、開放型システム間相互接続(「OSI」)モデルの様々なレイヤで作動するプロトコル、ファイル転送プロトコル(「FTP」)、ユニバーサルプラグアンドプレイ(「UpnP」)、ネットワークファイルシステム(「NFS」)、共通インターネットファイルシステム(「CIFS」)、及びアップルトークなど、様々な市販のプロトコルのうちのいずれかを使用する通信に対応する、当業者によく知られる少なくとも1つのネットワークを、本開示の様々な実施形態は利用する。ネットワークは、例えば、ローカルエリアネットワーク、広域ネットワーク、仮想プライベートネットワーク、インターネット、イントラネット、エクストラネット、公衆交換電話網、赤外線ネットワーク、無線ネットワーク、衛星ネットワーク、及びこれらの任意の組み合わせであり得る。いくつかの実施形態では、コネクション型プロトコルは、ネットワークエンドポイント間で通信するために使用され得る。コネクション型プロトコル(時にコネクションベースプロトコルと呼ばれる)は、順序付きストリームでデータを送信することができる。コネクション型プロトコルは、信頼性のあるものでも信頼性のないものでもよい。例えば、TCPプロトコルは、信頼性のあるコネクション型プロトコルである。非同期転送モード(「ATM」)及びフレームリレーは、信頼性のないコネクション型プロトコルである。コネクション型プロトコルは、保証された順序付けなしでパケットを送信するUDPなどのパケット型プロトコルとは対照的である。
ウェブサーバを使用する実施形態において、ウェブサーバは、ハイパーテキスト転送プロトコル(「HTTP」)サーバ、FTPサーバ、共通ゲートウェイインタフェース(「CGI」)サーバ、データサーバ、Java(登録商標)サーバ、Apacheサーバ、及びビジネスアプリケーションサーバを含む様々なサーバまたは中階層アプリケーションのうちのいずれかを実行することができる。サーバ(複数可)はまた、Java(登録商標)、C、C#、もしくはC++などの任意のプログラミング言語、またはRuby、PHP、Perl、Python、もしくはTCLなどの任意のスクリプト言語、ならびにこれらの組み合せで書かれた1つ以上のスクリプトもしくはプログラムとして実装され得る1つ以上のウェブアプリケーションを実行することなどにより、ユーザデバイスからの要求に応じてプログラムまたはスクリプトを実行可能であり得る。サーバ(複数可)には、Oracle(登録商標)、Microsoft(登録商標)、Sybase(登録商標)、及びIBM(登録商標)から市販されるデータベースサーバ、ならびにMySQL、Postgres、SQLite、MongoDBなどのオープンソースサーバ、及び構造化データまたは非構造化データの記憶、取得、及びアクセスを実行可能な任意の他のサーバを含むがこれに限定されないデータベースサーバも含まれ得る。データベースサーバには、テーブルベースサーバ、文書ベースサーバ、非構造化サーバ、リレーショナルサーバ、非リレーショナルサーバ、もしくはこれらの組み合わせ、及び/または他のデータベースサーバが含まれ得る。
環境には、前述のように、様々なデータストア、ならびに他のメモリ及び記憶媒体が含まれ得る。これらは、コンピュータのうちの1つ以上のコンピュータのローカルにある(及び/または中に存在する)記憶媒体上、あるいはネットワーク上でコンピュータのうちのいずれかまたは全てから遠隔にある記憶媒体上など、様々な場所に存在し得る。実施形態の特定集合において、情報は、当業者によく知られるストレージエリアネットワーク(「SAN」)に存在し得る。同様に、コンピュータ、サーバ、または他のネットワークデバイスに属する機能を実行するために必要な任意のファイルは、ローカル及び/または遠隔に適宜記憶され得る。システムがコンピュータ化デバイスを含む場合、そのようなデバイスはそれぞれ、例えば少なくとも1つの中央処理装置(「CPU」または「プロセッサ」)と、少なくとも1つの入力デバイス(例えばマウス、キーボード、コントローラ、タッチスクリーン、またはキーパッド)と、少なくとも1つの出力デバイス(例えばディスプレイデバイス、プリンタ、またはスピーカ)とを含む、バスを介して電気的に接続され得るハードウェア要素を含み得る。このようなシステムはまた、ディスクドライブ、光学ストレージデバイス、及びランダムアクセスメモリ(「RAM」)もしくは読み出し専用メモリ(「ROM」)、ならびに着脱可能媒体デバイス、メモリカード、フラッシュカードなどのソリッドステートストレージデバイスといった、1つ以上のストレージデバイスを含み得る。
このようなデバイスはまた、前述のように、コンピュータ可読記憶媒体リーダ、通信デバイス(例えばモデム、ネットワークカード(無線または有線)、赤外線通信デバイスなど)、及び作業メモリを含み得る。コンピュータ可読記憶媒体リーダは、コンピュータ可読情報を一時的及び/またはより永久的に保有、記憶、送信、及び取得するための遠隔、ローカル、固定、及び/または着脱可能のストレージデバイスならびに記憶媒体に相当するコンピュータ可読記憶媒体と接続され得る、またはそのようなコンピュータ可読記憶媒体を受け入れるように構成され得る。システム及び様々なデバイスはまた、通常、クライアントアプリケーションまたはウェブブラウザなどのオペレーティングシステム及びアプリケーションプログラムを含む、少なくとも1つの作業メモリデバイス内に配置された多数のソフトウェアアプリケーション、モジュール、サービス、または他の要素を含む。さらに、カスタマイズされたハードウェアも使用され、及び/または特定要素がハードウェア、ソフトウェア(アプレットなどのポータブルソフトウェアを含む)、またはその両方に実装され得る。さらに、ネットワーク入力/出力デバイスなどの他のコンピューティングデバイスへの接続が、採用され得る。
コードまたはコードの一部を含む記憶媒体及びコンピュータ可読媒体には、当技術分野において既に知られている、または使用されている任意の好適な媒体が含まれ、好適な媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、または他データなどの情報の記憶及び/または送信に関する任意の方法または技術で実施される揮発性及び不揮発性、着脱可能及び着脱不可能の媒体が挙げられるがこれに限定されない記憶媒体及び通信媒体が含まれる。これには、RAM、ROM、電気的消去可能プログラマブル読み出し専用メモリ(「EEPROM」)、フラッシュメモリ、もしくは他のメモリ技術、読み出し専用コンパクトディスク(「CD−ROM」)、デジタル多用途ディスク(DVD)、もしくは他の光学ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、もしくは他の磁気ストレージデバイス、または所望の情報を記憶するために使用可能であり、システムデバイスによりアクセス可能である任意の他の媒体が含まれる。本明細書において提供される開示及び教示に基づいて、当業者は、様々な実施形態を実施する他のやり方及び/または方法を理解するであろう。
従って、明細書及び図面は、限定的ではなく例示的な意味で解釈されるべきである。しかしながら、明細書及び図面に対し、特許請求の範囲に明記される本発明のより広い趣旨及び範囲から逸脱せずに、様々な修正及び変更が行われてもよいことは、明白である。
前述のように、多数の暗号化技術が使用され得、多数の変形形態は、対称及び/または非対称暗号プリミティブを利用する。対称キーアルゴリズムは、ブロック暗号、ストリーム暗号、及び電子署名スキームを含む、データに暗号動作を行う様々なスキームを含み得る。例示的な対称キーアルゴリズムには、高度暗号化規格(AES)、データ暗号化規格(DES)、トリプルDES(3DES)、Serpent、Twofish、blowfish、CAST5、RC4、及び国際データ暗号化アルゴリズム(IDEA)が挙げられる。対称キーアルゴリズムにはまた、一方向関数の出力を生成するのに使用されるものも含まれ、ハッシュベースメッセージ認証符号(HMAC)、一般のメッセージ認証符号(MAC)、PBKDF2、及びBcryptを使用するアルゴリズムも含まれ得る。非対称キーアルゴリズムも、データに暗号動作を行う様々なスキームを含み得る。例示的なアルゴリズムには、Diffie‐Hellmanキー交換プロトコル、電子署名規格(DSS)、電子署名アルゴリズム、ElGamalアルゴリズム、様々な楕円曲線アルゴリズム、パスワード認証されたキー共有技術、Paillier暗号システム、RSA暗号アルゴリズム(PKCS#1)、Cramer‐Shoup暗号システム、YAK認証キー共有プロトコル、NTRUEncrypt暗号システム、及びMcEliece暗号システムなどを利用するものが挙げられる。楕円曲線アルゴリズムには、楕円曲線Diffie‐Hellman(ECDH)キー共有スキーム、楕円曲線統合暗号化スキーム(ECIES)、楕円曲線電子署名アルゴリズム(ECDSA)、ECMQVキー共有スキーム、及びECQV暗黙的証明書スキームが含まれる。他のアルゴリズム及びアルゴリズムの組み合わせもまた、本開示の範囲内であるとみなされ、前述が網羅的なリストであることは意図されていない。他の例示的な暗号化アルゴリズムには、ブロック暗号、及び初期化ベクトルを利用する様々なモードが含まれ、例えば、暗号ブロック連鎖(CBC)モード、伝搬暗号ブロック連鎖(PCBC)モード、暗号フィードバックモード(CFB)、出力フィードバック(OFB)モード、カウンタ(CTR)モード、及び他のモードなどが挙げられる。他のモードには、認証された暗号化モードなどがあり、例えば、拡張暗号文ブロック連鎖(XCBC)モード、完全性認知CBC(IACBC)モード、完全性認知並列化可能(IAPM)モード、オフセットコードブック(OCB)モード、EAX及びEAXプライムモード、Carter‐Wegman+CTR(CWC)モード、CBC‐MACによるカウンタ(CCM)モード、ガロア/カウンタ(GCM)モードが挙げられる。一般に、本開示の実施形態は、暗号化通信セッションを確立するために、SSLまたはTLSプロトコルなどの様々なプロトコル、及びこれらに対する拡張、例えばコメント要求(Request for Comments(RFC))2246、RFC2595、RFC2712、RFC2817、RFC2818、RFC3207、RFC3268、RFC3546、RFC3749、RFC3943、RFC4132、RFC4162、RFC4217、RFC4279、RFC4347、RFC4366、RFC4492、RFC4680、RFC4681、RFC4785、RFC5054、RFC5077、RFC5081、RFC5238、RFC5246、RFC5288、RFC5289、RFC5746、RFC5764、RFC5878、RFC5932、RFC6083、RFC6066、RFC6091、RFC6176、RFC6209、RFC6347、RFC6367、RFC6460、RFC6655、RFC7027、及びRFC7366に定義されているものを使用することができ、これらは参照により本明細書に組み込まれる。開放型システム間相互接続(OSI)モデルのアプリケーション層の下で実施される他のプロトコルも、本明細書で説明される技術を利用するために、使用及び/または適合され得る。本明細書で説明される技術は、リアルタイムメッセージングプロトコル(RTMP)、ポイントツーポイントトンネリングプロトコル(PPTP)、レイヤ2トンネリングプロトコル、様々な仮想プライベートネットワーク(VPN)プロトコル、インターネットプロトコルセキュリティ(例えばRFC1825〜1829、RFC2401、RFC2412、RFC4301、RFC4309、及びRFC4303に定義されるもの)、及び他のプロトコル、例えばハンドシェイクを含む安全な通信のためのプロトコルなど、別のプロトコルにも適応可能であることに、留意されたい。
本開示の実施形態は、以下の条項を考慮して説明され得る。
1.クライアントとの暗号化保護された通信セッションを確立することと、
前記クライアントから前記暗号化保護された通信セッションを介して、バックエンドサービスエンドポイントへ送られる通信において、データオブジェクトを受信することと、
機密データを検出することを可能にする構成情報に少なくとも部分的に基づいて、前記データオブジェクトの一部が機密データを含むと判定することと、
前記部分的データオブジェクトを暗号化して、暗号化部分を得ることと、
前記暗号化部分を含むように前記データオブジェクトを更新し、これにより修正されたデータオブジェクトを得ることと、
前記修正されたデータオブジェクトを含む、前記バックエンドサービスエンドポイントへの要求であって、前記機密データが保護されたことを示す情報を含む前記要求を生成することと、
前記要求を前記バックエンドサービスエンドサービスに送信することと
を含む、コンピュータ実施方法。
2.前記暗号化保護された通信セッションを介して、第2のデータオブジェクトを受信することと、
前記第2のデータオブジェクトが機密データを含まないと判定することと、
前記第2のデータオブジェクトを含む第2の要求を、前記バックエンドサービスエンドポイントに送信することと
をさらに含む、条項1に記載のコンピュータ実施方法。
3.前記コンピュータ実施方法は、プロセスと他のリソースとの間の対話を制限するカーネルモジュールを含む安全な環境内で実施される、条項1または2に記載のコンピュータ実施方法。
4.データが機密であると特定されることを示す構成情報、機密であると特定されたデータを暗号化するための暗号化情報、及び前記バックエンドサービスに対応付けられた暗号化キーを受信することを、さらに含む、条項1〜3のいずれか1項に記載のコンピュータ実施方法。
5.1つ以上のサービスを実施する少なくとも1つのコンピューティングデバイスを備えるシステムであって、前記1つ以上のサービスは、
暗号化保護された通信セッションを介して、宛先に送られるデータオブジェクト集合を受信し、
前記データオブジェクト集合のうちのデータオブジェクト部分集合が機密データを含むことを、構成情報に少なくとも部分的に基づいて判定し、前記構成情報は、機密データの検出を可能にし、前記機密データに対応付けられたタイプに少なくとも部分的に基づいて、機密データを送信するエンドポイントを示し、
前記データオブジェクト部分集合を難読化して、前記エンドポイントに対応付けられたバックエンドサービスにより、前記バックエンドサービスにより指定された前記暗号化キーで、復号化することができる暗号化されたデータオブジェクト集合を生成し、
前記データオブジェクト集合が前記暗号化されたデータオブジェクト集合を含むように修正し、これにより修正されたデータオブジェクト集合を生成し、
前記修正したデータオブジェクト集合をエンドポイントに送信する、
前記システム。
6.前記暗号化されたデータオブジェクト集合を生成することはさらに、対称暗号化アルゴリズムに従って前記暗号化キーにより、前記データオブジェクト部分集合を暗号化することを含む、条項5に記載のシステム。
7.前記暗号化保護された通信セッションはさらに、ハイパーテキスト転送プロトコルセキュア(HTTPS)接続を含む、条項5または6に記載のシステム。
8.前記宛先はさらに、公的にアドレス指定可能な通信ネットワークを介して顧客がアクセス可能なサービスエンドポイントを含む、条項5〜7のいずれか1項に記載のシステム。
9.前記構成情報はさらに、前記エンドポイントが属するエンドポイント集合に対して、機密データを暗号化するために使用する、前記機密データに対応付けられたセキュリティポリシーを満たす暗号化アルゴリズムと、1つ以上の暗号化キーを定義する、条項5〜8のいずれか1項に記載のシステム。
10.前記少なくとも1つのコンピューティングデバイスは、前記1つ以上のサービスを、前記構成情報に少なくとも部分的に基づいて、前記少なくとも1つのコンピューティングデバイスにより実行される少なくとも1つの別のプロセスから隔離された環境において、実施する、条項5〜9のいずれか1項に記載のシステム。
11.前記構成情報は、機密データであるデータのタイプを示す、条項5〜10のいずれか1項に記載のシステム。
12.前記暗号化されたデータオブジェクト集合を生成することはさらに、前記構成情報から取得された暗号化材料を使用して、前記データオブジェクト部分集合を暗号化することを含む、条項5〜11のいずれか1項に記載のシステム。
13.前記構成情報において識別された暗号化キーを使用して前記データオブジェクト部分集合を暗号化することにより、前記データオブジェクト部分集合は難読化される、条項5〜12のいずれか1項に記載のシステム。
14.実行可能命令を記憶する非一時的コンピュータ可読記憶媒体であって、前記実行可能命令がコンピュータシステムの1つ以上のプロセッサに実行されることにより、前記コンピュータシステムは少なくとも、
別のコンピュータシステムにより実施されるサービスエンドポイントに送られる暗号化されたデータオブジェクト集合を含む要求を、前記別のコンピュータシステムにより生成されたデータストリームにおいて受信し、
前記暗号化されたデータオブジェクト集合を復号化して、データオブジェクト集合を生成し、
前記コンピュータシステムと前記サービスエンドポイントとの間の1つ以上の経路沿いの1つ以上の仲介者に公開されるべきではないデータを、前記データオブジェクト集合のうちの1つ以上のデータオブジェクトが含むと判定し、
前記1つ以上のデータオブジェクトを暗号化して、1つ以上の暗号化されたデータオブジェクトを生成し、
前記データオブジェクト集合のうちの前記1つ以上のデータオブジェクトを、前記1つ以上の暗号化されたデータオブジェクトで少なくとも置き換えることにより、前記要求を修正し、
前記要求を前記サービスエンドポイントに転送する、
前記非一時的コンピュータ可読記憶媒体。
15.前記命令はさらに、前記1つ以上のプロセッサに実行されることにより、前記コンピュータシステムに、前記要求の送信を担当するクライアントデバイスと前記サービスエンドポイントと、暗号化保護された通信セッションを確立させる命令を含む、条項14に記載の非一時的コンピュータ可読記憶媒体。
16.前記サービスエンドポイントは、複数のサービスのうちのサービスに対応付けられ、前記コンピュータシステムは、前記サービスの要求を処理する、条項14または15に記載の非一時的コンピュータ可読記憶媒体。
17.前記要求は、HTTP POST要求である、条項14〜16のいずれか1項に記載の非一時的コンピュータ可読記憶媒体。
18.前記命令はさらに、前記1つ以上のプロセッサに実行されることにより、前記コンピュータシステムに、前記要求に含まれる1つ以上のヘッダに少なくとも部分的に基づいて、前記要求が前記サービスエンドポイントに送られることを判定させる命令を含む、条項14〜17のいずれか1項に記載の非一時的コンピュータ可読記憶媒体。
19.前記データオブジェクト集合のうちの前記1つ以上のデータオブジェクトが公開されるべきではないデータを含むことを、前記コンピュータシステムに判定させる前記命令はさらに、前記1つ以上のデータオブジェクトが、前記要求に対応付けられたユーザの支払情報を含むことを、前記コンピュータシステムに判定させる命令を含む、条項14〜18のいずれか1項に記載の非一時的コンピュータ可読記憶媒体。
20.前記データオブジェクト集合のうちの前記1つ以上のデータオブジェクトが公開されるべきではないデータを含むことを、前記コンピュータシステムに判定させる前記命令はさらに、前記1つ以上のデータオブジェクトが、支払情報を含むことを、前記コンピュータシステムに判定させる命令を含む、条項14〜19のいずれか1項に記載の非一時的コンピュータ可読記憶媒体。
21.前記データオブジェクト集合のうちの前記1つ以上のデータオブジェクトが公開されるべきではないデータを含むことを、前記コンピュータシステムに判定させる前記命令はさらに、前記1つ以上のデータオブジェクトが公開されるべきではないデータを含むことを、前記1つ以上のデータオブジェクトに対応付けられた1つ以上のフィールドに少なくとも部分的に基づいて、前記コンピュータシステムに判定させる命令を含む、条項14〜20のいずれか1項に記載の非一時的コンピュータ可読記憶媒体。
22.前記コンピュータシステムはネットワークエッジデバイスである、条項14に記載の非一時的コンピュータ可読記憶媒体。
23.バックエンドサービスによりクライアントデバイスに向けて送信されたデータストリームから、データを受信することと、
前記データストリームから取得された前記データ内に、暗号化されたデータオブジェクトを検出することと、
前記暗号化されたデータオブジェクトを復号化して、復号化されたデータオブジェクトを取得することと、
前記復号化されたデータオブジェクトを前記データストリームに挿入して、修正されたデータストリームを得ることと、
前記修正されたデータストリームを、前記クライアントデバイスに送信することと
を含む、コンピュータ実施方法。
24.前記修正されたデータストリームはさらにウェブページを含み、前記方法は、前記復号化されたデータオブジェクトを前記データストリームに挿入する前に、前記データストリームをレンダリングすることを含む、条項23に記載のコンピュータ実施方法。
25.前記暗号化されたデータオブジェクトを復号化することはさらに、前記暗号化されたデータオブジェクトから取得された暗号化された暗号化キーを復号化するように、要求を暗号化キー管理サービスに送信することを含む、条項23または24に記載のコンピュータ実施方法。
26.前記暗号化されたデータオブジェクトを検出することはさらに、前記データストリームから、前記暗号化されたデータオブジェクトを示すフラグを取得することを含む、条項23〜25のいずれか1項に記載のコンピュータ実施方法。
27.1つ以上のサービスを実施する少なくとも1つのコンピューティングデバイスを備えるシステムであって、前記1つ以上のサービスは、
エンドポイント宛てのデータオブジェクト集合を、コンテンツに埋め込むために、バックエンドサービスから受信し、
前記データオブジェクト集合内に、プロパティを有する前記データオブジェクト集合のデータオブジェクト部分集合を検出し、
前記データオブジェクト部分集合を修正して、修正されたデータオブジェクト集合を生成し、
前記修正されたデータオブジェクト集合を前記コンテンツに含めて、更新されたコンテンツを取得し、
前記更新されたコンテンツを、前記エンドポイントに転送する、
前記システム。
28.前記データオブジェクト部分集合を修正することはさらに、前記データオブジェクト部分集合を復号化することを含む、条項27に記載のシステム。
29.前記データオブジェクト部分集合を復号化することはさらに、前記データオブジェクト部分集合を復号化するように、アプリケーションプログラムインターフェース(API)コマンドをキー管理サービスに送信することを含む、条項27または28に記載のシステム。
30.前記データオブジェクト部分集合を復号化することはさらに、前記少なくとも1つのコンピューティングシステムの処理により実行される復号化モジュールから、復号化されたデータを取得することを含む、条項27〜29のいずれか1項に記載のシステム。
31.前記プロセスは、前記少なくとも1つのコンピューティングデバイスにより実行されるオペレーティングシステムが維持する隔離されたコンピューティング環境において実行される、条項27〜30のいずれか1項に記載のシステム。
32.前記システムは、前記データオブジェクト集合を含むデータストリーム内のフラグにより、前記データオブジェクト部分集合を検出し、前記フラグは、前記データオブジェクト部分集合の開始位置及び終了位置を示す、条項27〜31のいずれか1項に記載のシステム。
33.前記1つ以上のサービスはさらに、前記データオブジェクト集合の第2のデータオブジェクト部分集合を、前記第2のデータオブジェクト部分集合内の個別データオブジェクトを修正することなく、前記エンドポイントに転送する、条項27〜32のいずれか1項に記載のシステム。
34.前記データオブジェクト部分集合を修正することはさらに、前記データオブジェクト部分集合により表示される値を、ウェブページの要素としてレンダリングされたものに修正することを含む、条項27〜33のいずれか1項に記載のシステム。
35.実行可能命令を記憶する非一時的コンピュータ可読記憶媒体であって、前記実行可能命令がコンピュータシステムの1つ以上のプロセッサに実行されることにより、前記コンピュータシステムは少なくとも、
宛先に対応付けられたデータストリームを受信し、
前記データストリーム内の難読化されたデータを検出し、
前記難読化されたデータを難読化解除して、平文データを取得し、
前記データストリーム内の前記データの少なくとも一部を、前記平文データで置き換え、
前記宛先に前記データストリームを提供する、
前記非一時的コンピュータ可読記憶媒体。
36.前記命令はさらに、前記1つ以上のプロセッサに実行されることにより、前記コンピュータシステムに、前記平文データが生成されるまで、前記データストリームの処理を遅延させる命令を含む、条項35に記載の非一時的コンピュータ可読記憶媒体。
37.前記難読化データは、暗号化により難読化されており、前記命令はさらに、前記1つ以上のプロセッサに実行されることにより、前記コンピュータシステムに、前記暗号化された難読化データを復号化するためのキー材料を含む構成情報を取得させる命令を含む、条項35または36に記載の非一時的コンピュータ可読記憶媒体。
38.前記命令はさらに、前記1つ以上のプロセッサに実行されることにより、前記コンピュータシステムに、バックエンドサービスに対応付けられた署名を検証させて、前記宛先が前記データストリームの受信を認可されていることを判定させる命令を含む、条項35〜37のいずれか1項に記載の非一時的コンピュータ可読記憶媒体。
39.前記命令はさらに、前記1つ以上のプロセッサに実行されることにより、前記コンピュータシステムに、前記署名の検証に失敗した結果、前記データストリームから前記平文データを削除させる命令を含む、条項35〜38のいずれか1項に記載の非一時的コンピュータ可読記憶媒体。
40.前記命令はさらに、前記1つ以上のプロセッサに実行されることにより、前記コンピュータシステムに、前記宛先と暗号化保護された通信を確立させる命令を含み、
前記データストリームは、前記暗号化保護された通信を介して前記宛先に提供される、
条項35〜38のいずれか1項に記載の非一時的コンピュータ可読記憶媒体。
41.前記データストリームはウェブサイトのコンテンツを含む、条項35〜40のいずれか1項に記載の非一時的コンピュータ可読記憶媒体。
42.前記難読化されたデータは、機密データに分類されるデータを含む、条項35〜41のいずれか1項に記載の非一時的コンピュータ可読記憶媒体。
43.前記コンピュータシステムはネットワークエッジデバイスである、条項35〜42のいずれか1項に記載の非一時的コンピュータ可読記憶媒体。
44.ネットワークエッジデバイスにて、複数のバックエンドサービスのうちのバックエンドサービスに送られる第1の要求を受信することと、
機密データの検出を可能にする前記バックエンドサービスに関する構成情報に少なくとも部分的に基づいて、前記要求に含まれる平文形式の機密データアイテムを検出することと、
前記機密データアイテムをデータ暗号化モジュールに提供して、暗号化された機密データアイテムを取得することと、
前記暗号化された機密データアイテムを含むが、平文形式の前記機密データアイテムは有さないように、前記第1の要求に少なくとも部分的に基づいて、第2の要求を生成することと、
前記第1の要求を前記バックエンドサービスに送信することなく、前記第2の要求を前記バックエンドサービスに送信することと
を含むコンピュータ実施方法。
45.前記コンピュータ実施方法はさらに、構成情報を取得して、前記ネットワークエッジデバイス内で隔離された環境を実行させることを含み、
前記暗号化モジュールは、前記隔離された環境内で実行される、
条項44に記載のコンピュータ実施方法。
46.前記バックエンドサービスに対する前記第2の要求を生成することはさらに、前記バックエンドサービスが前記機密データを他のデータから区別することを可能にするために、前記機密データの長さを前記要求内で示すことを含む、条項44または45に記載のコンピュータ実施方法。
47.前記第2の要求を生成することはさらに、長さ情報により前記機密データが、長さ情報を有さない他の情報から区別可能となるように、前記第2の要求のフォーマットを修正することを含む、条項44〜46のいずれか1項に記載のコンピュータ実施方法。
48.1つ以上のサービスを実施する少なくとも1つのコンピューティングデバイスを備えるシステムであって、前記1つ以上のサービスは、
エッジデバイスにて、バックエンドサービスにより生成されたデータストリームに対応付けられた要求を取得し、
構成情報に少なくとも部分的に基づいて、前記要求が機密データを含むと判定し、
前記機密データを難読化して、難読化された機密データを生成し、
前記要求に含まれる前記機密データを、前記難読化された機密データで置き換えるように、第2の要求を生成し、
前記第2の要求を、前記バックエンドサービスに送信する、
前記システム。
49.前記機密データを難読化することはさらに、前記バックエンドサービスに対応付けられた公開キーを使用して、前記機密データを暗号化することを含む、条項48に記載のシステム。
50.前記要求が機密データを含むと判定することはさらに、前記要求に含まれるデータオブジェクトのデータタイプに少なくとも部分的に基づいて、前記要求が機密データを含むと判定することを含む、条項48または49に記載のシステム。
51.前記要求が機密データを含むと判定することは、前記要求に含まれるデータの一部に対応付けられたフラグに少なくとも部分的に基づき、前記フラグは前記構成情報内に示される、条項48〜50のいずれか1項に記載のシステム。
52.前記機密データを難読化することはさらに、コンピューティングリソースサービスプロバイダにより実施される暗号化キー管理サービスに、アプリケーションプログラムインターフェース(API)要求を送信することを伴うプロセスを使用して、前記機密データを暗号化することを含む、条項48〜51のいずれか1項に記載のシステム。
53.前記機密データは、第1のキーで暗号化され、前記キー管理サービスは、前記第1のキーを第2のキーで暗号化して、暗号化された第1のキーを生成し、
前記第2の要求を生成することはさらに、前記暗号化された第1のキーを前記第2の要求に含めることを含む、
条項52に記載のシステム。
54.前記第2の要求を生成することはさらに、前記バックエンドサービスに対応付けられた認証情報を前記第2の要求に含めることを含む、条項48〜53のいずれか1項に記載のシステム。
55.前記エッジデバイスは、コンテンツ配信ネットワークのコンピューティングデバイスである、条項48〜54のいずれか1項に記載のシステム。
56.実行可能命令を記憶する非一時的コンピュータ可読記憶媒体であって、前記実行可能命令がコンピュータシステムの1つ以上のプロセッサに実行されることにより、前記コンピュータシステムは少なくとも、
ネットワークエッジデバイスにて、データストリームに含まれる要求を受信し、
前記要求が機密データを含むことを示す前記要求に含まれる情報に少なくとも部分的に基づいて、前記要求の一部を難読化することを決定し、
前記機密データを難読化して、難読化された機密データオブジェクトを生成し、
前記機密データを前記難読化された機密データオブジェクトで置き換えるように前記要求を処理して、修正された要求を生成し、
前記修正された要求を、宛先に送信する、
前記非一時的コンピュータ可読記憶媒体。
57.前記コンピュータシステムに前記要求を受信させる前記命令はさらに、前記コンピュータシステムに、クライアントデバイス及び前記ネットワークエッジデバイスと暗号化保護された通信セッションを確立させ、前記暗号化保護された通信セッションを介して前記要求を受信させる命令を含む、条項56に記載の非一時的コンピュータ可読記憶媒体。
58.前記ネットワークエッジデバイスは、複数のバックエンドサービスに関する異なる構成情報を含む、条項56または57に記載の非一時的コンピュータ可読記憶媒体。
59.前記複数のバックエンドサービスに関する前記異なる構成情報は、前記ネットワークエッジデバイスに、前記異なる構成情報に少なくとも部分的に基づいて、複数の隔離されたプロセスを実行させる、条項56〜58のいずれか1項に記載の非一時的コンピュータ可読記憶媒体。
60.前記ネットワークエッジデバイスとは異なるコンピューティングデバイスにより実行され、かつ前記ネットワークエッジデバイスに接続された暗号化モジュールを使用して、機密データは難読化される、条項56〜59のいずれか1項に記載の非一時的コンピュータ可読記憶媒体。
61.前記コンピューティングデバイスは、暗号化保護された通信チャネルを使用して前記ネットワークエッジデバイスに接続される、条項60に記載の非一時的コンピュータ可読記憶媒体。
62.前記機密データを難読化することはさらに、暗号化モジュールがサービスコールを暗号化キー管理システムに送信することを含む、条項56〜61のいずれか1項に記載の非一時的コンピュータ可読記憶媒体。
63.前記暗号化モジュールはさらに、前記ネットワークエッジデバイスにより実行されるモジュールを含む、条項56〜62のいずれか1項に記載の非一時的コンピュータ可読記憶媒体。
他の変形形態は、本開示の趣旨の範囲に含まれる。
従って、開示される技術は、様々な修正及び代替的構造を許容可能であるが、これらのうちの特定の例示的な実施形態が、図面に示され、詳しく前述されている。しかしながら、開示される特定の形式(複数可)に本発明を限定する意図はなく、それとは逆に、添付の特許請求の範囲で定義される本発明の趣旨と範囲に入る全ての修正、代替的構造、及び同等物を対象とする意図があることを、理解されたい。
開示される実施形態を説明する文脈における(特に以下の特許請求の範囲の文脈における)用語「a」、「an」、「the」、及び同様の指示語の使用は、本明細書において特に指示がないまたは明らかに文脈と矛盾しない限り、単数と複数の両方を対象にすると解釈されるべきである。「comprising」、「having」、「including」、及び「containing」の用語は、特に断りのない限り、無制限用語(すなわち「含むがこれに限定されない」という意味)として解釈されるべきである。用語「接続される(connected)」は、修飾されず物理的結合を指す場合、介在するものがあるとしても、部分的または全体的に、何かの中に含まれる、何かへ取り付けられる、または何かと共に結合される、と解釈されるべきである。本明細書における値の範囲の詳述は、本明細書において特に指示のない限り、範囲内に入る個々の値を個別に指す簡略な方法として用いられることを単に意図し、そして個々の値は、本明細書において個別に詳述されているかのように明細書に組み込まれるものとする。用語「集合(set)」(例えば「アイテムの集合」)または「部分集合(subset)」の使用は、特に明記がないまたは文脈と矛盾しない限り、1つ以上の要素を含む非空集合として解釈されるべきである。さらに、特に明記がないまたは文脈と矛盾しない限り、対応集合の「部分集合(subset)」の用語は、必ずしも対応集合の真部分集合を示すとは限らず、部分集合と対応集合が等しい場合もある。
形式「A、B、及びCのうちの少なくとも1つ」または「A、B及びCのうちの少なくとも1つ」の語句などの接続的文体は、特に明記がないまたは明らかに文脈と矛盾しない限り、アイテム、名辞などが、AまたはBまたはCのいずれか、あるいはA及びB及びCの集合の任意の非空部分集合であり得ることを示すように通常使用される文脈により理解される。例えば、3つの要素を有する集合の実施例において、接続的語句「A、B、及びCのうちの少なくとも1つ」及び「A、B及びCのうちの少なくとも1つ」は、{A}、{B}、{C}、{A、B}、{A、C}、{B、C}、{A、B、C}の以上の集合のうちのいずれかを指す。従って、このような接続的文体には通常、少なくとも1つのA、少なくとも1つのB、及び少なくとも1つのCがそれぞれ、ある実施形態に存在する必要があることを意味する意図はない。
本明細書において説明されるプロセスの動作は、本明細書において特に指示がないまたは明らかに文脈と矛盾しない限り、任意の好適な順序で行うことができる。本明細書において説明されるプロセス(あるいはそれらの変形形態及び/または組み合わせ)は、実行可能命令で構成される1つ以上のコンピュータシステムの制御下で実行され得、ハードウェアまたはそれらの組み合わせにより、1つ以上のプロセッサ上で集合的に実行されるコード(例えば実行可能命令、1つ以上のコンピュータプログラム、もしくは1つ以上のアプリケーション)として、実施され得る。コードは、例えば、1つ以上のプロセッサにより実行可能な複数の命令を含むコンピュータプログラムの形式で、コンピュータ可読記憶媒体に保存され得る。コンピュータ可読記憶媒体は、非一時的であり得る。いくつかの実施形態において、コードは、1つ以上の非一時的コンピュータ可読記憶媒体の集合に記憶され、非一時的コンピュータ可読記憶媒体は、コンピュータシステムの1つ以上のプロセッサにより実行されると(すなわち実行された結果)、前記コンピュータシステムに本明細書で説明される動作を実行させる実行可能命令を記憶している。非一時的コンピュータ可読記憶媒体の集合は、複数の非一時的コンピュータ可読記憶媒体を含み得、複数の非一時的コンピュータ可読記憶媒体の個々の非一時的記憶媒体のうちの1つ以上は、コードを全く有さない場合があり、一方、複数の非一時的コンピュータ可読記憶媒体は、コード全てを集合的に記憶する。さらに、いくつかの実施例では、実行可能命令は、異なる命令が異なるプロセッサにより実行されるように、実行される。実施例として、非一時的コンピュータ可読記憶媒体は、命令を記憶し得る。メインCPUは、命令の一部を実行し得、グラフィックプロセッサユニットは、その他の命令を実行し得る。通常、コンピュータシステムの異なる構成要素は、別個のプロセッサを有し得、異なるプロセッサは、命令の異なる部分集合を実行し得る。
従って、いくつかの実施例では、コンピュータシステムは、本明細書で説明されるプロセスの動作を単一または集合で実行する1つ以上のサービスを実施するように構成される。このようなコンピュータシステムは、例えば、動作の実行を可能にする適用可能なハードウェア及び/またはソフトウェアで構成され得る。さらに、本開示の様々な実施形態を実施するコンピュータシステムは、いくつかの実施例では、単一のデバイスであり得、他の実施例では、分散コンピュータシステムが本明細書で説明される動作を実行するように、及び単一のデバイスが全ての動作を実行し得ないように、異なる動作を行う複数のデバイスを備える分散コンピュータシステムであり得る。
本明細書において提供されるあらゆる全ての実施例または例示的文体(例えば「など」)の使用は、単に本発明の実施形態をより分かり易くすることを意図し、特に請求のない限り本発明の範囲を限定するものではない。本明細書におけるどの文体も、いずれの非請求要素が本発明の実行に必須であるかのように解釈されるべきではない。
本明細書において説明される本開示の実施形態には、本発明者には既知の、本発明を実行するための最適な形態が含まれる。これらの実施形態の変形形態は、前述の説明を読むことで、当業者に明らかとなるだろう。本発明者は、当業者がこのような変形形態を適宜採用することを見込み、また本発明者は、本開示の実施形態が本明細書において具体的に説明される以外の方法で実践されることを想定する。従って、本開示の範囲は、本明細書に添付される特許請求の範囲において詳述される内容の全ての修正物及び均等物を、適用法令により認可したものとして含む。さらに、これらの全ての可能な変形形態における前述の要素のいずれの組み合わせも、本明細書において特に指示がないまたは明らかに文脈と矛盾しない限り、本開示の範囲に含まれる。
本明細書において引用される公報、特許出願、及び特許を含む全ての参考文献は、各参考文献が参照により組み込まれるように個別に具体的に示され、かつその全体が本明細書において記載されるのと同程度に、参照により本明細書に組み込まれるものとする。