「OpenSSLコマンドを用いた共通鍵暗号」の版間の差分

提供: セキュリティ
移動: 案内検索
(ページの作成:「<!-- vim: filetype=mediawiki --> __TOC__ == 概要 == ここでは、OpenSSL コマンドを用いて、共通鍵暗号のやり方を紹介します。 [[...」)
 
(関連項目)
 
(同じ利用者による、間の2版が非表示)
行1: 行1:
<!--
+
ここでは、[[OpenSSL]] コマンドを用いて、[[共通鍵暗号]]のやり方を紹介します。
vim: filetype=mediawiki
+
-->
+
  
 
__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: [[秘密鍵]]
  
* [[OpenSSLコマンドを用いた公開鍵暗号]]
+
AES-128の[[秘密鍵]](-K)と[[初期ベクトル]](-iv)は、32桁の16進数(128bit)です。
* [[OpenSSL]]
+
<syntaxhighlight lang="bash">
* [[公開鍵暗号]]
+
% mkdir src
* [[RSA]]
+
% 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 によるデータの暗号化と復号

AES 128 で暗号化する例です。

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 コマンドで共通鍵を作成します。

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 によるデータの暗号化と復号 初期ベクトルを指定する

-iv
初期ベクトル (initilization vector, IV)
-K
秘密鍵

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:

関連項目