暗号化ファイルの連結


アニメ『ガンゲイル・オンライン』

将来こういうゲームできるようになるんでしょうね。
いつかプレイするとは思いますが、私はゲームの中のパソコンで、コマンドやプログラミングに夢中になってる気がします。

では、ガンということで、gunがつくコマンドでも探してみましょう。

takk@deb9:~$ apt-cache search gun

~省略~

gearhead - roguelike mecha role playing game, console version
gearhead-data - data files for gearhead
gearhead-sdl - roguelike mecha role playing game, SDL version
golang-github-smartystreets-assertions-dev - fluent assertion-style functions
grinder - Versatile omics shotgun and amplicon sequencing read simulator
guncat - Catenates files while decrypting PGP-encrypted sections
gunicorn - Event-based HTTP/WSGI server (Python 2 version)
gunicorn-examples - Event-based HTTP/WSGI server (examples)
gunicorn3 - Event-based HTTP/WSGI server (Python 3 version)
python-gunicorn - Event-based HTTP/WSGI server (Python 2 libraries)
python3-gunicorn - Event-based HTTP/WSGI server (Python 3 libraries)
gunroar - 360-degree gunboat shooter
gunroar-data - 360-degree gunboat shooter - game data

~省略~

takk@deb9:~$

気になる名前、guncatというパッケージがありました。
何でしょうか。インストールしてmanを確認。

takk@deb9:~$ sudo apt-get install guncat

~省略~

takk@deb9:~$ man guncat
guncat(1)          guncat - unencrypting file concatenation          guncat(1)

NAME
       guncat - catenates files, unencrypting pgp encrypted sections

SYNOPSIS
       guncat [OPTIONS] [file(s)]
       [OPTIONS] - cf. section OPTIONS
       [file(s)] - optional files to process (cf. section INPUT FILE(S))

catのようにファイルを連結するコマンドのようです。ただし、連結する対象は、phpで暗号化されたファイルのようですね。

使ってみます。最初に実験用ファイル作ります。

takk@deb9:~/tmp$ seq 10 | split -dl5
takk@deb9:~/tmp$ head *
==> x00 <==
1
2
3
4
5

==> x01 <==
6
7
8
9
10
takk@deb9:~/tmp$ 

平文のファイルx00とx01が、出来上がりました。

guncat で平文ファイルの連結をしてみます。

takk@deb9:~/tmp$ guncat x00 x01
1
2
3
4
5
6
7
8
9
10
takk@deb9:~/tmp$ 

暗号化されたファイルだけでなく、平文も連結できるんですね。
cat と同じです。

takk@deb9:~/tmp$ cat x00 x01
1
2
3
4
5
6
7
8
9
10
takk@deb9:~/tmp$ 

次は、暗号化されたファイルの連結をしてみましょう。
PGPのGNU実装版、gpgコマンドを使い、暗号化してみます。
鍵を用意します。

takk@deb9:~/tmp$ gpg --gen-key
gpg (GnuPG) 2.1.18; Copyright (C) 2017 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Note: Use "gpg --full-generate-key" for a full featured key generation dialog.

GnuPG needs to construct a user ID to identify your key.

Real name: takk
Name must be at least 5 characters long

短い名前にすると怒られましたので、長い名前にします。Yamada Taroにしました。

Real name: Yamada Taro
Email address: takk@life-is-command.com
You selected this USER-ID:
    "Yamada Taro <takk@life-is-command.com>"

Change (N)ame, (E)mail, or (O)kay/(Q)uit? O

OKなので、大文字のOを入力。

We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
gpg: key A8329FEEA3F4C82D marked as ultimately trusted
gpg: revocation certificate stored as '/home/takk/.gnupg/openpgp-revocs.d/006F103930EA9106A814135CA8329FEEA3F4C82D.rev'
public and secret key created and signed.

pub   rsa2048 2018-05-19 [SC] [expires: 2020-05-18]
      006F103930EA9106A814135CA8329FEEA3F4C82D
      006F103930EA9106A814135CA8329FEEA3F4C82D
uid                      Yamada Taro <takk@life-is-command.com>
sub   rsa2048 2018-05-19 [E] [expires: 2020-05-18]

takk@deb9:~/tmp$ 

途中、GUIが表示されて、パスフレーズを求められましたが、今回はguncatコマンドの確認なので、面倒なのでパスフレーズは何も入力せずに進めました。

さて、鍵ができましたので、最初に作ったファイルを暗号化します。
といっても、鍵ファイルそのものを生成する必要はありません。
指定するのは、ユーザ名と暗号化するファイル名だけで良いです。

takk@deb9:~/tmp$ ls
x00  x01
takk@deb9:~/tmp$ gpg --armor -r "Yamada Taro" -e x00
gpg: checking the trustdb
gpg: marginals needed: 3  completes needed: 1  trust model: pgp
gpg: depth: 0  valid:   3  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 3u
gpg: next trustdb check due at 2020-05-18
takk@deb9:~/tmp$ 

x01の方も暗号化します。

takk@deb9:~/tmp$ ^x00^x01^
gpg --armor -r "Yamada Taro" -e x01
takk@deb9:~/tmp$ 

暗号化されたファイルは、ascという拡張子になっています。

takk@deb9:~/tmp$ ls -1
x00
x00.asc
x01
x01.asc
takk@deb9:~/tmp$ 

中身はこのようになっています。

takk@deb9:~/tmp$ cat x00.asc
-----BEGIN PGP MESSAGE-----

hQEMA6myITGP+XO6AQgAuA3zKJRKY169aH78uDlw0Ml0GQ/Gg1PI7pJEdoBDnc1g
cJxxudVbnso/p/Jh2n1/UhJ3jdohkCiZLnnAG4YGcgAFjN+8iQenRo8wfzfCjBSU
ORZfPIEHKnwuXXkXUSA/6Qcy6rsa3tn9U0kYq3MIcRzObCJN+YE7SRw3xfuSap85
POjreXIxxE5JxwT5jKPatUz/lC8XpGI6y8P1J6SmhKrJvrqI6ekpaaMzZjD5xxho
YT4SU4w/aQcxBuV9oz+eWmNHSm0WW+U7YCZESU1vGW/Cr14xtXQMnwZhVKNooV2v
s80uM8V/kwkXuga3ScG+t/bUTv0NIuDPzhKYmAHrRtJIAZbiamWAavwnj7pzUOwO
pk49CAFcxzYcSSDOKo5axBrCL3y+ur0IZAKOdhRdUUvV25qv51mfGb1/RskSH0HW
QTurBmqBR9XY
=9PEt
-----END PGP MESSAGE-----
takk@deb9:~/tmp$ 

元の平文のファイルを削除します。

takk@deb9:~/tmp$ rm x00 x01
takk@deb9:~/tmp$ ls
x00.asc  x01.asc
takk@deb9:~/tmp$ 

では、guncatを使って、暗号されたファイルを連結してみます。

takk@deb9:~/tmp$ guncat x00.asc x01.asc
1
2
3
4
5
6
7
8
9
10
takk@deb9:~/tmp$ 

各ファイルが復号されて連結した結果が表示されました。

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA