68user's page 掲示板

Prev< No. 3873〜3880> Next  [最新発言に戻る] [過去ログ一覧]
No. 3873 # jeiu 2004/07/16 (金) 11:57:50
回答ありがとうございます。
もうひとつ教えてください。

>SSL/TLS はクライアントが利用可能な暗号 (正しくは暗号スイート) を
>提示し、サーバがその中から選びます。よって常に RSA が使用される
>わけではありません (DH を使う場合もある)。

クライアントから提示する暗号方式とはなにをもとに決められるのでしょうか?

たとえば、SSL V2に対応したアプリケーションとかV3に対応した
アプリケーションとかで決まることなのでしょうか?
または、Open SSL等で自力でSLLを実装するような場合は、対応できる暗号方式が
特定される(できる?)のであれば、それだけでは決まらないような気もしますが...。

No. 3874 # 68user 2004/07/16 (金) 12:41:39
>>3873 jeiu
> クライアントから提示する暗号方式とはなにをもとに決められるのでしょうか?
クライアント作成者が勝手に決めます。例えば 3DES と RC4 はいいけど
DES は暗号強度が気に入らないから使わないとか、MD5 より強固な SHA-1 を
使うとか。

OpenSSL であれば SSL_CTX_set_cipher_list() を使って好きな暗号
スイートをセットすればよいでしょう。

暗号スイートは具体的には
      http://www21.ocn.ne.jp/~k-west/SSLandTLS/rfc2246-Ja.txt

    TLS_RSA_WITH_3DES_EDE_CBC_SHA
    TLS_DH_anon_WITH_3DES_EDE_CBC_SHA
などを指します。

上記 RFC の ClientHello がクライアントからの暗号スイートの提示、
ServerHello がサーバからの暗号スイート決定通知、です。

> または、Open SSL等で自力でSLLを実装するような場合は、対応できる暗号方式が
> 特定される(できる?)のであれば、それだけでは決まらないような気もしますが...。
これは意味がわかりませんでした。

No. 3875 # ニッタン 2004/07/16 (金) 12:48:04
誤解を招くような書き方をしてしまいました。
申し訳ありません。
まず、RAND_poll()はRAND_byte()やRAND_status()の始めての呼び出しの際に
一度だけ呼ばれていると思われます。
RAND_poll()内では/dev/random・/dev/urandomを使用して
乱数の種を作っています。

/dev/random・/dev/urandomが存在しない環境でも
上記の様にRAND_poll()は呼ばれていますが、
No.3871の通り
乱数の種は作られません。
そこで、RAND_poll()を自前で呼び出しても同じ結果になります。

つまり、RAND_F_SSLEAY_RAND_BYTES,RAND_R_PRNG_NOT_SEEDEDのエラーが
発生した時は
RAND_poll()で乱数の種を作成するのに失敗しているので、
自前で乱数の種を作らないといけない
と言った説明を追記して頂ければいいと思います。

自前で乱数の種を作るのが
1、RAND_load_file()

2、RAND_seed()
と言う訳です。

貴重な時間を割かせてしまいまして、申し訳ありませんでした。

No. 3876 # 68user 2004/07/18 (日) 00:14:10
>>3875 ニッタン
更新しました。長らくお待たせしてすいません。
      http://X68000.q-e-d.net/~68user/net/ssl-1.html

詳しく説明しようとして、ドツボにはまった感がありますが、
いかがでしょうか。

RAND_status を呼べばその中から RAND_poll が呼ばれるのですが、
あえて RAND_poll を呼んでいるのは、マニュアルに書いてないこと
はなるべく前提としないでおこう、という方針だからです。

最初のサンプルプログラムがこれではわかりづらすぎるかなぁ。

No. 3877 # ニッタン 2004/07/19 (月) 12:23:11
ありがとうございます。
色々と勉強したので、私には理解できますが、
今後、初心者が読んだ場合に理解できるかはどうかは、
この掲示板にでも書き込んでくれる事を期待して、
この話題は一旦終了しましょう。

>最初のサンプルプログラムがこれではわかりづらすぎるかなぁ。

結局、/dev/randomがない環境では、種を作らないとエラーになるので
仕方ないと思います。
一応、/dev/randomがある環境では必要ないと補足してありますし。

今までありがとうございました。今後も参考にさせて頂きます。

No. 3878 # jeiu 2004/07/20 (火) 15:56:20
>> または、Open SSL等で自力でSLLを実装するような場合は、対応できる暗号方式が
>> 特定される(できる?)のであれば、それだけでは決まらないような気もしますが...。
>これは意味がわかりませんでした。

わけのわからない質問をしてすみません。
聞きたかったのは、クライアントが決める暗号化方式はどこで定義するのか?
とういうことでした。
あるHPでは、「暗号化に関する特許などが絡んでいるため、わけのわからないものは
コンパイルオプションを使って使用しないほうがよいでしょう」と書かれていたり、
ちょっと混乱状態です。
も少し勉強が必要かなと思います。

No. 3879 # jeiu 2004/07/21 (水) 14:07:32
68user殿

No.3874の
>OpenSSL であれば SSL_CTX_set_cipher_list(ctx,ciphers) を使って好きな暗号
>スイートをセットすればよいでしょう。
のciphersには具体的にはどのような設定をすればよいのでしょうか?

いずれにしても、どの暗号化方式を利用するかは上記のようにプログラミング依存
ということになるんでしょうか?(とすると、No.3878にも書かせていただきましたが
「コンパイルオプションを使って...」は何を意味するのでしょう。ご存知でしたら教
えてください)。

No. 3880 # 68user 2004/07/21 (水) 16:09:13
>>3879 jeiu
> ciphersには具体的にはどのような設定をすればよいのでしょうか?
概念は 3874で書いたとおり
> 例えば 3DES と RC4 はいいけどDES は暗号強度が気に入らないから使わない
などです。

ソースでどう書くかという意味なら
      SSL_CTX_set_cipher_list(ctx, "3DES:RC4");

      SSL_CTX_set_cipher_list(ctx, "ALL:-DES");
などです。書き方は OpenSSL のマニュアル ciphers(1) に載っています。

> 「コンパイルオプションを使って...」は何を意味するのでしょう。
「あるHPでは」などと曖昧なことを書かずに
    http://www.ryouto.jp/linux/linux_22.html
とはっきり書いてください (上記の URL であってるかはわかりませんが)。
文脈を無視して一文を切り出されても、答える方は推測しなければ
いけないのでつらいです。たとえば上記の web であれば config で
      no-rc5 no-idea
と指定しているので、このページの作者は RC5 と IDEA の特許について
危惧しているのだなということがわかるわけです。クイズじゃないんです
から、はっきり質問したいことを書きましょう。

IDEA については SSL/TLS 上で使えますし、普通に OpenSSL をコンパイル
した場合は有効になっています。ただし FreeBSD の OpenSSL では IDEA が
使用できないようにコンパイルされていました。他の厳しめの OS (Debian
とか) でも同様かと思われます。SSL/TLS で使用できるようになっているか
どうかは
      % openssl ciphers
でわかります。

RC5 は SSL/TLS で使用できる暗号スイートに入っていないので、
問題ないでしょう。

SSL/TLS ではなく、共通鍵暗号方式として IDEA や RC5 を使いたくない
(openssl enc -e idea や openssl enc -e rc5 とできないようにしたい)
ということであれば、上記のページのようにコンパイルオプションを
設定すればよいでしょう。使用中の OpenSSL で使えるかどうかを知りたい
なら
      % openssl enc -h
で表示される Cipher Types を見ればよいです。

なお、サーバ側で制御したいのであれば、Apache などの設定ファイルで
      http://httpd.apache.org/docs-2.0/mod/mod_ssl.html#sslciphersuite
を設定してください。


今後質問される場合は、質問の背景と、何が知りたいのかを明確にする
ことをお勧めします。

例:
    - SSL/TLS クライアントを作っている
    - 〜というページに〜という記述があり、特許を侵害してしまわないか心配だ。
    - クライアント側で特定の暗号を使用しないように制御する方法はあるか?

Prev< No. 3873〜3880> Next  [最新発言に戻る] [過去ログ一覧]