2016-06-27 2 views
1

レルムには、レルムデータベースを暗号化するための鍵生成/鍵ストレージに対する反応をネイティブにサポートしていますか?私は同じ分野のネイティブモジュールを書く前に、レルムに取り組んでいるチームに確認したかったのです。反応ネイティブのためのノードモジュールのサポートがあれば、それは役に立ちます。レスポンスネイティブアプリケーションが鍵データベースを暗号化するためのキー生成/ストレージ

ありがとうございます。

答えて

2

レルムは、暗号化キーの生成または格納にAPIを提供しません。レルムをネイティブで暗号化することに対処する際に考慮する必要があるいくつかの考慮事項について、私が過去に行ったコメントをコピーしています...

react-native-keychainモジュールはパスワード文字列しかサポートしていませんが、 512ビット(64バイト)データブロブがArrayBufferまたはArrayBufferView(たとえば、Uint8Arrayなど)のいずれかとしています。

ランダムにパスワードを生成している場合は、そのデータを文字列にbase64でエンコードしてからreact-native-keychainに格納してから、それを取り出したときにbase64でデコードすることをお勧めします。生データ(atob/btoaの文字列のみを扱う)については、base64-jsを調べることをおすすめします。

一方、ユーザーがパスワードを提供している場合、そのユーザーを直接キーチェーンに格納し、そのパスワードの512ビットハッシュを暗号化キーとして使用できます。 SHA-512ハッシュではこれが達成されますが、通常は暗号化では塩を含むハッシュアルゴリズムを使用したいので基本的には遅くなります。これを行うための標準はPBKDF2ですが、より新しい、より良いハッシング方法が存在します。これについてはcrypto-jsまたはpbkdf2-jsを確認することをおすすめします。

+0

反応するネイティブライブラリのリンクありがとうございます。言及されたすべての点は非常に有益です。 – user4122421

+0

Scott、私は自分自身のネイティブモジュールを作成し、ブリッジを介して反応ネイティブモジュールにキーを公開することに決めました。私はこの例を見ていました - https://github.com/realm/realm-java/blob/feature/example/store_password/examples/StoreEncryptionPassword/src/main/java/realm/io/storeencryptionpassword/Store.java上記の例のようにgenerateKeyForRealm()を公開すると、レルムの暗号化が機能しますか?私はちょうど私があなたの512ビットのコメントを理解しているかどうかを知りたいです – user4122421

+0

はい、 'generateKeyForRealm()'メソッドは完全にランダムな64バイト(512ビット)のキーを返しています。 –

0

少し拡大してください。 https://asecuritysite.com/encryption/PBKDF2zのようなサイトを使用して、64バイトのハッシュを16進文字列とbase64文字列の両方として生成することができます。

レルムブラウザGUIの16進文字列を使用して、レルムファイルのロックを解除できます。上記のbase64-jsライブラリでbase64文字列を使用できます。 base64js.toByteArray()にbase64文字列を渡すだけで、新しいRealm({encryptionKey:key ...})で使用するキーになります。

関連する問題