やっぱり暗号化をします
crypto++によるパスワード暗号化保存ですが、やはりパスワードを記憶したいという人は居ますよね…
パスワードをメモリに記憶する際は常に暗号化、ヘキサコード化した文字列を置くようにします。
レジストリ保存時もですね。
crypto++の最適化レベルをO3にすれば、リンク後の実行ファイルはリリースバージョンで1.5MBに抑えられるのでスタティックリンクすることにしました。(少なくともMinGW版では、ですが)
外部ライブラリ(libcryptopp.a)をリンクするために.proファイルに以下のように記述を追加しました。
LIBS += -L../lib/cryptopp562 -lcryptopp
INCLUDEPATH += ../lib/cryptopp562
起動時にQDateTimeインスタンスを取得し、この時刻情報の文字列を種に暗号化クラスCipherを生成します。これで、起動するたびに暗号化の種データが変わるので、少し安全になるのではないでしょうかね。
…次回実行時レジストリからのパスワード情報復帰時に時刻が変わってしまうので、種が変わってしまいマズイですね…どうしよう。
(追記)
パスワードのレジストリ記憶を確認していたら、Linuxで.confファイルが更新されない不具合が見つかりました。
QSettings::setValue()で情報を書き込むのですが、Qt5.2.1で保存できていた情報がQt5.3になって保存されなくなりました。Windows(registryへの保存)では問題ありません。#本当にQt5.3への更新が原因かは不明ですが…
結局、必要な時にQSettings::sync()を呼び出して、任意のタイミングで明示的に書き込み処理を実行するのが礼儀ということみたいです。
<参考>
http://stackoverflow.com/questions/23027181/qsetting-doesnt-works-fine-for-me
.confファイルは以下のようになりました。
[General] graphicsBufferSize=1048576 onControl=false onGraphics=true onSound=true outputGraphicsDataToFile=false outputLog=false outputSoundDataToFile=false password=E9C082A40E00B0D38441DE82597158F5 portNo=55500 serverName=urd-PC serverType=0 soundBufferSize=524288 soundCapture=1 soundQuality=24000 videoQuality=9
« 進捗記録 2014.6.7 | トップページ | なんとなく体裁が整ったので »
コメント