コラム

暗号化の方式とその特徴。ハッシュ化との違いや注意点を解説

作成者: EAGLYS株式会社|Feb 20, 2022 3:00:00 PM

企業のデータを情報漏えいや改ざんから防ぐ「暗号化」。

企業の社会的責任としてプライバシー・セキュリティ対策は必須要件となっていますが、暗号化には複数の方式があり、それぞれにメリットとセキュリティ・運用上の注意点が存在します。目的にあわせて適切なセキュリティ対策を行うためには、方式ごとの特徴や違いを理解することが必要です。

今回は暗号化の主な方式について、それぞれの特徴やアルゴリズム、活用例まで解説。また暗号化と混同されやすい「ハッシュ化」との違いも詳しく紹介します。

暗号化の方式・種類

代表的な暗号化の方式は、データを暗号化・復号する際に使われる鍵の管理方法によって

  • 共通鍵暗号方式
  • 公開鍵暗号方式
  • ハイブリッド暗号方式

の3つに分けられます。

まずはそれぞれの方式の特徴とアルゴリズムについて解説します。

共通鍵暗号方式


共通鍵暗号方式とは、データを暗号化・復号する際に同じ鍵を使う方式のことです。具体的な暗号化の流れは、以下のとおりです。

  1. 送信者は共通鍵を使ってデータを暗号化し、送付する
  2. 受信者は共通鍵を使ってデータを復号する

共通鍵暗号方式の場合、共通鍵が漏えいすると簡単にデータを復号されてしまうため、セキュアな環境下でデータの送受信が必要なこと、共有相手ごとに共通鍵を作成しなければならないことなどが注意点として挙げられます。

その一方で暗号化にともなう計算がシンプルになり処理速度が比較的高速になるため、大量のデータを暗号化する際に用いられています。

共通鍵暗号方式の暗号アルゴリズム


共通鍵暗号方式にはいくつかの種類(=暗号アルゴリズム)があります。主なものは「DES」「RC4」「AES」などがあり、それぞれの特徴を紹介します。

  • DES:一定量のデータをまとめて暗号化するアルゴリズム。鍵の長さは56bit。採用された当初は十分な安全性を持っていましたが、1990年代以降にはコンピュータの進歩によって安全性が低下しつつあります。現在は、DES処理を2,3回繰り返すことで鍵の長さ(※)を実現する方法がとられています。
  • RC4(ストリーム暗号):データをビット/バイト単位などで逐次暗号化するアルゴリズム。鍵の長さを40〜2048bitの間で自由に設定できることが特徴です。データをまとめて暗号化する方法と比べ、受信したデータを細かな単位で復号できるため処理速度が早くなりますが、安全性へ懸念があることから一部の企業では使用禁止を決定しています。
  • AES:データを区切り、置き換え・並べ替えなど4種の処理を複数回繰り返すアルゴリズム。鍵の長さは128・192・256bitから選択可能です。データ処理を複数回繰り返すことでセキュリティの強度が高まるため、安全性の高い暗号アルゴリズムとして広く使用されています。

(※)鍵の長さ:暗号鍵を構成するビット数で、ビット数が大きいほど暗号強度は増す

 

公開鍵暗号方式


公開鍵暗号方式とは、データを暗号化・復号する際にそれぞれ異なる鍵を使う方式のことです。具体的な暗号化の流れは以下のとおりです。

  1. 受信者が暗号化用の鍵(広く公開されている=「公開鍵」)と復号用の鍵(受信者だけが持つ=「秘密鍵」)を作成する
  2. 送信者は取得した受信者の公開鍵を使ってデータを暗号化し、送付する
  3. 受信者は受け取った暗号化データを秘密鍵を使って復号する

公開鍵暗号方式の場合、インターネット上で公開されている公開鍵を使えば誰でも暗号化できるため、送信者の数にあわせて鍵を増やす必要がなく、復号に使う「秘密鍵」も受信者が作成するため、鍵の送付に伴う流出のリスクがないことが特徴です。

しかし、公開鍵暗号方式の場合、共通鍵暗号方式と比べて複雑な計算が必要で処理に時間がかかることが注意点として挙げられます。そのため、大量のデータを扱う場合には次に紹介するハイブリッド暗号方式のように共通鍵暗号方式と組み合わせて使用されます。

公開鍵暗号方式の暗号アルゴリズム


公開鍵暗号方式の主な暗号アルゴリズムには、「RSA」「楕円曲線暗号」があります。それぞれ特徴を紹介します。

  • RSA:「大きな数字を素因数分解するには膨大な時間がかかる」ことを利用したアルゴリズム。素因数分解を行わなければ、公開鍵から秘密鍵を得られない仕組みになっています。現実的な時間では解読が不可能なこと、仮に解読されたとしてもその頃には情報としての価値が失われていることから、暗号化の安全性を保っています。
  • 楕円曲線暗号:楕円曲線( y2 = x3 + ax + b で表される曲線)の数学的な特性を安全性の根拠とする暗号。「一方向の計算は容易でも、反対方向の計算は困難」な性質が使われることで、公開鍵が知られても容易に秘密鍵を割り出せない仕組みです。暗号化や復号に必要な計算量が少なく、他のアルゴリズムより短い鍵で同等の強度が得られることから、活用の幅が広がっています。

ハイブリッド暗号方式


ハイブリッド暗号方式は、共通鍵暗号方式と公開鍵暗号方式の特徴を組み合わせた方式のことです。具体的な暗号化の流れは、以下のとおりです。

「共通鍵の受け渡し」=公開鍵暗号方式

  1. 受信者が公開鍵と秘密鍵を作成する
  2. 送信者は通信で使用する「共通の秘密鍵」を作成する
  3. 送信者は取得した受信者の公開鍵を使って「共通の秘密鍵」を暗号化し、送付する
  4. 受信者は秘密鍵を使って「共通の秘密鍵」を復号する

「暗号化データの送受信」=共通鍵暗号方式

  1. 送信者は「共通の秘密鍵」を使ってデータを暗号化し、送付する
  2. 受信者は「共通の秘密鍵」を使ってデータを復号する

ハイブリッド暗号方式は、共通鍵暗号方式の持つ鍵の受け渡しの課題を公開鍵暗号方式でカバーし、公開鍵暗号方式が持つ処理速度の遅さを共通鍵暗号方式でカバーしています。

ハッシュ化


ハッシュ化とは、データを不規則な文字列に変換する手法のことです。

変換されたデータはハッシュ値と呼ばれ、同じデータからは常に同じハッシュ値が生成されますが、少しでもデータの内容が異なるとハッシュ値は全く異なるものになります。

暗号化と混同されやすいハッシュ化ですが、暗号化の主な違いは「不可逆性(元に戻せない性質)」にあります。

暗号化の場合は暗号化されたデータを鍵で復号し、内容を確認することができますが、ハッシュ化はデータの変換ができるのみで、データを元に戻す(復号)ことはできません。

ハッシュ化は、不可逆性と呼ばれるこの性質を活かし、パスワード管理などに利用されています。

たとえば、ユーザーがパスワードを初期登録する際にハッシュ化によってパスワードが変換されハッシュ値が得られます。ログインをする際は、入力されたパスワードのハッシュ値と登録の際に保存されたハッシュ値を比較することで、ユーザーが同一であると認証できます。

また、この方法であれば仮にデータが漏えいした場合にも流出するのはハッシュ値のみとなり、パスワードを元に戻すことができないため不正利用の防止につながります。

暗号化方式の活用例

それでは、暗号化方式が実際にどのような場面で活用されているか、具体例を用いて解説します。

電子署名(デジタル署名)


電子署名(デジタル署名)とは、その文書が正式なもので、改ざんされていないと電子上で証明することです。書類に署名や押印をする場合は印影が残りますが、電子文書にはサインをしたり押印することはできないため、認証局と呼ばれる第三者機関が発行する「電子証明書」を使って正当性を保証します。この電子証明書の発行には、公開鍵暗号方式の「公開鍵と秘密鍵が常にペアとして機能する」という性質が活用されています。

電子署名は次の流れで行われます。

  1. 署名する契約者は、契約書などの電子文書を自分だけが持っている「秘密鍵」を使って暗号化し、暗号化したデータと「公開鍵」を確認者に送付
  2. 確認者は、暗号化されたデータを「公開鍵」を使って復号

この際、2のように復号できれば「このデータを暗号化した(=電子署名をした)のは契約者本人である」との証明になります。

ただし、この証明はあくまで「秘密鍵を持つのは、契約者(署名者)本人のみである」ことが前提です。仮に秘密鍵が第三者の手に渡ってしまった場合は、本人確認の意味をなさなくなってしまうため、鍵の厳重な管理が必要です。

SSL/TLS


SSL(Secure Sockets Layer)/TLS(Transport Layer Security)とは、インターネット上でデータを安全に送受信するために暗号化する仕組みのことです。鍵を使って通信を暗号化するとともに、第三者機関が発行するサーバー証明書を使ってサーバー認証を行うことで、データの盗聴や改ざん、なりすましなどを防ぎます。

SSL/TLSは、公開鍵暗号方式と共通鍵暗号方式を組み合わせたハイブリッド暗号方式が使われています。具体的には、次の流れで行われます。

  1. 受信者(サーバー)は送信者(ブラウザ)に「公開鍵」と「SSLサーバー証明書」を発行し、送付する
  2. 送信者は「公開鍵」を使って「共通鍵」を暗号化する
  3. 送信者は受信者へ暗号化した「共通鍵」を送付する
  4. 受信者は受け取った「共通鍵」を「秘密鍵」で復号する
  5. 受信者と送信者は「共通鍵」を使ってデータを暗号化し、復号する

ハイブリッド暗号は、最初に公開鍵を使って共通鍵を作成し、その共通鍵でデータを暗号化します。これにより共通鍵暗号方式がもつ情報処理の速さと、公開鍵暗号方式が持つ利便性を両立することができます。

ただし、SSLは脆弱性が指摘されていることから、企業は常に最新の脆弱性情報・セキュリティ対策情報をチェックし、他のセキュリティ対策の検討や組織内のガバナンス強化に取り組むことも重要です。

SSL/TLSについては下記コラムにて詳しく解説しています
https://www.eaglys.co.jp/news/column/encryptnetwork



秘密計算技術への応用


秘密計算とは、暗号化した状態で機密なデータを計算できる技術のことです。

従来の暗号はデータの通信・保管時のみ暗号化を行うことでデータを保護します。このため、解析等のデータ処理を行う際に一度暗号を解いて元の状態に戻さなければならず、処理中のセキュリティが脆弱になるリスクがありました。

秘密計算技術を使えば、通信・保管時だけでなくAIの学習時もデータを暗号化したままで処理できるため、データ漏えいや不正利用のリスク回避につながります。

この秘密計算の手法の一つである「準同型暗号方式」には公開鍵暗号方式の仕組みが応用されています。

準同型暗号方式では、データを暗号鍵を使って暗号化し、暗号化したままの状態で共有や計算、解析します。得られた解析結果は秘密鍵を使って復号するまで開示されない仕組みになっているため、複数の競合組織がデータを持ち寄り、互いに中身を見ないままに解析結果を得る場合などに活用されています。

※EAGLYS サービス紹介ページはこちら
https://www.eaglys.co.jp/service

準同型暗号方式は、現在では主に「格子」と呼ばれるものを使って鍵の解読難度を高めることで実現されています。

秘密鍵の元となるベクトルを格子上に作り、格子を任意の角度に傾けることで、秘密鍵のベクトルを組み合わせて公開鍵を作る際に誤差が生まれ、秘密鍵を割り出す計算を困難にする仕組みです。

この格子暗号は、何百次元もの複雑なベクトルを扱うことができ、格子の傾け方にも無数の可能性が存在します。そのため、これまでのコンピュータには難しかった高度な計算を可能にすると注目を集める「量子コンピュータ」が実現したとしても、その計算速度に耐え得る暗号であると言われています。

まとめ

暗号化には主に「共通鍵暗号方式」「公開鍵暗号方式」「ハイブリッド暗号方式」の3方式があり、それぞれに異なる特徴があります。暗号化方式を選ぶ際は、方式ごとのメリットや懸念点、アルゴリズムの特徴を押さえたうえで、目的にあった方式を選ぶ必要があります。

EAGLYSでは、データベース暗号化ソフトウェアの「DataArmor Gate DB」をはじめ、秘密計算ソリューションを開発提供し、ユーザーニーズに最適な提案をおこなっています。

デモンストレーションやデータ秘匿性担保とデータ利活用の両立についてのディスカッションから対応していますので、お気軽にご相談ください。