# SEAL & Dimension Type - https://github.com/microsoft/SEAL ## 2023/12/01 - Dimension Type: https://link.springer.com/chapter/10.1007/3-540-57880-3_23 - 速さを表すDimension Type: $[LT^{-1}] real$ ## 2023/11/21 - `5_ckks_basics.cpp`を動かしてみたが - 正常に動かしてみた結果、期待される答えとDecodeされた答えが絶妙に異なっている - 「精度」の問題? - L197 に`evaluator.rescale_to_next_inplace(x1_encrypted);` を付け加えて動かしてみる - ビルド、実行は通る。 - 答えは違う - スケールが合っているかどうか、と、浮動小数が合っているか問題の2つがある。(Waga) ## 2023/11/15 - `EncryptionParameters`で準同型暗号の形式をセットするらしい - [CKKS](https://eprint.iacr.org/2016/421):`parms(scheme_type::ckks);` - これがわかりやすそう:https://zenn.dev/herumi/articles/ckks-ring-iso - SEALコードを追って何かが得られる類のものではない。 - 準同型暗号というものをまず理解する必要がある。 - 暗号文のスケールがcoeff_modulusの総サイズにあまりにも近くならないようにする必要がある。 - そうでないと、暗号文はスケールアップされた平文を格納するのに十分な空間が不足してしまう - この問題に対処するために、CKKSスキームはrescale機能を提供している。この機能を使用することで、スケールを削減し、スケールの拡張を安定させることができる。 - つまり、乗算によって生じるスケールの増加を抑制し、計算の途中で暗号文のスケールを調整することが可能。 - これにより、暗号文が適切なサイズで保持され、計算が正しく行われることが確保される。 - 初期のスケールは任意に選択できるが、一般的な戦略として、初期のスケール$S$と`coeff_modulus`の素数$P_i$を互いに非常に近い値に設定する。 - これにより、乗算前の暗号文がスケール$S$を持っていれば、乗算後は$S^2$となり、rescaling後は$S^2/P_i$となる。全ての$P_i$がSに近い場合、$S^2/P_i$も再び$S$に近い値になって、これにより、計算全体でスケールを安定化させることができる。
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up