暗号化技術

共通鍵暗号化方式

共通鍵暗号(AES、3-keys Triple DES)は暗号化と復号にペアの鍵を用いるもので、片方の鍵で暗号化したものは、ペアとなるもう一方の鍵でしか復号できない方式。

暗号化や復号を高速で行える反面、暗号化で使用した共通鍵が流出すると容易に復号され、暗号の意味をなさない。

このため共通鍵暗号方式では、送信側と受信側で共通鍵の共有をいかにして安全に行うかがポイントとなる。

公開鍵暗号方式

公開鍵暗号方式は、共通鍵の事前共有の難しさを解決するために提案された方式で、暗号化と復号に異なるペアを用いる。暗号化のための鍵だけを公開し(公開鍵)、復号のための鍵は秘密に保持しておく(秘密鍵)。送信者が公開鍵で暗号化したデータは受信者が秘密に保持している秘密鍵でしか復号できないため、通信経路の途中で盗聴されても安全。

ただし、この際の注意点は、公開鍵が確実に本人のものであるかどうかを確認すること。攻撃者が実在する組織や個人になりすまして、公開鍵を公開している可能性がある。

これを見抜くためには、公開鍵の正当性を保証している認証局の証明書、及びその証明書が信頼できる第三者認証機関(CA)により発行されたものであることを確認する。化したデータもAさんの公開鍵でしか復号できない。

 

行えること

・Aさんが秘密鍵で暗号化したデータを、他者はAさんの秘密鍵で復号

→このようなデータはAさんだけが作れるので、ディジタル署名でデータの改ざんの検知に用いられる。

 

・他者がAさんの公開鍵で暗号化したデータを、Aさんの秘密鍵で復号

→このようなデータはAさんだけが読めるので盗聴の防止に用いられる。

 

RSAの問題点と楕円曲線暗号(DSA)

鍵の一部を成す素数を本来はランダムに選ぶアルゴリズムだが、不備によって自身の公開鍵とは異なる値であっても他者の公開鍵と同じ素数を含んでしまうと、互いに他方の秘密鍵を計算で解読できてしまう。

RSA暗号はこのような脆弱性を抱えているため、楕円曲線暗号を用いることがある。

 

SSHとは

SSHは遠隔ログインのための通信プロトコル及びソフトウェアであり、通信データの盗聴対策や、通信相手の成りすましを防ぐ仕組みを備えている。SSHではサーバにログインしてデータをやり取りする通信(ログインセッション)に先立って、安全な通信経路の確立利用者認証を行う必要がある。(FE 平成29年秋)

 

遠隔ログインを実現する代表的なプロトコルにはTELNETSSHがある。

TELNETはログイン時のパスワードなども平文で送受信するため、盗聴や改ざんのリスクが指摘された。そんな中、SSH(Secure Shell)が登場した。

安全な通信経路の確立

SSHによる安全な経路の確立は次のようにして、データの受信側で送信元の確認と改ざん検知を行う。

具体的には、送信者がメッセージダイジェストを「自身の秘密鍵」で暗号化したものを本文につけて送信し、受信者側はディジタル署名を「送信者の公開鍵」で復号して照合する。 

クライアントがサーバ認証を行う場合、「サーバが偽物ではないか」を確認したい。

この場合、検証対象はサーバとなる。クライアントはあらかじめ入手して正当性を確認しておいたサーバの公開鍵を用いて、サーバによるセッション識別子へのディジタル署名が正しいかどうかを検証する。

 

  • (1):クライアントがサーバにアクセスする。
  • (2):サーバとクライアントが,SSHセッションで使用する暗号アルゴリズムについて合意する。
  • (3):サーバとクライアントが,通信データの暗号化に使用するセッション鍵と,他のSSHセッションと区別するためのセッション識別子について合意する。
  • (4):①クライアントがサーバ認証を行う。サーバ認証では,クライアントがあらかじめ入手して正当性を確認しておいたaを用い,サーバによるセッション識別子へのディジタル署名が正しいかどうかを検証する。
  • (5):合意した暗号アルゴリズムとセッション鍵を用いて,共通鍵暗号方式による通信データの暗号化を開始する。これ以降の通信は,全て暗号化される。

 

 

利用者認証の概要

クライアントからサーバへのログインでは、サーバは利用者認証を行う。SSHの利用者認証の方式にはディジタル署名を用いる公開鍵認証とパスワードを用いるパスワード認証がある。

公開鍵認証では、クライアントの公開鍵を事前にサーバに登録しておき、この登録されている公開鍵に対応すする秘密鍵をクライアントが持っていることをサーバが確認する。

この確認では、クライアントがセッション識別子などに対するディジタル署名をサーバに送信し、サーバがクライアントの公開鍵を用いてディジタル署名を検証する。