{"id":1810,"date":"2024-02-14T00:00:00","date_gmt":"2024-02-13T23:00:00","guid":{"rendered":"https:\/\/stap-wiki.fr\/index.php\/zk-3\/"},"modified":"2024-02-14T00:00:00","modified_gmt":"2024-02-13T23:00:00","slug":"zk-3","status":"publish","type":"page","link":"https:\/\/stap-wiki.fr\/index.php\/zk-3\/","title":{"rendered":"ZK"},"content":{"rendered":"<p>[vc_row us_bg_overlay_color=&#8221;#f5f5f5&#8243; us_shape_show_bottom=&#8221;1&#8243; us_shape_color_bottom=&#8221;#ffffff&#8221; css=&#8221;%7B%22default%22%3A%7B%22background-color%22%3A%22_header_middle_text%22%7D%7D&#8221;][vc_column width=&#8221;5\/6&#8243;][vc_column_text css=&#8221;%7B%22default%22%3A%7B%22color%22%3A%22%23023047%22%7D%7D&#8221;]<\/p>\n<h2>STAP use-cases: Zero Knowledge<\/h2>\n<p>[\/vc_column_text][us_separator][\/vc_column][vc_column width=&#8221;1\/6&#8243;][\/vc_column][\/vc_row][vc_row height=&#8221;small&#8221; us_bg_overlay_color=&#8221;#ffffff&#8221;][vc_column][vc_column_text css=&#8221;%7B%22default%22%3A%7B%22color%22%3A%22%23023047%22%2C%22font-family%22%3A%22Source%20Code%20Pro%22%2C%22background-color%22%3A%22%23ffffff%22%7D%7D&#8221;]Zero Knowledge Proofs (ZKPs) allow one party &#8211; the prover &#8211; to prove to another party &#8211; the verifier &#8211; that a statement is true without disclosing any information beyond the statement\u2019s validity.[\/vc_column_text][\/vc_column][\/vc_row][vc_row height=&#8221;small&#8221; color_scheme=&#8221;alternate&#8221; us_bg_overlay_color=&#8221;#ffffff&#8221; css=&#8221;%7B%22default%22%3A%7B%22background-color%22%3A%22%23ffffff%22%7D%7D&#8221;][vc_column width=&#8221;1\/12&#8243;][\/vc_column][vc_column us_bg_overlay_color=&#8221;#ffffff&#8221; link=&#8221;%7B%22url%22%3A%22%22%7D&#8221; width=&#8221;11\/12&#8243;][vc_column_text css=&#8221;%7B%22default%22%3A%7B%22color%22%3A%22%231a1a1a%22%7D%7D&#8221;]ZKPs use arithmetic circuits, which reduce computational problems to algebraic problems involving low-degree polynomials over a finite field. In several ZKP protocols, XOR relations can be proven for free, and the complexity essentially depends on the number of AND gates of the relation to be proven.<\/p>\n<p>This cost metric suggests that <strong>ciphers that find a use-case in ZK protocols should desirably minimize their use of non-linear operations while most cryptographically relevant work is performed as linear operations<\/strong>. This design philosophy is related to the fundamental theoretical question of the minimal multiplicative complexity (MC) of certain tasks, which is simply the number of AND gates in a circuit. A lower MC allows for a positive impact on latency and throughput of the ZK evaluation of the cipher. Classical symmetric algorithms become inappropriate in this context, and new cryptographic protocols must then be combined with <strong>symmetric primitives whose proposed constructions use non-linear functions whose algebraic representations remain very simple on a large finite field<\/strong> F_q where q is either a large prime integer or a power of 2 greater than 2^128, such as a sparse polynomial of F_q[X].[\/vc_column_text][\/vc_column][\/vc_row][vc_row height=&#8221;small&#8221; color_scheme=&#8221;alternate&#8221; us_bg_overlay_color=&#8221;#ffffff&#8221; css=&#8221;%7B%22default%22%3A%7B%22background-color%22%3A%22%23ffffff%22%7D%7D&#8221;][vc_column us_bg_overlay_color=&#8221;#ffffff&#8221; link=&#8221;%7B%22url%22%3A%22%22%7D&#8221; width=&#8221;11\/12&#8243;][vc_custom_heading text=&#8221;Applications&#8221; font_container=&#8221;tag:h2|font_size:42|text_align:left|color:%23219ebc&#8221; google_fonts=&#8221;font_family:ABeeZee%3Aregular%2Citalic|font_style:400%20regular%3A400%3Anormal&#8221;][vc_column_text css=&#8221;%7B%22default%22%3A%7B%22color%22%3A%22%231a1a1a%22%7D%7D&#8221;]ZKPs are used in many different applications, including authentication protocols, digital signatures, electronic voting, and cryptocurrency transactions.[\/vc_column_text][\/vc_column][vc_column width=&#8221;1\/12&#8243;][\/vc_column][\/vc_row][vc_row height=&#8221;small&#8221; color_scheme=&#8221;alternate&#8221; us_bg_overlay_color=&#8221;#ffffff&#8221; css=&#8221;%7B%22default%22%3A%7B%22background-color%22%3A%22%23ffffff%22%7D%7D&#8221;][vc_column us_bg_overlay_color=&#8221;#ffffff&#8221; link=&#8221;%7B%22url%22%3A%22%22%7D&#8221; width=&#8221;11\/12&#8243;][vc_custom_heading text=&#8221;Symmetric primitives&#8221; font_container=&#8221;tag:h2|font_size:42|text_align:left|color:%23219ebc&#8221; google_fonts=&#8221;font_family:ABeeZee%3Aregular%2Citalic|font_style:400%20regular%3A400%3Anormal&#8221;][vc_column_text css=&#8221;%7B%22default%22%3A%7B%22color%22%3A%22%231a1a1a%22%7D%7D&#8221;]ZK-friendly symmetric primitives are usually classified in 3 types.[\/vc_column_text][\/vc_column][vc_column width=&#8221;1\/12&#8243;][\/vc_column][\/vc_row][vc_row height=&#8221;small&#8221; color_scheme=&#8221;alternate&#8221; us_bg_overlay_color=&#8221;#ffffff&#8221; css=&#8221;%7B%22default%22%3A%7B%22background-color%22%3A%22%23ffffff%22%7D%7D&#8221;][vc_column width=&#8221;1\/12&#8243;][\/vc_column][vc_column us_bg_overlay_color=&#8221;#ffffff&#8221; link=&#8221;%7B%22url%22%3A%22%22%7D&#8221; width=&#8221;10\/12&#8243;][vc_tta_tabs layout=&#8221;trendy&#8221; title_transform=&#8221;uppercase&#8221; css=&#8221;%7B%22default%22%3A%7B%22color%22%3A%22_content_primary%22%2C%22max-height%22%3A%22800px%22%2C%22min-height%22%3A%22400px%22%2C%22margin-left%22%3A%2215px%22%2C%22margin-top%22%3A%2215px%22%2C%22margin-bottom%22%3A%2215px%22%2C%22margin-right%22%3A%2215px%22%2C%22padding-left%22%3A%2215px%22%2C%22padding-top%22%3A%2215px%22%2C%22padding-bottom%22%3A%2215px%22%2C%22padding-right%22%3A%2215px%22%2C%22box-shadow-v-offset%22%3A%223px%22%2C%22box-shadow-color%22%3A%22_footer_text%22%7D%7D&#8221;][vc_tta_section title=&#8221;Type I&#8221; tab_link=&#8221;%7B%22url%22%3A%22%22%7D&#8221;][vc_custom_heading text=&#8221;Low-degree primitives&#8221; font_container=&#8221;tag:h4|text_align:left|color:%231e73be&#8221; use_theme_fonts=&#8221;yes&#8221;][us_separator size=&#8221;small&#8221;][vc_column_text css=&#8221;%7B%22default%22%3A%7B%22color%22%3A%22%231a1a1a%22%7D%7D&#8221;]The first wave of ZK-friendly primitives aimed at limiting the number of nonlinear operations by relying on inner functions of low degree so that it is trivial to verify the result using low-degree functions.[\/vc_column_text][vc_row_inner][vc_column_inner width=&#8221;1\/3&#8243;][vc_column_text]<strong>Primitives<\/strong>[\/vc_column_text][vc_column_text]Feistel-MiMC<br \/>\nGMiMC<br \/>\nMiMC<br \/>\nNeptune<br \/>\nPoseidon<br \/>\nPoseidon2[\/vc_column_text][\/vc_column_inner][vc_column_inner width=&#8221;1\/3&#8243;][vc_column_text]<strong>Field size<br \/>\n<\/strong>[\/vc_column_text][vc_column_text]F_2^n or F_p<br \/>\nF_2^n<br \/>\nF_2^n or F_p<br \/>\nF_p<br \/>\nF_p<br \/>\nF_p[\/vc_column_text][\/vc_column_inner][vc_column_inner width=&#8221;1\/3&#8243;][vc_column_text]<strong>State size<br \/>\n<\/strong>[\/vc_column_text][vc_column_text]m = 2<br \/>\nany m<br \/>\nm = 1<br \/>\nm even<br \/>\nany m<br \/>\nany m[\/vc_column_text][\/vc_column_inner][\/vc_row_inner][\/vc_tta_section][vc_tta_section title=&#8221;Type II&#8221; tab_link=&#8221;%7B%22url%22%3A%22%22%7D&#8221;][vc_custom_heading text=&#8221;Equivalence relations&#8221; font_container=&#8221;tag:h4|text_align:left|color:%231e73be&#8221; use_theme_fonts=&#8221;yes&#8221;][us_separator size=&#8221;small&#8221;][vc_column_text css=&#8221;%7B%22default%22%3A%7B%22color%22%3A%22%231a1a1a%22%7D%7D&#8221;]The second type of primitive is based on equivalence relation or design strategies allowing high-degree evaluation and low-degree verification at the same time.[\/vc_column_text][vc_row_inner][vc_column_inner width=&#8221;1\/3&#8243;][vc_column_text]<strong>Primitives<\/strong>[\/vc_column_text][vc_column_text]Anemoi<br \/>\nArion<br \/>\nFriday<br \/>\nGrendel<br \/>\nGriffin<br \/>\nJarvis<br \/>\nRescue<br \/>\nRescue-Prime<br \/>\nRescue-Prime Optimized<br \/>\nVision[\/vc_column_text][\/vc_column_inner][vc_column_inner width=&#8221;1\/3&#8243;][vc_column_text]<strong>Field size<br \/>\n<\/strong>[\/vc_column_text][vc_column_text]F_2^n or F_p<br \/>\nF_p<br \/>\nF_2^n<br \/>\nF_p<br \/>\nF_p<br \/>\nF_2^n<br \/>\nF_p<br \/>\nF_p<br \/>\nF_p with p = 2^{64} &#8211; 2^{32} + 1<br \/>\nF_2^n[\/vc_column_text][\/vc_column_inner][vc_column_inner width=&#8221;1\/3&#8243;][vc_column_text]<strong>State size<br \/>\n<\/strong>[\/vc_column_text][vc_column_text]m even<br \/>\nany m<br \/>\nany m<br \/>\nany m<br \/>\nm = 3 or 4m&#8217;<br \/>\nm = 1<br \/>\nany m<br \/>\nany m<br \/>\nm = 12 or 16<br \/>\nany m[\/vc_column_text][\/vc_column_inner][\/vc_row_inner][\/vc_tta_section][vc_tta_section title=&#8221;Type III&#8221; tab_link=&#8221;%7B%22url%22%3A%22%22%7D&#8221;][vc_custom_heading text=&#8221;Look-up tables&#8221; font_container=&#8221;tag:h4|text_align:left|color:%231e73be&#8221; use_theme_fonts=&#8221;yes&#8221;][us_separator size=&#8221;small&#8221;][vc_column_text]The last family corresponds to more recent primitives that use look-up tables.[\/vc_column_text][vc_row_inner][vc_column_inner width=&#8221;1\/3&#8243;][vc_column_text]<strong>Primitives<\/strong>[\/vc_column_text][vc_column_text]Monolith<br \/>\nReinforced Concrete<br \/>\nTip5<br \/>\nTip4[\/vc_column_text][\/vc_column_inner][vc_column_inner width=&#8221;1\/3&#8243;][vc_column_text]<strong>Field size<br \/>\n<\/strong>[\/vc_column_text][vc_column_text]F_p with p = 2^{64} &#8211; 2^{32} + 1 or 2^{31} &#8211; 1<br \/>\nF_p<br \/>\nF_p with p = 2^{64} &#8211; 2^{32} + 1<br \/>\nF_p with p = 2^{64} &#8211; 2^{32} + 1[\/vc_column_text][\/vc_column_inner][vc_column_inner width=&#8221;1\/3&#8243;][vc_column_text]<strong>State size<br \/>\n<\/strong>[\/vc_column_text][vc_column_text]m &gt;= 8<br \/>\nm = 3<br \/>\nm = 16<br \/>\nm = 12 or 16[\/vc_column_text][\/vc_column_inner][\/vc_row_inner][\/vc_tta_section][\/vc_tta_tabs][us_separator size=&#8221;huge&#8221;][\/vc_column][vc_column width=&#8221;1\/12&#8243;][\/vc_column][\/vc_row][vc_row height=&#8221;small&#8221; color_scheme=&#8221;alternate&#8221; us_bg_overlay_color=&#8221;#f5f5f5&#8243; css=&#8221;%7B%22default%22%3A%7B%22background-color%22%3A%22_header_middle_bg%22%7D%7D&#8221;][vc_column link=&#8221;%7B%22url%22%3A%22%22%7D&#8221; css=&#8221;%7B%22default%22%3A%7B%22background-color%22%3A%22%23f5f5f5%22%7D%7D&#8221;][vc_row_inner content_placement=&#8221;middle&#8221; css=&#8221;%7B%22default%22%3A%7B%22background-color%22%3A%22%23f5f5f5%22%2C%22border-style%22%3A%22solid%22%2C%22border-color%22%3A%22%231a1a1a%22%7D%7D&#8221;][vc_column_inner width=&#8221;1\/12&#8243;][\/vc_column_inner][vc_column_inner us_bg_overlay_color=&#8221;#f5f5f5&#8243; link=&#8221;%7B%22url%22%3A%22%22%7D&#8221; css=&#8221;%7B%22default%22%3A%7B%22background-color%22%3A%22%23f5f5f5%22%2C%22border-radius%22%3A%225px%22%2C%22border-style%22%3A%22double%22%2C%22border-left-width%22%3A%2255%22%2C%22border-top-width%22%3A%2244%22%2C%22border-bottom-width%22%3A%2255%22%2C%22border-right-width%22%3A%2255%22%2C%22border-color%22%3A%22%23023047%22%2C%22box-shadow-blur%22%3A%223px%22%2C%22box-shadow-color%22%3A%22%23023047%22%7D%7D&#8221; width=&#8221;10\/12&#8243;][vc_custom_heading text=&#8221;STAP Lounge&#8221; font_container=&#8221;tag:h2|font_size:42|text_align:center|color:%23219ebc&#8221; google_fonts=&#8221;font_family:ABeeZee%3Aregular%2Citalic|font_style:400%20regular%3A400%3Anormal&#8221;][vc_column_text css=&#8221;%7B%22default%22%3A%7B%22color%22%3A%22%23333333%22%7D%7D&#8221;]<\/p>\n<p style=\"text-align: center;\">The STAP Zoo currently collects information about the following list of STAP primitives used in ZK:<\/p>\n<p style=\"padding-left: 240px; text-align: left;\">\u25ca <span style=\"color: #219ebc;\"><a style=\"color: #219ebc;\" href=\"https:\/\/stap-zoo.com\/all-stap-primitives\/#anemoi\">Anemoi<\/a><\/span><br \/>\n\u25ca <span style=\"color: #219ebc;\"><a style=\"color: #219ebc;\" href=\"https:\/\/stap-zoo.com\/all-stap-primitives\/#arion\">Arion<\/a><br \/>\n<\/span>\u25ca <span style=\"color: #219ebc;\"><a style=\"color: #219ebc;\" href=\"https:\/\/stap-zoo.com\/all-stap-primitives\/#gmimc\">GMiMC<\/a><\/span><br \/>\n\u25ca <span style=\"color: #219ebc;\"><a style=\"color: #219ebc;\" href=\"https:\/\/stap-zoo.com\/all-stap-primitives\/#grendel\">Grendel<\/a><\/span><br \/>\n\u25ca <span style=\"color: #219ebc;\"><a style=\"color: #219ebc;\" href=\"https:\/\/stap-zoo.com\/all-stap-primitives\/#griffin\">Griffin<\/a><\/span><br \/>\n\u25ca <span style=\"color: #219ebc;\"><a style=\"color: #219ebc;\" href=\"https:\/\/stap-zoo.com\/all-stap-primitives\/#marvellous-1\">MARVELlous designs<\/a> (Jarvis and Friday)<\/span><br \/>\n\u25ca <span style=\"color: #219ebc;\"><a style=\"color: #219ebc;\" href=\"https:\/\/stap-zoo.com\/all-stap-primitives\/#marvellous-2\">Marvellous designs<\/a> (Rescue, Rescue-Prime, Rescue-Prime Optimized, Vision, Vision Mark-32, XHash8 and XHash12)<\/span><br \/>\n\u25ca <span style=\"color: #219ebc;\"><a style=\"color: #219ebc;\" href=\"https:\/\/stap-zoo.com\/all-stap-primitives\/#mimc\">MiMC<\/a><\/span><br \/>\n\u25ca <span style=\"color: #219ebc;\"><a style=\"color: #219ebc;\" href=\"https:\/\/stap-zoo.com\/all-stap-primitives\/#monolith\">Monolith<\/a><\/span><br \/>\n\u25ca <span style=\"color: #219ebc;\"><a style=\"color: #219ebc;\" href=\"https:\/\/stap-zoo.com\/all-stap-primitives\/#poseidon-variants\">Poseidon variants<\/a> (HadesMiMC, Neptune, Poseidon and Poseidon 2)<\/span><br \/>\n\u25ca <span style=\"color: #219ebc;\"><a style=\"color: #219ebc;\" href=\"https:\/\/stap-zoo.com\/all-stap-primitives\/#reinforcedconcrete\">Reinforced Concrete<\/a><\/span><br \/>\n\u25ca <span style=\"color: #219ebc;\"><a style=\"color: #219ebc;\" href=\"https:\/\/stap-zoo.com\/all-stap-primitives\/#tip5-variants\">Tip5 variants<\/a> (Tip5, Tip4 and Tip4&#8242;)<\/span><\/p>\n<p>[\/vc_column_text][us_separator][us_image image=&#8221;1739&#8243; meta=&#8221;1&#8243; align=&#8221;center&#8221; link=&#8221;%7B%22url%22%3A%22%22%7D&#8221; css=&#8221;%7B%22default%22%3A%7B%22color%22%3A%22_header_middle_bg%22%7D%7D&#8221;][\/vc_column_inner][vc_column_inner width=&#8221;1\/12&#8243;][\/vc_column_inner][\/vc_row_inner][\/vc_column][\/vc_row]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>[vc_row us_bg_overlay_color=&#8221;#f5f5f5&#8243; us_shape_show_bottom=&#8221;1&#8243; us_shape_color_bottom=&#8221;#ffffff&#8221; css=&#8221;%7B%22default%22%3A%7B%22background-color%22%3A%22_header_middle_text%22%7D%7D&#8221;][vc_column width=&#8221;5\/6&#8243;][vc_column_text css=&#8221;%7B%22default%22%3A%7B%22color%22%3A%22%23023047%22%7D%7D&#8221;] STAP use-cases: Zero Knowledge [\/vc_column_text][us_separator][\/vc_column][vc_column width=&#8221;1\/6&#8243;][\/vc_column][\/vc_row][vc_row height=&#8221;small&#8221; us_bg_overlay_color=&#8221;#ffffff&#8221;][vc_column][vc_column_text css=&#8221;%7B%22default%22%3A%7B%22color%22%3A%22%23023047%22%2C%22font-family%22%3A%22Source%20Code%20Pro%22%2C%22background-color%22%3A%22%23ffffff%22%7D%7D&#8221;]Zero Knowledge Proofs (ZKPs) allow one party &#8211; the prover &#8211; to prove to another party &#8211; the verifier &#8211; that a statement is true without disclosing any information beyond the statement\u2019s validity.[\/vc_column_text][\/vc_column][\/vc_row][vc_row height=&#8221;small&#8221; color_scheme=&#8221;alternate&#8221; us_bg_overlay_color=&#8221;#ffffff&#8221; css=&#8221;%7B%22default%22%3A%7B%22background-color%22%3A%22%23ffffff%22%7D%7D&#8221;][vc_column width=&#8221;1\/12&#8243;][\/vc_column][vc_column us_bg_overlay_color=&#8221;#ffffff&#8221; link=&#8221;%7B%22url%22%3A%22%22%7D&#8221; [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":12,"comment_status":"open","ping_status":"open","template":"","meta":{"footnotes":""},"class_list":["post-1810","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/stap-wiki.fr\/index.php\/wp-json\/wp\/v2\/pages\/1810","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/stap-wiki.fr\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/stap-wiki.fr\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/stap-wiki.fr\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/stap-wiki.fr\/index.php\/wp-json\/wp\/v2\/comments?post=1810"}],"version-history":[{"count":0,"href":"https:\/\/stap-wiki.fr\/index.php\/wp-json\/wp\/v2\/pages\/1810\/revisions"}],"wp:attachment":[{"href":"https:\/\/stap-wiki.fr\/index.php\/wp-json\/wp\/v2\/media?parent=1810"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}