- PR -

opensslでの暗号化・復号操作

1
投稿者投稿内容
angel
ぬし
会議室デビュー日: 2005/03/17
投稿数: 711
投稿日時: 2005-04-08 16:03
お世話になります。

暗号の勉強のために、opensslコマンドを使ってシミュレーションを行っているのですが、
公開鍵暗号での暗号化・復号操作の方法が一部分かりません。

以下、調査の結果わかったこと

・共通鍵暗号での操作
  暗号化:openssl enc -アルゴリズム -e -in 平文 -out 暗号文
  復号 :openssl enc -アルゴリズム -d -in 暗号文 -out 復号結果
  ※共通鍵の指定方法は色々ある

・RSA暗号での操作
  公開鍵で暗号化:openssl rsautl -encrypt -pubin -inkey 公開鍵 -in 平文 -out 暗号文
  秘密鍵で復号 :openssl rsautl -decrypt -inkey 秘密鍵 -in 暗号文 -out 復号結果

これらと同じように、RSA署名・DSAに関して、「秘密鍵で暗号化」「公開鍵で復号」をopensslで行うにはどうすれば良いのでしょうか?
※電子署名におけるハッシュ生成の工程は既に済んでいるものとして下さい。

よろしくお願いします。
あんとれ
ぬし
会議室デビュー日: 2004/01/14
投稿数: 556
投稿日時: 2005-04-08 16:57
OpenSSL による公開鍵を利用した暗号化をやったことがないので憶測になってしまいますが、暗号化と複合化の手順を逆にすることでできませんか?

複合化手順を使用して暗号化する
 ↓
暗号化手順を使用して複合化する
angel
ぬし
会議室デビュー日: 2005/03/17
投稿数: 711
投稿日時: 2005-04-08 17:26
ありがとうございます。
引用:

あんとれさんの書き込み (2005-04-08 16:57) より:
OpenSSL による公開鍵を利用した暗号化をやったことがないので憶測になってしまいますが、暗号化と複合化の手順を逆にすることでできませんか?

複合化手順を使用して暗号化する
 ↓
暗号化手順を使用して複合化する


試してみたところ、片方だけできました。

・秘密鍵で暗号化
 openssl rsautl -encrypt -inkey 秘密鍵
 → O.K.

ただ、逆はエラーになってしまいます。

・公開鍵で復号
 openssl rsautl -decrypt -inkey 公開鍵
 → unable to load Private Key

 openssl rsautl -decrypt -pubin -inkey 公開鍵
 → A private key is needed for this operation

いずれも、「秘密鍵じゃないからダメ」ということのようです。
angel
ぬし
会議室デビュー日: 2005/03/17
投稿数: 711
投稿日時: 2005-04-14 12:36
自己解決がつきましたので、参考までに結果を報告します。ありがとうございました。
カン違い等があれば、ご指摘頂けると有難いです。

・結論
 「秘密鍵で暗号化」「公開鍵で復号」という考え自体がナンセンスでした orz

・理由
 JANE氏のサイトの、電子署名≠秘密鍵で暗号化を参照。

 要約すると、電子署名においては、次の内(1), (2)はあっても(3)は必須ではない…、
 というより署名という技術の本質には関係がないようで。
 RSA署名ではたまたま(3)もできるだけ、ということでした。

  (1) ○ ハッシュ + 秘密鍵 → 署名作成(これは暗号化とは呼べない)
  (2) ○ 署名 + ハッシュ + 公開鍵 → 署名検証(妥当かどうかを調べるだけ)
  (3) △ 署名 + 公開鍵 → ハッシュ復元

・一応 openssl では
  RSA署名に関しては、
   (1) rsautil の -sign オプションで可能
   (2) (3)を利用して行う(復元したハッシュと元のハッシュを比較)
   (3) rsautil の -veify オプションで可能

  DSAに関しては、
   (1), (2) とも単独の機能としては用意されていない。
   (3) そもそもできない。
1

スキルアップ/キャリアアップ(JOB@IT)