id0-rsa.pubのメモ【Hello OpenSSL】
Hello OpenSSL
opensslコマンドの使い方の話。以下問題文。
This is an RSA key -----BEGIN RSA PRIVATE KEY----- MIGtAgEAAiEA5tygpSZdOZUMfuO3oTGWR4cALBtWui5UzrQw2/8JlZ0CAwEAAQIh AI9n4Yp1KFfKlHaF8d15tgUONQXn+e3aI+beFKoi2XipAhEA/ZkHPmcDwXIqloGr minb1wIRAOkMdv7emMGd08gwwOQ6i6sCEQC0pjcXx9BQFCCsWDDCwAC/AhEAxYcn JQeO+izH4JpSJB/rWQIRAOO9m6JHEWgzLYD+fe003vw= -----END RSA PRIVATE KEY----- It was generated with the command $ openssl genrsa 256. A secret 64 bit number was encrypted with this key, resulting in this cipher text 6794893f3c47247262e95fbed846e1a623fc67b1dd96e13c7f9fc3b880642e42 Recover the secret number (in lowercase hex).
opensslコマンド
opensslコマンドの書式について以下にまとめる。[ ]内は省略可能。
openssl [サブコマンド] [オプション]
主なサブコマンド
サブコマンド | 説明 |
---|---|
ca | 認証局の証明書を管理 |
crl | CRLを管理 |
dgst | メッセージダイジェストを計算 |
genrsa | RSA秘密鍵を生成 |
md5 | MD5ダイジェスト |
pkcs12 | PKCS#12形式のファイルの作成と管理 |
req | X.509証明書署名要求(CSR)を管理 |
rsa | RSAの秘密鍵を管理 |
rsautl | RSAアルゴリズムを使用したメッセージの署名、検証、暗号化および復号 |
s_client | SSL/TLSプロトコルを使用して指定サーバに接続 |
s_server | SSL/TLSプロトコルを使用してメッセージを受信するサーバーとして動作 |
version | OpenSSLのバージョン情報を表示 |
x509 | X.509証明書データを管理 |
公開鍵と秘密鍵の生成
opensslでは、秘密鍵と公開鍵の作成や、それらを利用した暗号化と復号が可能。
サブコマンドとして、genrsa、rsa、rsautlを利用する。
genrsa
openssl genrsa [オプション]
主なオプション
オプション | 説明 |
---|---|
-out <ファイル名> | 生成したRSA形式の秘密鍵を出力するファイル名を指定。指定がない場合は標準出力に表示 |
-des | 暗号化にDESを使用 |
-des3 | 暗号化にTripleDESを使用 |
-idea | 暗号化にIDEAを使用 |
ビット数 | 生成するRSA形式の秘密鍵のビット数。指定がない場合は512ビット |
rsa
openssl rsa [オプション]
主なオプション
オプション | 説明 |
---|---|
-in <ファイル名> | 生成したRSA形式の秘密鍵のファイル名を指定。指定がない場合は標準入力から読み込む |
-noout | エンコードされた鍵を表示しない |
-out <ファイル名> | RSA形式の秘密鍵を出力するファイル名を指定。指定がない場合は標準出力に表示 |
-pubin <ファイル名> | 生成したRSA形式の公開鍵ファイル名を指定。指定がない場合は標準入力から読み込む |
-pubout | 秘密鍵とペアとなる公開鍵を標準出力 |
-text | テキスト形式で表示 |
-des | 暗号化にDESを使用 |
-des3 | 暗号化にTripleDESを使用 |
-idea | 暗号化にIDEAを使用 |
rsautl
rsautlはRSAによるメッセージの署名、検証、暗号化、復号を行うサブコマンド。
openssl rsautl [オプション]
主なオプション
オプション | 説明 |
---|---|
-decrypt | ファイルの復号を行う |
-encrypt | ファイルの暗号化を行う |
-in <ファイル名> | 暗号化もしくは復号対象のファイル名を指定 |
-inkey <ファイル名> | 秘密鍵とペアとなる公開鍵を標準出力 |
-out <ファイル名> | 暗号化もしくは復号したファイルの内容を出力するファイル名を指定。指定がない場合は標準出力に表示 |
-pubin | 公開鍵ファイルを入力する場合に指定 |
solution
長々とopensslのコマンド、オプションを書いたが、今回は与えられた秘密鍵をprivate.keyとして保存して以下のコマンドを実行すればOK。
printf "6794893f3c47247262e95fbed846e1a623fc67b1dd96e13c7f9fc3b880642e42" | xxd -r -p | openssl rsautl -inkey private.key -raw -decrypt | xxd -p -c 8 | tail -n 1
おわりに
気が向いたら証明書周りのサブコマンドも書く。
参考
2年前くらいにLPIC Level3 303 を取得したときに使っていた以下の本を参考に書きました。 https://www.amazon.co.jp/%E5%BE%B9%E5%BA%95%E6%94%BB%E7%95%A5LPIC-Level3-303%E6%95%99%E7%A7%91%E6%9B%B8-%E5%95%8F%E9%A1%8C%E9%9B%86-Version/dp/4295000515/ref=pd_lpo_sbs_14_t_2?_encoding=UTF8&psc=1&refRID=PHRQ15D99HZ76TZ22E18www.amazon.co.jp