UACダイアログも操作できた
Mirror-DTCが動き始めた頃にUACダイアログが表示されるとリモート操作がフリーズしたのでUACはOFFにしていたのだが、インストール確認のためにUACをONに戻してみた所、サービス動作時にはUACダイアログの表示/操作とも可能になっていた。UACダイアログには特別なセキュリティ対策が施されているものと思っていたのだが、買被りだったようだ。
« 2009年8月 | トップページ | 2009年10月 »
Mirror-DTCが動き始めた頃にUACダイアログが表示されるとリモート操作がフリーズしたのでUACはOFFにしていたのだが、インストール確認のためにUACをONに戻してみた所、サービス動作時にはUACダイアログの表示/操作とも可能になっていた。UACダイアログには特別なセキュリティ対策が施されているものと思っていたのだが、買被りだったようだ。
かなり前になるが、このブログに高解像度のモニタも安くなったから買おうかな、なんて書いていたのだが、まだ買っていない。やはり、サイズが大きいのがネックなのだ。しかし、開発マシンのGPUは1920x1080に対応しているようなので、Mirror-DTCで使ってみた。
Mirror-DTCサービスをスパイウェアとして悪用されないようにサービス動作中にリモート操作が可能である旨の警告を行う機能を実装した。ログオン画面では最上部にテキストが表示され、ログオン時にはダイアログで通知される。この機能は設定で禁止できない。
当然のように、Mirror-DTCの開発には当初の予定を大きく上回る時間が必要になってしまったが、何とか今週で終われるだろう。で、次に何をするのか、というと、AmuseGraphicsのバージョンアップ開発を行う。その次はMasterReversiの64Bit版を作るつもりだ。
Mirror-DTCのサーバー側では、リモート操作中に何も表示しないのはセキュリティ的に問題がありそうなので、通常プログラムとして動作させる場合にはタクストレイにアイコンを表示している。しかし、サービス動作時には何も表示されない。これは問題なので変更する。
サーバー側の設定保存も行えるようになり、Mirror-DTC Ver1.00の開発は完了間近になった。しかし、UDPパケットにチェックコードを入れていないのが気になり、結局、ハッシュ値を入れてしまった。お陰でファイル転送性能は1割くらい低下したが、信頼感は増加した。
Mirror-DTCの配布パッケージも完成しつつあるので、Readme.txtの内容を考えていたのだが、リモート操作ソフトはある意味危険な存在なので、セキュリティ対策も書いておこうか、と思ってファイアウォールを弄ってみたのだが、ユーザー目線で見ると不安が残ることが判った。
Mirror-DTCについては、ほぼ開発を完了し、設定保存機能の追加と配布パッケージを作成中だが、最終形態でのチェックを行った結果から微修正も入っている。微修正の内容としては、気を利かせて入れたつもりの既存処理を没にしているものが多い。
Mirror-DTCの開発ではクライアント/サーバー/サービスプログラムの3個の実行ファイルを作成したが、普通のプログラムとは違って、一つのマシンにそれらの全てをインストールしないと使用できないということはない。なので、設定の保存をどうするかは少し悩ましい。
Mirror-DTCには認証と暗号化機能を搭載することにして実装を行ってきたが、暗号化の強度が弱すぎると心許無く、強くすると処理が重くなる。このため、試行錯誤し、一度ブログに書いたものと違う方式になったりしている。なので、最終的に実装した方式を纏めておく。
Mirror-DTCでは暗号の強度を増大させるために音声データの転送時にハフマン圧縮を導入したが、ハフマン圧縮の効果でデータ転送量も少し減った。しかし、どうせなら、ということで、少し細工も加え、より安定して圧縮されるようにした。
Mirror-DTCの認証と暗号化機能の実装をほぼ完了したが、ファイル転送時の暗号化機能については少し改良が必要だ。暗号化機能自体は実装できたのだが、暗号化を行うと少し転送速度が遅くなった。
Mirror-DTCに認証機能を実装しているが、認証用コマンドの実装自体は簡単だ。しかし、認証を行うからには認証を受けたクライアント以外からのアクセスは許可しないようにしなければならない。これは少し大変だ。
Mirror-DTCの認証と暗号化機能を実装しているが、やはり、暗号表での暗号化では心元無い場合があるので、AES暗号の使用箇所を増やすことにした。とはいえ、AES暗号ルーチンはアルゴリズムが判るような書き方をしていたので重かった。なので、高速化してみた。
Mirror-DTCには予告したように認証と暗号化機能を実装するが、今日は暗号化部分を実装した。性能確認も行ったが劣化は感じられなかった。暗号化にはAES+暗号表を使用するが、暗号表は解読される危険があるので、解読を困難にする対策も行った。
Mirror-DTCを様々な特殊状況が発生するサービスとして動作させるためには、権限やデスクトップの切り替え問題をクリアしなければならず、苦労させられた。結局、単純な方式では対処しきれなかったため、サービスとサーバーのハイブリッド方式での対応となった。
Mirror-DTCには認証と暗号化機能も追加することにしたが、サービス動作に少し問題があったため、今日はその対策を先に行った。DWMに対する処理が正しく動作しなかったり、そのためにクラッシュしたりしていたのだが、何とか対処は可能なようだ。
Mirror-DTCはMirrorCommanderのBasic版ということで、認証と暗号化は実装しないつもりだったが、基本機能/性能については十分な作りにしてしまったので、近い将来のバージョンアップはないかもしれない。なので、認証と暗号化についても実装しておくことにした。
Mirror-DTCの使い勝手を確認する意味で、古いノートPCを使って11bの無線LAN経由でDVDの視聴を行って見た。鑑賞できるか、という観点からすると、無理、という結果になったが、画質と音質を最低に設定すれば10FPS以上は確保できたので見れないこともない。
ここ何日か、劣悪な無線LAN環境でMirror-DTCを使ってきたため、ネットワークへのデータ転送量にかなり敏感になった。昨日は無駄な音声転送を行わなくする機能を追加したが、今日はインタレース機能を追加した。
昨日に引き続き、今日もPentiumMのノートPCからMirror-DTCを使って、このブログを書いている。少し違うのはサーバーとして今日はMacBookを使っている点だ。また、昨日はネットの帯域を無駄に使わないように音声の品質を落としたが、今日は改良したのでそのままだ。
まだ少し危なっかしいのだが、今、Core2Quadの開発マシンをPentiumMのノートPCから操作して、このブログを書いている。古いノートPCなので、画面サイズは1024x768しかなく、GPUも恐らくは非力で、無線LANも11bなのだが、何とか使えている。
Mirror-DTCの開発には当初の見込みよりも時間がかかったが、これは、何回か書いたように、結構使えそうだったので、基本処理については少し真面目に作ってしまった、というのが主な要因だ。しかし、開発環境の無線LANが劣悪だったことも、もう一つの要因として挙げられる。
2日間に渡ってMirror-DTCとリモートデスクトップ接続との比較を行ったが、重要な比較を一つ行っていなかった。それは、劣悪な無線LAN環境下での動作の安定度だ。Mirror-DTCは劣悪な無線LAN環境下でも動作するが、いくつかの問題もあった。なので、少し修正した。
昨日に引き続き、Mirror-DTCとリモートデスクトップ接続との比較を行った結果を書いてみる。昨日の結果から、リモートデスクトップ接続は何もしていない時のCPU負荷はほぼ無いに等しく、画質劣化も無いのは望ましいのだが、画面変化がある程度ある時には少し難があるようだ。
作者としては、Mirror-DTCはMS製のリモートデスクトップ接続の置き換えとして使用するつもりなので、機能/性能について比較してみた。リモートデスクトップ接続は新規にデスクトップを作成するのに対してMirror-DTCはミラーリングする違いがあるがこれは対象外とした。
今日は、Mirror-DTCの細かいバグを潰したり、最適化が未適用だったルーチンを最適化したりしながら、使い込みを行った。今、この記事はMacBookをサーバーとしてMirror-DTCを使ってGatewayのデスクトップPCから書いている。
Mirror-DTCは機能的には質素なものになるが、基本性能については90%は手抜きなしなので、他のリモートデスクトップ接続ソフトよりも信頼がおける。ただ、色々なアイデアをバタバタと実装してきたので、例によってコード整理が必要になっている。
Mirror-DTCの開発も、とりあえずは、一段落つけそうな雰囲気になってきた。サーバー側のサービス動作も問題はなく、その他の部分についても気持ちよく動作している。本質的では無い所には改良の余地は残っているが、ここはES版と割り切ってリリースするつもりだ。
Mirror-DTCのサーバー側のサービス化は色々と面倒なのだが、まだ、バラックの状態ではあるものの、基本的な実装が行えたため、サーバー側は電源Onすれば自動的に利用可能になり、ログオンもクライアント側から行えるようになった。