openssl: 概要、主なサブコマンド


前提


ドキュメント


暗号技術の核

これらを組み合わせて、情報の機密性、完全性、否認防止などを実現している。


サブコマンドのリスト

openssl list-standard-commands

暗号を限定した同様機能のrsa, genrsaなどがある。

ハイフン一つ

コマンドオプションのハイフンが一つなのがopensslの特徴。


乱数と鍵

ランダムなビット列(乱数)そのものが暗号の鍵になる。

排他的論理和

排他的論理和(^記号)は、片方だけ真(1)のとき、真とする論理。


ハッシュ関数

任意の長さの入力データから、特定の長さのデータ(ハッシュ値)を出力する。

HMAC(ハッシュ関数を用いたメッセージ認証コード)


共通鍵暗号


公開鍵暗号

プライベート鍵 => 公開鍵 のペアで機能

具体的処理はアルゴリズムによって異なる。


暗号通信


鍵共有(交換)


電子署名(否認防止)


公開鍵証明書: 成りすまし防止


乱数

# 32バイト生成、16進数で表示
openssl rand -hex 32

# ランダムなビット列(4バイト)の表示
openssl rand 4 | xxd -b -c 4 | cut -d " " -f 2-5 | sed 's/ //g'

ハッシュ関数

# MD5、16進数で表示
echo -n abc | openssl dgst -md5 -hex

共通鍵暗号

# 暗号化: AES, 鍵の長さ256ビット
echo '平文' | openssl enc -e -aes256 -out aes.enc

# 復号: 標準出力
openssl enc -d -aes256 -in aes.enc

公開鍵暗号

# プライベート鍵作成: RSA暗号
openssl genpkey -algorithm RSA -out private-key.pem

# 公開鍵作成
openssl pkey -pubout -in private-key.pem -out public-key.pem