sql >> データベース >  >> RDS >> PostgreSQL

Simple Encrypted Arithmetic Library(SEAL)とseal::Ciphertext変数

    簡単に言うと、SEALの暗号文データにアクセスする方法は他にありません。 Ciphertext::dataによって返されるポインタ 暗号文データに直接アクセスできるようになり、その意味で、あらゆる種類の計算を実行できるようになります。何らかの理由でそれを実行したい場合は、人間が読める文字列に変換します。

    もちろん、わかりやすいことを行うには、暗号文のデータレイアウトを知っている必要があります。 BFVスキームでは、暗号文は1対の多項式(c 0 )で構成されます。 、c 1 )大きい(サイズcoeff_modulus )係数。このような大きな係数を持つ多項式を操作するのは不便なので、SEAL2.3.1は代わりに複合coeff_modulusを使用します。 両方のc0を格納します およびc1 coeff_modulusで指定された各素因のモジュロ (これらの要因q 1を示します 、q 2 、...、q k )。各qi 64ビットワードに収まるため、これらの2k多項式はすべてワードサイズ係数を持ちます。

    暗号文係数データのレイアウトは次のとおりです(メモリ内で連続):

    [c 0 mod q 1 ] [c 0 mod q 2 ] ... [c 0 mod q k ] [c 1 mod q 1 ] [c 1 mod q 2 ] ... [c 1 mod q k ]

    ここで、各[c i mod q j ]のように見えます

    [c 0 [0] mod q j ] [c 1 [0] mod q j ] ... [c n-1 [0] mod q j ]

    ここではciを使用しました [k] c iの次数k係数を示します 。各係数はuint64_tに格納されていることに注意してください 。

    Ciphertext::data c 0の定数係数へのポインタを返します coeff_modulusの最初のモジュラスに関する多項式 、つまりc 0 [0] mod q 1 。この係数データに加えて、暗号文には、メンバー関数を使用して読み取ることができる他のいくつかのフィールドが含まれています。




    1. データベース内のすべてのオブジェクトをカウントします

    2. UnixtimeをDatetimeSQLに変換する(Oracle)

    3. postgresqlポートの混乱5433または5432?

    4. PostgreSQLとRedshiftでサブストリング関数を使用する方法