« ティザリング実験室 〜 それってネットに繋がるの? | トップページ | Linuxでファイル暗号化(2)〜 USBメモリをgocryptfsで守る♪ SiriKali編 »

2019年8月21日 (水)

Linuxでファイル暗号化(1)〜 USBメモリをgocryptfsで守る♪

近年、USBメモリの紛失等による情報流出等により、厳重な情報管理が叫ばれている今日この頃です。

さて、今回は Linux におけるUSBメモリの暗号化がテーマです。

暗号化を行うことの出来るソフトは数多くありますが、今回、暗号化に利用するパッケージは

gocryptfs

です。

ホームディレクトリ内やDropboxなどのオンラインストレージ、sshfsでのマウント先のディレクトリの暗号化、仮想マシン上のホスト・ゲスト間の共有ディレクトリ内のファイルの暗号化等々、いろいろな所で使えるんですが、USBメモリでも利用できます。

基本はホームディレクトリでの作業で説明しています。作業の流れは全く変わらないので。

USBメモリでの使用に関しては、パスさえわかれば問題が無いハズなので、これに関しては最後の仕上げに補足という形で記述してあります。

ちなみに「EncFS」の後継に当たるようで、使い方が似ており、使ったことがある人はすぐに慣れるかも。

ということで、まずは使い方の概要から。

 

【◎ 使い方の概要】

gocryptfs では「㋐ 暗号化したファイルの保存先」と「㋑ その保存先とリンクした---作業用のフォルダ(ディレクトリ)」が必要であることを理解する必要があります。

042r3

gocryptfsの使用中は㋐のフォルダ(ディレクトリ)を意識する必要は無く、㋑のフォルダ(ディレクトリ)上でファイルのやり取りをします。

㋑と㋐はリンクしており、㋑上でファイルを開いたり、保存したり、削除したりして作業をするのですが、ファイルを保存したり、削除したりすると㋐に反映される形となります。(㋐ にあるファイルが実態として存在するファイル群)

また、㋑から他のフォルダへファイルをコピーすることも可能です。

暗号化を使用しない時は「㋐と㋑のリンクを切断」し、暗号化されたファイルに直にアクセスできないようにするようにします。

1つのファイルごとに暗号化や復号といったことを考える必要はありません。

では、導入からマウントなどの設定、実際の使い方の話に入ります。

なお、作業環境は「Debian10 KDE」となります。

 

【① パッケージのインストール】

まずは端末にて。

# apt update
# apt install gocryptfs

で、インストール完了。

002_in2r2

(「apt って何やねん」な方は、「apt-get チュートリアル(apt チュートリアル)」をどうぞ。)

 

 

【② 2種類のフォルダ(ディレクトリ)を準備する】 

概要で話した通り、gocryptfsを使用するにあたり、2つのフォルダ(ディレクトリ)が必要です。

一つは「㋐ 暗号化されたファイルを保存するためのフォルダ(ディレクトリ)」。マニュアルでは「CIPHERDIR」と表記されています。(CIPHER・・・暗号、暗号を解くカギ)

もう一つはその「㋑ CIPHERDIRのマウント先となるフォルダ(ディレクトリ)」で、ファイルの保存や削除等の作業はすべてこの㋑のディレクトリを通して行います。

 

〔㋐ CIPHERDIR の作成〕 

フォルダ名(ディレクトリ名)は任意で。

今回は「ホームディレクトリ」に「maruhi」を作成しました。
ホームディレクトリとは、Windowsで言う「マイドキュメントフォルダ」のようなものです。)

051_r3

053_r

 (Dolphin を利用した場合の例)

以上で㋐の作成は終了です。

 

 

〔㋑ 作業用のディレクトリの準備〕 

次は「㋑ 作業用のディレクトリ」を準備します。

既存のディレクトリを指定しても良いんですが(例えば /mnt など)、余計なトラブルを防ぐためにも今回は新規で作成することにします。

今回は「ホームディレクトリ下」に「work」というディレクトリを作成しました。(ディレクトリ作成の解説は略)

054_r

以上で、2つのディレクトリの準備ができました。

次は初期化という作業を行います。

 

 

【③ 初期化】

「EncFS」の場合は、この作業が無いんですけどね。初回時のみ、この「㋐ CIPHERDIR の初期化」という作業が必要になります。

まずは新たな端末にて、

$ gocryptfs -init CIPHERDIR 
(今回は「$ gocryptfs -init ~/maruhi/」)

と打ちます。

061_r

(※ もし、「Invalid cipherdir: directory ********** not empty」と弾かれたら、本ページの「おまけの欄」を参考にしてみてください。)

特に問題が無ければ、「Choose a password for protecting your files.」と聞いてきます。

これは復号時、というかマウント時に必要とされるパスワードです。

任意に指定可能です。ここで自分で決めたパスワードを入力します。

ちなみにパスワードを入力する際「*****」のような表示は全くされません。まるで無反応のような感じですが、パスワードを打って、最後に「Enter」キーを押せばOKです。

一回入力をすると「Repeat:」と「再確認のためにパスワードもう一回入力して〜」と促されるので、もう一度同じパスワードを入力します。

062_r

最後に、

The gocryptfs filesystem has been created successfully.
You can now mount it using: gocryptfs **** MOUNTPOINT

と出たら、初期化終了です。

ちなみに、この作業を行うと、「CIPHERDIR」下に、「gocryptfs.conf」「gocryptfs.diriv」という2つのファイルが作成されます。

063_r

運用開始後はこの2つのファイルを削除してはいけません。
削除してしまうと、暗号化されたファイルを復号することができなくなります

(運用開始前であるならば、別に削除しても問題は無いです。ただ、もう一度初期化作業をしなければなりませんが。)

 

 

【④ マウント】 

端末にて、

$ gocryptfs  ㋐CIPHERDIR  ㋑作業用のディレクトリ 

と入力、㋐を㋑へマウントします。

064_c_  

すると、パスワードを聞かれますので、初期化時に設定したパスワードを入力します。

065_c_

上図のようになれば、マウント成功です。

㋐と㋑が紐付けられた状態になりました。以上で設定は終了です。

以後、運用開始となります。

 

 

【⑤ 運用開始】 

042r3

使い方は概要で述べた通りです。「㋑作業用のフォルダ(ディレクトリ)」でファイルをやり取りするだけです。

ファイルを保存したり、削除すれば自動で㋐に反映されます。

 

 

【⑥ アンマウント】 

使用後は「アンマウント」という作業が必要になります。

$ fusermount -u マウントポイント 

と入力します。(マウントポイントは「相対パス」ではなく「絶対パス」で。タブ補完を利用すると自動で出るかとは思いますが。)

066_c_r

すると、マウントが解除され、㋑からはファイルは見えなくなり、ファイルに直接アクセスできなくなるようになります。(㋐に暗号化されたファイルと設定ファイルのみが残る。)

069_r

再び、使用したい場合は「④マウント」の作業から行えば良いです。(終)

 

さて、USBメモリも同様のやり方で使用ができるのですが、CUIに慣れていない方は「マウントポイントはどこぞ?」となりそうなので、一応補足をば。

 

〔USBメモリの場合〕 

流れは変わりません。ただ、マウントポイントのパスがわからないと、作業が途中で止まるかと思われますのでDolphinで手軽に調べる方法を1つ。

例えば、USBメモリに「maruhi」のフォルダ(ディレクトリ)を作成した場合、Dolphinを利用すればこのディレクトリの絶対パスは簡単に調べられます。

下図のようにDolphinで「maruhi」のフォルダを開いてから「F6」キーを押すと、アドレス欄のところが絶対パス表記になります。

701_ar

あとは、これを参考にして初期化やマウントを行えば良いです。703_r

ちなみに、USBメモリ上にマウントポイントを作成した場合、USBメモリを取り外す時は、「fusermount」コマンドを使用してのアンマウントを行ってから、「USBメモリを取り外し」作業を行って、USBメモリを外します。

なお、マウントポイントをホームディレクトリ内にした場合は、「fusermount」でアンマウント作業を行わなくても、「USBメモリを取り外し」作業からUSBメモリを取り外せたりします。これが良いかどうかは微妙な感じですが。

 

 

【おまけ】

 ※ 1
 今回、gocryptfsのマウント作業をCUIで行いましたが、GUIでgocryptfsのマウント作業を行うことができるSiriKaliというソフトが存在します。興味がある方は「Linuxでファイル暗号化(2)〜 USBメモリをgocryptfsで守る♪  SiriKali編」を参考にしてみてください。

 

 ※ 2
 gocryptfs がインストールされたPCであれば、そのPCからでもUSBメモリにアクセスすることが可能です。

711_r

やり方としては、「④ マウント」作業から行えば良いです。パスワードさえ漏らさなければ、他人にファイルが見られることはありません。

 

 ※3
 パスワードを変更したい場合は、

$ gocryptfs -passwd CIPHERDIR 

とします。

704_r


 ※4
 EncFS 同様、「リバースモード」というものがあります。バックアップ時、バックアップ先の暗号化に利用するなどに使えるようです。興味がある方は調べてみてください。

 ※5
 初期化作業の際、初期化対象のフォルダ(ディレクトリ)が空っぽのはずなのに、「Invalid cipherdir: directory ********** not empty」と弾かれることがある。

751_cr2

この場合、そのディレクトリに「.directory 」などの「ドットファイル(隠しファイル)」ができてしまってることがあります。

752_cr2

Dolphinの設定によっては、Dolphinでそのディレクトリにアクセスした際に「.directory」を自動作成しまうことが有りえます。

もし「.directory」などのドットファイルがあれば、それらのファイルをすべて削除すると良いです。

753_cr2

 

 ※6
 VirtFSを利用してホストOSとゲストOS間に共有フォルダを作成する際、この共有フォルダ内においても同様のやり方で暗号化が利用できます。

 

(終)

 

 

【外部サイト】
 ・Debian Manpages GOCRYPTFS(1)  
 ・日立ソリューションズ:IT用語辞典 マウント
 ・Arch wiki:gocryptfs 
 ・Arch wiki:Dropbox のセキュア化 
   (gocryptfs が EncFS の セキュリティ上の問題を解決するために作られたものと記述がある)
 ・Arch wiki:ディスク暗号化 

 

 

〔関連ページ〕
 ・Linuxでファイル暗号化(2)〜 USBメモリをgocryptfsで守る♪  SiriKali編   
 ・Linuxでファイル暗号化(3)〜 Dropboxをgocryptfsで守る♪  
 ・virt-manager:VirtFS でホスト・ゲスト間のファイル共有  

 ・Linuxはそんなに難しいのか(2)ファイルの保存場所/USBメモリなどのアクセス/安全に取り外す  
 ・apt-get チュートリアル(apt チュートリアル) 

 

 

 

 

 

« ティザリング実験室 〜 それってネットに繋がるの? | トップページ | Linuxでファイル暗号化(2)〜 USBメモリをgocryptfsで守る♪ SiriKali編 »

ファイル暗号化」カテゴリの記事

2021年5月
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31          
無料ブログはココログ