原著論文 学術情報処理研究 No.22 2018 年 9 月 環境によって自動で設定を変更するプログラムの開発 Development of Configuration Program According to the Environment 松澤英之 Hideyuki Matsuzawa matuzawa@cc.miyazaki-u.ac.jp 宮崎大学情報基盤センター Information Technology Center, University of Miyazaki 概要 ノートパソコンはその手軽さゆえに様々な環境で利用されることが多い 企業によっては利用する場所によってパソコンを使い分けるなどして高いセキュリティを保つが 一般には一つのノートパソコンを様々な環境で利用する場合が多いだろう 外部環境によって必要となるセキュリティ等の設定は異なる そこで本研究では 一つのパソコンで様々な環境に応じてセキュリティなど様々な設定を自動で変更するためのプログラムを開発した キーワード 自動設定プログラム, 外部環境対応, プログラム開発 1. はじめにパソコンは使用される環境に応じて各種設定を適切に行う必要がある 一般に企業など高いセキュリティを要求され資金等に余裕がある場所では 専任の管理者によってパソコンが管理されている場合が多い 管理している環境の外に持ち出すパソコンはより高いセキュリティが要求されるので 社内で利用されるパソコンとは別のパソコンを用意し社内パソコンより利用できる機能を絞っている この様に利用環境に応じて使用するパソコンを変更する為には相応の資金が必要であり すべての人が利用環境に合わせて適切に設定がされたパソコンを使え分けることができるわけではない 一方一台のパソコンで様々な環境にあった設定を行う場合最も高いセキュ リティが要求される環境に合わせてパソコンを設定する必要がある 一般に高いセキュリティを要求されるパソコンは利便性がそがれるので 一台のパソコンを様々な環境で使いまわすと非常に使いづらくなる 大学では一台のパソコンを様々な環境で利用することが多い 実際に宮崎大学での例として学外実習の現場で個人情報など高いセキュリティを要求される情報 ( 高セキュリティ情報 ) を取り扱いたい場合が挙げられる 具体的には長期間の学外実習で大学に戻れない場合あるいは学外実習現場で高セキュリティ情報を扱わなければ場合が考えられる 高セキュリティ情報を公衆 Wi-Fi などネットワーク経由でセキュリティの高い場所に保存し必要な時に随時利用できればよいが すべての場所でネットワークを使えるわけではないので高セキュリティ情報を持ち運ぶ必要が出てくる ネットワークが使えず高セキュリティ情報を持ち歩く場合の解決策の一つとして高セ - 31 -
キュリティ情情報を暗号化すする方法が挙げげられる ただただし常時高セキュュリティ情報をを暗号化した場場合 安全な学な学内でも高セキュュリティ情報をを利用する時ににその都度復号復号化と再暗号化をを行わなければばならない 学学内という安全安全な環境であるににも関わらず高高セキュリティィ情報を利用す用する場合暗号化 復号化というう面倒な作業をを強いられるこることになる またた高セキュリテティ情報に対しして自動で暗号暗号化が行われなけければ安全性にに問題が生じるる 自動暗号化号化ソフトは特定ののフォルダ内ににあるすべてののファイルを暗を暗号化しファイルルを編集等するる場合も自動でで復号化 再暗再暗号 化してくれるる非常に便利ななソフトであるる 自動暗号化号化ソフトは有料でである場合が多多い また個人人で自動暗号化号化ソフトを導入ししても同じ自動動暗号化ソフトトを使用していていない人へファイイルを譲渡するる場合ファイルルを復号化してして渡す手間が必要要となる つままり高セキュリリティと利便性便性を保つ場合 自自分が関係するる組織全体が同同じ自動化暗号暗号化ソフトを運用用する必要が出出てくる 現状状では個人で安で安価に高セキュリリティと利便性性を保つことはは難しい そこで個人人として一台ののパソコンで様様々な環境でセでセキュリティと利利便性のバランンスを保つためめには 様々な々な環境に応じて利利用するパソココンの設定を変変更すればよいよいと考える 外部部の環境に応じじてパソコンのの設定を変えるえる例として IP アドレス DNS を取得する DHCP Wind dows パソコンのネネットワーク接接続におけるパパブリック プ プラ イベートネッットワークの設設定がある DHCP はパソコソコン外部の DHCP サーバかららパソコンに設設定できる IP アドレス DNS サーバの情報報を取得し パパソコンの IP アドレス DNS サーバの IP アドレスを決決定する Wind dows パソコンによよるパブリックク プライベーートネットワーワークの設定は ユユーザが接続すするネットワーークごとにパブパブリック プライイベートを決めめ共有ファイルルの公開等の設の設定を変更する 以上のこととからパソコンンが接続していいるネットワーワークの状況などパパソコンの置かかれた環境によよって自動で適で適切にパソコンのの設定を変えたたり保存していいるファイルをルを暗号化出来ればば セキュリテティ上安心しててノートパソコソコンをどこでも運運用できると考考える 本研究究ではパソコンコンが接続しているるネットワークク環境がユーザザが決めたホワホワイ トリストと比比較して安全かかどうかを判断断してパソコンコンに保存されていいる高セキュリリティ情報ファァイルを暗号化号化するなどを行ううプログラム AutoConfigura ator を開発したした また パソココンの設定等をを変更する機能能とともに外部外部環境情報を表示示する機能もも盛り込んだ 最近の Wind dows パソコンは最最小限の情報ししか表示しないい傾向があるよるように思われる 表示情報を減減らすことでユユーザが最小限小限必要な情報を注注視することをを狙っているとと考えるが 十十分な情報が表示示されない事ががある 今回開開発したプログログラムはパソコンンの外部環境情情報を取得しててその結果を基を基にパソコンに作作用するので パソコンの設設定を行う機能機能と ともに外部環境情情報を表示するる機能を盛り込り込んだ 想定として AutoConfigurator or は前出の高セ高セキュリティ 情報報を学外に持ちち歩いて情報がが収められていている機器の盗 難にあった時に高高セキュリティィ情報の暗号化号化によって情 報流流出を防ぐこととが期待されるる 2. AutoCo onfigurator 今回利用者数数の多い Windows 向けのププログラムを開発した プロログラミング言言語は Window ws Macintosh 両方で開発するる可能性とプロログラミングのグの利便性から Python を用いたた また Observer デザインンパターン [1] を利用してプロログラムを組んんだ 広く利用利用されている デザインパターーンを活用するることで クラクラスモジュー ルを簡単に誰ででも開発できき今後の拡張性性が高まる Observer デザイインパターンはは主に 2 つのククラス (Subject クラス Observer クラス ) からなる Subject クラスの notifyobservers 関数は一定時時間 (5 秒固定 ) ごとにコンピ ュータ外部環境境情報を取得ししセキュリティティレベルを計 算する セキュュリティレベルルか取得情報に報に変化があれ ば Observer クラスの updat te 関数にセキュキュリティレベ ルと外部環境情情報のデータをを送る Observer クラスの update 関数は Subjcet S クラスかから得た外部環部環境情報とセ キュリティレベベルに基づいてて外部環境情報情報の表示とパ ソコンの設定をを変更する 今回 Subject クラスモジュュールとして Wi-Fi ネットワ ーク情報取得モモジュールとネネットワーク情ク情報取得モジ ュールを Obser rver クラスモジモジュールとしして Wi-Fi ネッ トワーク情報表表示モジュールルと自動暗号化号化モジュール を作成した 図 1 各モジュュールの関係 3. Subject t クラス Observer クラスモジュール 3.1. Wi-Fi ネットワーーク情報取得得モジュール (Subject クラス ) このモジュールルは Window ws コマンド netsh を用いて - 32 -
Wi-Fi ネットワーク情報を取得し送信する コマンドを 実行する際 コマンドの表示結果が OS が使用する言語 によって変わると判別が難しくなるので コマンド chcp 437 ですべてのパソコンで対応可能である英語表 示に改めてから実行した まず Wi-Fi デバイスの有無と接続状態を取得する コ マンドは netsh wlan show interfaces このコマンドによ って status 等の情報が得られる status が disconnected の場合 Wi-F 未接続あるいは Wi-Fi デバイスが利用不可 であることがわかる Wi-Fi が接続している場合 status は connected と表示される 次に Wi-Fi デバイスが取得している Wi-Fi ネットワー クの情報を取得する コマンドは netsh wlan show networks mode=bssid SSID 名 Authentication( 認証 WEP など ) Signal( 電波強度 )( 複数値取得 ) 等が得られる 現在 コマンドから取得する情報はすべて自動で処理されユー ザが取得情報を選択する機能はない Windows のバージョンごとにコマンド結果が異なる可 能性について Windows7,10 については動作確認で差異が ないことを確認したが Windows8 については未確認であ る Macintosh でも Wi-Fi の情報を取得するための似たよう なコマンドは存在するので Macintosh でもこのモジュー ルを作成することはかのだと思われる このモジュールにはセキュリティレベルの規定はない 3.2. ネットワーク情報取得モジュール (Subject クラス ) Windows コマンド ipconfig を用いて IP ネットワーク 情報を取得 ユーザが指定した安全ネットワークである かどうかを判別してセキュリティレベルを決める Wi-Fi ネットワーク情報取得モジュール (Subject クラス ) 同様 コマンドを実行する際 コマンドの表示結果が OS が使 用する言語によって変わると判別が難しくなるので コ マンド chcp 437 ですべてのパソコンで対応可能である 英語表示に改めてから実行した ipconfig ( オプション はなし ) はネットワークに接続している場合 アダプタの 表示部分に Ipv4 Address Subnet Mask Default Gateway が示される また Windows では有線ネットワークに接 続している場合 無線ネットワークよりも優先して利用 される これらの表示項目を見て現在接続しているネッ トワークを判別する セキュリティレベルは現在接続し ているネットワークがユーザが決定したホワイトリスト に記載されているネットワークであるかどうかで判別す る ホワイトリスト内に記載していれば level=2 ホワイ トリストに記載されていなければ level=1 である またネ ットワークに接続していない場合は level=0 として情報 を送信する Windows のバージョンごとにコマンド結果が異なる可 能性について Windows7,10 については動作確認で差異が ないことを確認したが Windows8 については未確認であ る Macintosh では Windows コマンド ipconfig の代わり に ifconfig コマンドが利用される これらのコマンドは OS ごとに極端に表示結果は異ならないので 同様なモジ ュールが Macintosh で利用可能であると推察する 3.3. Wi-Fi ネットワーク情報表示モジュール (Observer クラス ) Observer クラスでは 5 秒毎に起動する Subject クラス の notifyobservers 関数から Observer クラスの update 関数 がセキュリティレベルとデータを受け取り 各 Observer クラス固有の機能を果たす Windows8.1 Windows10 は Windows7 に比べて Wi-Fi の接続設定画面に表示される情報が非常に少ない Windows7 では Wi-Fi 接続設定画面に SSID シグナルの 強さ セキュリティの種類 (WEP WAP 等 ) 無線の種類 (802.11n 等 ) が表示される 一方 Windows8.1 Window10 では SSID と無線の暗号化の有無のみである Wi-Fi の暗 号化には WEP の様な弱い強度の暗号化もあるので 暗 号化の有無だけでは安全に Wi-Fi を利用するための十分 な情報とは言えない そこで Windows7 を参考に Wi-Fi 接続に必要な情報 (SSID シグナルの強さ セキュリテ ィの種類 無線の種類 ) と シグナルの強さとセキュリテ ィ強度に対応した色 ( 暗号化 = 緑 安全でない暗号化 (WEP)= 黄 暗号化されていない = 赤 ) であらわされるレベ ルメータが表示される画面を作成した セキュリティ強 度を三段階で表示することによって利用者に暗号化され ている Wi-Fi を利用することを促すとともに 単に暗号 化されているだけでは安全ではないことを理解してもら うことを促している Python の描画モジュール tkinter は 無限ループで画面を表示する 常にコンピュータの環境 を監視する必要があるので画面表示は同じように無限ル ープで稼働する Autoconfigurator 本体とは別タスクで稼 働する必要がある 簡略化のために以前のデータと異な る新しいデータを取得した時に古い画面表示タスクを終 了し再度別タスクとしてデータ画面を表示する方法をと った 3.4. 自動暗号化モジュール (Observer クラス ) 自動暗号化モジュールは定期的に稼働して指定したフ ォルダ内にある全てのファイルを暗号化あるいは復号化 する 自動暗号化を行う場合ファイルを暗号化 復号化 するフォルダ ( 自動暗号化対象フォルダ ) に移動した瞬間 に暗号化 復号化するのが理想である しかし Windows - 33 -
パソコンで自動暗号化対象フォルダへのファイル移動イベントを特定する方法を解明できなかった そこでまずネットワーク情報取得モジュール (Subject クラス ) の notifyobservers 関数が 5 秒ごと起動してデータ ( セキュリティレベルとネットワーク情報取得モジュールが取得したデータ ) を取得する 本モジュールの update 関数を介して本モジュールにデータを送信する 受信したセキュリティレベルが level=2( ホワイトリスト内に記述されているネットワークに接続している ) の場合自動暗号化対象フォルダ内の暗号化されているファイルを復号化 level=1( ホワイトリスト内に記述されているネットワークではないネットワークに接続している ) の場合自動暗号化対象フォルダ内の暗号化されていないファイルを暗号化する ネットワークに接続していない場合 (level=0) はユーザによってホワイトリスト外として扱うか ( 復号化 ) ホワイトリスト内として扱うか ( 暗号化 ) 選択できる 暗号化方式は 7-zip[2] で利用できる 7z 形式を利用した 7z 形式は Windows Macintosh Linux において無料で利用できる 暗号化したファイルを他人に送付した場合でも暗号化ファイルを受け取った人が余分なお金を払わず送付された暗号化ファイルを復号化 再暗号化ができるので便利である Windows ではほかに暗号化方法として RAR[3] パスワード付 zip が利用されている RAR は暗号化に有料ソフト (WinRAR[4]) が必要なため今回は利用しない またパスワード付 zip はデフォルトで復号化できるが暗号化強度が不足している事と Windows のデフォルト設定ではパスワード付 zip を作成できない 7-zip で利用できる AES-256 ビットパスワードの zip は普通の暗号強度の低いパスワード付 zip と混同される恐れがあるので今回はパスワード付 zip を利用しなかった このモジュールは IP ネットワークの接続状況が変わると特定フォルダ内のすべてのファイルをいっぺんに暗号化 復号化する方式をとっているので 数 GB といった大量のファイルを一度に暗号化 復号化するとパソコンに一時にかかる負荷が大きくなる 自動暗号化対象フォルダを一斉に暗号化 復号化する場合パソコンへの負荷を考えて自動暗号化対象フォルダ内には必要最小限のファイルを保存することが望ましい また一定時間ごとに暗号化 復号化する際にファイル一つ一つにパスワードが必要になるがファイルごとにパスワードを入力することは非常に面倒である そこで暗号化 復号化する際には USB メモリー内のすべてのフォルダを検索し指定されたファイル名のテキストファイルからパスワードを読み取って利用する このパスワードテキストファイルは暗号化されていない 指定されたテキストファイルが USB メモリー内にない場合は暗号化 復号化は行われない パスワードを高セキュリティ情報が保存されているパソコン内に保存していないのである程度安全性は確保できるものと考える また USB メモリーはシリアルナンバーなどで選別などしていない パスワードファイルが入った USB メモリーが壊れた場合でも別の USB メモリーを用意してパスワードファイルを作成すれば利用できるので 故障耐性も高いと思われる 4. CryptoWrapper[5] 今回のプログラムの開発と並行して以前に開発した CryptoWrapper の改良を行った 前回開発した CryptoWrapper はパスワード付 zip( 暗号強度が弱いバージョン ) で暗号化したファイルをプログラムのアイコンにドラック & ドロップする事で簡単に復号化 編集 保存 再暗号化を行うソフトウェアである CryptoWapper は復号化 再暗号化する際にパスワードを入れる必要があるが 同じパスワードを連続して入れなくても済むようにパスワード一時保存サーバにパスワードを保存することができるようになっている 今回の改良で先ほど開発した自動暗号化モジュールと連帯して使えるようにした 改良点は暗号化方式を自動暗号化モジュールで使用した 7-zip が使えるようにしたこと パスワード入力を省略するためにパスワード一時保存サーバだけではなく USB メモリー内を自動検索してパスワードファイルを探し出すようにしたこと 解凍したファイルの安全性を高めるために必ず特定のフォルダ内に解凍したファイルを展開するようにしたことである この CryptoWrapper の改良より実用環境で暗号化ファイルがさらに効率よく利用できるようになった 5. 実働試験情報基盤センターの技術職員 (1 名 ) にお願いしてこのプログラムの実働試験を行ってもらっている 利用している機材は Windows10Pro CPU AMD PRO A8-8600B R6 メモリ 4GB 宮崎大学情報基盤センター一階 6 種類の Wi-Fi SSID が表示される環境で実行した このうち実際に接続できる 3 種類の SSID で実験を行った 接続環境は暗号化されていない Wi-Fi 接続で自動暗号化のホワイトリストに登録されていない環境 WAP2-PSK で暗号化された Wi-Fi で自動暗号化のホワイトリストに登録されていない環境 WAP2-PSK で暗号化された Wi-Fi で自動暗号化のホワイトリストに登録されている環境である 実際の AutoConfigurator プログラムはスタートメニューにショートカットを登録することで自動起動させている セキュリティソフト等が起動した後に Wi-Fi 情報を表示する画面が表示される ログイン後 Wi-Fi 情報表示画面が起動するまで約 10 秒かかっている Windows10 パソコンはパソコンの起動後に人間が認識できる程度の間隔 - 34 -
で SSID を取得するようで パソコンへのログイン後約 5 秒ごとに Wi-Fi 情報表示画面が複数回更新されるのが確認できている AutoConfigurator プログラムは常時稼働しているために少しパソコンの稼働が遅くなるが 高スペックではないノートパソコンでもカーソルの移動 ほかのプルグラムの起動および動作に影響を与えることなく動いているので実用上は問題ないと考えている 6. 今後このプログラムに関しては今のところ不具合等はない 今回 4 つモジュールを開発したが AutoConfigurator は様々な場面で利用できると考えているので引き続き新たなモジュールを開発する予定である また 今回開発したプログラムは Windows 用である 作成した Subject モジュールは外部環境情報を取得するときに Windows のコマンドを利用した プログラムの大枠の構成と Observer モジュールは Windows パソコンに特化したものではないので Macintosh にも応用できる そ のため Macintosh 用の Subject モジュール開発を行う必要がある また実働試験参加者からの要望により Windows の Wi-Fi 接続画面と同様に Wi-Fi 情報を表示した画面から当該無線 LAN に接続できるように要望が出ている これについて実現する予定である 7. 参考文献 [1] Observer パターン https://ja.wikipedia.org/wiki/observer_%e3%83%91%e3%82 %BF%E3%83%BC%E3%83%B3 [2] 7-Zip http://www.7-zip.org/ [3]RAR RARLAB https://www.rarlab.com/ [4]WinRAR http://www.winrarjapan.com/download [5] 松澤英之 暗号化ラッパプログラムの開発 学術情報処理研究 No.21 pp29-35 2017 年 - 35 -