OpenSSLのコマンドで試しにPBKDF2で鍵導出を実行してみたので、その時のメモを残します。
環境
- CentOS Linux release 8.5.2111
- OpenSSL 1.1.1k FIPS 25 Mar 2021
[root@centos85 ~]# cat /etc/redhat-release
CentOS Linux release 8.5.2111
[root@centos85 ~]# openssl version
OpenSSL 1.1.1k FIPS 25 Mar 2021
[root@centos85 ~]#
鍵導出のコマンドの実行
以下のコマンドを実行すると、パスワード(ここではyourpassword
)からaes-256-cbc
で使用可能な共通鍵(鍵「key
」と初期化ベクトル「iv
」)を表示してくれます。
openssl enc -aes-256-cbc -pbkdf2 -pass pass:yourpassword -P -md sha256
[root@centos85 ~]# openssl enc -aes-256-cbc -pbkdf2 -pass pass:yourpassword -P -md sha256
salt=4B6D989F614DEDFB
key=86F535A3CB11DDEC09E2B1524006199D95151732E43A039C227CEEB1FBA52A10
iv =68D7B84381398488CFDCA6A4DDEBD816
[root@centos85 ~]# openssl enc -aes-256-cbc -pbkdf2 -pass pass:yourpassword -P -md sha256
salt=204B7B8AB553E815
key=883680B2426E5FA8B9C0F752B0D196749DB0230E4D8E21034DF473DD3D7B1C7E
iv =DCE99157A9374512FB8EBD70380F5F79
[root@centos85 ~]#
鍵の長さは、aes-256
なので256bit
、16進数で64文字
となります。
2回実行したところ、1回目と2回目で結果が変わりました。
これはるソルト(salt
)が毎回ランダムに生成されるためです。
試しに、-S 1
を指定して、ソルト(salt
)を0123456789ABCDEF
に固定してみます。
openssl enc -aes-256-cbc -pbkdf2 -pass pass:yourpassword -S 0123456789ABCDEF -P -md sha256
[root@centos85 ~]# openssl enc -aes-256-cbc -pbkdf2 -pass pass:yourpassword -S 0123456789ABCDEF -P -md sha256
salt=0123456789ABCDEF
key=3952DC98696C83051FAEDBBD38FB208D3BE1E8E71309ABBD9694AFB8C7F08CE8
iv =8DDA03BDBC205E8E385515F94BA8541F
[root@centos85 ~]# openssl enc -aes-256-cbc -pbkdf2 -pass pass:yourpassword -S 0123456789ABCDEF -P -md sha256
salt=0123456789ABCDEF
key=3952DC98696C83051FAEDBBD38FB208D3BE1E8E71309ABBD9694AFB8C7F08CE8
iv =8DDA03BDBC205E8E385515F94BA8541F
[root@centos85 ~]#
今度は2回実行して、同じ結果が返ってきました。
次に-aes-256-cbc
を-aes-128-cbc
に変更して実行してみます。
openssl enc -aes-128-cbc -pbkdf2 -pass pass:yourpassword -P -md sha256
[root@centos85 ~]# openssl enc -aes-128-cbc -pbkdf2 -pass pass:yourpassword -P -md sha256
salt=EC0D585631D7A744
key=7826152218FA9F6361245B75C5FB3499
iv =51369A23624F6F6E4D13604E8ECF9F91
[root@centos85 ~]#
鍵の長さは、aes-128
なので128bit
、16進数で32文字
となりました。
以上