Pythonによるハイブリッド暗号方法の開発とその応用
熊本県立技術短期大学校
情報システム技術科
R4年度卒研生 内田 夢人 樅木 真斗
指導教員 趙 華安
熊本県立技術短期大学校
情報システム技術科
R4年度卒研生 内田 夢人 樅木 真斗
指導教員 趙 華安
情報社会において,情報セキュリティ技術が必要不可欠である。情報セキュリティ技術中の暗号技術が,情報を暗号化して盗聴・漏えいを防いだり,相手の身元を認証したりすることができる。本研究目的は,効率よいハイブリッド暗号方式を提案しPythonを実装する.情報セキュリティ技術の向上に貢献したい。
現代の暗号方式は,共通鍵暗号方式(対称鍵)と公開鍵暗号方式(非対称鍵)という2種類に分けられ,前者は暗号化と復号の鍵が共通している方式で,暗号化と復号化の処理速度が速いが,暗号鍵の配送に問題がある.後者は安全性が高いが,処理速度が遅い.
共通鍵暗号方式には,代表的な暗号方式はDESとAESがあり,公開鍵暗号方式には,代表的な暗号方式はRSAとElGamalがある.本研究では,実装したAESプログラム(AES.py)とRSAプログラム(RSA.py)を公開している.
共通鍵暗号方式と公開鍵暗号方式をどちら選べばよいのか?即ち,処理速度と安全性のどちらかを諦めなければいけないのか?実は、双方のメリットを満たす暗号方式があり,それがハイブリッド暗号方式である。
ハイブリッド暗号方式は両者を組み合わせ,公開鍵暗号方式の安全性と共通鍵暗号方式の高速性を備えたため,現在暗号通信,例えば,HTTPS通信(HTTP over SSL/TLS)などに使われている.共通鍵暗号方式と公開鍵暗号方式には数多くの暗号アルゴリズムがあり,その組み合わせも多様である。本研究では,公開鍵暗号方式と共通鍵暗号方式をそれぞれ研究・実験した上,AES+RSAのハイブリッド暗号方式を提案し,①暗号通信(守秘)と②デジタル署名(認証)への応用プログラムをPython(3.10)で実装し,その有用性と有効性を検証した.
応用① 暗号通信(守秘):送信者は送った情報(平文)を暗号化して,情報漏えい,改ざん,盗聴などを守れる.
左図に示すように,ハイブリッド暗号では,受信者が公開鍵と秘密鍵を作成し,公開鍵を送信者に送付する.送信者は共通鍵を作成した後,受信者の公開鍵で共通鍵を暗号化し,共通鍵で平文を暗号化する.暗号化した共通鍵を平文の暗号文を受信者に送付する.受信者は暗号化された共通鍵を秘密鍵で復号し,それを用いて暗号文を共通鍵で復号することができる.
実装したプログラム(file.py)を公開している.
応用②:デジタル署名(認証):なりすましや改ざんなどを防ぐと同時に,情報の漏えいや盗聴をも守れる.
本研究では,従来のデジタル署名の方法に,左図のような処理を付け加えた.即ち,送信者が共通鍵を作成し,平文を共通鍵で暗号化し,受信者側に送る.これにより,平文の情報漏えいや盗聴などを防ぐことができる.本研究では,ハッシュ値はSHA256アルゴリズムで生成する.
実装したプログラム(file.py)を公開している.
本サイトにより,提供したPythonプログラムは,卒業研究のために開発したものです.Pythonをインストールした場合,file.pyをダウンロードしてまたは,コピーしてご使用ください.
注意:
①暗号化・復号化を可能にするライブラリ pycryptodome を必ずPythonエディタにインストールしておいてください.インストールのコマンド:pip install pycryptodome
②平文や暗号化途中生成されたファイルをPythonプログラム(file.py)と同じフォルダに置くこと.