0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

秘密鍵のネット経由での簡単で安全な運び方

Last updated at Posted at 2023-12-21

UnixまたはLinuxのコマンドラインに慣れていたら、通常の環境であれば、どこでも余分なインストール作業をせずに出来る方法です(そうでない環境があれば知りたい)。

なお、秘密鍵などを運ぶ場合は、その運び方について、そのサーバーごとに秘密鍵の運び方はポリシーがあるかもしれないので気をつけてください(暗号化してもメールでもslack経由は禁止とかあるかもしれません)。

あと、下記の方法は、複数の人による秘密の搬送は、あまり考えて無いです。「合言葉と反復回数」のみ電話で声で話すなどのやり方を、追加的に必要とします。

以下ですること :
openssl コマンドを使って、安全とされる aes-256-cbcの方式を使って、ヒストリに残らないように、その日だけ覚えておけば良い呪文のような合言葉を使って(例, 1waseda2waseda3waseda)
何か秘密にしたい概ねキロバイト程度のファイルを、base64コマンドを使って、暗号化された平文ファイルに変換し、後で、同じ合言葉で復号する。
さらに、時間が少し掛かるようにして、スパイされそうになっても何分も待たせる心理的シールドの効果も追加する。

  1. コマンドラインで関数を定義 :
# bash用の関数を定義 : 
encode () { openssl aes-256-cbc -e -in <( cat ) -pass pass:$2 -iter $3 | base64  > $1 ; } 
decode () { openssl aes-256-cbc -d -in <( base64 -d $1 ) -pass pass:$2 -iter $3 ; } 
  1. パスフレーズと圧縮するファイルの名前を指定 :
    暗号化するときも、複合化するときも、その時に使うサーバーで以下を実行する。つまり、最低、合計2回実行。
read -s AIKOTOBA  #  ヒストリなどに全く履歴を残さずに合言葉を変数に格納。その日くらいだけ頭に残すので長めがお勧め。
FILE='暗号化ファイルの名前' # 次の項目3.のコマンドラインが理解出来るなら、ここで決めなくても良い。
  1. 以下の2行のどちらかで、パスフレーズ付きの圧縮または解凍ができる :
cat 元ファイル  | encode $FILE $AIKOTOBA 100000000 # ← 暗号化する時の端末で実行。
decode $FILE $AIKOTOBA 100000000 > 元ファイル  # ← 復号する時の端末で実行。 > による出力先は元ファイルと違う名前も可。

ここで1億という数は、反復する計算の回数であり、今の計算機なら約1分程度。20億を指定すると約20分(2の31乗以上の数は指定できないようだ)。この反復は、暗号論的に意味が余りないかも知れない。しかし、万一パスフレーズがばれても、反復回数が非常に多いことで計算時間を数分かかるので、スパイにはいつまで経っても計算機の調子が悪いように見える。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?