フォーラム: 公開討議 (スレッド #33634)

FFFTPの起動 (2013-03-03 16:47 by 一福 #67547)

これまで便利に使用させていただいていましたが、昨日から突然、FFFTPを起動してもFFFTPが起動できなくなってしまいました。タスクマネジャーにも出て来ません。これはどうしたら良いでしょうか?

メッセージ #67547 への返信×

ログインしていません。投稿を区別するために投稿者のニックネームをつけてください(ニックネームの一意性は保証されません。全く別の人も同じ名前を利用することが可能ですので本人であることの特定には利用できません。本人であることを保証したい場合にはログインして投稿を行なってください)。 ログインする

RE: FFFTPの起動 (2013-03-03 21:25 by s_kawamoto #67549)

お手数ですが、まず初めにお使いのコンピュータのOS、FFFTPのバージョン、ZIP版かインストーラ版かを教えていただけますか。
また、昨日から今日までの間にソフトウェアのインストールなどのコンピュータに加えた変更があれば、そちらも併せてお願いします。
#67547 への返信

メッセージ #67549 への返信×

ログインしていません。投稿を区別するために投稿者のニックネームをつけてください(ニックネームの一意性は保証されません。全く別の人も同じ名前を利用することが可能ですので本人であることの特定には利用できません。本人であることを保証したい場合にはログインして投稿を行なってください)。 ログインする

RE: FFFTPの起動 (2013-03-04 10:15 by 一福 #67557)

Windows7 64ビットです。
最新と思われるFFFTP(日本語版) 1.98g Windows 実行ファイル(2,218,565 バイトをインストールしてみましたが同じ結果でした。
新たなソフトのインストールはしませんでした。
よろしくお願いします。
#67549 への返信

メッセージ #67557 への返信×

ログインしていません。投稿を区別するために投稿者のニックネームをつけてください(ニックネームの一意性は保証されません。全く別の人も同じ名前を利用することが可能ですので本人であることの特定には利用できません。本人であることを保証したい場合にはログインして投稿を行なってください)。 ログインする

RE: FFFTPの起動 (2013-03-04 17:08 by s_kawamoto #67562)

ありがとうございます。
ウィルス対策ソフトを使用しているのであれば一旦無効にし、FFFTP 1.98gのインストーラを起動して再度インストールし、FFFTPが起動できるか確認してください。
それでも起動できないのであれば、FFFTPの設定が破損している可能性があるため、インストール先のフォルダ(既定では"C:\Program Files(x86)\ffftp")内に"ffftp.ini"というファイルがあれば名前を"ffftp-old.ini"などに変更してください。
#67557 への返信

メッセージ #67562 への返信×

ログインしていません。投稿を区別するために投稿者のニックネームをつけてください(ニックネームの一意性は保証されません。全く別の人も同じ名前を利用することが可能ですので本人であることの特定には利用できません。本人であることを保証したい場合にはログインして投稿を行なってください)。 ログインする

RE: FFFTPの起動 (2013-03-08 01:49 by santa #67593)

FFFTP設定破損で起動失敗といえば、
ffftp.iniに「# このファイルは編集しないでください.」と書いてあるので編集するのが悪いかもしれませんが、Windows7のメモ帳でffftp.iniを保存すると、ffftp.iniを消さないと起動できなくなる不具合があるようです。

FFFTPは起動時にValidateMasterPassword()を呼んでいて、その先ではregistry.cのReadInReg()でiniファイルを読み込んでいます。この関数には最初の"["より前に空行/コメント行以外現れると未初期化ポインタ変数(DataやNew)を参照する不具合があります。
不幸なことに、Windows7のnotepadはUTF-8で保存する時に先頭に3バイトのBOMをつけます(XPまでは付けなかったかと)。このため先頭行のコメントが非コメントと判定され、不具合が発現します。
ReadInReg()を読むと、他に気になるところがあって、
・80字を超える長いセクション名を読み込んだ場合、REGDATATBL構造体内のValTbl配列(64KB)に食い込みます
・セクションの内容が64KBを超えた場合はValTbl配列をオーバーランします
(なお、破損していない、普通の使い込みでINIファイルのセクションが64KBを超えることがあるかは未確認)
#67562 への返信

メッセージ #67593 への返信×

ログインしていません。投稿を区別するために投稿者のニックネームをつけてください(ニックネームの一意性は保証されません。全く別の人も同じ名前を利用することが可能ですので本人であることの特定には利用できません。本人であることを保証したい場合にはログインして投稿を行なってください)。 ログインする

RE: FFFTPの起動 (2013-03-08 13:22 by s_kawamoto #67596)

そのバグ(?)については以前から把握していましたので、今後もINIファイルを編集することをサポートしませんが、念のためtestブランチで修正しました。
http://git.sourceforge.jp/view?p=ffftp/ffftp.git;a=commit;h=2f5250371d4ad1fc71ee87462e69262315db0d22
#67593 への返信

メッセージ #67596 への返信×

ログインしていません。投稿を区別するために投稿者のニックネームをつけてください(ニックネームの一意性は保証されません。全く別の人も同じ名前を利用することが可能ですので本人であることの特定には利用できません。本人であることを保証したい場合にはログインして投稿を行なってください)。 ログインする

INIファイル読み込み修正 (RE: FFFTPの起動) (2013-03-08 20:49 by santa #67597)

さすが素早いですね。ソース読んだだけですが、バグの芽がつめてるようです。

同時にtestブランチで盛り込まれた項目の暗号化についてですが、後々困ったり後悔しないようにきっちりと仕様をつめて実装した状態でリリースをお勧めします。
・鍵は用途別に分ける。つまり、暗号化と認証用の鍵に同じ値を絶対使わない(いろいろ流儀はありますが、たとえば用途別鍵の例はRFC4764とか)
・暗号化と改ざん検出を併用する場合、MAC(Message Authentication Code)は暗号文に対して作成/検証する。
あたりの基本だけはおさえておいた方が良いと思います。HMACとかPBKDF/PBKDF2の技術は多少面倒っぽく見えても、敬遠しないほうが良いですよ。
#67596 への返信

メッセージ #67597 への返信×

ログインしていません。投稿を区別するために投稿者のニックネームをつけてください(ニックネームの一意性は保証されません。全く別の人も同じ名前を利用することが可能ですので本人であることの特定には利用できません。本人であることを保証したい場合にはログインして投稿を行なってください)。 ログインする

INIファイル読み込み修正 (RE: FFFTPの起動) (2013-03-08 21:12 by s_kawamoto #67598)

ご指摘ありがとうございます。

データの大半が20バイト以下なのでバーナム暗号もどきで実装してみたのですが、潜在的な脆弱性などを考えるとやはり真面目にHMACを実装するべきですね。

ところで現状ではマスターパスワードをホストのパスワード用のAES-192の鍵に使っているようなので、暗号用と認証用というのがどちらを指しているのか分かりませんが、パスワードを2種類用意するとなると利便性が著しく悪化しそうです。
マスターパスワードを流用した場合の危険性(暗号強度の低下)がどの程度のものかが分かる資料などはありませんか。
RFCでも学術論文でも構いません。
#67597 への返信

メッセージ #67598 への返信×

ログインしていません。投稿を区別するために投稿者のニックネームをつけてください(ニックネームの一意性は保証されません。全く別の人も同じ名前を利用することが可能ですので本人であることの特定には利用できません。本人であることを保証したい場合にはログインして投稿を行なってください)。 ログインする

INIファイル読み込み修正 (RE: FFFTPの起動) (2013-03-08 22:51 by santa #67599)

すみません、未整理で長い文章です。
鍵の使い分けについては、これを読めばばっちしというのを提示できなくて残念ですが、RFC4764あたりから、AKやDK導入の経緯を探るのがよろしいかと。キーワードはKDFになります。
また、改ざん検出を暗号文に対してつけたほうが良い理由のキーワードはEncrypt-Then-Macになります。

暗号化と認証の鍵を同じにした場合の危険性の例は、暗号化のCBCモードと認証のCBC-MACで同じ鍵を使った場合、
暗号文からMAC(チェックデータのこと)をでっち上げられることが知られていますが、あまりに当然なので暗号の教科書にめったに出てきません…。学術論文やRFCのキーワードAEADで調べると、情報が出てくるかもしれません。

ついでにつらつらと書くと、今の処理フローは以下の関係になっていると思います。
master_password + CredentialSalt => Secret_Key
sha1(Secret_Key) => CredentialChecksum
sha1(Secret_Key+固定文字列1) + sha1(Secret_Key+固定文字列2) => FTPパスワードなど保護のAES_KEY
sha1(Secret_Key+設定キー) => 設定データ暗号化鍵(20バイトのキーストリーム)
設定データ暗号化鍵 xor 設定データ => 暗号化された設定データ
sum(sha1(暗号化された設定データ)) => 暗号化されたデータのチェックサム

わりと守られていますが、すでにお気づきでしょうが、今の構成だと暗号化された設定データの0バイト目と20バイト目の入れ替えあるいはビット反転で、設定データを比較的自由に変更できます。もちろんチェックサムは再計算で突破します。
これを阻止しようとすると、HMACあたりを使うことになるのですが、そうするとHMACの鍵(認証鍵)が必要です。ここに上記の設定データ暗号化鍵を使うのは良くないというのが、暗号化用と認証用の鍵は使い分けましょうという意味です。学術論文だと、両者が別なら安全性を証明できても、一緒の場合はうまく証明できなくなるので、別々ってのが大前提になってたりします。

どうすればいいかというと
sha1(Secret_Key+固定文字列3+設定キー) => 設定データ暗号化の鍵
sha1(Secret_Key+固定文字列4+設定キー) => HMACの鍵
みたいにして、元の情報は一緒だけど、使うところの鍵は別々にしてしまうというのが、よくある解決策です。
(今もそんな感じですが)これだと入力はマスターパスワード1個のままで、用途別に鍵がつくられるようになります。
実際にはsha1のようなハッシュを直接使うのはよろしくなくて、PBKDFやPBKDF2といった、ちょっとひねった構成を使うのが現在の主流です。
#67598 への返信

メッセージ #67599 への返信×

ログインしていません。投稿を区別するために投稿者のニックネームをつけてください(ニックネームの一意性は保証されません。全く別の人も同じ名前を利用することが可能ですので本人であることの特定には利用できません。本人であることを保証したい場合にはログインして投稿を行なってください)。 ログインする

INIファイル読み込み修正 (RE: FFFTPの起動) (2013-03-08 23:48 by s_kawamoto #67600)

>sha1(Secret_Key+固定文字列3+設定キー) => 設定データ暗号化の鍵
>sha1(Secret_Key+固定文字列4+設定キー) => HMACの鍵
大元の鍵(マスターパスワードの文字数未知で160bit、既知ではそれ以下)が2個必要という意味ではなかったのですね。

>sha1(Secret_Key+設定キー) => 設定データ暗号化鍵(20バイトのキーストリーム)
「設定キー」("HostName"等)の部分は暫定処置で、同じ名前の設定で同じ鍵になってしまうので、実際は完全な設定キー名("Options\Host0\HostName"等)かそれから得られる乱数を使う予定でした。

>sum(sha1(暗号化された設定データ)) => 暗号化されたデータのチェックサム
正しくはsum(sha1(設定データ))です。
元のデータの0バイト目と20バイト目を入れ替えても暗号化前のデータが分からないとチェックサムを再計算できないはずです。
20バイト目以降も暫定処置で、その設定のもののみですが、20バイト目以降から鍵を推定できてしまいますので。

あとNULL文字を特別扱いできない暗号化方式だと、古いバージョンから読み込んだ時や復号に失敗した時にクラッシュしてしまうので、このような方式にしています。

とても参考になりました。
テスト版や正式リリースまでまだ十分に時間があるので、書籍などで暗号について勉強し、それから実装しなおしたいと思います。
#67599 への返信

メッセージ #67600 への返信×

ログインしていません。投稿を区別するために投稿者のニックネームをつけてください(ニックネームの一意性は保証されません。全く別の人も同じ名前を利用することが可能ですので本人であることの特定には利用できません。本人であることを保証したい場合にはログインして投稿を行なってください)。 ログインする

Re: FFFTPの起動しない (2018-05-03 12:48 by ぼこ #81174)

[メッセージ #67547 への返信]
>Windows 10 ですが,3回ほどこれを喰らいました。
システムをいじるのは危険です。
理由は不明ですが,別ホルダに FFFTP を放り込んで立ち上げれば問題なく起動します。
古いフォルダは全くいじっていません。
#67547 への返信

メッセージ #81174 への返信×

ログインしていません。投稿を区別するために投稿者のニックネームをつけてください(ニックネームの一意性は保証されません。全く別の人も同じ名前を利用することが可能ですので本人であることの特定には利用できません。本人であることを保証したい場合にはログインして投稿を行なってください)。 ログインする