それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

openssl コマンドでS/MIMEを使った暗号化・平文化。

openssl rsautl だと大きなデータを暗号化できない

鍵の長さに依存するので、大きなデータを暗号化するには共有鍵を使う

もし、相手に安全にデータを受け渡したいとき、その際に相手と事前に安全な経路で通信できない時。

  1. 暗号化したいデータをパスフレーズ(共有鍵)で暗号化する
  2. パスフレーズを相手の公開鍵で暗号化する。
  3. 暗号化したパスフレーズと、暗号されたデータを送付する

この方法で行くことが出来る。だけど、ちょっと暗号化しておきたいときには不便かもしれない。

大きなデータはS/MIME を使って、暗号化が出来る

openssl smime -encrypt -in takuya.txt  id_rsa.crt > takuya.enc

ここで、id_rsa.crt は ~/.ssh/id_rsa を自己証明でオレオレ証明書にしたもの

復号(平文化)する

openssl smime -decrypt -in takuya.enc -inkey ~/.ssh/id_rsa

このときS/MIMEは重い処理

rsa 鍵の暗号化は重い処理です。計算コストが少々高い。そのため、冒頭に書いたようにAESで暗号化して鍵をRSAで送るほうがいい。

小さくsplit すればいいのでは?

もしRSAUTLが使えるなら、ファイルをsplitして分割してしまえば暗号化出来るよね。

あまりに小さくsplit しちゃうとECBになってしまい、意味がない。一部を改竄されたり攻撃を食らうことになる。CBCを使わないとだめですね。

自己証明の作り方

ときにかく、作りたいときに便利。

ファイル名 中身
~/.ssh/id_rsa 秘密鍵(PEM)
id_rsa.csr 証明書署名要求 (CSR)
id_rsa.crt サーバ証明書(CRT)

どうやら、id_rsaがあれば2行で出来る模様。手っ取り早い。

openssl req -new -key ~/.ssh/id_rsa > id_rsa.csr
openssl x509 -days 3650 -req -signkey ~/.ssh/id_rsa < id_rsa.csr > id_rsa.crt

参考資料

オレオレ証明書をopensslで作る(詳細版) - ろば電子が詰まつてゐる