SSH の中心的な機能である「認証」および「通信の暗号化」には暗号技術*5が使われている. 暗号技術では, 暗号化および復号化を行なう「鍵」の扱い方法が重要な要素の1つであり, 大別して1つの秘密鍵で暗号化も復号化もおこなう共有鍵暗号方式 (common-key cryptography) と, 暗号化をおこなう鍵と復号化をおこなう鍵との異なる1組の鍵を用いる公開鍵暗号方式 (public-key cryptography) との2種類がある. SSH では, 認証は公開鍵暗号方式で行ない, 通信データの暗号化は共有鍵暗号方式で行なっている.
ここでは暗号技術の概要を述べる. もう少し詳しく知りたい方は, まず [e8] や [e9] を参考にすると良い.
![]() |
暗号文 |
![]() |
|||||||||
![]() |
![]() | ||||||||||
![]() |
共有鍵暗号方式は, 対称暗号方式 (symmetric cryptography) や, 秘密鍵暗号方式 (secret-key cryptography) とも呼ばれる.
1つの共通の鍵で暗号化および復号化をおこなう方式である(図1). 公開鍵暗号方式と比べて, アルゴリズムが簡単であり, 処理時間が短いので, 大きなデータを暗号化するのに向いている.
しかし暗号通信を行なうためには, 双方で鍵を共有し, 第3者には秘密にする必要があるので, 鍵を安全な手段で転送する方法が大きな課題であった. この課題は, 現在では鍵の交換に公開鍵暗号方式を利用することにより解決されている.
SSH が使用している主な共有鍵暗号の方式を紹介する.
1970 年代にIBMが開発し, 1997 年に米国連邦政府の暗号標準に定められ, 広く利用されている. 平文に対してデータの置換操作と, 位置を入れ替える転置操作といった比較的に単純な処理を組み合わせて, 複雑な変換を施す.
56 bit 長の鍵を利用し, データを 64 bit のブロック毎に処理する.
異なった鍵で DES 暗号化を 3段階おこなうことにより, DES を強化したもの. SSH2 では標準になっている.
1991 年にスイスで開発された. 128 bit 長の鍵を用いて, データを 64 bit のブロック毎に処理する. SSH1 では標準になっている.
Bruce Schneier によって開発された高速の暗号. 32 bit から 448 bit 長の鍵をサポートしている. SSH1 では 128 bit 長の鍵を使用し, データを 64 bit のブロック毎に処理する.
公開鍵暗号方式は, 非対称暗号方式 (asymmetric cryptography) とも呼ばれる. 共有鍵暗号方式を利用する場合の, 鍵の管理を如何に行なうかという課題を解決するために開発された. 1976年に W. Diffie と M. Hellman により, 暗号化をおこなう鍵と復号化をおこなう鍵を分離するアイデアとして提案され[6], その後実際のシステムが開発された.
このシステムの概要は図 2 の通りである. メッセージの受け手は, 一組の暗号鍵と復号鍵を作成して, 通信相手に暗号鍵を送る. 通信相手はその鍵で暗号文を作成して, 受け手に送る. 受け手は, 送られてきた暗号文を復号鍵で平文のメッセージに戻す. 暗号文の復号化は復号鍵だけで可能であり, 暗号鍵ではできないので, 復号鍵を厳重に管理し他に漏れないようにすれば, 暗号鍵を一般に公開して安全な暗号通信が可能である. この復号鍵を秘密鍵 (Private key) と, 暗号鍵を公開鍵 (Public key)という.
![]() |
|||||
平文 |
|||||
|
|||||
図 2 公開鍵暗号システムによる暗号化と復号化
実際のシステムでは, 上記の説明とは逆の処理, つまり秘密鍵で暗号化を, 公開鍵で復号化をおこなうことができるものがいくつかある.
公開鍵暗号のシステムは, 暗号通信の用途以外に, 電子署名の用途に利用される. 秘密鍵でメッセージを暗号化することができるのは本人だけであり, 暗号化されたメッセージを受け取ったものは公開鍵で復号化して, 発信者の認証を行なうことができる(図 3)という特質を利用する.
SSH では公開鍵暗号システムとしてRSAやDSAを使っている.
1977年にR. L. Rivest, A. Shamir, L. Adelmanの3人によって考案された. 名称は3人の頭文字を取って付けられている. 大きな整数を素因数分解することは非常に困難であるという性質を利用している. 暗号化および電子署名に利用でき, SSHやPGP[e12]に利用されている.
1994年にアメリカ政府の標準に定められた, DSS(Digital Signature Standard)の中で定められており, 電子署名のみに利用できる[e13]. SSH2では標準となっている.
公開鍵暗号システムは鍵の管理については強力ではあるが, 一方, 処理が遅いために, 大きなデータを暗号化するのには向いていない. 短いデータの暗号化に用いられることが多く, 共有鍵暗号方式の暗号鍵の転送に利用されることや, メッセージダイジェスト*6と組み合わせて電子署名に利用される.
![]() |
暗号文 |
![]() |
|||||||||||
![]() |
![]() |
||||||||||||
秘密鍵 | 公開鍵 |
図 3 公開鍵暗号システムによる電子署名の概要