暗号の秘密鍵、公開鍵、共通鍵の仕組みとは?
schedule 2018/02/15 refresh 2023/11/09
暗号化の必要性
独立行政法人情報処理推進機構(IPA)は、2018年1月30日「情報セキュリティ10大脅威2018」を発表しました。
ネットワークを利活用する際には、インターネットに流れる情報の盗聴、サーバーに格納された情報の不正アクセス、なりすまし、データの改ざん、否認など様々な危険にさらされることを認識しておく必要があります。
盗聴や不正アクセスによる情報漏えいの対策では、ID、パスワード、クレジットカードの暗証番号などの個人情報、企業の顧客・機密情報などを暗号化して、ネットワークに流し、サーバーに格納することです。
Webサービスを提供しているサーバーで、パスワードなどを暗号化せずそのまま平文で保存しているサイトは非常に危険です。
なりすまし、改ざん、否認に対しては、正規ユーザの認証情報や電子データに暗号技術を応用した電子署名や電子証明書を付加し、強固な認証方法を導入します。
(画像はPixabayより)
暗号化技術には、主に共通鍵暗号方式と公開鍵暗号方式の2つの方式があります。
共通鍵暗号方式(Symmetric Cryptography)
共通鍵暗号方式は、暗号化と元の平文に戻す復号に同じ鍵「共通鍵」を用いる暗号方式です。
データの送受信を例にとると、以下のようになります。
1.送信者は、共通鍵を作成します。
2.安全な方法で、共通鍵を受信者へ知らせます。
3.送信者は、共通鍵を用いてデータを暗号化し、受信者に送信します。
4.受信者は、受信したデータを共通鍵により平文に復号します。
第3者は、データを入手しても、共通鍵が無いため解読することができません。したがって、2.の事項が大変重要になります。
暗号化技術は、平文を暗号化するアルゴリズムと暗号/復号化に用いるビット列の鍵から構成されます。
共通鍵暗号方式は、以下の2種類あります。
1.ブロック暗号
平文を一定の長さのブロックに分割し、ブロック単位ごとに換字や転置を行って暗号化する方式です。代表的なものは、DES(56、168bit)、RC5(~2040bit)、IDEA(128bit)、AES(128、192、256bit)、日本製のCamellia(128、192、256bit)などです。
AESは、アメリカ国立標準技術研究所(NIST)が採用しており、共通鍵暗号では実質的な標準暗号方式です。PCデータ、無線キーボード、無線LANのWPAやICカードなどで広く使われています。
2.ストリーム暗号
ある鍵を初期値とした擬似乱数を用いて、平文と1~数bitの逐次XOR(排他的論理和)をとり暗号化する方式です。代表的なものは、RC4(40~256bit)、SEAL(160bit)などです。
RC4は、高速なため、Web上の暗号化通信を行うSSL/TLSや無線LANの暗号化を行うWEPやWPAの一部で使われています。
ただし、安全性に関する問題があるため、無線LANでは使われなくつつあります。SSL/TLSでは、公開鍵暗号と組み合わせて利用されています。
共通鍵暗号方式は、暗号/復号化が高速なためマシンに負荷をかけないのですが、受信者が多数の場合、共通鍵の管理、安全な鍵の受け渡し方法が課題となります。
公開鍵暗号方式(Public Key Cryptography)
公開鍵暗号方式は、暗号化する公開鍵(Public Key)と、復号化する秘密鍵(Private Key)の2つの異なる暗号鍵を用いる暗号方式です。
公開鍵で暗号化したデータは対応する秘密鍵でしか復号できない、逆に秘密鍵で暗号化したデータは対応する公開鍵でしか復号できない、という性質があります。
データの送受信を例にとると、以下のようになります。
1.受信者は、公開鍵と対応する秘密鍵を作成します。
2.受信者は、秘密鍵を誰にも知られないように厳重に管理します。公開鍵は、外部に公開します。
3.送信者は、公開鍵を取得します。
4.送信者は、公開鍵でデータを暗号化し、受信者へ送信します。
5.受信者は、秘密鍵を用いてデータを復号します。
公開鍵が真正であることを保証する認証方法は、個人レベルで信頼できる人物が公開鍵の所有者の保証をするPGP方式と、信頼できる第3者機関の認証局(CA)が保証する方式があります。ほとんどの組織は、CAを利用しています。
第3者は秘密鍵を手に入れない限り復号できないので、秘密鍵が漏えいしない限り、データを安全に送受信できます。また、送信者が多数になっても公開鍵1つで対応可能です。
秘密鍵で暗号化し、公開鍵で復号する方法は、ハッシュ関数とともに電子署名で使用されます。秘密鍵が特定の個人・組織の所有であることを利用し、データの送信元のなりすましでない真正性と改ざんされていない完全性を保証します。
公開鍵暗号方式は、数学的に計算することが困難な問題を利用しています。素因数分解問題に基づくDH、RSA、離散対数問題に基づくDSA、離散対数問題に楕円曲線を適用するECCなどです。
共通鍵の鍵交換、データの暗号化、デジタル署名などで使います。
公開鍵暗号方式は、同程度の機密性を持つ鍵長の場合、複雑な演算処理を行うため、共通鍵暗号方式より処理速度が数百倍遅くなります。
したがって、高速処理と安全性を担保するため、実装には公開鍵暗号方式と共通鍵暗号方式を組み合わせ、公開鍵暗号方式で共通鍵を安全に送信し、共通鍵を使用してデータを暗号化後、送信し、復号します。また、共通鍵は、その都度変更し、同じものを使用しません。