Pythonにおいて、暗号化・復号化に本気で取り組みたいですか?
その場合、cryptographyがその選択肢となります。
本記事の内容
- cryptographyとは?
- cryptographyのシステム要件
- cryptographyのインストール
- cryptographyの動作確認
それでは、上記に沿って解説していきます。
cryptographyとは?
cryptographyは、暗号化を可能にするPythonライブラリです。
cryptographyの目標は、「暗号化の標準ライブラリ」になることだと記されています。
そして、cryptographyは高レベル(hight-level)、低レベル(low-level)の両方に対応しています。
極端に言うと、何も考えずに使えるレベルが高レベルです。
ある程度の理解を必要とするのが、低レベルになります。
cryptographyの公式ドキュメント
https://cryptography.io/en/latest/
両方のレベルに対応するため、マニュアルが用意されています。
結構しっかりと作り込まれている感じです。
ただし、低レベルに関してはセキュリティの知識がかなり必要になります。
その分だけ、高度な実装も可能ということです。
したがって、本気で暗号化に取り組みたい場合はcryptographyがおススメです。
以上、cryptographyについての説明でした。
次は、cryptographyのシステム要件を確認しましょう。
cryptographyのシステム要件
現時点(2021年7月)でのcryptographyの最新バージョンは、3.4.7となります。
この最新バージョンは、2021年3月26日にリリースされています。
サポートOSに関しては、以下を含むクロスプラットフォーム対応となります。
- Windows
- macOS
- Linux
基本的には、OSは問わないということです。
そして、サポート対象となるPythonのバージョンは以下。
- Python 3.6
- Python 3.7
- Python 3.8
- Python 3.9
下記のPythonの公式開発サイクルに準じています。
バージョン | リリース日 | サポート期限 |
3.6 | 2016年12月23日 | 2021年12月 |
3.7 | 2018年6月27日 | 2023年6月 |
3.8 | 2019年10月14日 | 2024年10月 |
3.9 | 2020年10月5日 | 2025年10月 |
上記の公式開発サイクルには、それなりに意味があるはずです。
昨今だと、セキュリティの改善にその意味が大きいでしょう。
そうだとすれば、公式開発サイクルを順守することはとても重要なことです。
ましてや、セキュリティをターゲットにしたライブラリなら必須でしょう。
その意味では、cryptographyは合格だと言えます。
「暗号化の標準ライブラリ」を目指す以上は、当然と言えば当然かもしれません。
以上、cryptographyのシステム要件について説明しました。
次は、cryptographyをインストールしていきます。
cryptographyのインストール
最初に、Pythonのバージョンを確認しておきます。
>python -V Python 3.9.6
ライブラリだけセキュリティの意識が高くても意味がありません。
Python自体のバージョンも最新にしておきましょう。
Pythonのアップグレードは、次の記事でまとめています。
次に、現状のインストール済みパッケージを確認しておきます。
>pip list Package Version ---------- ------- pip 21.1.3 setuptools 57.0.0
次にするべきことは、pipとsetuptoolsの更新です。
pipコマンドを使う場合、常に以下のコマンドを実行しておきましょう。
python -m pip install --upgrade pip setuptools
では、 cryptographyのインストールです。
cryptographyのインストールは、以下のコマンドとなります。
pip install cryptography
インストールは、すぐに終わります。
では、どんなパッケージがインストールされたのかを確認しましょう。
>pip list Package Version ------------ ------- cffi 1.14.5 cryptography 3.4.7 pip 21.1.3 pycparser 2.20 setuptools 57.0.0
依存するパッケージ数は、気にする数ではありません。
比較的容易に導入もしやすいです。
以上、cryptographyのインストールについての説明でした。
最後に、cryptographyの動作確認を行います。
cryptographyの動作確認
cryptographyの動作確認は、次のコードで行います。
from cryptography.fernet import Fernet # 暗号化・復号化対象のメッセージ data = "日本語で書かれた秘密のメッセージ".encode("utf-8") # インスタンス生成 key = Fernet.generate_key() f = Fernet(key) # 暗号化されたデータ token = f.encrypt(data) print(token) # 復号化されたデータ data_decrypt = f.decrypt(token) print(f.decrypt(token).decode("utf-8"))
上記を実行すると、次のように表示されます。
data_encrypt:b'gAAAAABg4URcN46a2RJ4JQfWzm2UMDMyeDU-8LBk7AuWz2UWgNACm_fUJVgtLTZnOWfM7znnwW7eRcn_h_cw09yaVna8PKD1DONzaL5j_fenTggbPXcRaNAALVqPx3v-ia7-smmxuILRkqO6yKx64zrPibcLy_JPlA==' data_decrypt:日本語で書かれた秘密のメッセージ
メッセージが復元できれば、cryptographyの動作確認としては十分です。
以上、cryptographyの動作確認についての説明でした。