openssl rsautl だと大きなデータを暗号化できない
鍵の長さに依存するので、大きなデータを暗号化するには共有鍵を使う
もし、相手に安全にデータを受け渡したいとき、その際に相手と事前に安全な経路で通信できない時。
この方法で行くことが出来る。だけど、ちょっと暗号化しておきたいときには不便かもしれない。
大きなデータは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