sable-he-research 0.2.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (359) hide show
  1. sable_he_research-0.2.0/LICENSE +21 -0
  2. sable_he_research-0.2.0/MANIFEST.in +11 -0
  3. sable_he_research-0.2.0/PKG-INFO +197 -0
  4. sable_he_research-0.2.0/README.md +154 -0
  5. sable_he_research-0.2.0/RELEASE_NOTES_v0.2_FL.md +33 -0
  6. sable_he_research-0.2.0/RELEASE_NOTES_v0.4_C3_SEEDED.md +20 -0
  7. sable_he_research-0.2.0/RELEASE_NOTES_v0.6_C4_PROJECTIVE.md +30 -0
  8. sable_he_research-0.2.0/RELEASE_NOTES_v0.7_C5_ARITHMETIC.md +23 -0
  9. sable_he_research-0.2.0/RELEASE_NOTES_v0.7_C5_OPERATIONS.md +47 -0
  10. sable_he_research-0.2.0/RELEASE_NOTES_v0.7_C5_OPS_BASELINES.md +29 -0
  11. sable_he_research-0.2.0/RELEASE_NOTES_v0.8_C6_RELATIONS.md +16 -0
  12. sable_he_research-0.2.0/RELEASE_NOTES_v0.9_C7_FINAL.md +22 -0
  13. sable_he_research-0.2.0/RELEASE_NOTES_v0.9_C7_READY.md +25 -0
  14. sable_he_research-0.2.0/RELEASE_NOTES_v1.0_C8_READINESS.md +28 -0
  15. sable_he_research-0.2.0/SECURITY.md +37 -0
  16. sable_he_research-0.2.0/VERSION +1 -0
  17. sable_he_research-0.2.0/docs/API_REFERENCE.md +137 -0
  18. sable_he_research-0.2.0/docs/BUILD_AND_TEST_REPORT_v0.2.0.md +40 -0
  19. sable_he_research-0.2.0/docs/CLI_REFERENCE.md +107 -0
  20. sable_he_research-0.2.0/docs/FL_AGGREGATION.md +144 -0
  21. sable_he_research-0.2.0/docs/FL_AGGREGATION_GUIDE.md +143 -0
  22. sable_he_research-0.2.0/docs/GITHUB_PYPI_RELEASE_GUIDE.md +95 -0
  23. sable_he_research-0.2.0/docs/PUBLIC_RELEASE_GUIDE.md +86 -0
  24. sable_he_research-0.2.0/docs/TENSOR_ADAPTERS.md +54 -0
  25. sable_he_research-0.2.0/docs/USER_GUIDE.md +249 -0
  26. sable_he_research-0.2.0/docs/api/API_REFERENCE.md +63 -0
  27. sable_he_research-0.2.0/docs/api/OPERATIONS.md +23 -0
  28. sable_he_research-0.2.0/docs/arithmetic_microbench_c4_toy_clean.csv +18 -0
  29. sable_he_research-0.2.0/docs/arithmetic_microbench_c4_toy_clean.json +223 -0
  30. sable_he_research-0.2.0/docs/arithmetic_microbench_c4_toy_clean.txt +17 -0
  31. sable_he_research-0.2.0/docs/attack_candidate_depth1_rough.txt +25 -0
  32. sable_he_research-0.2.0/docs/attack_estimator_model.md +48 -0
  33. sable_he_research-0.2.0/docs/attack_estimator_notes.md +46 -0
  34. sable_he_research-0.2.0/docs/attack_estimator_output.txt +27 -0
  35. sable_he_research-0.2.0/docs/attack_estimator_prototype_medium_output.txt +38 -0
  36. sable_he_research-0.2.0/docs/attack_prototype_medium_output.txt +25 -0
  37. sable_he_research-0.2.0/docs/attack_sweep_output.txt +240 -0
  38. sable_he_research-0.2.0/docs/baseline_benchmark_plan.md +25 -0
  39. sable_he_research-0.2.0/docs/baseline_model.csv +5 -0
  40. sable_he_research-0.2.0/docs/baseline_model_output.txt +4 -0
  41. sable_he_research-0.2.0/docs/baseline_model_table.csv +5 -0
  42. sable_he_research-0.2.0/docs/baseline_proxy_output.txt +75 -0
  43. sable_he_research-0.2.0/docs/bench_boolean_and.csv +11 -0
  44. sable_he_research-0.2.0/docs/bench_boolean_and.json +224 -0
  45. sable_he_research-0.2.0/docs/bench_boolean_and_output.txt +40 -0
  46. sable_he_research-0.2.0/docs/bench_boolean_xor.csv +4 -0
  47. sable_he_research-0.2.0/docs/bench_boolean_xor.json +98 -0
  48. sable_he_research-0.2.0/docs/bench_boolean_xor_output.txt +40 -0
  49. sable_he_research-0.2.0/docs/benchmark_proxy_output.json +61 -0
  50. sable_he_research-0.2.0/docs/benchmark_proxy_output.txt +61 -0
  51. sable_he_research-0.2.0/docs/benchmarking_protocol.md +54 -0
  52. sable_he_research-0.2.0/docs/boolean_benchmark_and_output.txt +40 -0
  53. sable_he_research-0.2.0/docs/c2_attack_surface_design_smallq.json +346 -0
  54. sable_he_research-0.2.0/docs/c2_attack_surface_design_smallq.txt +39 -0
  55. sable_he_research-0.2.0/docs/c2_attack_surface_toy_noisy.json +205 -0
  56. sable_he_research-0.2.0/docs/c2_attack_surface_toy_noisy.txt +42 -0
  57. sable_he_research-0.2.0/docs/c2_block_dictionary_correctness.txt +4 -0
  58. sable_he_research-0.2.0/docs/c2_block_dictionary_design.md +109 -0
  59. sable_he_research-0.2.0/docs/c2_estimator_design_smallq.txt +37 -0
  60. sable_he_research-0.2.0/docs/c2_estimator_design_smallq_depth2.txt +37 -0
  61. sable_he_research-0.2.0/docs/c2_estimator_toy_noisy.txt +37 -0
  62. sable_he_research-0.2.0/docs/c3_seeded_and_surface_report.md +58 -0
  63. sable_he_research-0.2.0/docs/c3_seeded_correctness_output.txt +4 -0
  64. sable_he_research-0.2.0/docs/c3_seeded_dictionary_design.md +27 -0
  65. sable_he_research-0.2.0/docs/c3_seeded_estimator_design_smallq_depth2.txt +36 -0
  66. sable_he_research-0.2.0/docs/c3_seeded_estimator_output.txt +73 -0
  67. sable_he_research-0.2.0/docs/c3_seeded_estimator_toy_noisy.txt +35 -0
  68. sable_he_research-0.2.0/docs/c4_compaction_correctness_output.json +65 -0
  69. sable_he_research-0.2.0/docs/c4_coverage_output.json +25 -0
  70. sable_he_research-0.2.0/docs/c4_projective_design.md +17 -0
  71. sable_he_research-0.2.0/docs/c4_v123_comparison_output.json +42 -0
  72. sable_he_research-0.2.0/docs/c5_arithmetic_scope_and_benchmarks.md +48 -0
  73. sable_he_research-0.2.0/docs/c5_arithmetic_suite_output.csv +101 -0
  74. sable_he_research-0.2.0/docs/c5_arithmetic_suite_output.json +2455 -0
  75. sable_he_research-0.2.0/docs/c5_arithmetic_suite_output.txt +811 -0
  76. sable_he_research-0.2.0/docs/c5_arithmetic_suite_stdout.txt +811 -0
  77. sable_he_research-0.2.0/docs/c5_arithmetic_validation_report.md +71 -0
  78. sable_he_research-0.2.0/docs/c5_attack_estimator_output.json +113 -0
  79. sable_he_research-0.2.0/docs/c5_attack_surface_c4_toy_noisy.json +113 -0
  80. sable_he_research-0.2.0/docs/c5_attack_surface_c4_toy_noisy.txt +22 -0
  81. sable_he_research-0.2.0/docs/c5_attack_surface_design_smallq.json +1733 -0
  82. sable_he_research-0.2.0/docs/c5_attack_surface_design_smallq.txt +26 -0
  83. sable_he_research-0.2.0/docs/c5_baseline_comparison.csv +21 -0
  84. sable_he_research-0.2.0/docs/c5_baseline_comparison.json +392 -0
  85. sable_he_research-0.2.0/docs/c5_baseline_comparison_output.json +392 -0
  86. sable_he_research-0.2.0/docs/c5_baseline_comparison_stdout.txt +392 -0
  87. sable_he_research-0.2.0/docs/c5_baseline_test.csv +5 -0
  88. sable_he_research-0.2.0/docs/c5_baseline_test.json +88 -0
  89. sable_he_research-0.2.0/docs/c5_final_summary.md +53 -0
  90. sable_he_research-0.2.0/docs/c5_operations_and_benchmarks_report.md +60 -0
  91. sable_he_research-0.2.0/docs/c5_surface_output.json +21 -0
  92. sable_he_research-0.2.0/docs/c5_surface_stdout.txt +21 -0
  93. sable_he_research-0.2.0/docs/c6_parameter_grid_stdout.txt +1 -0
  94. sable_he_research-0.2.0/docs/c6_relation_attack_model.md +65 -0
  95. sable_he_research-0.2.0/docs/c6_relation_estimator_stdout.txt +148 -0
  96. sable_he_research-0.2.0/docs/c6_validation_report.md +65 -0
  97. sable_he_research-0.2.0/docs/c7_arithmetic_suite_output.csv +61 -0
  98. sable_he_research-0.2.0/docs/c7_arithmetic_suite_output.json +1779 -0
  99. sable_he_research-0.2.0/docs/c7_arithmetic_suite_stdout.txt +671 -0
  100. sable_he_research-0.2.0/docs/c7_baseline_comparison.csv +21 -0
  101. sable_he_research-0.2.0/docs/c7_baseline_comparison.json +454 -0
  102. sable_he_research-0.2.0/docs/c7_baseline_comparison_output.csv +21 -0
  103. sable_he_research-0.2.0/docs/c7_baseline_comparison_output.json +454 -0
  104. sable_he_research-0.2.0/docs/c7_baseline_comparison_stdout.txt +454 -0
  105. sable_he_research-0.2.0/docs/c7_basis_screen_output.json +95 -0
  106. sable_he_research-0.2.0/docs/c7_basis_screen_stdout.txt +95 -0
  107. sable_he_research-0.2.0/docs/c7_final_readiness_report.md +56 -0
  108. sable_he_research-0.2.0/docs/c7_final_summary.md +40 -0
  109. sable_he_research-0.2.0/docs/c7_readiness_output.json +130 -0
  110. sable_he_research-0.2.0/docs/c7_readiness_stdout.txt +130 -0
  111. sable_he_research-0.2.0/docs/c7_relation_estimator_block1.json +303 -0
  112. sable_he_research-0.2.0/docs/c7_relation_estimator_block3.json +223 -0
  113. sable_he_research-0.2.0/docs/c7_relation_estimator_coordinate.json +183 -0
  114. sable_he_research-0.2.0/docs/c7_relation_estimator_screened.json +213 -0
  115. sable_he_research-0.2.0/docs/c7_relation_resistant_design.md +25 -0
  116. sable_he_research-0.2.0/docs/c7_relation_screen_output.json +138 -0
  117. sable_he_research-0.2.0/docs/c7_relation_screen_stderr.txt +29 -0
  118. sable_he_research-0.2.0/docs/c7_relation_screen_stdout.txt +48 -0
  119. sable_he_research-0.2.0/docs/c7_screened_stdout.txt +64 -0
  120. sable_he_research-0.2.0/docs/c8_artifact_manifest.txt +16 -0
  121. sable_he_research-0.2.0/docs/c8_final_readiness_statement.md +23 -0
  122. sable_he_research-0.2.0/docs/compliance/c8_certification_strategy.md +46 -0
  123. sable_he_research-0.2.0/docs/compliance/c8_status_matrix.md +16 -0
  124. sable_he_research-0.2.0/docs/compliance/c8_why_not_production_or_certified.md +70 -0
  125. sable_he_research-0.2.0/docs/correctness_output.txt +10 -0
  126. sable_he_research-0.2.0/docs/cryptanalysis_checklist.md +39 -0
  127. sable_he_research-0.2.0/docs/depth_sweep_output.txt +32 -0
  128. sable_he_research-0.2.0/docs/estimator_candidate_depth1_rough.txt +18 -0
  129. sable_he_research-0.2.0/docs/estimator_output.txt +19 -0
  130. sable_he_research-0.2.0/docs/existing_methods_comparison_notes.md +21 -0
  131. sable_he_research-0.2.0/docs/fl/AGGREGATION_METHODS.md +32 -0
  132. sable_he_research-0.2.0/docs/fl/FEDERATED_LEARNING_GUIDE.md +114 -0
  133. sable_he_research-0.2.0/docs/fl/GITHUB_AND_PYPI_PUBLISHING.md +77 -0
  134. sable_he_research-0.2.0/docs/fl/SECURITY_AND_SCOPE.md +19 -0
  135. sable_he_research-0.2.0/docs/fl/TENSOR_ADAPTERS.md +40 -0
  136. sable_he_research-0.2.0/docs/generated/attack_sweep.csv +69 -0
  137. sable_he_research-0.2.0/docs/generated/benchmark_proxy.csv +4 -0
  138. sable_he_research-0.2.0/docs/generated/c3_qary_surface_sweep.csv +7 -0
  139. sable_he_research-0.2.0/docs/generated/c5_arithmetic_suite.csv +61 -0
  140. sable_he_research-0.2.0/docs/generated/c5_baseline_comparison.csv +21 -0
  141. sable_he_research-0.2.0/docs/generated/c6_parameter_grid.csv +37 -0
  142. sable_he_research-0.2.0/docs/generated/c6_relation_c2_design_smallq.json +1754 -0
  143. sable_he_research-0.2.0/docs/generated/c6_relation_c2_design_smallq.txt +47 -0
  144. sable_he_research-0.2.0/docs/generated/c6_relation_c4_projective_toy_noisy.json +294 -0
  145. sable_he_research-0.2.0/docs/generated/c6_relation_c4_projective_toy_noisy.txt +45 -0
  146. sable_he_research-0.2.0/docs/generated/c6_relation_prototype_medium.json +2528 -0
  147. sable_he_research-0.2.0/docs/generated/c6_relation_prototype_medium.txt +47 -0
  148. sable_he_research-0.2.0/docs/generated/c6_relation_summary.json +4578 -0
  149. sable_he_research-0.2.0/docs/generated/c7_screened.json +64 -0
  150. sable_he_research-0.2.0/docs/generated/c7_screened.txt +64 -0
  151. sable_he_research-0.2.0/docs/generated/c7_screened_standard_noisy.json +64 -0
  152. sable_he_research-0.2.0/docs/generated/c7_screened_standard_noisy.txt +64 -0
  153. sable_he_research-0.2.0/docs/generated/c8_gate_status.json +35 -0
  154. sable_he_research-0.2.0/docs/generated/c8_gate_status.txt +6 -0
  155. sable_he_research-0.2.0/docs/generated/c8_gate_status_pretty.json +35 -0
  156. sable_he_research-0.2.0/docs/generated/c8_pytest_output.txt +3 -0
  157. sable_he_research-0.2.0/docs/generated/operation_benchmarks_v07.csv +13 -0
  158. sable_he_research-0.2.0/docs/generated/operation_support_matrix.csv +14 -0
  159. sable_he_research-0.2.0/docs/generated/pip_package_pytest_collect.txt +34 -0
  160. sable_he_research-0.2.0/docs/generated/pip_package_validation_summary.txt +4 -0
  161. sable_he_research-0.2.0/docs/generated/security_sweep.csv +13 -0
  162. sable_he_research-0.2.0/docs/microbench_toy_clean.csv +0 -0
  163. sable_he_research-0.2.0/docs/next_step_summary.md +13 -0
  164. sable_he_research-0.2.0/docs/operation_benchmarks_v07.json +822 -0
  165. sable_he_research-0.2.0/docs/operation_benchmarks_v07_output.json +197 -0
  166. sable_he_research-0.2.0/docs/operation_support_matrix.csv +14 -0
  167. sable_he_research-0.2.0/docs/operation_support_matrix.json +106 -0
  168. sable_he_research-0.2.0/docs/operation_support_matrix.md +15 -0
  169. sable_he_research-0.2.0/docs/operation_support_matrix_output.md +15 -0
  170. sable_he_research-0.2.0/docs/parameter_sweep_output.txt +180 -0
  171. sable_he_research-0.2.0/docs/performance_comparison_existing_methods.md +30 -0
  172. sable_he_research-0.2.0/docs/pip/API_GUIDE.md +74 -0
  173. sable_he_research-0.2.0/docs/pip/BENCHMARKING.md +45 -0
  174. sable_he_research-0.2.0/docs/pip/BUILD_AND_TEST_REPORT.md +34 -0
  175. sable_he_research-0.2.0/docs/pip/CLI_GUIDE.md +49 -0
  176. sable_he_research-0.2.0/docs/pip/DEVELOPMENT.md +44 -0
  177. sable_he_research-0.2.0/docs/pip/FL_AGGREGATION.md +38 -0
  178. sable_he_research-0.2.0/docs/pip/INSTALLATION.md +77 -0
  179. sable_he_research-0.2.0/docs/pip/OPERATIONS.md +43 -0
  180. sable_he_research-0.2.0/docs/pip/PACKAGE_GUIDE.md +106 -0
  181. sable_he_research-0.2.0/docs/pip/QUICKSTART.md +72 -0
  182. sable_he_research-0.2.0/docs/pip/SECURITY_AND_LIMITATIONS.md +42 -0
  183. sable_he_research-0.2.0/docs/qary_lpn_surface_estimator.md +16 -0
  184. sable_he_research-0.2.0/docs/references.md +25 -0
  185. sable_he_research-0.2.0/docs/security/SECURITY_STATUS.md +28 -0
  186. sable_he_research-0.2.0/docs/security/THREAT_MODEL.md +12 -0
  187. sable_he_research-0.2.0/docs/security/c8_production_hardening_requirements.md +45 -0
  188. sable_he_research-0.2.0/docs/security_estimator_prototype_medium.txt +58 -0
  189. sable_he_research-0.2.0/docs/security_estimator_toy_noisy.txt +59 -0
  190. sable_he_research-0.2.0/docs/security_feasibility_grid.csv +13 -0
  191. sable_he_research-0.2.0/docs/security_sweep_output.csv +13 -0
  192. sable_he_research-0.2.0/docs/standardization/c8_submission_package_checklist.md +41 -0
  193. sable_he_research-0.2.0/docs/test_output.txt +2 -0
  194. sable_he_research-0.2.0/docs/test_output_c2.txt +2 -0
  195. sable_he_research-0.2.0/docs/test_output_c3_seeded.txt +2 -0
  196. sable_he_research-0.2.0/docs/test_output_c4_projective.txt +2 -0
  197. sable_he_research-0.2.0/docs/test_output_c5.txt +3 -0
  198. sable_he_research-0.2.0/docs/test_output_c6.txt +3 -0
  199. sable_he_research-0.2.0/docs/test_output_c7.txt +3 -0
  200. sable_he_research-0.2.0/docs/test_output_c7_final.txt +3 -0
  201. sable_he_research-0.2.0/docs/test_output_v2.txt +2 -0
  202. sable_he_research-0.2.0/docs/tutorials/ARITHMETIC_TUTORIAL.md +31 -0
  203. sable_he_research-0.2.0/docs/tutorials/BOOLEAN_TUTORIAL.md +27 -0
  204. sable_he_research-0.2.0/docs/tutorials/QUICKSTART.md +64 -0
  205. sable_he_research-0.2.0/docs/user/CLI.md +63 -0
  206. sable_he_research-0.2.0/docs/user/INSTALLATION.md +44 -0
  207. sable_he_research-0.2.0/docs/user/QUICKSTART.md +55 -0
  208. sable_he_research-0.2.0/docs/validation_plan.md +43 -0
  209. sable_he_research-0.2.0/docs/validation_report.md +85 -0
  210. sable_he_research-0.2.0/docs/validation_report_c2.md +70 -0
  211. sable_he_research-0.2.0/docs/validation_report_c4.md +29 -0
  212. sable_he_research-0.2.0/examples/01_quickstart_mul.py +29 -0
  213. sable_he_research-0.2.0/examples/02_arithmetic_suite.py +37 -0
  214. sable_he_research-0.2.0/examples/03_boolean_gates.py +36 -0
  215. sable_he_research-0.2.0/examples/04_estimators.py +16 -0
  216. sable_he_research-0.2.0/examples/05_fedavg.py +29 -0
  217. sable_he_research-0.2.0/examples/05_fedavg_arrays.py +20 -0
  218. sable_he_research-0.2.0/examples/06_fedavg_model_tree.py +17 -0
  219. sable_he_research-0.2.0/examples/06_fl_methods.py +25 -0
  220. sable_he_research-0.2.0/examples/07_plain_robust_aggregation.py +18 -0
  221. sable_he_research-0.2.0/examples/README.md +12 -0
  222. sable_he_research-0.2.0/examples/arithmetic_demo.py +25 -0
  223. sable_he_research-0.2.0/examples/arithmetic_operations.py +35 -0
  224. sable_he_research-0.2.0/examples/boolean_gates.py +30 -0
  225. sable_he_research-0.2.0/examples/estimator_demo.py +13 -0
  226. sable_he_research-0.2.0/examples/fl_fedavg.py +24 -0
  227. sable_he_research-0.2.0/examples/fl_numpy_keras_weights.py +23 -0
  228. sable_he_research-0.2.0/examples/parameter_estimate.py +7 -0
  229. sable_he_research-0.2.0/examples/quickstart.py +30 -0
  230. sable_he_research-0.2.0/examples/quickstart_multiply.py +18 -0
  231. sable_he_research-0.2.0/paper/sable_he_latex/README.md +37 -0
  232. sable_he_research-0.2.0/paper/sable_he_latex/appendices/a_pseudocode.tex +104 -0
  233. sable_he_research-0.2.0/paper/sable_he_latex/appendices/b_piling_up.tex +36 -0
  234. sable_he_research-0.2.0/paper/sable_he_latex/appendices/c_reviewer_checklist.tex +42 -0
  235. sable_he_research-0.2.0/paper/sable_he_latex/appendices/d_attack_screening.tex +75 -0
  236. sable_he_research-0.2.0/paper/sable_he_latex/appendices/e_c2_block_dictionary.tex +48 -0
  237. sable_he_research-0.2.0/paper/sable_he_latex/appendices/f_c3_seeded_dictionary.tex +70 -0
  238. sable_he_research-0.2.0/paper/sable_he_latex/appendices/g_c2_public_surface.tex +57 -0
  239. sable_he_research-0.2.0/paper/sable_he_latex/appendices/h_c4_projective_basis.tex +109 -0
  240. sable_he_research-0.2.0/paper/sable_he_latex/appendices/i_c5_arithmetic_operations.tex +42 -0
  241. sable_he_research-0.2.0/paper/sable_he_latex/appendices/j_c5_attack_surface.tex +32 -0
  242. sable_he_research-0.2.0/paper/sable_he_latex/appendices/j_c5_baselines_surface.tex +30 -0
  243. sable_he_research-0.2.0/paper/sable_he_latex/appendices/k_c6_relation_surface.tex +101 -0
  244. sable_he_research-0.2.0/paper/sable_he_latex/appendices/l_c7_relation_resistant.tex +132 -0
  245. sable_he_research-0.2.0/paper/sable_he_latex/macros.tex +74 -0
  246. sable_he_research-0.2.0/paper/sable_he_latex/main.pdf +0 -0
  247. sable_he_research-0.2.0/paper/sable_he_latex/main.tex +47 -0
  248. sable_he_research-0.2.0/paper/sable_he_latex/manual_references.tex +158 -0
  249. sable_he_research-0.2.0/paper/sable_he_latex/references.bib +300 -0
  250. sable_he_research-0.2.0/paper/sable_he_latex/references_manual.tex +171 -0
  251. sable_he_research-0.2.0/paper/sable_he_latex/sable-he-c4-projective.pdf +0 -0
  252. sable_he_research-0.2.0/paper/sable_he_latex/sable-he-c5-arithmetic-baselines.pdf +0 -0
  253. sable_he_research-0.2.0/paper/sable_he_latex/sable-he-c5-arithmetic.pdf +0 -0
  254. sable_he_research-0.2.0/paper/sable_he_latex/sable-he-c5-operations.pdf +0 -0
  255. sable_he_research-0.2.0/paper/sable_he_latex/sable-he-c6-relations.pdf +0 -0
  256. sable_he_research-0.2.0/paper/sable_he_latex/sable-he-c7-final.pdf +0 -0
  257. sable_he_research-0.2.0/paper/sable_he_latex/sable-he-c7-ready.pdf +0 -0
  258. sable_he_research-0.2.0/paper/sable_he_latex/sections/01_introduction.tex +66 -0
  259. sable_he_research-0.2.0/paper/sable_he_latex/sections/02_preliminaries.tex +84 -0
  260. sable_he_research-0.2.0/paper/sable_he_latex/sections/03_design_overview.tex +78 -0
  261. sable_he_research-0.2.0/paper/sable_he_latex/sections/04_core_primitives.tex +151 -0
  262. sable_he_research-0.2.0/paper/sable_he_latex/sections/05_full_construction.tex +141 -0
  263. sable_he_research-0.2.0/paper/sable_he_latex/sections/06_correctness.tex +172 -0
  264. sable_he_research-0.2.0/paper/sable_he_latex/sections/07_security.tex +90 -0
  265. sable_he_research-0.2.0/paper/sable_he_latex/sections/08_efficiency_parameters.tex +101 -0
  266. sable_he_research-0.2.0/paper/sable_he_latex/sections/09_validation.tex +80 -0
  267. sable_he_research-0.2.0/paper/sable_he_latex/sections/10_limitations_future.tex +62 -0
  268. sable_he_research-0.2.0/pyproject.toml +53 -0
  269. sable_he_research-0.2.0/setup.cfg +4 -0
  270. sable_he_research-0.2.0/setup.py +3 -0
  271. sable_he_research-0.2.0/src/sable/__init__.py +149 -0
  272. sable_he_research-0.2.0/src/sable/additive_basis.py +333 -0
  273. sable_he_research-0.2.0/src/sable/arithmetic.py +349 -0
  274. sable_he_research-0.2.0/src/sable/attack.py +88 -0
  275. sable_he_research-0.2.0/src/sable/attack_estimator.py +521 -0
  276. sable_he_research-0.2.0/src/sable/attacks.py +354 -0
  277. sable_he_research-0.2.0/src/sable/baseline.py +113 -0
  278. sable_he_research-0.2.0/src/sable/baselines.py +153 -0
  279. sable_he_research-0.2.0/src/sable/c2_attack_surface.py +339 -0
  280. sable_he_research-0.2.0/src/sable/c2clpn.py +444 -0
  281. sable_he_research-0.2.0/src/sable/c4_estimator.py +89 -0
  282. sable_he_research-0.2.0/src/sable/c5_attack_estimator.py +200 -0
  283. sable_he_research-0.2.0/src/sable/c5_c4_surface.py +144 -0
  284. sable_he_research-0.2.0/src/sable/c5_surface.py +132 -0
  285. sable_he_research-0.2.0/src/sable/c6_relation_estimator.py +392 -0
  286. sable_he_research-0.2.0/src/sable/c7_basis.py +266 -0
  287. sable_he_research-0.2.0/src/sable/c7_relation_estimator.py +371 -0
  288. sable_he_research-0.2.0/src/sable/c7_relation_resistant.py +397 -0
  289. sable_he_research-0.2.0/src/sable/c7_relation_screen.py +240 -0
  290. sable_he_research-0.2.0/src/sable/c7_screened_basis.py +563 -0
  291. sable_he_research-0.2.0/src/sable/cli.py +425 -0
  292. sable_he_research-0.2.0/src/sable/clpn.py +111 -0
  293. sable_he_research-0.2.0/src/sable/clpn_c2.py +180 -0
  294. sable_he_research-0.2.0/src/sable/clpn_c3_seeded.py +119 -0
  295. sable_he_research-0.2.0/src/sable/clpn_c4_basis.py +265 -0
  296. sable_he_research-0.2.0/src/sable/clpn_c7_screened.py +92 -0
  297. sable_he_research-0.2.0/src/sable/clpn_seeded.py +152 -0
  298. sable_he_research-0.2.0/src/sable/codes.py +96 -0
  299. sable_he_research-0.2.0/src/sable/crt.py +41 -0
  300. sable_he_research-0.2.0/src/sable/estimator.py +151 -0
  301. sable_he_research-0.2.0/src/sable/estimator_c2.py +265 -0
  302. sable_he_research-0.2.0/src/sable/estimator_seeded.py +151 -0
  303. sable_he_research-0.2.0/src/sable/field.py +121 -0
  304. sable_he_research-0.2.0/src/sable/fl.py +799 -0
  305. sable_he_research-0.2.0/src/sable/gsw.py +90 -0
  306. sable_he_research-0.2.0/src/sable/operation_profiles.py +124 -0
  307. sable_he_research-0.2.0/src/sable/operation_support.py +49 -0
  308. sable_he_research-0.2.0/src/sable/operations.py +260 -0
  309. sable_he_research-0.2.0/src/sable/params.py +315 -0
  310. sable_he_research-0.2.0/src/sable/py.typed +0 -0
  311. sable_he_research-0.2.0/src/sable/qary_lpn_estimator.py +157 -0
  312. sable_he_research-0.2.0/src/sable/regev.py +38 -0
  313. sable_he_research-0.2.0/src/sable/sable.py +354 -0
  314. sable_he_research-0.2.0/src/sable/sable_c2.py +18 -0
  315. sable_he_research-0.2.0/src/sable/sable_crt.py +40 -0
  316. sable_he_research-0.2.0/src/sable/security_estimator.py +472 -0
  317. sable_he_research-0.2.0/src/sable/sparse.py +166 -0
  318. sable_he_research-0.2.0/src/sable/version.py +4 -0
  319. sable_he_research-0.2.0/src/sable_he_research.egg-info/PKG-INFO +197 -0
  320. sable_he_research-0.2.0/src/sable_he_research.egg-info/SOURCES.txt +357 -0
  321. sable_he_research-0.2.0/src/sable_he_research.egg-info/dependency_links.txt +1 -0
  322. sable_he_research-0.2.0/src/sable_he_research.egg-info/entry_points.txt +4 -0
  323. sable_he_research-0.2.0/src/sable_he_research.egg-info/requires.txt +28 -0
  324. sable_he_research-0.2.0/src/sable_he_research.egg-info/top_level.txt +1 -0
  325. sable_he_research-0.2.0/tests/test_additive_basis_c4.py +26 -0
  326. sable_he_research-0.2.0/tests/test_arithmetic_operations.py +63 -0
  327. sable_he_research-0.2.0/tests/test_arithmetic_ops_c5.py +64 -0
  328. sable_he_research-0.2.0/tests/test_attack_estimator.py +29 -0
  329. sable_he_research-0.2.0/tests/test_attacks.py +23 -0
  330. sable_he_research-0.2.0/tests/test_baseline.py +8 -0
  331. sable_he_research-0.2.0/tests/test_block_dictionary_c2.py +20 -0
  332. sable_he_research-0.2.0/tests/test_c2_attack_surface.py +20 -0
  333. sable_he_research-0.2.0/tests/test_c2_end_to_end.py +27 -0
  334. sable_he_research-0.2.0/tests/test_c4_compactor.py +45 -0
  335. sable_he_research-0.2.0/tests/test_c4_estimator.py +18 -0
  336. sable_he_research-0.2.0/tests/test_c5_attack_estimator.py +32 -0
  337. sable_he_research-0.2.0/tests/test_c5_c4_surface.py +16 -0
  338. sable_he_research-0.2.0/tests/test_c5_surface.py +13 -0
  339. sable_he_research-0.2.0/tests/test_c6_relation_estimator.py +48 -0
  340. sable_he_research-0.2.0/tests/test_c7_relation_resistant.py +102 -0
  341. sable_he_research-0.2.0/tests/test_cli_package.py +32 -0
  342. sable_he_research-0.2.0/tests/test_clpn.py +17 -0
  343. sable_he_research-0.2.0/tests/test_clpn_c2.py +27 -0
  344. sable_he_research-0.2.0/tests/test_clpn_seeded.py +46 -0
  345. sable_he_research-0.2.0/tests/test_codes_c2.py +25 -0
  346. sable_he_research-0.2.0/tests/test_crt_c2.py +23 -0
  347. sable_he_research-0.2.0/tests/test_end_to_end.py +33 -0
  348. sable_he_research-0.2.0/tests/test_estimator_c2.py +18 -0
  349. sable_he_research-0.2.0/tests/test_estimator_seeded.py +23 -0
  350. sable_he_research-0.2.0/tests/test_field.py +16 -0
  351. sable_he_research-0.2.0/tests/test_fl_aggregation.py +57 -0
  352. sable_he_research-0.2.0/tests/test_gsw.py +13 -0
  353. sable_he_research-0.2.0/tests/test_operation_profiles.py +24 -0
  354. sable_he_research-0.2.0/tests/test_operations_arithmetic_c5.py +96 -0
  355. sable_he_research-0.2.0/tests/test_regev.py +13 -0
  356. sable_he_research-0.2.0/tests/test_sable_c2.py +26 -0
  357. sable_he_research-0.2.0/tests/test_security_estimator.py +17 -0
  358. sable_he_research-0.2.0/tests/test_seeded_block_dictionary_c2.py +45 -0
  359. sable_he_research-0.2.0/vectors/sable_c7_toy_clean_kat.json +83 -0
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 SABLE-HE research draft contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,11 @@
1
+ include README.md
2
+ include SECURITY.md
3
+ include LICENSE
4
+ include VERSION
5
+ include RELEASE_NOTES*.md
6
+ recursive-include docs *.md *.txt *.json *.csv
7
+ recursive-include examples *.py *.md
8
+ recursive-include vectors *.json
9
+ recursive-include paper *.tex *.bib *.md *.pdf *.sty
10
+ recursive-exclude * __pycache__
11
+ recursive-exclude * *.py[co]
@@ -0,0 +1,197 @@
1
+ Metadata-Version: 2.4
2
+ Name: sable-he-research
3
+ Version: 0.2.0
4
+ Summary: Federated-learning aggregation and research toolkit for SABLE-HE, a code/LPN-based leveled homomorphic-encryption candidate.
5
+ Author: SABLE-HE research draft contributors
6
+ Maintainer: SABLE-HE research draft contributors
7
+ License-Expression: MIT
8
+ Keywords: homomorphic encryption,post-quantum cryptography,LPN,code-based cryptography,research prototype,federated learning,secure aggregation,FedAvg
9
+ Classifier: Development Status :: 4 - Beta
10
+ Classifier: Intended Audience :: Science/Research
11
+ Classifier: Programming Language :: Python :: 3
12
+ Classifier: Programming Language :: Python :: 3.10
13
+ Classifier: Programming Language :: Python :: 3.11
14
+ Classifier: Programming Language :: Python :: 3.12
15
+ Classifier: Programming Language :: Python :: 3.13
16
+ Classifier: Topic :: Security :: Cryptography
17
+ Classifier: Topic :: Scientific/Engineering :: Mathematics
18
+ Classifier: Typing :: Typed
19
+ Requires-Python: >=3.10
20
+ Description-Content-Type: text/markdown
21
+ License-File: LICENSE
22
+ Provides-Extra: dev
23
+ Requires-Dist: pytest>=7; extra == "dev"
24
+ Requires-Dist: build>=1.2; extra == "dev"
25
+ Requires-Dist: twine>=5; extra == "dev"
26
+ Provides-Extra: numpy
27
+ Requires-Dist: numpy>=1.24; extra == "numpy"
28
+ Provides-Extra: fl
29
+ Requires-Dist: numpy>=1.24; extra == "fl"
30
+ Provides-Extra: tensorflow
31
+ Requires-Dist: tensorflow>=2.15; extra == "tensorflow"
32
+ Provides-Extra: keras
33
+ Requires-Dist: keras>=3.0; extra == "keras"
34
+ Provides-Extra: torch
35
+ Requires-Dist: torch>=2.0; extra == "torch"
36
+ Provides-Extra: all
37
+ Requires-Dist: numpy>=1.24; extra == "all"
38
+ Requires-Dist: tensorflow>=2.15; extra == "all"
39
+ Requires-Dist: keras>=3.0; extra == "all"
40
+ Requires-Dist: torch>=2.0; extra == "all"
41
+ Provides-Extra: docs
42
+ Dynamic: license-file
43
+
44
+ # SABLE-HE
45
+
46
+ SABLE-HE is a Python research-preview package for code/LPN-based homomorphic arithmetic and federated-learning aggregation experiments.
47
+
48
+ The package includes:
49
+
50
+ - C7 relation-resistant compaction APIs for SABLE-HE experiments;
51
+ - arithmetic operations over the native prime-field message space;
52
+ - encrypted FL aggregation helpers for `sum`, `mean`, `weighted_sum`, `weighted_average`, `FedAvg`, and `FedSGD`;
53
+ - plaintext/decryptor-side robust FL aggregation helpers for coordinate min/max, median, trimmed mean, geometric median, norm-clipped mean, Krum, and Multi-Krum;
54
+ - adapters for Python lists, NumPy arrays, TensorFlow tensors, Keras `get_weights()` lists/models, and Torch tensors when those optional libraries are installed;
55
+ - CLI demos, estimators, tests, and documentation.
56
+
57
+ > Security note: this package is a research-preview implementation. It does not ship externally certified security parameters. Use it for research, education, validation, and reproducible experiments unless and until your chosen parameter sets and implementation have been independently reviewed.
58
+
59
+ ## Install
60
+
61
+ From a local wheel:
62
+
63
+ ```bash
64
+ python -m pip install dist/sable_he_research-0.2.0-py3-none-any.whl
65
+ ```
66
+
67
+ From source:
68
+
69
+ ```bash
70
+ python -m pip install .
71
+ ```
72
+
73
+ With NumPy adapters:
74
+
75
+ ```bash
76
+ python -m pip install .[numpy]
77
+ ```
78
+
79
+ For local development:
80
+
81
+ ```bash
82
+ python -m pip install -e .[dev,numpy]
83
+ python -m pytest -q
84
+ ```
85
+
86
+ ## Quick encrypted FedAvg example
87
+
88
+ ```python
89
+ from sable import PRESETS, keygen_c7
90
+ from sable.fl import EncryptedFLAggregator, PlainFLAggregator
91
+
92
+ params = PRESETS["fl_demo_clean"]
93
+ kp = keygen_c7(params, seed=123, mode="coordinate")
94
+
95
+ agg = EncryptedFLAggregator(kp, scale=1000, seed=9000)
96
+
97
+ client_weights = [
98
+ [0.12, -0.34, 1.20],
99
+ [0.10, -0.30, 1.25],
100
+ [0.20, -0.40, 1.10],
101
+ ]
102
+ sample_counts = [80, 20, 100]
103
+
104
+ encrypted_clients = [
105
+ agg.encrypt_model(weights, seed=1000 + i)
106
+ for i, weights in enumerate(client_weights)
107
+ ]
108
+
109
+ server_result = agg.fedavg(encrypted_clients, sample_counts)
110
+ final_weights = agg.decrypt_model(server_result)
111
+
112
+ print(final_weights) # [0.158, -0.366, 1.155]
113
+
114
+ reference = PlainFLAggregator().fedavg(client_weights, sample_counts)
115
+ print(reference)
116
+ ```
117
+
118
+ ## NumPy / Keras-style model weights
119
+
120
+ ```python
121
+ import numpy as np
122
+ from sable import PRESETS, keygen_c7
123
+ from sable.fl import EncryptedFLAggregator
124
+
125
+ params = PRESETS["fl_demo_clean"]
126
+ kp = keygen_c7(params, seed=123, mode="coordinate")
127
+ agg = EncryptedFLAggregator(kp, scale=1000)
128
+
129
+ client_a = [np.array([1.0, 2.0]), np.array([[3.0], [4.0]])]
130
+ client_b = [np.array([2.0, 4.0]), np.array([[6.0], [8.0]])]
131
+
132
+ enc_a = agg.encrypt_model(client_a, seed=11)
133
+ enc_b = agg.encrypt_model(client_b, seed=22)
134
+
135
+ enc_avg = agg.fedavg([enc_a, enc_b], [1, 3])
136
+ weights = agg.decrypt_model(enc_avg)
137
+
138
+ print(weights[0]) # [1.75, 3.50]
139
+ print(weights[1]) # [[5.25], [7.00]]
140
+ ```
141
+
142
+ For a Keras model, pass either `model.get_weights()` or the model itself to `encrypt_model`. To put decrypted weights back into a model, call `model.set_weights(weights)` or use `sable.fl.assign_model_weights(model, weights)`.
143
+
144
+ ## CLI
145
+
146
+ ```bash
147
+ sable-he --version
148
+ sable-he fl-capabilities
149
+ sable-he fl-demo --json
150
+ sable-he demo --operation add --x 12 --y 20
151
+ sable-he estimate --preset fl_demo_clean --depth 1
152
+ sable-he readiness
153
+ ```
154
+
155
+ ## FL method support
156
+
157
+ Encrypted-native methods:
158
+
159
+ - `sum`
160
+ - `mean`
161
+ - `weighted_sum`
162
+ - `weighted_average`
163
+ - `fedavg`
164
+ - `fedsgd`
165
+
166
+ Plain/decryptor-side methods:
167
+
168
+ - `coordinate_min`
169
+ - `coordinate_max`
170
+ - `coordinate_median`
171
+ - `trimmed_mean`
172
+ - `norm_clipped_mean`
173
+ - `geometric_median`
174
+ - `krum`
175
+ - `multi_krum`
176
+
177
+ Min/max/median/trimmed/Krum need comparison, sorting, norms, or pairwise distances. They are therefore available as plaintext tensor operations or after decryptor-side decryption, not as silent encrypted operations.
178
+
179
+ ## Documentation
180
+
181
+ Start here:
182
+
183
+ - `docs/FL_AGGREGATION.md` — detailed encrypted FedAvg and FL aggregation guide.
184
+ - `docs/API_REFERENCE.md` — API overview.
185
+ - `docs/CLI_REFERENCE.md` — command-line usage.
186
+ - `docs/GITHUB_PYPI_RELEASE_GUIDE.md` — how to publish to GitHub and PyPI.
187
+ - `SECURITY.md` — security status and reporting policy.
188
+
189
+ ## Repository layout
190
+
191
+ ```text
192
+ src/sable/ package source
193
+ tests/ pytest suite
194
+ examples/ runnable examples
195
+ docs/ user and release documentation
196
+ benchmarks/ benchmark/proxy scripts
197
+ ```
@@ -0,0 +1,154 @@
1
+ # SABLE-HE
2
+
3
+ SABLE-HE is a Python research-preview package for code/LPN-based homomorphic arithmetic and federated-learning aggregation experiments.
4
+
5
+ The package includes:
6
+
7
+ - C7 relation-resistant compaction APIs for SABLE-HE experiments;
8
+ - arithmetic operations over the native prime-field message space;
9
+ - encrypted FL aggregation helpers for `sum`, `mean`, `weighted_sum`, `weighted_average`, `FedAvg`, and `FedSGD`;
10
+ - plaintext/decryptor-side robust FL aggregation helpers for coordinate min/max, median, trimmed mean, geometric median, norm-clipped mean, Krum, and Multi-Krum;
11
+ - adapters for Python lists, NumPy arrays, TensorFlow tensors, Keras `get_weights()` lists/models, and Torch tensors when those optional libraries are installed;
12
+ - CLI demos, estimators, tests, and documentation.
13
+
14
+ > Security note: this package is a research-preview implementation. It does not ship externally certified security parameters. Use it for research, education, validation, and reproducible experiments unless and until your chosen parameter sets and implementation have been independently reviewed.
15
+
16
+ ## Install
17
+
18
+ From a local wheel:
19
+
20
+ ```bash
21
+ python -m pip install dist/sable_he_research-0.2.0-py3-none-any.whl
22
+ ```
23
+
24
+ From source:
25
+
26
+ ```bash
27
+ python -m pip install .
28
+ ```
29
+
30
+ With NumPy adapters:
31
+
32
+ ```bash
33
+ python -m pip install .[numpy]
34
+ ```
35
+
36
+ For local development:
37
+
38
+ ```bash
39
+ python -m pip install -e .[dev,numpy]
40
+ python -m pytest -q
41
+ ```
42
+
43
+ ## Quick encrypted FedAvg example
44
+
45
+ ```python
46
+ from sable import PRESETS, keygen_c7
47
+ from sable.fl import EncryptedFLAggregator, PlainFLAggregator
48
+
49
+ params = PRESETS["fl_demo_clean"]
50
+ kp = keygen_c7(params, seed=123, mode="coordinate")
51
+
52
+ agg = EncryptedFLAggregator(kp, scale=1000, seed=9000)
53
+
54
+ client_weights = [
55
+ [0.12, -0.34, 1.20],
56
+ [0.10, -0.30, 1.25],
57
+ [0.20, -0.40, 1.10],
58
+ ]
59
+ sample_counts = [80, 20, 100]
60
+
61
+ encrypted_clients = [
62
+ agg.encrypt_model(weights, seed=1000 + i)
63
+ for i, weights in enumerate(client_weights)
64
+ ]
65
+
66
+ server_result = agg.fedavg(encrypted_clients, sample_counts)
67
+ final_weights = agg.decrypt_model(server_result)
68
+
69
+ print(final_weights) # [0.158, -0.366, 1.155]
70
+
71
+ reference = PlainFLAggregator().fedavg(client_weights, sample_counts)
72
+ print(reference)
73
+ ```
74
+
75
+ ## NumPy / Keras-style model weights
76
+
77
+ ```python
78
+ import numpy as np
79
+ from sable import PRESETS, keygen_c7
80
+ from sable.fl import EncryptedFLAggregator
81
+
82
+ params = PRESETS["fl_demo_clean"]
83
+ kp = keygen_c7(params, seed=123, mode="coordinate")
84
+ agg = EncryptedFLAggregator(kp, scale=1000)
85
+
86
+ client_a = [np.array([1.0, 2.0]), np.array([[3.0], [4.0]])]
87
+ client_b = [np.array([2.0, 4.0]), np.array([[6.0], [8.0]])]
88
+
89
+ enc_a = agg.encrypt_model(client_a, seed=11)
90
+ enc_b = agg.encrypt_model(client_b, seed=22)
91
+
92
+ enc_avg = agg.fedavg([enc_a, enc_b], [1, 3])
93
+ weights = agg.decrypt_model(enc_avg)
94
+
95
+ print(weights[0]) # [1.75, 3.50]
96
+ print(weights[1]) # [[5.25], [7.00]]
97
+ ```
98
+
99
+ For a Keras model, pass either `model.get_weights()` or the model itself to `encrypt_model`. To put decrypted weights back into a model, call `model.set_weights(weights)` or use `sable.fl.assign_model_weights(model, weights)`.
100
+
101
+ ## CLI
102
+
103
+ ```bash
104
+ sable-he --version
105
+ sable-he fl-capabilities
106
+ sable-he fl-demo --json
107
+ sable-he demo --operation add --x 12 --y 20
108
+ sable-he estimate --preset fl_demo_clean --depth 1
109
+ sable-he readiness
110
+ ```
111
+
112
+ ## FL method support
113
+
114
+ Encrypted-native methods:
115
+
116
+ - `sum`
117
+ - `mean`
118
+ - `weighted_sum`
119
+ - `weighted_average`
120
+ - `fedavg`
121
+ - `fedsgd`
122
+
123
+ Plain/decryptor-side methods:
124
+
125
+ - `coordinate_min`
126
+ - `coordinate_max`
127
+ - `coordinate_median`
128
+ - `trimmed_mean`
129
+ - `norm_clipped_mean`
130
+ - `geometric_median`
131
+ - `krum`
132
+ - `multi_krum`
133
+
134
+ Min/max/median/trimmed/Krum need comparison, sorting, norms, or pairwise distances. They are therefore available as plaintext tensor operations or after decryptor-side decryption, not as silent encrypted operations.
135
+
136
+ ## Documentation
137
+
138
+ Start here:
139
+
140
+ - `docs/FL_AGGREGATION.md` — detailed encrypted FedAvg and FL aggregation guide.
141
+ - `docs/API_REFERENCE.md` — API overview.
142
+ - `docs/CLI_REFERENCE.md` — command-line usage.
143
+ - `docs/GITHUB_PYPI_RELEASE_GUIDE.md` — how to publish to GitHub and PyPI.
144
+ - `SECURITY.md` — security status and reporting policy.
145
+
146
+ ## Repository layout
147
+
148
+ ```text
149
+ src/sable/ package source
150
+ tests/ pytest suite
151
+ examples/ runnable examples
152
+ docs/ user and release documentation
153
+ benchmarks/ benchmark/proxy scripts
154
+ ```
@@ -0,0 +1,33 @@
1
+ # SABLE-HE v0.2.0 — Federated-learning aggregation API
2
+
3
+ ## Added
4
+
5
+ - `sable.fl` public FL aggregation module.
6
+ - Encrypted-native FL methods:
7
+ - sum
8
+ - mean
9
+ - weighted sum
10
+ - weighted average
11
+ - FedAvg
12
+ - FedSGD
13
+ - Plain/decryptor-side robust FL methods:
14
+ - coordinate min
15
+ - coordinate max
16
+ - coordinate median
17
+ - trimmed mean
18
+ - norm-clipped mean
19
+ - geometric median
20
+ - Krum
21
+ - Multi-Krum
22
+ - Python list, NumPy, TensorFlow, Keras, and Torch tensor/model adapters.
23
+ - CLI commands:
24
+ - `sable-he fl-demo`
25
+ - `sable-he fl-capabilities`
26
+ - `sable-he fl-methods`
27
+ - `fl_demo_clean` preset for reproducible fixed-point FL examples.
28
+ - Detailed FL and GitHub/PyPI release documentation.
29
+
30
+ ## Notes
31
+
32
+ - Encrypted min/max/median/trimmed/Krum are not advertised as native encrypted operations because they require comparison/sorting/distance circuits.
33
+ - The package remains a research-preview implementation without externally certified security parameters.
@@ -0,0 +1,20 @@
1
+ # SABLE-HE validation v0.4 - C3 seeded block-dictionary compaction
2
+
3
+ This release builds on the C2 block-dictionary compactor and adds a seeded
4
+ CLPN storage model. The evaluator still receives the same public LPN sample
5
+ surface, but the random CLPN matrices are derived from public seeds rather than
6
+ stored densely. The public `b` vectors remain explicit.
7
+
8
+ Main additions:
9
+
10
+ - `sable.clpn_seeded`: seeded linearly homomorphic q-ary LPN ciphertexts.
11
+ - `sable.clpn_c3_seeded`: seeded block-dictionary C2/C3 compaction keys.
12
+ - `sable.qary_lpn_estimator`: dedicated sparse/q-ary-LPN public-sample screen.
13
+ - `sable.estimator_seeded`: size, correctness, and attack-surface estimator
14
+ for the seeded C3 compactor.
15
+ - End-to-end tests for seeded compaction.
16
+ - Paper Appendix F describing the C3 seeded storage model.
17
+
18
+ Security status: research validation only. Seeded storage reduces materialized
19
+ key size but does not reduce the number of public LPN samples available to an
20
+ attacker.
@@ -0,0 +1,30 @@
1
+ # SABLE-HE v0.6: C4 projective additive-basis compaction
2
+
3
+ This release adds C4 projective additive-basis compaction.
4
+
5
+ ## New files
6
+
7
+ - `src/sable/additive_basis.py`
8
+ - `src/sable/clpn_c4_basis.py`
9
+ - `src/sable/c4_estimator.py`
10
+ - `tests/test_additive_basis_c4.py`
11
+ - `tests/test_c4_compactor.py`
12
+ - `tests/test_c4_estimator.py`
13
+ - `experiments/run_c4_coverage.py`
14
+ - `experiments/run_c4_compaction_correctness.py`
15
+ - `experiments/run_c4_v123_comparison.py`
16
+ - `docs/c4_projective_design.md`
17
+ - `docs/validation_report_c4.md`
18
+ - `paper/sable_he_latex/appendices/h_c4_projective_basis.tex`
19
+
20
+ ## Validation
21
+
22
+ `59 passed` under pytest.
23
+
24
+ ## Main result
25
+
26
+ For a block of width `b` over `F_q`, C4 uses `(q^b - 1)/(q - 1)` projective entries instead of the C2/C3 full dictionary size `q^b - 1`, while preserving one CLPN compaction term per active block.
27
+
28
+ ## Status
29
+
30
+ Research validation prototype only. Parameters are not certified secure.
@@ -0,0 +1,23 @@
1
+ # SABLE-HE v0.7 C5 arithmetic validation and C4 surface screen
2
+
3
+ ## Added
4
+
5
+ - High-level arithmetic API: `src/sable/operations.py`.
6
+ - C5 C4-projective public-surface estimator: `src/sable/c5_attack_estimator.py`.
7
+ - Operation support matrix: `src/sable/operation_support.py`.
8
+ - Arithmetic correctness tests for addition, subtraction, negation, scalar/plain operations, multiplication, square, powers, nonzero inverse/division, polynomial evaluation, and Boolean gates.
9
+ - Microbenchmark script: `benchmarks/benchmark_arithmetic.py`.
10
+ - Operation comparison outputs and C5 attack-surface outputs under `docs/`.
11
+ - Paper appendices for C5 arithmetic and public-surface screening.
12
+
13
+ ## Important result
14
+
15
+ We are not working only on multiplication. Multiplication is the main nonlinear primitive, but the expanded GSW representation supports the whole bounded-depth arithmetic circuit model over `F_q`.
16
+
17
+ ## Main limitation
18
+
19
+ Division and comparisons are not native. Division is only represented as nonzero finite-field inversion by exponentiation, which is expensive and unsuitable as a core primitive.
20
+
21
+ ## Validation
22
+
23
+ The v0.7 package passes the expanded test suite and includes pure-Python toy microbenchmarks. External optimized libraries were not installed, so only support/proxy comparisons are included for OpenFHE, SEAL, and TFHE-rs.
@@ -0,0 +1,47 @@
1
+ # SABLE-HE v0.7: C5 operation coverage, public-surface diagnostics, and baseline proxies
2
+
3
+ This release extends the C4 projective-compaction validation package in three ways.
4
+
5
+ ## 1. Arithmetic operation coverage
6
+
7
+ SABLE's native plaintext domain is the prime field F_q. The expanded GSW-style representation now exposes a public arithmetic layer for:
8
+
9
+ - public constants: gamma * I_N;
10
+ - zero and one;
11
+ - addition and subtraction;
12
+ - negation;
13
+ - public scalar multiplication;
14
+ - public constant addition/subtraction;
15
+ - encrypted multiplication;
16
+ - square and public powers;
17
+ - affine combinations and public-coefficient dot products;
18
+ - low-degree polynomial evaluation;
19
+ - Boolean gates on bits embedded as 0/1 in F_q: AND, OR, XOR, NOT, NAND, NOR, XNOR, implication.
20
+
21
+ Nonzero field inversion and division can be expressed by Fermat exponentiation, but this is expensive and undefined at zero. Integer comparison/order is not native.
22
+
23
+ ## 2. C5 C4 public-surface diagnostics
24
+
25
+ The package adds C5 diagnostics for C4 projective compaction. C4 reduces public entries relative to C2/C3 full dictionaries, but projective blocks of width at least two have many low-weight linear relations. The C5 screen quantifies public CLPN rows, dense public field elements, projective relation surfaces, and rough compaction noise bounds.
26
+
27
+ These screens are red-flag diagnostics only. They do not certify sparse-LPN or q-ary-LPN security.
28
+
29
+ ## 3. Baseline comparison proxies
30
+
31
+ The package now separates:
32
+
33
+ - measured pure-Python SABLE prototype timings on toy parameters;
34
+ - symbolic operation-count proxies for TFHE/FHEW, BFV/BGV, and CKKS-style baselines;
35
+ - operation support matrix describing which family best matches each workload.
36
+
37
+ The current validation environment does not run optimized OpenFHE, SEAL, or TFHE-rs wall-clock benchmarks. Do not interpret the pure-Python SABLE timings as speed comparisons against optimized libraries.
38
+
39
+ ## Validation
40
+
41
+ The v0.7 test suite passes:
42
+
43
+ ```text
44
+ 83 passed
45
+ ```
46
+
47
+ Generated validation outputs are in `docs/` and `docs/generated/`.
@@ -0,0 +1,29 @@
1
+ # SABLE-HE v0.7 C5 arithmetic and baseline package
2
+
3
+ This release adds the C5 validation layer.
4
+
5
+ ## Added
6
+
7
+ - Full public arithmetic interface for expanded SABLE ciphertexts:
8
+ addition, subtraction, negation, public scalar multiplication, public
9
+ constants, multiplication, squaring, powers, affine combinations, dot
10
+ products, polynomial evaluation, products, quadratic forms, and Boolean
11
+ gates encoded over F_q.
12
+ - End-to-end C4 compaction tests for the arithmetic operation suite.
13
+ - C5 operation-count/proxy comparison against TFHE/FHEW-style Boolean
14
+ evaluation, BFV/BGV exact arithmetic, and CKKS approximate arithmetic.
15
+ - C5 public-surface diagnostic for C4 projective compaction.
16
+
17
+ ## Main conclusion
18
+
19
+ SABLE is a low-degree arithmetic HE candidate, not merely a multiplication
20
+ demo. Multiplication is the nonlinear bottleneck. Once public constants and
21
+ linear operations are included, the construction evaluates arbitrary bounded
22
+ low-degree polynomial circuits over F_q.
23
+
24
+ ## Important caveat
25
+
26
+ The Python timings are validation-prototype timings only. They should not be
27
+ compared directly with optimized OpenFHE, SEAL, Concrete, TFHE-rs, or similar
28
+ libraries. The included comparison table is a workload/proxy table for fair
29
+ future benchmarking.
@@ -0,0 +1,16 @@
1
+ # Release notes: v0.8 C6 relation-surface estimator
2
+
3
+ C6 adds a dedicated estimator for C4 projective public relations.
4
+
5
+ Highlights:
6
+
7
+ - counts projective points, projective lines, and weight-3 relation triples;
8
+ - separates raw relation rows from rank-capped relation rows;
9
+ - screens row-difference CLPN samples and relation-derived known-zero samples;
10
+ - runs a compact parameter grid over block size and CLPN noise;
11
+ - updates the manuscript with Appendix K.
12
+
13
+ Main result: the full C4 projective basis should not be used as the main
14
+ security candidate for block width at least two without a new relation-resistant
15
+ argument. It is algebraically useful but exposes abundant low-weight public
16
+ relations.
@@ -0,0 +1,22 @@
1
+ # SABLE-HE v0.9 C7 Final Validation
2
+
3
+ This release is the final research-prototype checkpoint in the current sequence.
4
+
5
+ ## Main change
6
+
7
+ C7 replaces full projective C4 compaction as the main security candidate. C6 showed that full projective blocks contain many weight-3 public relations. C7 therefore makes coordinate relation-resistant compaction the default and keeps screened-random additive masks as an experimental optimization.
8
+
9
+ ## What is validated
10
+
11
+ - All prior C2/C3/C4/C5/C6 tests remain in the package.
12
+ - C7 coordinate compaction is implemented in `src/sable/c7_relation_resistant.py`.
13
+ - C7 arithmetic validation covers addition, subtraction, negation, scalar multiplication, constants, multiplication, squaring, affine combinations, dot products, polynomial evaluation, balanced products, quadratic forms, and Boolean gates encoded over `F_q`.
14
+ - Baseline comparison remains an operation-count/proxy comparison, not an optimized-library wall-clock claim.
15
+
16
+ ## Test result
17
+
18
+ `95 passed`
19
+
20
+ ## Final status
21
+
22
+ Ready to pause as a research prototype and manuscript package. Not ready for production, standards claims, or certified concrete security.
@@ -0,0 +1,25 @@
1
+ # Release notes: v0.9 C7 READY
2
+
3
+ This release makes C7 the conservative default research candidate.
4
+
5
+ ## Added
6
+
7
+ - `src/sable/c7_relation_resistant.py`
8
+ - `experiments/run_c7_arithmetic_suite.py`
9
+ - `experiments/run_c7_basis_screen.py`
10
+ - `experiments/run_c7_compare_baselines.py`
11
+ - `experiments/run_c7_readiness.py`
12
+ - `tests/test_c7_relation_resistant.py`
13
+ - `docs/c7_relation_resistant_design.md`
14
+ - `docs/c7_final_readiness_report.md`
15
+ - C7 appendix in the LaTeX manuscript
16
+
17
+ ## Validation
18
+
19
+ - Full pytest suite: 95 passed.
20
+ - C7 arithmetic suite: 20 operation families, 60 toy-clean trials, 0 failures.
21
+ - Baseline comparison: operation-count/proxy comparison against TFHE/FHEW, BFV/BGV, and CKKS-style families.
22
+
23
+ ## Research status
24
+
25
+ Ready as a research prototype and manuscript package. Not ready for production deployment or certified security claims.
@@ -0,0 +1,28 @@
1
+ # Release notes: v1.0-C8 readiness package
2
+
3
+ C8 does not claim production or certification status. It packages SABLE-HE-C7
4
+ for the next professional review stage: independent cryptanalysis,
5
+ implementation hardening, parameter validation, and standardization preparation.
6
+
7
+ Added:
8
+
9
+ - `SECURITY.md` vulnerability-reporting and safe-use notice.
10
+ - C8 production/certification/standardization status matrix.
11
+ - C8 certification strategy.
12
+ - C8 production-hardening requirements.
13
+ - C8 standardization-submission checklist.
14
+ - C8 readiness-gate tool.
15
+ - Toy deterministic KAT-vector generator and generated vector.
16
+ - CI workflow template.
17
+
18
+ Validation target:
19
+
20
+ - research artifact: green;
21
+ - internal validation: green;
22
+ - audit package: green;
23
+ - production cryptography: red;
24
+ - certified parameters: red;
25
+ - standardization-ready: amber.
26
+
27
+ This strict status is intentional. It prevents unsupported security claims while
28
+ making the project ready for the next evidence-gathering phase.