2017-03-09 21 views
0

SQLCipherには、パスフレーズ(関連するPBKDF2ラウンド数)または生のキーの2通りの方法でデータベースキーを提供することができます。パスフレーズとPBKDF2の反復から生鍵データを取得する方法

パスフレーズ(任意の文字列)とラウンド数を考慮して、生の鍵(64文字の16進数文字列)を取得する方法を見つけようとしています。 PBKDF2キーの派生を自分自身で実行しているのではないかと思いますが、これがどう機能するか、またはPRAGMA KEYの生の鍵としてフィードできる値を生成するかどうかはあまりよく分かりません。さらに、PBKDF2機能は塩を取るように見えますが、これはわかりません。私がする必要がある場合、私はこれを把握するためにsqlcipherのソースコードを掘り下げることができると確信していますが、私は行方不明でこれを行うための簡単な方法があるかもしれないと思っています。

答えて

1

SQLCipherキーの派生に関する詳細はon the design pageです。塩は、データベースファイルの最初の16バイトに格納されます。あなたは、PBKDF2-HMAC-SHA1ラウンド(SQL暗号3の場合は64,000、それ以前のバージョンの場合は4,000)の適切な数のパスフレーズと一緒に塩を使用します。

+0

これを読んだあと、raw鍵はファイルの16バイトにランダムな塩がないので、ハッシュされた鍵をあらかじめ計算して生の鍵のように扱うことはできません。 – Michael

+0

生の鍵SQLCipherを使用する場合、鍵の導出は実行されません。ファイルの先頭にはまだランダムなデータがありますが、使用されていません。達成しようとしていることを説明できますか? –

+0

ユーザー指定のパスフレーズからボールトされた生の鍵の形式に移行しますが、その間に(既存のデータベースが移行される前に)いずれかの方法で動作するソリューションが必要です。与えられたパスフレーズが本当に生の鍵かどうかを検出し、それに応じてプラグマを指定することができます。 – Michael

関連する問題