「OpenSSLコマンドを用いた共通鍵暗号」の版間の差分
提供: セキュリティ
(ページの作成:「<!-- vim: filetype=mediawiki --> __TOC__ == 概要 == ここでは、OpenSSL コマンドを用いて、共通鍵暗号のやり方を紹介します。 [[...」) |
(→関連項目) |
||
(同じ利用者による、間の2版が非表示) | |||
行1: | 行1: | ||
− | + | ここでは、[[OpenSSL]] コマンドを用いて、[[共通鍵暗号]]のやり方を紹介します。 | |
− | + | ||
− | + | ||
__TOC__ | __TOC__ | ||
== 概要 == | == 概要 == | ||
− | |||
ここでは、[[OpenSSL]] コマンドを用いて、[[共通鍵暗号]]のやり方を紹介します。 | ここでは、[[OpenSSL]] コマンドを用いて、[[共通鍵暗号]]のやり方を紹介します。 | ||
行12: | 行9: | ||
== インストール == | == インストール == | ||
− | |||
* [[FreeBSD]]の場合は、インストールする必要はありません。 | * [[FreeBSD]]の場合は、インストールする必要はありません。 | ||
* [[Windows]] の場合は、Win32 OpenSSL をインストールしてください。 | * [[Windows]] の場合は、Win32 OpenSSL をインストールしてください。 | ||
行22: | 行18: | ||
=== AES によるデータの暗号化と復号 === | === AES によるデータの暗号化と復号 === | ||
− | [[AES]] 128 で[[暗号化]]する例です。 | + | [[AES暗号|AES]] 128 で[[暗号化]]する例です。 |
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
行40: | 行36: | ||
==== 共通鍵の準備 ==== | ==== 共通鍵の準備 ==== | ||
− | [[AES]]は、[[共通鍵暗号]]方式です。そのため、[[共通鍵]](パスワード)を事前に用意しておきます。 | + | [[AES暗号|AES]]は、[[共通鍵暗号]]方式です。そのため、[[共通鍵]](パスワード)を事前に用意しておきます。 |
ここでは、[[OpenSSL]] コマンドで[[共通鍵]]を作成します。 | ここでは、[[OpenSSL]] コマンドで[[共通鍵]]を作成します。 | ||
行76: | 行72: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | == | + | === AES によるデータの暗号化と復号 初期ベクトルを指定する === |
+ | ;-iv:[[初期ベクトル]] (initilization vector, IV) | ||
+ | ;-K: [[秘密鍵]] | ||
− | + | AES-128の[[秘密鍵]](-K)と[[初期ベクトル]](-iv)は、32桁の16進数(128bit)です。 | |
− | + | <syntaxhighlight lang="bash"> | |
− | + | % mkdir src | |
− | + | % echo hoge > src/file.txt | |
+ | % openssl enc -aes-128-cbc -in src/file.txt -out src/file.txt.enc \ | ||
+ | -K 1234567890abcdef0123456789abcdef -iv 00000000000000000000000000000000 | ||
+ | % openssl enc -d -aes-128-cbc -in src/file.txt.enc -out src/file.txt.decrypted \ | ||
+ | -K 1234567890abcdef0123456789abcdef -iv 00000000000000000000000000000000 | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | [[初期ベクトル]]をあえて、違うものを指定した場合、下記のエラーが出ます。 | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | % openssl enc -d -aes-128-cbc -in src/file.txt.enc -out src/file.txt.decrypted \ | ||
+ | -K 1234567890abcdef0123456789abcdef -iv 00000000000000000000000000000001 | ||
+ | bad decrypt | ||
+ | 75925:error:06065064:digital envelope routines:EVP_DecryptFinal_ex: | ||
+ | bad decrypt: | ||
+ | /usr/src/secure/lib/libcrypto/../../../crypto/openssl/crypto/evp/evp_enc.c:337: | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | あえて、異なる[[秘密鍵]]を指定した場合、下記のエラーが出ます。 | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | % openssl enc -d -aes-128-cbc -in src/file.txt.enc -out src/file.txt.decrypted \ | ||
+ | -K 1234567890abcdef0123456789abcde0 -iv 00000000000000000000000000000000 | ||
+ | bad decrypt | ||
+ | 75926:error:06065064:digital envelope routines:EVP_DecryptFinal_ex: | ||
+ | bad decrypt: | ||
+ | /usr/src/secure/lib/libcrypto/../../../crypto/openssl/crypto/evp/evp_enc.c:330: | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | == 関連項目 == | ||
+ | {{openssl}} | ||
+ | <!-- vim: filetype=mediawiki --> |
2014年2月6日 (木) 20:06時点における最新版
ここでは、OpenSSL コマンドを用いて、共通鍵暗号のやり方を紹介します。
目次
概要
ここでは、OpenSSL コマンドを用いて、共通鍵暗号のやり方を紹介します。
公開鍵暗号の場合は、OpenSSLコマンドを用いた公開鍵暗号をご参照下さい。
インストール
使い方
AES によるデータの暗号化と復号
echo hoge > file.txt openssl rand 32 -out rand.txt -base64 openssl enc -e -aes128 -kfile rand.txt -in file.txt -out file.aes128_64 -base64 openssl enc -d -aes128 -kfile rand.txt -in file.aes128_64 -base64
データの用意
暗号化するデータを用意します。これは、なんでも構いません。
echo hoge > file.txt
共通鍵の準備
AESは、共通鍵暗号方式です。そのため、共通鍵(パスワード)を事前に用意しておきます。
openssl rand 32 -out rand.txt -base64
データの暗号化
暗号化するデータは、 file.txt です。 暗号に使う共通鍵は、 rand.txt の1行目です。 暗号化したデータは、 file.aes128_64 に入ります。 暗号化したデータは、BASE64 エンコードします。
openssl enc -e -aes128 -kfile rand.txt -in file.txt -out file.aes128_64 -base64
暗号化したデータを BASE64 エンコードする必要がなければ、 -base64 のオプションは不要です。 暗号化するときに、-base64 を指定した場合、復号のときも-base64を指定します。
データの復号
復号する暗号化したデータは、 file.aes128_64 に入っています。 暗号に使う共通鍵は、 rand.txt の1行目です。 復号したデータは、標準出力に表示します。
openssl enc -d -aes128 -kfile rand.txt -in file.aes128_64 -base64
ファイルに出力する場合は、-out オプションを使って、ファイルに書き出します。
openssl enc -d -aes128 -kfile rand.txt -in file.aes128_64 -out file.aes128_64_decrypted -base64
AES によるデータの暗号化と復号 初期ベクトルを指定する
AES-128の秘密鍵(-K)と初期ベクトル(-iv)は、32桁の16進数(128bit)です。
% mkdir src % echo hoge > src/file.txt % openssl enc -aes-128-cbc -in src/file.txt -out src/file.txt.enc \ -K 1234567890abcdef0123456789abcdef -iv 00000000000000000000000000000000 % openssl enc -d -aes-128-cbc -in src/file.txt.enc -out src/file.txt.decrypted \ -K 1234567890abcdef0123456789abcdef -iv 00000000000000000000000000000000
初期ベクトルをあえて、違うものを指定した場合、下記のエラーが出ます。
% openssl enc -d -aes-128-cbc -in src/file.txt.enc -out src/file.txt.decrypted \ -K 1234567890abcdef0123456789abcdef -iv 00000000000000000000000000000001 bad decrypt 75925:error:06065064:digital envelope routines:EVP_DecryptFinal_ex: bad decrypt: /usr/src/secure/lib/libcrypto/../../../crypto/openssl/crypto/evp/evp_enc.c:337:
あえて、異なる秘密鍵を指定した場合、下記のエラーが出ます。
% openssl enc -d -aes-128-cbc -in src/file.txt.enc -out src/file.txt.decrypted \ -K 1234567890abcdef0123456789abcde0 -iv 00000000000000000000000000000000 bad decrypt 75926:error:06065064:digital envelope routines:EVP_DecryptFinal_ex: bad decrypt: /usr/src/secure/lib/libcrypto/../../../crypto/openssl/crypto/evp/evp_enc.c:330:
関連項目
- OpenSSL
- OpenSSLコマンドを用いた共通鍵暗号
- OpenSSLコマンドを用いた公開鍵暗号
- OpenSSLコマンドを用いたデジタル署名
- OpenSSLをFreeBSDにインストールする