メインコンテンツまでスキップ

CYBERRESTORELABへのお問い合わせ

Tell us what
happened to your files.

何が起きたか、どのファイルにアクセスできないかをお知らせください。
専門スタッフが復旧の可能性を評価し、次の手順をご提案します。

contact@cyberrestorelab.com ↗

データ暗号化方法:種類、アルゴリズム、保護の選択

· 約36分

データの暗号化方法は、個人情報、企業文書、支払い、通信、バックアップを第三者からの閲覧から守るために役立ちます。この記事では、どのような種類の暗号化があるのか、対称暗号と非対称暗号の違い、AES、RSA、ECC、TLSがどこで使用されるか、およびウェブサイト、アプリケーション、データベース、またはデバイスに適したアプローチを選択する方法を解説します。

暗号化はシステムを「無敵」にするものではありません。特定の課題を解決するものであり、理解できるデータを、鍵なしでは読むことができない記号のセットに変換します。したがって、実際の保護は、アルゴリズムだけでなく、鍵管理、設定、更新、アクセス制御、ユーザーの規律にも依存しています。

データ暗号化方法

データ暗号化とは何か​

データの暗号化とは、元の情報、またはプレーンテキストを暗号化されたテキストに変換するプロセスです。変換にはアルゴリズムと暗号鍵が使用されます。データを元の形に戻すには、正しい復号鍵が必要です。

簡単な例:ユーザーがウェブサイトを通じて銀行のデータを送信します。接続がHTTPSで保護されている場合、ブラウザとサーバーは暗号化されたチャネルを確立します。たとえ誰かがトラフィックを傍受しても、明示的な形のカード番号ではなく、無意味なバイナリのセットを目にすることになります。

暗号化と関連メカニズムとの違いを明確にすることが重要です:

  • ハッシュ化は、データの不可逆的な指紋を作成します。パスワードの保存や整合性チェックに適しています。
  • エンコードは、データの形式を変更しますが、保護はしません。たとえば、Base64は簡単にデコード可能です。
  • オブファスケーションは、コードやデータの分析を複雑にしますが、暗号化には代わりません。
  • 署名はデータの真実性と不変性を確認しますが、常に内容を隠すわけではありません。

言い換えれば、内容を隠す必要がある場合は、暗号化が必要です。データが変更されていないことを証明する必要がある場合は、ハッシュやデジタル署名がよく使用されます。

暗号化の主要な目的​

データ保護の方法は、通常、特定のリスクに基づいて選択されます。暗号化にはいくつかの重要な目的があります。

機密性​

機密性は、データが許可を受け、鍵を持っている人だけにアクセス可能であることを意味します。これは医療記録、商業契約、個人データ、通信、支払い情報にとって重要です。

整合性​

暗号化そのものは、データが変更されていないことを保証するものではありません。したがって、現代のスキームでは、AES-GCMやChaCha20-Poly1305などの認証済み暗号化が使用されます。これらはデータを隠すと同時に、改ざんを検出します。

認証​

認証は、交換の参加者が本当にその人物であることを確認するのに役立ちます。TLSでは、これに証明書が使用され、他のシステムではデジタル署名と鍵が使用されます。

否認防止​

否認防止は、送信者がメッセージの送信または署名の事実を信用できる方法で否定できないことを意味します。これには、RSAやECDSAに基づくデジタル署名が使用されます。

対称暗号​

対称暗号は、暗号化と復号化に同じ秘密鍵を使用します。アリスがボブにファイルを送信したい場合、彼らは共通の鍵を知っている必要があります。その鍵は第三者に開示してはいけません。

対称アルゴリズムの主な利点は、高速性です。したがって、大量のデータ(ファイル、ディスク、アーカイブ、データベース、および保護された接続が確立された後のネットワークトラフィック)に使用されます。

AES​

AES(Advanced Encryption Standard)は、最も広く使用される対称アルゴリズムの1つです。HTTPS、VPN、メッセンジャー、ディスク暗号化、企業システムで使用されています。

AESは、128、192、256ビットの鍵をサポートしています。実際には、AES-128はほとんどのシナリオで耐性があると見なされ、AES-256は長期的な保護と厳しい規制要件のために選ばれることがよくあります。ただし、鍵の長さは唯一の要因ではありません。動作モードと実装の品質も重要です。

一般的なAESのモード:

  • GCM - データの認証と整合性チェックを持つ現代的なモード。TLSやAPIでよく使用されます。
  • CBC - ベクトルおよび整合性チェックの取り扱いに注意が必要な古いモード。
  • CTR - ブロック暗号をストリームモードに変換しますが、一意のカウンタが必要です。
  • XTS - ディスクやストレージの暗号化に使用されます。

新しいプロジェクトでは、AESが安全にサポートされ、ハードウェアでAESを加速できる場合は、通常AES-GCMが選ばれます。

ChaCha20-Poly1305​

ChaCha20-Poly1305は、認証暗号化の現代的なスキームです。ストリーム暗号ChaCha20とポリ1305認証コードを組み合わせています。このオプションは、モバイルデバイスやAESのハードウェア加速がないプラットフォームで特に有用です。

ChaCha20-Poly1305は、TLS、VPNプロトコル、保護されたメッセンジャーで使用されます。その利点は、ソフトウェア実装での優れたパフォーマンスと古いモードに特有のいくつかのエラーに対する耐性です。

対称暗号に適したとき​

対称暗号は、大きなデータを迅速に保護する必要があるときに選ばれます。典型的なシナリオは次のとおりです:

  • ファイルとフォルダーの暗号化;
  • バックアップの保護;
  • ノートパソコンやサーバーのディスクの暗号化;
  • データベースのデータ保護;
  • 鍵交換後のネットワークトラフィックの暗号化;
  • アプリケーションのローカルストレージ内の秘密を保護。

主な課題は、鍵を安全に転送し、保存することです。鍵が盗まれた場合、攻撃者はデータを復号化できる可能性があります。

非対称暗号​

非対称暗号は、公開鍵と秘密鍵のペアを使用します。公開鍵は他の人に渡すことができます。秘密鍵は秘密に保持する必要があります。

データが公開鍵で暗号化されている場合、対応する秘密鍵を用いてのみ復号化できます。メッセージが秘密鍵で署名されている場合、公開鍵を持つ誰でもその署名を検証できます。

実際、非対称アルゴリズムは大きなファイルを直接暗号化するためにはあまり使用されません。それらは対称アルゴリズムよりも遅くなります。したがって、非対称暗号が安全にパスするか、対称鍵の合意に使用されるハイブリッドスキームが多く採用されています。このとき、データはAESまたはChaCha20という高速アルゴリズムで暗号化されます。

RSA​

RSAは、暗号化、デジタル署名、鍵交換に使用される古典的な非対称アルゴリズムです。その安全性は、大きな数字の因数分解の難しさに基づいています。

現代のシステムでは、RSAは通常2048ビット以上の鍵と共に使用されます。長期的な保護にはしばしば3072ビット以上が検討されます。とはいえ、RSAには適切なパディングスキームが必要です。たとえば、暗号化にOAEP、署名にPSSを使用します。「素の」RSAは安全なパディングなしで使用することはできません。

ECC​

ECC(楕円曲線暗号)は、RSAと比較して小さな鍵サイズで高いレベルの保護を提供します。これはモバイルデバイス、IoT、TLS証明書、およびリソース制約のあるシステムに便利です。

人気のある選択肢には、鍵交換のためのECDHやデジタル署名のためのECDSAがあります。また、Curve25519やEd25519に基づく現代的なスキームも広く使用されています。

Diffie-HellmanとECDH​

Diffie-Hellmanは、オープンチャネルを介して共通の秘密を合意する方法です。これはデータを直接暗号化するのではなく、2つの当事者が明示的な方法で鍵を共有せずに共通鍵を取得するのを助けます。

ECDHは、楕円曲線を用いたバージョンです。TLSでは、そのようなメカニズムがしばしばセッション鍵を生成するのを助けます。

現代の構成の重要な特性は、直接の秘密性です。サーバーの長期的な鍵が将来的に危険にさらされても、過去に記録されたセッションは自動的に暴露されるべきではありません。これを実現するために、一時的な鍵(たとえばECDHE)が使用されます。

ハッシュ化と暗号化:違いは何か​

ハッシュ化はしばしば暗号化と並んで言及されますが、それは異なる操作です。暗号化は可逆的であるべきで、鍵があればデータを復号化できます。ハッシュ化は不可逆的であり、ハッシュから元のデータを通常の方法で復元することはできません。

ハッシュ関数は、整合性チェック、デジタル署名、パスワード保存、データ重複排除に使用されます。一般的な暗号化ハッシュ関数には、SHA-256やSHA-3があります。

パスワードには、追加の措置なしに一般的なSHA-256を使用することはできません。パスワードは、専門の関数(Argon2、bcrypt、またはscrypt)を使用して保存する必要があります。これらは試行錯誤を遅くし、同じパスワードが同じハッシュ値を持たないようにソルトを使用します。

データ暗号化方法の比較​

以下は、特定のタスクに適した方法を迅速に選択するのに役立つ簡単な表です。

暗号化アルゴリズムの比較

方法適用対象利点制限
AES-GCMAPI、TLS、ファイル、データベース高速な暗号化と整合性チェック一意のnonceと正確な実装が必要
ChaCha20-Poly1305モバイルアプリ、VPN、TLSハードウェアAESなしでの良好な速度ライブラリとプロトコルでのサポートが必要
AES-XTSディスクの完全暗号化ブロックデバイスに適しています通常のメッセージやAPIには不向き
RSA-OAEP小さな秘密の保護、鍵交換広い互換性ECCより遅く、大きな鍵を必要とする
ECDH/ECDHEセッション鍵の合意効率と直接的な秘密性安全な曲線を選択することが重要
Ed25519/ECDSAデジタル署名真実性と整合性の確認データの内容を隠さない
Argon2/bcrypt/scryptパスワードの保存ブルートフォース攻撃からの保護これは暗号化ではなく、パスワードを復元できない

実用的な選択が必要とされる場合、新しいアプリケーションでは通常、認証済みの暗号化:AES-GCMまたはChaCha20-Poly1305が検討されます。鍵の伝達と保護された接続には、現代の暗号セットを使用したTLSが使用されます。

保存時、転送時、使用時のデータ暗号化​

データの暗号化方法を選ぶには、データの状態を理解することが有用です。同じ情報は、ライフサイクルの異なる時点において脆弱な可能性があります。

保存時のデータ​

保存時のデータは、ディスク、データベース、クラウドストレージ、アーカイブ、バックアップに保存されています。その保護には以下が使用されます:

  • ディスクの完全暗号化;
  • 個々のファイルの暗号化;
  • データベースのテーブルや列の暗号化;
  • オブジェクトストレージの暗号化;
  • クラウドに送信する前のバックアップの暗号化。

ディスクの完全暗号化は、デバイスが盗難や紛失される場合に保護します。ただし、システムにすでにログインしているユーザーやプロセスからのデータを必ずしも保護するわけではありません。したがって、機密性の高い分野ではアプリケーションレベルでの暗号化を追加すると良いでしょう。

転送時のデータ​

転送時のデータは、ネットワークを経由して移動します:ブラウザとウェブサイト、アプリケーションとAPI、オフィスとクラウド、クライアントとVPNサーバーの間です。ここでは、通常次のことが適用されます:

  • HTTPSおよびAPIのためのTLS;
  • サーバー管理のためのSSH;
  • 保護されたネットワークトンネルのためのVPN;
  • 安全なメールおよびメッセージ交換プロトコル。

主なルールは、パスワード、トークン、ドキュメント、および個人データを保護されていないチャネルで送信しないことです。内部ネットワークでさえも完全に信頼できるとは見なされるべきではありません。

使用時のデータ​

使用時のデータは、メモリ内にあり、アプリケーションによって処理されます。これは保護の難しい領域です。一般的な暗号化は、データを処理する前に復号化する必要があり、さもなければプログラムはそれらと連携できません。

特に厳密なシナリオでは、信頼できる実行環境、ハードウェアセキュリティモジュール、特定のタスクにはホモモーフ暗号化が適用されます。ただし、これらの技術は複雑で、すべてのプロジェクトに適しているわけではありません。

エンドツーエンド暗号化​

エンドツーエンド暗号化は、データが送信者のデバイスにて暗号化され、受信者のデバイスでのみ復号化されることを意味します。仲介サービスは、内容を読むための鍵を持つべきではありません。

このアプローチは、保護されたメッセンジャー、いくつかのクラウドストレージ、および共同作業サービスに使用されます。サーバーがすでに暗号化されたデータを保存または送信するため、サーバーのハッキングに伴うリスクを軽減します。

しかし、エンドツーエンド暗号化は実際の課題も引き起こします:

  • アクセスを回復することが難しくなる;
  • 内容に基づく検索が制限される可能性がある;
  • デバイス間の同期において鍵の適切な管理が必要;
  • 管理者はポリシー違反を簡単に確認できない。

したがって、E2EEは特にプライベートな通信や機密文書に役立ちますが、考慮されたユーザー体験を必要とします。

暗号鍵の管理​

暗号化は、多くの場合、弱いアルゴリズムではなく、鍵の操作が不適切なために破られます。アプリケーションのコードに記録された鍵やメッセンジャーで送信された鍵は、最も耐性がある暗号を無力化する可能性があります。

鍵の生成​

鍵は、暗号論的に安全な乱数生成器を使用して生成する必要があります。手動で鍵を考案したり、日付、名前、短いフレーズ、または標準ライブラリ内の暗号的に指名されていない通常の擬似乱数関数を使用することはできません。

鍵の保存​

鍵は、暗号化されたデータとは別に保存されます。そのために次の手段が使用されます:

  • クラウドインフラストラクチャ内のKMS;
  • 鍵のハードウェア保護のためのHSM;
  • シークレットマネージャー;
  • オペレーティングシステムの安全なストレージ;
  • ハードウェアトークンやTPM。

データベースと鍵が同じサーバー上にあり、追加の保護が行われていない場合、サーバーの侵害が全データを暴露する可能性があります。

鍵のローテーション​

ローテーションは計画的な鍵の交換です。これにより、潜在的な侵害時の損害が軽減され、内部のセキュリティポリシーに従うのが助けられます。しかし、ローテーションは管理可能でなければなりません。どのデータがどの鍵で暗号化されているのか、鍵のバージョンがどこに保存されているのか、データ損失なしに再暗号化をどのように行うのかを理解する必要があります。

権限の分離​

すべての管理者が鍵にアクセスできるべきではありません。役割を分けることが望ましく、インフラを管理する専門家や鍵を管理する専門家、ログを分析する専門家が必要です。このアプローチは、乱用やミスのリスクを削減します。

データ暗号化方法の選択方法​

以下は、ウェブサイト、モバイルアプリケーション、企業システム、または小さなサービスに適した実用的なステップバイステップのアルゴリズムです。

データ暗号化方法の選択

  1. データのタイプを特定します。 情報を次のカテゴリーに分割します:パブリック、内部、個人、支払い、商業機密、認証情報。
  2. 脅威を説明します。 何から守る必要があるのかを考えます:ノートパソコンの盗難、トラフィックの傍受、データベースのハッキング、インサイダー、クラウドアカウントの侵害。
  3. データの状態を特定します。 データは保存状態にあるのか、ネットワークで転送されているのか、アプリケーションでアクティブに処理されているのか。
  4. 信頼できるアルゴリズムを選択します。 大きなデータにはAES-GCMまたはChaCha20-Poly1305を使用します。ディスクにはAES-XTSを使用します。鍵交換にはECDHEを使います。パスワードにはArgon2、bcrypt、またはscryptを使用します。
  5. 既存のライブラリを使用します。 独自の暗号化を記述しないでください。成熟したライブラリと標準プロトコルを選択します。
  6. 鍵管理を設定します。 鍵の生成場所、誰がアクセスするのか、鍵のローテーション方法、廃棄方法を決定します。
  7. 整合性チェックを追加します。 認証済みの暗号化を優先します。認証なしに機密性に依存しないでください。
  8. 復元を確認します。 鍵のバックアップが保護されており、復元手順が明確でテストされていることを確認します。
  9. 解決策を文書化します。 選択したアルゴリズム、パラメーター、ライブラリのバージョン、アクセスルールを記録します。
  10. 監査を実施します。 定期的にプロトコルを更新し、古い暗号セットを無効にし、アクセスログをチェックします。

このアプローチは、アルゴリズムを「名前で」選ぶのではなく、実際のデータとリスクの周りに保護システムを構築するのに役立ちます。

暗号化時の一般的な誤り​

強力なアルゴリズムも、不適切に適用されると役に立ちません。以下は、特に頻繁に見られる誤りです。

自作の暗号化​

独自のアルゴリズムを作成することはほぼ常に悪いアイデアです。信頼できる暗号化は何年にもわたる分析を経る必要があります。オープンな標準と確認されたライブラリを使用する方が良いです。

nonceまたはIVの再利用​

多くの現代モードでは、一意のnonceや初期化ベクトルが必要です。再利用するとデータの暴露につながる可能性があります。特に、ストリーム暗号やGCMのようなモードでは重要です。

鍵をデータの近くに保管する​

鍵が暗号化されたデータと同じデータベースやリポジトリにある場合、保護は形式的なものになります。鍵は隔離し、アクセスを制限する必要があります。

整合性チェックがない​

認証なしでの暗号化は、攻撃者が暗号化されたデータを密かに変更できる可能性を許します。そのため、AEADモード:AES-GCMまたはChaCha20-Poly1305を使用する方が良いです。

古いアルゴリズムやプロトコル​

新しいシステムに対して、DES、3DES、RC4、MD5およびSHA-1を暗号化保護として使用するべきではありません。また、古いTLSバージョンや弱い暗号セットは無効にする必要があります。

パスワードの取り扱いの誤り​

パスワードを平文で保存したり、復号可能な方法で暗号化したりすることはできません。正しいアプローチは、ソルト付きのハッシュ化と遅延関数(例:Argon2id)です。

実用的な暗号化適用の例​

データ暗号化方法は文脈に応じて異なります。いくつかの典型的な状況を考察しましょう。

ウェブサイトとAPIの保護​

ウェブサイトには、現代のTLS構成でHTTPSを設定することが必須です。証明書は有効で、信頼のチェーンは正確で、HTTPからHTTPSへのリダイレクトが有効になっている必要があります。APIにおいてもトークンアクセスを保護し、その寿命を制限し、秘密をURLで渡さないことが重要です。

データベースの暗号化​

データベースは、ディスク、テーブル、または特定のフィールドレベルでの暗号化を使用できます。攻撃者がデータベースファイルのコピーを取得した場合、暗号化は読み取りを困難にします。しかし、もし彼が読み取り権限を持つアプリケーションにアクセスした場合には、データが暴露される可能性があります。そのため、データベースの暗号化はアクセス制御、リクエストの監査、およびネットワークセグメンテーションと組み合わせる必要があります。

バックアップの保護​

バックアップはしばしば最も貴重なデータを含んでいますが、主システムよりも低い保護を受けることがあります。外部ストレージに送信する前に暗号化する必要があります。バックアップの鍵は別に保存する必要があります。さらに、復元を定期的に確認しないと、バックアップが無意味になる可能性があります。

ノートパソコンおよびモバイルデバイスの暗号化​

ディスクの完全暗号化は、デバイスの喪失時にデータを保護します。実際には、信頼性のあるパスワード、画面のロック、システムの更新、および遠隔消去の可能性に加え、これを組み合わせる必要があります。

企業間でのファイル交換​

機密文書を交換する場合、伝送時および保存時の暗号化、権利管理、アクセスログ、多要素認証を持つサービスを使用する方が良いです。アーカイブのパスワードを同じチャネルで送信することは、保護の効果を減少させます。

規範的および組織的な側面​

暗号化は技術的にだけでなく、組織的にも必要とされます。企業は個人データ、支払い情報、医療情報、商業機密を処理します。そのため、適用される法律、契約、および業界標準を考慮することが重要です。

しかし、要件を満たすことは「データは暗号化されている」というフレーズに限られません。どのデータが保護され、どのアルゴリズムが適用され、誰が鍵にアクセスし、どのように監査を行い、インシデントが発生した場合に何が起こるのかを示す必要があります。

内部の暗号保護ポリシーを持つことが有益です。このポリシーには、許可されたアルゴリズム、鍵の最小パラメーター、秘密の保管ルール、ローテーションの手順、およびチームの責任が記載されます。

暗号化の未来と量子リスク​

量子コンピュータが十分に強力でアクセス可能な場合、非対称暗号に影響を与える可能性があります。まず脅威にさらされるのはRSA、Diffie-Hellman、および多くの楕円曲線に基づくスキームです。対称アルゴリズムも注意が必要ですが、鍵の長さを増やすことでリスクが部分的に軽減されます。

こうしたシナリオに備えて、ポスト量子アルゴリズムが開発されています。すでに、古典的な方法とポスト量子のハイブリッドスキームの基準が登場しています。今日、ほとんどの組織は、まず古いプロトコルを廃止し、鍵管理を整備し、暗号化のインベントリを確保することが重要です。その後、データが数年間秘密であり続けるべき場合には、ポスト量子ソリューションへの移行を計画できます。

FAQ:データ暗号化に関するよくある質問​

どのデータ暗号化方法が最も信頼性がありますか?​

すべてのタスクに対する唯一の方法はありません。大きなデータには一般的にAES-GCMまたはChaCha20-Poly1305が選ばれます。保護された接続には、現代の暗号セットを持つTLSが用いられます。パスワードには暗号化ではなく、Argon2id、bcrypt、またはscryptが必要です。

AES-256はAES-128よりも何が優れていますか?​

AES-256はより長い鍵を使用し、耐性の余裕を増します。しかし、AES-128も適切な実装において強力と見なされています。実際のシステムでは、鍵の長さではなく、鍵の保存、モードの選択、プロトコルの設定にミスがより多く見られます。

データを1本のパスワードで暗号化できますか?​

できますが、パスワードは特殊な派生関数(例: Argon2id、scrypt、またはPBKDF2)を介して暗号鍵に変換する必要があります。パスワードを直接鍵として使用してはいけません。

クラウドのデータを暗号化する必要がありますか?​

はい、データが機密性がある場合には必要です。多くのクラウドサービスは保存時にデータを暗号化しますが、鍵の管理者が誰であるかを理解することが重要です。重要なシナリオでは、独自の鍵やKMS、HSM、およびアプリケーションレベルの暗号化を使用します。

暗号化はウイルスやフィッシングから保護しますか?​

直接的にはいいえ。暗号化は未承認の読み取りからデータを隠しますが、デバイスの感染を防ぐことはできませんし、偽のサイトでパスワードを入力することからユーザーを守るものでもありません。更新、ウイルス対策、MFA、教育、アクセス制御が必要です。

ディスクの暗号化とファイルの暗号化、どちらが良いですか?​

ディスクの暗号化はデバイスの盗難時に便利です。ファイルの暗号化は、個別の文書を安全に転送したり、個別に保存したりする際に有用です。企業環境では、しばしば両方のアプローチが使用されます。

結論​

データ暗号化の方法は、アルゴリズムの人気によってではなく、タスクに基づいて選択する必要があります:データがどこにあるのか、誰がアクセスするのか、どの脅威が最も可能性が高いのか、鍵がどのように保管されるのか。新しいシステムには、信頼できる標準に従い、認証済みの暗号化を使用し、鍵をデータから分離して保護し、設定を定期的に見直してください。機密情報のインベントリから始め、TLSを導入し、バックアップを暗号化し、鍵管理を取り入れれば、迅速で実用的なセキュリティ向上が得られます。