68user's page 掲示板

Prev< No. 3986〜3999> Next  [最新発言に戻る] [過去ログ一覧]
No. 3986 # akuro 2004/10/08 (金) 14:36:02
>>3985 68user

返信ありがとうございます。

早速ファイルを確認してみましたところ、
(Vine,redhat8.0での確認)
→FREEBSDの方は今起動できないため後でテストしてみます。

0000000 a i u e o \r k a k i k u k e k o
                6961 6575 0d6f 616b 696b 756b 656b 6f6b
0000020 \r s a s i s u s e s o \r
                730d 7361 7369 7375 7365 0d6f
0000034

と同じ結果となり、¥rは存在する事が判明しました。
という事は、”Windows 側かファイル転送時”の問題のようです。

ファイルの取得方法はRedHatもVineもWinSCPを使用して受けとりました。
受け取ったクライアントPCは同じなので原因は転送時の気がします。
となると、SSHの設定かもしれないです。

まだ、原因はわかりませんが引き続き調査してみます。

No. 3987 # akuro 2004/10/12 (火) 19:08:09
>>3986 akuro

原因は、WinSCPでの転送中にファイルが加工されていたためでした。

一度ローカルにDLした後に、再度サーバーへUPしたところ
ファイルのダンプデータが異なりました(ファイルサイズも)。

0000000 a i u e o \r k a k i k u k e k o
                6961 6575 0d6f 616b 696b 756b 656b 6f6b
0000020 \r s a s i s u s e s o \r
                730d 7361 7369 7375 7365 0d6f

↓DL、UP後

0000000 a i u e o k a k i k u k e k o s
                6961 6575 6b6f 6b61 6b69 6b75 6b65 736f
0000020 a s i s u s e s o \0
                7361 7369 7375 7365 006f
0000031

sshd_configを調べてみても、転送モードらしきものは見つかりませんでした。
なにかよい方法はありませんでしょうか。
(FTPでバイナリモードにするしかないのでしょうか)
FTPを使用してバイナリ転送したところ、問題なく転送できました。

No. 3988 # 68user 2004/10/12 (火) 19:37:59
>>3987 akuro
WinSCP は知りませんが、
      http://itc.sfc.keio.ac.jp/ml/
の「2-6. 転送モードで[テキスト(T)] を選択します」という設定画面で
モード切替を行なえるように見えます。

> sshd_configを調べてみても、転送モードらしきものは見つかりませんでした。
わたしの知る限り、UNIX 的な ssh・scp は改行コード置換は行ないません。
WinSCP 独自のおせっかいな機能でしょう。

No. 3989 # akuro 2004/10/12 (火) 19:55:35
>>>3987

akuroと申します。なんども申し訳ありません。

先ほどは、改行コードを¥n→¥r変換しましたが。
¥nのままでもファイルに異常が生じるかテストしてみました所、
¥nの場合は問題なく転送できました。

No. 3990 # akuro 2004/10/12 (火) 20:07:26
>>3988 68user
返信ありがとうございます。akuroです。

問題解決いたしました。

ご指摘いただいたWinSCPの転送をバイナリにしたところ
問題なく転送できました。

ありがとうございました。

No. 3991 # sugimoto 2004/10/14 (木) 18:28:40
sugimotoと申します。
OpenSSLとRSA暗号を調べていてここに辿りつきました。
あるユーザ様とCGIを介してデータ通信を行おうとしているのですが、ユーザ
様の指定で、データはRFC2313に準拠したRSA暗号化して送るという事になって
ます。
暗号化/復号については68user様のネットワークプログラミングの基礎を参考
に作れそうなのですが、唯一解決できない問題がありまして、ここに質問して
おります。
【問題点】
    ユーザ様から提示された仕様には暗号化キー/復号キーがそれぞれ1つしか
無い。
    RSAはモジュラスと私有指数,公開指数で暗号化/復号を行えるという理解な
のですが、ユーザ様の仕様ではモジュラスに該当する仕様が無いのです。
    RSAにおいて、このような事は可能なのでしょうか?
    例えば、opessl genrsaコマンドで作成したRSAキーなら、関数を使えば指数
とモジュラスに分割できるよ。など情報がありましたら教えて下さい。
※ユーザ様にも問い合わせ中なのですが、レスポンスの問題がありまして、
こちらにも質問した次第です。
    よろしくお願いいたします。

No. 3992 # 68user 2004/10/14 (木) 18:59:49
>>3991 sugimoto
> RSAはモジュラスと私有指数,公開指数で暗号化/復号を行えるという理解な
> のですが
そのとおりです。

> ユーザ様の仕様ではモジュラスに該当する仕様が無いのです。
これは定義の問題ではないでしょうか? 仕様にある「暗号化キー」は、
実は「モジュラスと公開指数」を意味する、ということはないですか?

# 「暗号化キー/復号キー」が具体的に何を指すのかよくわからない
# ので何ともいえないのですが。

> 例えば、opessl genrsaコマンドで作成したRSAキーなら、関数を使えば
> 指数とモジュラスに分割できるよ。など情報がありましたら教えて下さい。
genrsa で出力されるデータには、モジュラス・公開指数・非公開指数全てが
含まれていますので、可能です (openssl genrsa で生成したデータを読み込み、
openssl rsa -pubout で公開鍵を出力できるわけなので)。

試してませんが、genrsa で生成した PEM ファイルを
    http://www.openssl.org/docs/crypto/pem.html
などで読み込み、RSA 構造体を参照すればよいのではないでしょうか。

No. 3993 # sugimoto 2004/10/14 (木) 19:50:18
>>3992 68user
素早い回答どうも有難うございます。> 68User様
> > ユーザ様の仕様ではモジュラスに該当する仕様が無いのです。
> これは定義の問題ではないでしょうか? 仕様にある「暗号化キー」は、
> 実は「モジュラスと公開指数」を意味する、ということはないですか?
    ユーザからの回答として、上記が来る事を心待ちにしている所です。

  PEMファイルからモジュラスを抜き出す処理については、ユーザからの回
答を待ってからにしようと思っておりますが、必要になった場合は頑張って
みます。この処理を行いましたらまた報告します。

No. 3994 # sugimoto 2004/10/15 (金) 18:53:17
>>3993 sugimoto
sugimotoです。
結局PEMファイルから秘密指数/公開指数とモジュラスを抜き出す事にしました。
プライベート鍵ファイルからの読み込みは
PEM_read_RSAPrivateKey()という関数を利用する事で上手く行ったのですが、
パブリックキーの読み込みに失敗している状態です。
以下が読み込みプログラム
RSA *ReadPublicKey(char *keyfile)
{
    FILE *fp = fopen (keyfile, "r");
    RSA *pkey;
    if (!fp) return NULL;
    pkey = PEM_read_RSAPublicKey(fp,NULL,NULL,NULL);
    fclose (fp);
    if (pkey == NULL)
          ERR_print_errors_fp (stderr);
    return pkey;
}
この関数を実行すると、以下のエラーが出てしまいます。
=== ここから ===
5563:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:669:Expect
ing: RSA PUBLIC KEY
Error: can't load public key
=== ここまで ===
渡しているファイルは
openssl rsa -in private.key -pubout -out public.key
で作成した、public.keyになります。
ちなみに、private.keyの読み込みは上記関数のPEM_read_RSAPublicKeyを
PEM_read_RSAPrivateKeyに変えた物で、問題無く動作します。
どなたか、private.keyの読み込みを行った方が居ましたら、助言をお願い
いたします。

No. 3995 # 68user 2004/10/15 (金) 19:02:13
>>3994 sugimoto
今実行環境がないのでわかりませんが、とりあえず気になったところだけ。

> プライベート鍵ファイルからの読み込みは
> PEM_read_RSAPrivateKey()という関数を利用する事で上手く行ったのですが、
これで RSA 構造体に「秘密指数/公開指数とモジュラス」がセットされていませんか?

あと、目的がよくわからないのですが、PEM ファイルは誰が作るのですか? (自分? 相手?)
なぜ「秘密指数/公開指数とモジュラス」を抜き出す必要があるのでしょうか?

No. 3996 # sugimoto 2004/10/15 (金) 20:12:28
>>3995 68user
> > プライベート鍵ファイルからの読み込みは
> > PEM_read_RSAPrivateKey()という関数を利用する事で上手く行ったのですが、
> これで RSA 構造体に「秘密指数/公開指数とモジュラス」がセットされていませんか?

はい。セットされます。
動作の確認のため、パブリック鍵ファイルも読み込みたかったのです。

> あと、目的がよくわからないのですが、PEM ファイルは誰が作るのですか? (自分? 相手?)
  PEMは自分で作成して、一方を相手に渡します。

> なぜ「秘密指数/公開指数とモジュラス」を抜き出す必要があるのでしょうか?
    PEMファイルの鍵を使って暗号化と復号を行いたいからです。

    で、当初の問題であったパブリック鍵の読み込みですが、
    PEM_read_RSA_PUBKEY() という関数を使ったところ上手く行きました。
    色々ご助言いただき有難うございました。

No. 3997 # 68user 2004/10/15 (金) 20:19:42
>>3996 sugimoto
> PEMファイルの鍵を使って暗号化と復号を行いたいからです。
PEM ファイルをロードしたら RSA 構造体が生成されるわけですから、
それを使って OpenSSL の関数で RFC2313 (PKCS#1) なデータを生成
するのはダメなのですか?

…と質問しようかと思ったのですが、おそらく「そういう仕様である」が
答えなような気がしますのでやめておきます。

No. 3998 # 68user 2004/10/15 (金) 20:29:31
>>3997 68user
あー、公開指数とモジュラスだけ (独自フォーマットで 相手側に送りたい、
という意図かな。

No. 3999 # sugimoto 2004/10/15 (金) 21:01:45
>>3998 68user
やりたい事を上手く伝える事ができないくて、すみません。
送信者は平文をPEM形式のパブリック鍵で暗号化し、
受信者はPEM形式のプライベート鍵で復号する。
という事を実現したかっただけなのです。
暗号化/復号の際にはPEM形式ファイル内の指数とモジュラスを抜き出す
必要があって・・・という話です。
と、ここまで書いて思ったのですが、もしかしてPEM形式の鍵をそのまま
使ってRSA暗号化する関数が存在するのでしょうか?
とすれば、何て無駄な事をしているんだ・・・。という感じです。

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