base64コマンドを使って暗号化復号化っぽいことをしてみる

2022/03/11に公開


本を一冊読んだ程度しか知識のないセキュリティど素人がセキュリティ基礎として暗号化と復号化の概念を学ぶに当たりbase64コマンドを使用したものを勉強したのでまとめておこうと思います。

前回の記事はこちらです。

https://zenn.dev/terralien/articles/4f8446bae35e1f

今回もEnvaderを教材として使用しました。

学ぶこと

暗号化復号化という言葉だけ知ってるけど実際どうやるの?って程度のことをbase64コマンドを使用して学びます。

Base64というのは

バイナリデータをテキストなどに置換える際に利用される変換方式です。64の文字が使用されます。

64種類の文字の内訳は以下の通りです。
大文字小文字の英字:52文字
数字:10文字
記号 + / :2文字
引用元:Base64について

余った部分を詰める(パディング)記号として=が用いられます。
利用される場面としては、電子メールにバイナリファイルを添付する際にbase64形式に変換します。

暗号化と復号化

それでは仮想ターミナルで実際に試してみます。
echoコマンドの-nオプションは改行無しとするためのものです。パイプ(|)でつなぎ、base64コマンドを以下のように記述し実行します。

echo -n "hogehoge" | base64

aG9nZWhvZ2U= という謎の文字列の出力を得ました。全く元の文字列が想像つきません。
これが暗号化・エンコードという作業になります。

次に復号化を試してみます。以下のコマンドを入力します。

echo -n "aG9nZWhvZ2U=" | base64 -d

hogehogeという出力結果を得ました。

Fileのエンコード・デコードも同様の記述で可能です。

#エンコード
base64 test.txt
#デコード
base64 -d test.txt

わざわざターミナルを使わずともエンコード・デコードしてくれるサイトもあります。

https://www.en-pc.jp/tech/base64.php

得た知識

base64コマンドを理解することができました。
文字列を変換することで可読性を無くすという暗号化を実際に手を動かして学ぶことが出来ました。また、それを復号するということも学びました。
前回に引き続きなんとなく暗号の仕組みがわかってきた気がします。

参考にしたサイト

https://hydrocul.github.io/wiki/commands/base64.html
https://www.en-pc.jp/tech/base64.php
https://envader.plus/course
https://qiita.com/PlanetMeron/items/2905e2d0aa7fe46a36d4

Discussion