Tenseal هي مكتبة للقيام بعمليات تشفير متجانسة على التوتر ، المصممة فوق Microsoft Seal. إنه يوفر سهولة الاستخدام من خلال API Python ، مع الحفاظ على الكفاءة من خلال تنفيذ معظم عملياتها باستخدام C ++.
tenseal.sealapi نعرض العمليات الأساسية على البيانات المشفرة ، يمكن العثور على استخدام أكثر تقدماً لتطبيقات التعلم الآلي في قسم البرنامج التعليمي الخاص بنا
import tenseal as ts
# Setup TenSEAL context
context = ts . context (
ts . SCHEME_TYPE . CKKS ,
poly_modulus_degree = 8192 ,
coeff_mod_bit_sizes = [ 60 , 40 , 40 , 60 ]
)
context . generate_galois_keys ()
context . global_scale = 2 ** 40
v1 = [ 0 , 1 , 2 , 3 , 4 ]
v2 = [ 4 , 3 , 2 , 1 , 0 ]
# encrypted vectors
enc_v1 = ts . ckks_vector ( context , v1 )
enc_v2 = ts . ckks_vector ( context , v2 )
result = enc_v1 + enc_v2
result . decrypt () # ~ [4, 4, 4, 4, 4]
result = enc_v1 . dot ( enc_v2 )
result . decrypt () # ~ [10]
matrix = [
[ 73 , 0.5 , 8 ],
[ 81 , - 5 , 66 ],
[ - 100 , - 78 , - 2 ],
[ 0 , 9 , 17 ],
[ 69 , 11 , 10 ],
]
result = enc_v1 . matmul ( matrix )
result . decrypt () # ~ [157, -90, 153] $ pip install tensealهذا يثبت آخر إصدار معبأ على PYPI. إذا لم يكن النظام الأساسي الخاص بك يحتوي على حزمة جاهزة ، فيرجى فتح مشكلة لإعلامنا بها.
المنصات المدعومة ومتطلباتها مدرجة أدناه: (هذا مطلوب فقط لبناء الشبك من المصدر)
إذا كنت ترغب في تثبيت Tenseal من المستودع ، فيجب عليك أولاً التأكد من امتلاك متطلبات النظام الأساسي (المذكور أعلاه) وتثبيت CMake (3.14 أو أعلى) ، ثم احصل
$ git submodule init
$ git submodule updateيستخدم Tenseal المخازن المؤقتة للبروتوكول للتسلسل ، وستحتاج إلى برنامج التحويل البروتوكول المخزن المؤقت أيضًا.
إذا كنت على Windows ، فستحتاج أولاً إلى إنشاء مكتبة Seal باستخدام Visual Studio ، يجب عليك استخدام Seal File SEAL.sln في third_party/SEAL لإنشاء المشروع nativesrcSEAL.vcxproj مع Configuration=Release و Platform=x64 . لمزيد من التفاصيل ، تحقق من التعليمات في بناء Microsoft Seal
يمكنك بعد ذلك تشغيل البناء والتثبيت
$ pip install . يمكنك استخدام صورة Docker الخاصة بنا لتجهيز البيئة مع تثبيت Tenseal
$ docker container run --interactive --tty openmined/tenseal ملاحظة: يشير openmined/tenseal إلى الصورة من الإصدار الأخير ، استخدم openmined/tenseal:dev للصورة التي تم تصميمها من الفرع الرئيسي.
يمكنك أيضًا إنشاء صورتك المخصصة ، وقد يكون هذا مفيدًا للمطورين الذين يعملون في المشروع
$ docker build -t tenseal -f docker-images/Dockerfile-py38 .لتشغيل صورة Docker بشكل تفاعلي كحاوية بعد أن تم بناؤها ، يمكنك تشغيلها
$ docker container run -it tensealلاستخدام هذه المكتبة في مشروع بازل آخر ، أضف ما يلي في ملف مساحة العمل الخاصة بك:
git_repository(
name = "org_openmined_tenseal",
remote = "https://github.com/OpenMined/TenSEAL",
branch = "master",
init_submodules = True,
)
load("@org_openmined_tenseal//tenseal:preload.bzl", "tenseal_preload")
tenseal_preload()
load("@org_openmined_tenseal//tenseal:deps.bzl", "tenseal_deps")
tenseal_deps()
يمكنك قياس التنفيذ في أي وقت عن طريق التشغيل
$ bazel run -c opt --spawn_strategy=standalone //tests/cpp/benchmarks:benchmarkيتم تحميل المعايير من كل دمج PR هنا.
A. Benaissa ، B. Retiat ، B. Cebere ، Ae Belfedhal ، "Tenseal: مكتبة لعمليات الموتر المشفرة باستخدام تشفير متماثل الشكل" ، ورشة عمل ICLR 2021 حول التعلم الآلي الموزع والخاص (DPML 2021).
@misc{tenseal2021,
title={TenSEAL: A Library for Encrypted Tensor Operations Using Homomorphic Encryption},
author={Ayoub Benaissa and Bilal Retiat and Bogdan Cebere and Alaa Eddine Belfedhal},
year={2021},
eprint={2104.03152},
archivePrefix={arXiv},
primaryClass={cs.CR}
}
للحصول على الدعم في استخدام هذه المكتبة ، يرجى الانضمام إلى قناة #Support Slack. انقر هنا للانضمام إلى مجتمع Slack لدينا!
طلبات السحب موضع ترحيب. للتغييرات الرئيسية ، يرجى فتح مشكلة أولاً لمناقشة ما تريد تغييره.
يرجى التأكد من تحديث الاختبارات حسب الاقتضاء.
ترخيص Apache 2.0