« 進捗記録 2014.6.7 | トップページ | なんとなく体裁が整ったので »

2014年6月 8日 (日)

やっぱり暗号化をします

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 | トップページ | なんとなく体裁が整ったので »

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: やっぱり暗号化をします:

« 進捗記録 2014.6.7 | トップページ | なんとなく体裁が整ったので »