つれづれ電脳記(日くらしPCに向かひて)

つれづれなるままに、日くらしPCに向かひて、その悪戦苦闘ぶりをそこはかとなく書き付くるおじさん。たまに雑談[管理人:goosyun]

つれづれなるままに、日くらしPCに向かひて、デジタル関係の悪戦苦闘ぶりをそこはかとなく書き付くるおじさんです。
たまに雑談してます。連絡・問い合わせフォームは、ページ最下部に置いています。[著者(運営人):goosyun]

(当ブログには本文中に広告リンクが含まれています。)

Windows10サポート終了後にUbuntuでの機密データ保護の方策を探る

 

 

1 従前のファイル保護の方法

 会社等の業務関係データではなく、一個人がPCで扱うプライベートなデータの中にも、他人に見られたくないもの、秘匿すべきものはあります。例えば、住所録(アドレス帳)などといった個人情報の類です。Windows PC では、アタッシェケースというアプリがあって、データ暗号化ができます。これでいったん暗号化すると、ファイルを開くのにパスワードが必要となります。いろんなファイル形式を暗号化できる上に、無料で利用できるので、これはこれで便利なアプリではあります。ただ、中身を確認するだけでも、その都度、暗号解除(復号)作業が必要です。そして、引き続き同じパスワードをかけようとすると、いったん復号しているので、改めて最初から暗号化作業が必要です。その再度の暗号化の手間が、面倒です。ファイルの中身をちょっと見ただけなのに、またかよ、って思ってしまいます。
 ですから、私はファイル暗号化には、アタッシェケースよりも、多くの場合、WordやExcelを使っていました。暗号化したWordファイルやExcelファイルは、パスワードを入れることで、簡単に中身を見ることができます。そして、再度の暗号化作業は必要なく、引き続き同じパスワードで保護しておけます。やはり、こちらの方が簡便です。

2 新たな方策の必要性

 秘密データは、これまで上記の方法で保護してきたのですが、転機がやってきました。従前の方法が使えず、他の方法への乗り換えを検討すべき時がきました。Windows10のサポート終了です。Windows10のサポート終了を機に、私は Ubuntu Linux へ移行することにしています。そうなると、WordやExcelは利用できません。Microsoft OfficeLinuxでは動かないので、インストールができませんから。WordやExcelに代わり、Linux上で動作するLibre Office を使って、同じように暗号化の方策をとることになるのかなぁ、っておぼろげながら考えていました。
 拡張セキュリティ更新プログラム(ESU)によって、Windows10が1年間延命されたので、切迫した状況ではありません。ですから、検討って言ったって、まだまだのんびりと…、だったのですが。

3 新たなデータ保護方策の候補

 そうした中、Ubuntu等のLinuxにおいても、もしかしたら何かいい方策があるのかもしれないと思いたち、調べてみました。「Ubuntuでテキストファイル暗号化」などといったキーワードでのgoogle検索です。そうしたら、いくつかの方策が見つかりました。こういったものは、探せばあるんですねぇ、やっぱり。そうです、やっぱりですよ。要は、その気になるかどうか、探すことをするかどうかです。
 調べた結果、Ubuntu環境下でのファイル暗号化の方法として、3つの候補が見つかりました。候補1:gpg(GNU Privacy Guard)、候補2:zip(パスワード付き圧縮)、候補3:OpenSSL この3つです。3つとも、Ubuntu環境で動作するツールで、しかも、いずれも無料です。
 さて、3つの候補のうち、どれがいいか。候補中、方法1のGnuPG(gpg)というツールが最もよさそうに思えました。gpgは、Ubuntuに最初から標準で入っており、改めてインストールの必要がない上に、セキュリティ強度が非常に強固です。しかも、テキストファイルも暗号化できます。方法2のzipは馴染みのあるツールではあるのですが、暗号化の強度が弱いらしく、不安です。方法3のOpenSSLとなると、名前からして何かむつかしそうで、得体のしれないものに思われます。
 ということで、方法1の GnuPG(gpg)でいくことにしました。

暗号化に手が出ないハッカー

4 GnuPG(gpg)の使い方

 Windows10からUbuntu Linuxへ移行後のデータ保護に、 GnuPG を使うことにしたので、そのツールについて、少し勉強してみました。
 使い方は、次のように、割と簡単です。

(1) 暗号化

  $ gpg -c maruhi.txt
 暗号化は、たったのこれだけでOKです。このコマンドを実行すると、パスワード(パスフレーズ)の入力が求められるので、任意の文字列を打ち込みます。そうすると、maruhi.txtファイルを暗号化したmaruhi.txt.gpgという名前のファイルが別に生成されます。暗号化には、共通鍵暗号公開鍵暗号の2つの方式がありますが、-cオプションは共通鍵暗号方式を意味します。

(2) 復号

  $ gpg maruhi.txt.gpg
 復号もこれだけです。暗号化の際に設定したパスワードを入力すると、復号されたmaruhi.txtが得られます。

5 暗号化ファイルからのデータ抽出

 私がやりたいのは、暗号化したテキストファイルから、awkgrepで必要なデータを抽出することです。そして、抽出元のテキストファイルは引き続き暗号化しておきたい、それができれば、まさに理想形です。この要望を叶えるために、暗号化したままのテキストファイルに対し、awkgrepの処理ができないものだろうか、と考えました。
 けれども、暗号化テキストファイルに対するawkgrepの処理は、さすがにできないようです。というのも、gpgで暗号化されたファイルは、テキストではなく暗号化されたバイナリデータになっているからです。awk はプレーンテキストを行ごとに処理するツールなので、暗号化データのままでは意味を理解できません。grepも同様です。
 そういうことなので、awkgrepの処理の前には、やはり復号が必要となります。

6 復号ファイルは保存せずに利用可能

 調べていくうちに、ここで大きな発見がありました。私にとっては衝撃的ともいえるほどの大発見です。
 実は、gpgツールはなかなかの優れものだったのです。私のやりたかったことを、そのまま実現してくれます。
 それは、コマンドラインに、次のような記述をするというものです。
  $ gpg -d maruhi.txt.gpg | awk '/必要な条件/'
  $ gpg -d maruhi.txt.gpg | grep "検索文字列"
 上記の実行によって、gpgは復号結果を一時的に標準出力し、そのままパイプawkgrep に渡します。そうすると、復号済みのファイルがディスクに保存されることはないのです。
 そうです、そうです。復号されたファイルがディスクに保存されることはなく、暗号化されたファイルがそのまま引き続き元の場所に残ることになります。ターミナルの画面には、抽出されたデータのみが表示されます。おぉ、やりたかったことのそのものズバリじゃぁないですかぁ~。そうです、まさに、これです!

7 -dオプションの大きな働き

 上記の場面で大きな働きをしているのが、gpgの-dオプションです。
 gpgコマンドでファイルを復号する場合、-dオプションは必須ではありません。gpgは、入力ファイルが暗号化されていることを自動的に検出し、復号を試みます。したがって、多くの場合は-dオプションなしで復号できます。元のファイル名からgpg拡張子を取り除いた名前で、復号ファイルを同じディレクトリに保存します(例: data.txt.gpgを復号するとdata.txtが生成される)。
 ところが、-dオプションは、復号した結果を標準出力に書き出すという重要な役割を持ちます。-dを使った場合、復号されたデータは標準出力である画面に表示されたり、パイプ(|)を使って別のコマンドに渡されたりします。これにより、ファイルとして保存せずにデータを処理することができます。
 つまり、-dオプションは、「暗号化されたデータを復号し、その結果をファイルとして保存するのではなく標準出力に出力する」という動作をgpgに明示的に指示するためのものです。標準出力に出力する働きにより、パイプによるデータの連携が可能になります。パイプ処理のおかげで、復号された一時ファイルを保存せずとも十分に目的を達せられます。

8 -dは何の略か?

 ちなみに、上記の-dは、--decryptの省略形です。多くのUnixコマンドラインツールと同様にgpgも、--で始まる長いオプション名と、その短縮形、-で始まる短いオプション名を持っています。短いオプション-dと、長いオプション--decryptの、そのどちらを使っても同じ動作をします。なお、「decrypt」の日本語訳は、「復号」で、「デクリプト」と発音します。暗号であるencrypt(エンクリプト)と対になる単語でしょう。

9 おまけ(awkの出番)

 テキストファイルの加工、抽出ツールawkプログラミング言語AWKの出番となりました。awkを使った処理をシェルスクリプトの形にして、使い回せるようにしておきたいと思っています。

 それではまた次の記事で
    goosyun