{"id":352195,"date":"2024-05-20T22:03:56","date_gmt":"2024-05-20T22:03:56","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=352195"},"modified":"-0001-11-30T00:00:00","modified_gmt":"2024-05-20T22:03:56","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=352195","title":{"rendered":"<span>Pairing-based identification protocols compatible with instant digital signature mode<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>In our <a href=\"https:\/\/habr.com\/ru\/articles\/748354\/\" rel=\"noopener noreferrer nofollow\"><u>previous post<\/u><\/a>, we presented a modified Schnorr protocol compatible with the Instant Digital Signature (IDS) mode and also announced the design of other protocols with this feature. In this post we describe such protocols based on the pairing function.<\/p>\n<p><strong>Introduction<\/strong><\/p>\n<p>The following text is dedicated to the description of two digital signature (DS) schemes based on the pairing function (<a href=\"https:\/\/mega.nz\/file\/MCARjYKA#rsylBNfuCUpRQ8ERy-7F6b2aTL3F8vs30IEYKuHy68o\" rel=\"noopener noreferrer nofollow\"><u>Appendix A<\/u><\/a>). These schemes are then transformed into IDS-compatible identification protocols. We specified and investigated the problem of impersonation, that is, the substitution of one party involved in protocol, with another one. The achieved result consists in the design and analysis of a new IDS-compatible identification protocol, with impersonation presumably impossible for it.<\/p>\n<p>We will use the abbreviation v.s.p. to denote a vanishingly small probability. This means that for some <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\alpha\\in\\mathbb{F}_m\" alt=\"\\alpha\\in\\mathbb{F}_m\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/088\/83c\/106\/08883c106cc62917da4032e24516aced.svg\" width=\"62\" height=\"20\"\/> and <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\beta\" alt=\"\\beta\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/95b\/7aa\/558\/95b7aa55802c880fc1c230d8dc638d8d.svg\" width=\"11\" height=\"20\"\/> distributed uniformly and independently on the interval <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"(0,m-1],\" alt=\"(0,m-1],\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/13d\/2e3\/ac2\/13d2e3ac2aba51418e98c3d212559353.svg\" width=\"87\" height=\"22\"\/> otherwise <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"{\\beta\\in_R\\! (0,m-1]},\" alt=\"{\\beta\\in_R\\! (0,m-1]},\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/36f\/8a4\/063\/36f8a40630c200581bdc76c40aca17f0.svg\" width=\"130\" height=\"22\"\/> <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"{\\Pr[\\alpha=\\beta]=m^{-1}}\" alt=\"{\\Pr[\\alpha=\\beta]=m^{-1}}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/abd\/ab7\/9f9\/abdab79f9d05b77c6e53241a211c0e54.svg\" width=\"143\" height=\"25\"\/> and for large <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"m\" alt=\"m\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d5a\/072\/386\/d5a07238665a581dbb0de1b477088ace.svg\" width=\"17\" height=\"12\"\/> this probability is vanishingly small. For example, <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\Pr[\\alpha=\\beta]\\sim 10^{-49}\" alt=\"\\Pr[\\alpha=\\beta]\\sim 10^{-49}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c81\/87a\/1fe\/c8187a1fedb2e913fc3834a298e955b9.svg\" width=\"152\" height=\"25\"\/> for <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"m\\sim 2^{160}.\" alt=\"m\\sim 2^{160}.\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/15e\/973\/340\/15e973340d7f69a8be210197c54fd5a4.svg\" width=\"80\" height=\"21\"\/> A similar argument applies to <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\Pr[g^{\\alpha}=g^{\\beta}],\" alt=\"\\Pr[g^{\\alpha}=g^{\\beta}],\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b4b\/c76\/ebe\/b4bc76ebe37a773b14b54dccca1895a7.svg\" width=\"101\" height=\"25\"\/> where <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"g\" alt=\"g\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/727\/45b\/ef1\/72745bef101b2ca42b207903fc445e32.svg\" width=\"9\" height=\"15\"\/> is a generator of <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathbb{G}_3\" alt=\"\\mathbb{G}_3\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/43e\/7ca\/e09\/43e7cae09eed7193957ac6d76b160d10.svg\" width=\"24\" height=\"20\"\/> (<a href=\"https:\/\/mega.nz\/file\/MCARjYKA#rsylBNfuCUpRQ8ERy-7F6b2aTL3F8vs30IEYKuHy68o\" rel=\"noopener noreferrer nofollow\"><u>Appendix A<\/u><\/a>).<\/p>\n<p>When describing DS schemes and identification protocols, we will proceed from the assumption that there is a pair of linked keys <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\{\\mathbf{x},\\mathsf{P}=[\\mathbf{x}]\\mathsf{G}_1\\},\" alt=\"\\{\\mathbf{x},\\mathsf{P}=[\\mathbf{x}]\\mathsf{G}_1\\},\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/570\/cec\/81f\/570cec81f80c0d3f70742cd4dc514f1a.svg\" width=\"127\" height=\"22\"\/> where <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathbf{x}\" alt=\"\\mathbf{x}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/502\/e99\/34e\/502e9934ec8b7afcdce71d691386f9d8.svg\" width=\"12\" height=\"12\"\/> is a secret key, <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"{\\mathbf{x}\\in_R\\!(0,m-1]},\" alt=\"{\\mathbf{x}\\in_R\\!(0,m-1]},\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/035\/11e\/139\/03511e1397f267d1c20f3940ab42102b.svg\" width=\"131\" height=\"22\"\/> and <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{P}\" alt=\"\\mathsf{P}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c21\/283\/5a8\/c212835a8c1ae16582752b30a3ca1d60.svg\" width=\"12\" height=\"17\"\/> is a public one for which a certificate <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\{D,\\mathsf{P}, \\Im_{\\rm{T}}\\}\" alt=\"\\{D,\\mathsf{P}, \\Im_{\\rm{T}}\\}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/099\/6d8\/b5e\/0996d8b5e447105057c23d5a9350ebc0.svg\" width=\"87\" height=\"22\"\/> is issued. In this certificate, <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"D\" alt=\"D\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/414\/4f4\/ccf\/4144f4ccf1a03bc1e4332ce50699eff5.svg\" width=\"16\" height=\"17\"\/> is the personal data of the owner of <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{P},\" alt=\"\\mathsf{P},\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/2da\/35e\/930\/2da35e930d1c4fc3ab1cbb8af9e2f263.svg\" width=\"18\" height=\"20\"\/> <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\Im_{\\rm{T}}\" alt=\"\\Im_{\\rm{T}}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ff4\/789\/c70\/ff4789c70427ed053ec61fef61387440.svg\" width=\"22\" height=\"19\"\/> is the DS of the trusted party <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\rm{T}\" alt=\"\\rm{T}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/80e\/914\/594\/80e914594b752adb2a9a3d9ed35937d4.svg\" width=\"14\" height=\"17\"\/> (the certification authority responsible for issuing and maintaining certificates).<\/p>\n<p>Let&#8217;s call the functions of signing and verifying the digital signature as <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"{\\rm{Sign}}(\\cdot,\\cdot)\" alt=\"{\\rm{Sign}}(\\cdot,\\cdot)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b3a\/297\/364\/b3a2973648163206769c8a5a61f58892.svg\" width=\"71\" height=\"22\"\/> and <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"{\\rm{Verify}}(\\cdot,\\cdot,\\cdot),\" alt=\"{\\rm{Verify}}(\\cdot,\\cdot,\\cdot),\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1cd\/f98\/566\/1cdf98566b46f6d5fc56742ccafb8039.svg\" width=\"107\" height=\"22\"\/> respectively. Let&#8217;s denote the cryptographic hash function by <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\hslash(\\cdot)\" alt=\"\\hslash(\\cdot)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e33\/e10\/8ee\/e33e108eec55d837d277f9ea76fc3685.svg\" width=\"31\" height=\"22\"\/> (<a href=\"https:\/\/mega.nz\/file\/MOQDjBiR#AjDbufbjnrSPW2pFIYoK-R6EES9MWP_7BA95_JWtigA\" rel=\"noopener noreferrer nofollow\"><u>Appendix B<\/u><\/a>). Then <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\Im_{\\rm{T}}\\Leftarrow{\\rm{Sign}}(\\hslash(\\mathsf{P}||D), \\rm{S}_{\\rm{T}}),\" alt=\"\\Im_{\\rm{T}}\\Leftarrow{\\rm{Sign}}(\\hslash(\\mathsf{P}||D), \\rm{S}_{\\rm{T}}),\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/946\/a26\/54a\/946a2654a9343d391b57ac29f9a358e3.svg\" width=\"205\" height=\"22\"\/> where <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\rm{S}_{\\rm{T}}\" alt=\"\\rm{S}_{\\rm{T}}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/be8\/db5\/d44\/be8db5d4411b36733e5dbc8877ad83c6.svg\" width=\"22\" height=\"19\"\/> is the secret key of the trusted party <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\rm{T},\" alt=\"\\rm{T},\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/564\/8bb\/3b0\/5648bb3b00349137201e8d6d039d2483.svg\" width=\"19\" height=\"20\"\/> consigned for signing.<\/p>\n<p>Before use, <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{P}\" alt=\"\\mathsf{P}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/389\/20c\/30a\/38920c30a7214dd908f2c62599e5cca2.svg\" width=\"12\" height=\"17\"\/> is checked for authenticity, integrity, and relevance. The latter task is done by checking a list of revoked certificates. <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathfrak{B}\\Leftarrow{\\rm{Verify}}(\\hslash(\\mathsf{P}||D), \\Im_{\\rm{T}}, \\rm{P}_{\\rm{T}})\" alt=\"\\mathfrak{B}\\Leftarrow{\\rm{Verify}}(\\hslash(\\mathsf{P}||D), \\Im_{\\rm{T}}, \\rm{P}_{\\rm{T}})\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d44\/0f4\/b9b\/d440f4b9bb2c43bbf9d56afbc507bacd.svg\" width=\"245\" height=\"22\"\/> is computed, where <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\rm{P}_{\\rm{T}}\" alt=\"\\rm{P}_{\\rm{T}}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f19\/ccd\/602\/f19ccd602aa2e9bd8a2827e9efa47c64.svg\" width=\"25\" height=\"19\"\/> is the public key of trusted party <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\rm{T}.\" alt=\"\\rm{T}.\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/6c3\/d2a\/2d9\/6c3d2a2d91468e7738a4e34c52a183cd.svg\" width=\"19\" height=\"17\"\/> If <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\Im_{\\rm{T}}\" alt=\"\\Im_{\\rm{T}}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/04a\/6f5\/285\/04a6f5285070e13fe2b272631a8b1fe6.svg\" width=\"22\" height=\"19\"\/> is valid, then the boolean variable <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathfrak{B}=True\" alt=\"\\mathfrak{B}=True\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/acd\/763\/68a\/acd76368a8176a4834af58d9ea99e938.svg\" width=\"85\" height=\"17\"\/> and this means integrity, authenticity of <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{P}\" alt=\"\\mathsf{P}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b52\/52c\/1d2\/b5252c1d2f841f84722d41b4e0ff6779.svg\" width=\"12\" height=\"17\"\/> and <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"D,\" alt=\"D,\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/292\/9a9\/e46\/2929a9e46bd426a17feef3e1f75b8c10.svg\" width=\"21\" height=\"20\"\/> otherwise <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathfrak{B}=False.\" alt=\"\\mathfrak{B}=False.\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/925\/fbf\/95d\/925fbf95dcb3d1ad98ede22d884efdaa.svg\" width=\"97\" height=\"17\"\/> The trusted party <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"T\" alt=\"T\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/103\/fc6\/39d\/103fc639d5ff2a9d7754215f77cc5c7f.svg\" width=\"14\" height=\"17\"\/> can use any DS scheme, for example, one of those described below.\u00a0<\/p>\n<p>For the sake of simplicity, let&#8217;s assume that different DS schemes and identification protocols use the same public key <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{P}.\" alt=\"\\mathsf{P}.\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d7e\/761\/e0d\/d7e761e0d16f78738a1bb91860771b59.svg\" width=\"18\" height=\"17\"\/><\/p>\n<p>It should be noted that most of the known DS schemes use simple equations. This is important, because this simplifies their understanding and analysis. We will be guided by the same <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\textit{modus operandi}\" alt=\"\\textit{modus operandi}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e71\/6d2\/b47\/e716d2b47896c2282f1fdb41fad89acb.svg\" width=\"132\" height=\"20\"\/> when design identification protocols.<\/p>\n<p><strong>DS schemes based on pairing<\/strong><\/p>\n<p>Hereinafter let&#8217;s call the one who sign the message <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"{M\\in\\{0,1\\}^*}\" alt=\"{M\\in\\{0,1\\}^*}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/bb5\/04c\/6bc\/bb504c6bcdcd34ad8272455aec8cf363.svg\" width=\"100\" height=\"22\"\/> as the <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\textit{witness}.\" alt=\"\\textit{witness}.\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/8b3\/183\/407\/8b31834074b966ed8ccff6a9844f7c86.svg\" width=\"66\" height=\"16\"\/> Below there are descriptions of two DS schemes based on pairing (<a href=\"https:\/\/mega.nz\/file\/MCARjYKA#rsylBNfuCUpRQ8ERy-7F6b2aTL3F8vs30IEYKuHy68o\" rel=\"noopener noreferrer nofollow\"><u>Appendix A<\/u><\/a>).<\/p>\n<p>In the DS scheme [Zhang_Safavi-Naini_Susilo_2004] for a given message <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"M,\" alt=\"M,\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1b1\/644\/212\/1b1644212d3f1981138b435b05965c77.svg\" width=\"26\" height=\"20\"\/> the witness performs the following actions:<\/p>\n<ol>\n<li>\n<p>Computes <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\phi=\\hslash(M).\" alt=\"\\phi=\\hslash(M).\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/4ac\/4f1\/1af\/4ac4f11afc71b02e920dabae8dc13343.svg\" width=\"89\" height=\"22\"\/><\/p>\n<\/li>\n<li>\n<p>Generates the signature <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{S}=[\\frac{1}{\\phi+\\mathbf{x}\\pmod m}]\\mathsf{G}_1=[\\psi]\\mathsf{G}_1.\" alt=\"\\mathsf{S}=[\\frac{1}{\\phi+\\mathbf{x}\\pmod m}]\\mathsf{G}_1=[\\psi]\\mathsf{G}_1.\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/116\/d76\/48f\/116d7648f3ae7465df5ec22f4d86ff78.svg\" width=\"285\" height=\"47\"\/><\/p>\n<\/li>\n<\/ol>\n<p>Let there be some signature <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{S}'=[\\psi']\\mathsf{G}_1\" alt=\"\\mathsf{S}'=[\\psi']\\mathsf{G}_1\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/2e7\/d15\/87f\/2e7d1587fdd4fdaba91c5d348024f787.svg\" width=\"93\" height=\"24\"\/> and a message <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"M\u2032.\" alt=\"M\u2032.\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/3aa\/5ac\/193\/3aa5ac193e5a76ce52eb8bc400570767.svg\" width=\"31\" height=\"17\"\/> The verifier performs the following actions:<\/p>\n<ol>\n<li>\n<p>Computes <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\phi'=\\hslash(M').\" alt=\"\\phi'=\\hslash(M').\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/8d2\/3a7\/d56\/8d23a7d56abad3971269324bdfdf37e2.svg\" width=\"101\" height=\"23\"\/><\/p>\n<\/li>\n<li>\n<p>Checks the authenticity, integrity and relevance of <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{P},\" alt=\"\\mathsf{P},\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a00\/0bb\/52f\/a000bb52f551c290f4916cb491d6bf6c.svg\" width=\"18\" height=\"20\"\/> if the relevance is not confirmed or <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathfrak{B}=False,\" alt=\"\\mathfrak{B}=False,\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/07c\/1dc\/b39\/07c1dcb39b2690a1071f9c6f29f6338b.svg\" width=\"97\" height=\"20\"\/> then it completes the verification of the DS.<\/p>\n<\/li>\n<li>\n<p>Computes <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"g'=e_m([\\phi']\\mathsf{G}_1+ \\mathsf{P}, \\mathsf{S}')=e_m([\\phi'+\\mathbf{x}\\pmod m]\\mathsf{G}_1, [\\psi']\\mathsf{G}_1)=g^{\\psi'(\\phi'+\\mathbf{x})\\pmod m}.\" alt=\"g'=e_m([\\phi']\\mathsf{G}_1+ \\mathsf{P}, \\mathsf{S}')=e_m([\\phi'+\\mathbf{x}\\pmod m]\\mathsf{G}_1, [\\psi']\\mathsf{G}_1)=g^{\\psi'(\\phi'+\\mathbf{x})\\pmod m}.\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/288\/626\/41e\/28862641e2ec335f1f9c0ac4f641157f.svg\" width=\"655\" height=\"27\"\/><\/p>\n<\/li>\n<li>\n<p>Checks <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"g'\\stackrel{?}{=}e_m(\\mathsf{G}_1, \\mathsf{G}_1).\" alt=\"g'\\stackrel{?}{=}e_m(\\mathsf{G}_1, \\mathsf{G}_1).\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/668\/c8b\/1d3\/668c8b1d37f2113c74f2a24ac9b7cbcb.svg\" width=\"136\" height=\"30\"\/><\/p>\n<\/li>\n<\/ol>\n<p>Then <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"g'=g\" alt=\"g'=g\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/abc\/050\/06c\/abc05006c3bac5d5613a33d6b960c989.svg\" width=\"50\" height=\"22\"\/> if <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"(\\psi'=\\psi)\\land(\\phi'=\\phi)\\Rightarrow (M'=M)\\land(\\mathsf{S'}=\\mathsf{S}).\" alt=\"(\\psi'=\\psi)\\land(\\phi'=\\phi)\\Rightarrow (M'=M)\\land(\\mathsf{S'}=\\mathsf{S}).\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/8b1\/3b0\/753\/8b13b0753a8a255ad3b1eebdea65b9e7.svg\" width=\"374\" height=\"23\"\/> If <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"(\\psi'\\neq\\psi)\\lor(\\phi'\\neq\\phi)\" alt=\"(\\psi'\\neq\\psi)\\lor(\\phi'\\neq\\phi)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/454\/747\/ba1\/454747ba1b3de7dbe39afb45c32660ca.svg\" width=\"162\" height=\"23\"\/> then <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"g'=g\" alt=\"g'=g\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/064\/ee0\/e2d\/064ee0e2dc474a46ed988a87f25b8349.svg\" width=\"50\" height=\"22\"\/> with v.s.p.<\/p>\n<p>It is clear that <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"g=e_m(\\mathsf{G}_1, \\mathsf{G}_1)\" alt=\"g=e_m(\\mathsf{G}_1, \\mathsf{G}_1)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/996\/d16\/35d\/996d1635d2fc233af4009ce0bb6257bd.svg\" width=\"125\" height=\"22\"\/> is computed only once and stored in the local long-term memory. Authenticity and integrity of <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"g\" alt=\"g\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/731\/99d\/3aa\/73199d3aaf240bddf0984c8b9c21332a.svg\" width=\"9\" height=\"15\"\/> needs to be guaranteed. For example, it can be stored in secure memory along with the secret key <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathbf{x}.\" alt=\"\\mathbf{x}.\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5b5\/183\/ccb\/5b5183ccbf9c2e80048da3dcb4b048ea.svg\" width=\"17\" height=\"12\"\/><\/p>\n<p>Let&#8217;s look at another DS scheme from [Boneh_Shacham_Lynn_2004]. There is a given hash function <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"H:\\{0,1\\}^*\\mapsto\\mathbb{G}_1\" alt=\"H:\\{0,1\\}^*\\mapsto\\mathbb{G}_1\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f33\/2c6\/eb4\/f332c6eb4f7b4bfc7a9f01ab862a58fd.svg\" width=\"143\" height=\"22\"\/>\u00a0 (<a href=\"https:\/\/mega.nz\/file\/MOQDjBiR#AjDbufbjnrSPW2pFIYoK-R6EES9MWP_7BA95_JWtigA\" rel=\"noopener noreferrer nofollow\"><u>Appendix B<\/u><\/a>). The witness performs the following steps:<\/p>\n<ol>\n<li>\n<p>Computes <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{Q}=H(M)=[\\upsilon]\\mathsf{G}_1.\" alt=\"\\mathsf{Q}=H(M)=[\\upsilon]\\mathsf{G}_1.\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/8bf\/468\/d2a\/8bf468d2a502862b1bc96e7e47a6b276.svg\" width=\"166\" height=\"22\"\/><\/p>\n<\/li>\n<li>\n<p>Generates the signature <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{S}=[\\mathbf{x}]\\mathsf{Q}=[\\mathbf{x}\\upsilon\\pmod m]\\mathsf{G}_1.\" alt=\"\\mathsf{S}=[\\mathbf{x}]\\mathsf{Q}=[\\mathbf{x}\\upsilon\\pmod m]\\mathsf{G}_1.\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ee4\/7eb\/e8d\/ee47ebe8dec1061b8ca89ed613b2aeb2.svg\" width=\"256\" height=\"22\"\/><\/p>\n<\/li>\n<\/ol>\n<p>There is a message <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"M\u2032\" alt=\"M\u2032\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/deb\/744\/af1\/deb744af13f17fa15f98afd660e724c8.svg\" width=\"27\" height=\"17\"\/> and signature <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{S}'.\" alt=\"\\mathsf{S}'.\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/789\/86d\/546\/78986d5463182add69eca7b5c240777d.svg\" width=\"22\" height=\"20\"\/> The verifier does the following steps:<\/p>\n<ol>\n<li>\n<p>Computes <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{Q}'=H(M').\" alt=\"\\mathsf{Q}'=H(M').\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/94c\/790\/b4f\/94c790b4f5d411724211e435d14c0097.svg\" width=\"109\" height=\"24\"\/><\/p>\n<\/li>\n<li>\n<p>Checks the authenticity, integrity and relevance of <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{P},\" alt=\"\\mathsf{P},\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/6eb\/556\/40b\/6eb55640baa489b61511ba775872125b.svg\" width=\"18\" height=\"20\"\/> if the relevance is not confirmed or <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathfrak{B}=False,\" alt=\"\\mathfrak{B}=False,\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/417\/89e\/46b\/41789e46b036b778a359d1ef3190f04c.svg\" width=\"97\" height=\"20\"\/> then it completes the verification of the DS.<\/p>\n<\/li>\n<li>\n<p>Checks <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"e_m(\\mathsf{P},\\mathsf{Q}')\\stackrel{?}{=}e_m(\\mathsf{G}_1,\\mathsf{S}').\" alt=\"e_m(\\mathsf{P},\\mathsf{Q}')\\stackrel{?}{=}e_m(\\mathsf{G}_1,\\mathsf{S}').\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/eed\/e53\/2e0\/eede532e0215e07780349f4df738fde9.svg\" width=\"194\" height=\"30\"\/><\/p>\n<\/li>\n<\/ol>\n<p>If <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{Q}'=\\mathsf{Q}=[\\upsilon]\\mathsf{G}_1\" alt=\"\\mathsf{Q}'=\\mathsf{Q}=[\\upsilon]\\mathsf{G}_1\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/177\/6f7\/93d\/1776f793d02ea6b520e89e4d9dd7e38c.svg\" width=\"128\" height=\"24\"\/> and <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{S}'=\\mathsf{S}=[\\mathbf{x}\\upsilon\\pmod m]\\mathsf{G}_1,\" alt=\"\\mathsf{S}'=\\mathsf{S}=[\\mathbf{x}\\upsilon\\pmod m]\\mathsf{G}_1,\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/fc5\/c80\/a3f\/fc5c80a3f22adf91b15a2c09c5f6c99c.svg\" width=\"236\" height=\"24\"\/> then, due to the bilinearity, <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"e_m(\\mathsf{P},\\mathsf{Q}')=e_m([\\mathbf{x}]\\mathsf{G}_1, [\\upsilon]\\mathsf{G}_1)=e_m([\\mathbf{x}\\upsilon\\pmod m]\\mathsf{G}_1, \\mathsf{G}_1)=e_m(\\mathsf{G}_1, \\mathsf{G}_1)^{\\mathbf{x}\\upsilon\\pmod m}=g^{\\mathbf{x}\\upsilon\\pmod m}.\" alt=\"e_m(\\mathsf{P},\\mathsf{Q}')=e_m([\\mathbf{x}]\\mathsf{G}_1, [\\upsilon]\\mathsf{G}_1)=e_m([\\mathbf{x}\\upsilon\\pmod m]\\mathsf{G}_1, \\mathsf{G}_1)=e_m(\\mathsf{G}_1, \\mathsf{G}_1)^{\\mathbf{x}\\upsilon\\pmod m}=g^{\\mathbf{x}\\upsilon\\pmod m}.\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/379\/f8d\/ba6\/379f8dba6746c0d121890060c545603d.svg\" width=\"802\" height=\"26\"\/> If <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{Q}'\\neq\\mathsf{Q}\" alt=\"\\mathsf{Q}'\\neq\\mathsf{Q}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/58c\/06f\/0ad\/58c06f0ad05cbfd6b31befa5cea1b9cb.svg\" width=\"60\" height=\"24\"\/> and\/or <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{S}'\\neq\\mathsf{S},\" alt=\"\\mathsf{S}'\\neq\\mathsf{S},\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/50d\/4fb\/397\/50d4fb39795f153e0e13eacffe38d438.svg\" width=\"58\" height=\"24\"\/> then <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"e_m(\\mathsf{P},\\mathsf{Q}')= e_m(\\mathsf{G}_1,\\mathsf{S}')\" alt=\"e_m(\\mathsf{P},\\mathsf{Q}')= e_m(\\mathsf{G}_1,\\mathsf{S}')\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/2fa\/31d\/506\/2fa31d50678130400d3643de0fbd8edf.svg\" width=\"189\" height=\"24\"\/> with v.s.p.<\/p>\n<p>Both above-mentioned DS schemes use the <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"e_m(\\cdot, \\cdot)\" alt=\"e_m(\\cdot, \\cdot)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/4d5\/332\/aee\/4d5332aeea2c5afb788e8f4f8d4b4de7.svg\" width=\"57\" height=\"22\"\/> pairing function, but differ in computational complexity of check. In the [Zhang_Safavi-Naini_Susilo_2004] scheme, when checking the DS, only one pairing is computed, while in [Boneh_Shacham_Lynn_2004] it is necessary to compute two pairings.<\/p>\n<p><strong>IDS-compatible identification protocols based on pairing<\/strong><\/p>\n<p>According to the Fiat-Shamir heuristic [Fiat_Shamir_1987], each DS scheme has its own identification protocol. However, we will be interested in IDS-compatible versions of such protocols.<\/p>\n<p>Below there is a description of the IDS-compatible identification protocol for the DS scheme from [Zhang_Safavi-Naini_Susilo_2004].<\/p>\n<p><strong>Protocol 1<\/strong><\/p>\n<p><em>Protocol messages.<\/em><\/p>\n<ol>\n<li>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"P \\longrightarrow V : \\mathsf{S}=[\\upsilon]\\mathsf{G}_1\" alt=\"P \\longrightarrow V : \\mathsf{S}=[\\upsilon]\\mathsf{G}_1\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/9ac\/95a\/3da\/9ac95a3da7be950d9f6ebe6f29441eb9.svg\" width=\"167\" height=\"22\"\/><\/p>\n<\/li>\n<li>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"P \\longleftarrow V :\u00a0 \\mathsf{T}=[\\phi]\\mathsf{G}_1\" alt=\"P \\longleftarrow V :\u00a0 \\mathsf{T}=[\\phi]\\mathsf{G}_1\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/12f\/6a1\/434\/12f6a14347a24ad8b269a35402676df6.svg\" width=\"170\" height=\"22\"\/><\/p>\n<\/li>\n<li>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"P \\longrightarrow\u00a0 V\u00a0 : \\mathsf{N}=[(\\upsilon+\\mathbf{x}\\pmod m)^{-1}]\\mathsf{T}\" alt=\"P \\longrightarrow\u00a0 V\u00a0 : \\mathsf{N}=[(\\upsilon+\\mathbf{x}\\pmod m)^{-1}]\\mathsf{T}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a80\/0f9\/034\/a800f90343197a0d80a3815a8b09535c.svg\" width=\"328\" height=\"25\"\/><\/p>\n<\/li>\n<\/ol>\n<p><em>Actions of the parties.<\/em><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"P\" alt=\"P\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a6f\/32d\/637\/a6f32d637120da8232eaf4a774f027b3.svg\" width=\"14\" height=\"17\"\/> proves to <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"V\" alt=\"V\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/4f2\/bfa\/b17\/4f2bfab174b35c4980e8727b7b682e86.svg\" width=\"15\" height=\"17\"\/> that it owns (knows) <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathbf{x}.\" alt=\"\\mathbf{x}.\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/124\/15c\/e2b\/12415ce2bd491ebc7e8760e56ed3d5ab.svg\" width=\"17\" height=\"12\"\/> To do this, the following steps are performed:<\/p>\n<ol>\n<li>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"P\" alt=\"P\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/263\/571\/2c6\/2635712c67d870b841795d8feae6bbff.svg\" width=\"14\" height=\"17\"\/> selects <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"{\\upsilon\\in_R\\!(0,m-1]}\" alt=\"{\\upsilon\\in_R\\!(0,m-1]}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f02\/493\/f03\/f02493f032601ad630b3439438f9be7f.svg\" width=\"124\" height=\"22\"\/> <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"(\\textit{commitment}),\" alt=\"(\\textit{commitment}),\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/9e9\/a6b\/24e\/9e9a6b24ea6f4fe5e2ba2507a5c7c87c.svg\" width=\"125\" height=\"22\"\/> computes <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{S}=[\\upsilon]\\mathsf{G}_1\" alt=\"\\mathsf{S}=[\\upsilon]\\mathsf{G}_1\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f75\/c84\/dde\/f75c84ddebe2ae0163bf4985fa788473.svg\" width=\"79\" height=\"22\"\/> <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"(\\textit{witness}),\" alt=\"(\\textit{witness}),\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5e1\/232\/ed6\/5e1232ed637e40880bdef4372fff6a5f.svg\" width=\"81\" height=\"22\"\/> checks <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{S}\\stackrel{?}\\neq\\infty.\" alt=\"\\mathsf{S}\\stackrel{?}\\neq\\infty.\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c8c\/42f\/bd8\/c8c42fbd8c5bfc2e3af536e1d1bd6799.svg\" width=\"61\" height=\"37\"\/> If <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{S}=\\infty\" alt=\"\\mathsf{S}=\\infty\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ae9\/a6b\/af9\/ae9a6baf937f126fb9cb68addc970c06.svg\" width=\"56\" height=\"17\"\/> then selects a new <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\upsilon,\" alt=\"\\upsilon,\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b57\/7a1\/4d6\/b577a14d6eda7d6ea0fea4e0bc7900a0.svg\" width=\"16\" height=\"15\"\/> re-executes the necessary computations and checks.<\/p>\n<\/li>\n<li>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"V\" alt=\"V\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/699\/daa\/798\/699daa79820761d47f873e1fe49c6722.svg\" width=\"15\" height=\"17\"\/> reads the current certificate <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\{D,\\mathsf{P}, \\Im_{\\rm{T}}\\}\" alt=\"\\{D,\\mathsf{P}, \\Im_{\\rm{T}}\\}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d68\/446\/33a\/d6844633a1d89cf1bdcf1a177205abf7.svg\" width=\"87\" height=\"22\"\/> and checks the DS of the trusted party <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\rm{T}.\" alt=\"\\rm{T}.\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/fee\/3b2\/87f\/fee3b287fff6f9a25fff70aaa6866147.svg\" width=\"19\" height=\"17\"\/> If <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathfrak{B}=False\" alt=\"\\mathfrak{B}=False\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/2f9\/f5c\/eb3\/2f9f5ceb3e57df8c2b20e8f1fc8e38b8.svg\" width=\"91\" height=\"17\"\/> then the session ends. If <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathfrak{B}=True\" alt=\"\\mathfrak{B}=True\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/fc6\/5b9\/4e2\/fc65b94e246445bf2dcb7f2b3c25912b.svg\" width=\"85\" height=\"17\"\/> then it chooses <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"{\\phi\\in_R\\!(0, m-1]}\" alt=\"{\\phi\\in_R\\!(0, m-1]}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/624\/bc7\/c6e\/624bc7c6e33e10d3e45d0839d3c88172.svg\" width=\"125\" height=\"22\"\/> and computes <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{T}=[\\phi]\\mathsf{G}_1\" alt=\"\\mathsf{T}=[\\phi]\\mathsf{G}_1\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c2b\/862\/2b7\/c2b8622b7b891ffd08225f23621d4917.svg\" width=\"83\" height=\"22\"\/> <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"(\\textit{challenge}).\" alt=\"(\\textit{challenge}).\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/85a\/4dc\/702\/85a4dc702e411fd7e61567b879f08b72.svg\" width=\"96\" height=\"22\"\/> If <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{T}=\\infty,\" alt=\"\\mathsf{T}=\\infty,\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/46f\/b59\/d65\/46fb59d65ea41e4c1b9bcbc35bd223d1.svg\" width=\"63\" height=\"20\"\/> then it chooses a new <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\phi\" alt=\"\\phi\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/68c\/1ad\/991\/68c1ad9910474e9faab0e37315119978.svg\" width=\"11\" height=\"20\"\/> and re-executes the necessary computations and checks.<\/p>\n<\/li>\n<li>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"P\" alt=\"P\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a70\/f55\/1f5\/a70f551f5a3c8567d945b4f08e3a665a.svg\" width=\"14\" height=\"17\"\/> checks <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{T}\\stackrel{?}\\neq\\infty,\" alt=\"\\mathsf{T}\\stackrel{?}\\neq\\infty,\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/57b\/c02\/51e\/57bc0251e81f0c06697babc0e447af2e.svg\" width=\"63\" height=\"37\"\/> if it is true, it computes <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{N}=[(\\upsilon+\\mathbf{x}\\pmod m)^{- 1}]\\mathsf{T}=[\\frac{\\phi}{\\upsilon+\\mathbf{x}\\pmod m}\\pmod m]\\mathsf{G}_1\" alt=\"\\mathsf{N}=[(\\upsilon+\\mathbf{x}\\pmod m)^{- 1}]\\mathsf{T}=[\\frac{\\phi}{\\upsilon+\\mathbf{x}\\pmod m}\\pmod m]\\mathsf{G}_1\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/325\/3f7\/c3d\/3253f7c3dff634cca92c550cb8ed0af2.svg\" width=\"535\" height=\"48\"\/> <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"(\\textit{response})\" alt=\"(\\textit{response})\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/def\/2b1\/85c\/def2b185c56fad71ddcf4d873549404c.svg\" width=\"87\" height=\"22\"\/> otherwise the session ends.<\/p>\n<\/li>\n<li>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"V\" alt=\"V\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/efa\/78f\/413\/efa78f4139bc822f386586fc69ad5c2d.svg\" width=\"15\" height=\"17\"\/> computes <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"g_2=e_m([\\phi^{-1}]\\mathsf{S}+[\\phi^{-1}]\\mathsf{P}, \\mathsf{N})=e_m([\\phi^{-1}(\\upsilon+\\mathbf{x})\\pmod m]\\mathsf{G}_1, \\mathsf{N}).\" alt=\"g_2=e_m([\\phi^{-1}]\\mathsf{S}+[\\phi^{-1}]\\mathsf{P}, \\mathsf{N})=e_m([\\phi^{-1}(\\upsilon+\\mathbf{x})\\pmod m]\\mathsf{G}_1, \\mathsf{N}).\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ba2\/296\/3d6\/ba22963d60bcc424719f2b2057a1e19e.svg\" width=\"546\" height=\"25\"\/> Then it checks <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"g_2\\stackrel{?}{=}g.\" alt=\"g_2\\stackrel{?}{=}g.\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/22f\/7c2\/f33\/22f7c2f33578686f7fba65c980fa3497.svg\" width=\"58\" height=\"29\"\/> If equal, then the proof is accepted, and rejected otherwise.<\/p>\n<\/li>\n<\/ol>\n<p>Now let&#8217;s see what IDS-compatible protocol can be proposed for the DS scheme from [Boneh_Shacham_Lynn_2004].<\/p>\n<p><strong>Protocol 2<\/strong><\/p>\n<p><em>Protocol messages.<\/em><\/p>\n<ol>\n<li>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"P \\longrightarrow V : \\mathsf{S}=[\\upsilon]\\mathsf{G}_1\" alt=\"P \\longrightarrow V : \\mathsf{S}=[\\upsilon]\\mathsf{G}_1\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/842\/8b3\/116\/8428b31165049514d43579990304509c.svg\" width=\"167\" height=\"22\"\/><\/p>\n<\/li>\n<li>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"P \\longleftarrow V :\u00a0 \\mathsf{T}=[\\phi]\\mathsf{G}_1\" alt=\"P \\longleftarrow V :\u00a0 \\mathsf{T}=[\\phi]\\mathsf{G}_1\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/8ce\/368\/57a\/8ce36857aa29693d446e185fb7a85eb8.svg\" width=\"170\" height=\"22\"\/><\/p>\n<\/li>\n<li>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"P \\longrightarrow\u00a0 V\u00a0 : \\mathsf{N}=[\\upsilon\\mathbf{x}\\pmod m]\\mathsf{T}\" alt=\"P \\longrightarrow\u00a0 V\u00a0 : \\mathsf{N}=[\\upsilon\\mathbf{x}\\pmod m]\\mathsf{T}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/685\/ac9\/3ac\/685ac93ac990bf22c2ed4aaf50e72128.svg\" width=\"270\" height=\"22\"\/><\/p>\n<\/li>\n<\/ol>\n<p><em>Actions of the parties.<\/em><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"P\" alt=\"P\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e43\/d26\/a1b\/e43d26a1b8e497e7970d0723970b2828.svg\" width=\"14\" height=\"17\"\/> proves to <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"V\" alt=\"V\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/691\/764\/8e1\/6917648e13a981eed9997b8e0ae74477.svg\" width=\"15\" height=\"17\"\/> that it owns (knows) <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathbf{x}.\" alt=\"\\mathbf{x}.\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/51f\/517\/b5a\/51f517b5a7cb8e37b2f3b5583acbb489.svg\" width=\"17\" height=\"12\"\/> To do this, the following steps are performed:<\/p>\n<ol>\n<li>\n<p>As in <strong>Protocol 1<\/strong>.<\/p>\n<\/li>\n<li>\n<p>As in <strong>Protocol 1<\/strong>.<\/p>\n<\/li>\n<li>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"P\" alt=\"P\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/cbe\/74a\/d09\/cbe74ad09d991cb1f8aa2b7b393b06b3.svg\" width=\"14\" height=\"17\"\/> checks <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"{\\mathsf{T}\\stackrel{?}\\neq\\infty},\" alt=\"{\\mathsf{T}\\stackrel{?}\\neq\\infty},\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/00b\/401\/2c3\/00b4012c3a2c62d4c9f573ab4d632b3b.svg\" width=\"63\" height=\"37\"\/> if it is true, it computes <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"{\\mathsf{N}=[\\upsilon\\mathbf{x}\\pmod m]\\mathsf{T}=[\\phi\\upsilon\\mathbf{x}\\pmod m]\\mathsf{G}_1}\" alt=\"{\\mathsf{N}=[\\upsilon\\mathbf{x}\\pmod m]\\mathsf{T}=[\\phi\\upsilon\\mathbf{x}\\pmod m]\\mathsf{G}_1}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/fad\/e6e\/43b\/fade6e43be05758c4917b186fe283771.svg\" width=\"372\" height=\"22\"\/> <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"(\\textit{response}),\" alt=\"(\\textit{response}),\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/bd5\/30e\/d48\/bd530ed489714d225091729105af3b69.svg\" width=\"93\" height=\"22\"\/> otherwise the session ends.<\/p>\n<\/li>\n<li>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"V\" alt=\"V\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/3a7\/ed7\/108\/3a7ed7108e64b3f28841c4910fda8db2.svg\" width=\"15\" height=\"17\"\/> computes <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"g_2=e_m([\\phi]\\mathsf{S}, \\mathsf{P})=g^{\\phi\\upsilon\\mathbf{x}\\pmod m}.\" alt=\"g_2=e_m([\\phi]\\mathsf{S}, \\mathsf{P})=g^{\\phi\\upsilon\\mathbf{x}\\pmod m}.\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/57c\/0d4\/9da\/57c0d49da26fd4e8c1b7f4808d74d8f8.svg\" width=\"266\" height=\"26\"\/> Then it checks <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"g_2\\stackrel{?}{=}e_m(\\mathsf{N}, \\mathsf{G}_1).\" alt=\"g_2\\stackrel{?}{=}e_m(\\mathsf{N}, \\mathsf{G}_1).\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b31\/6c0\/521\/b316c05214dae84eb8cf005561aafb5e.svg\" width=\"131\" height=\"30\"\/> If equal, then the proof is accepted, and rejected otherwise.<\/p>\n<\/li>\n<\/ol>\n<p>For <strong>Protocols 1<\/strong> and <strong>2<\/strong>, in case of successful completion of the identification stage, the parties independently compute a shared session secret key in accordance with the following rules:<\/p>\n<ol>\n<li>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"P\" alt=\"P\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/927\/dd7\/32e\/927dd732e41a9e180decbb50f3d7ca9b.svg\" width=\"14\" height=\"17\"\/> computes <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{A}=[\\upsilon]\\mathsf{T}=[\\upsilon\\phi\\pmod m]\\mathsf{G}_1.\" alt=\"\\mathsf{A}=[\\upsilon]\\mathsf{T}=[\\upsilon\\phi\\pmod m]\\mathsf{G}_1.\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/600\/f24\/a68\/600f24a688a2b07eaba27c74057879f9.svg\" width=\"255\" height=\"22\"\/><\/p>\n<\/li>\n<li>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"V\" alt=\"V\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f73\/4d0\/f7d\/f734d0f7d177e10df75f3fb4c8401f23.svg\" width=\"15\" height=\"17\"\/> computes <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{B}=[\\phi]\\mathsf{S}=[\\phi\\upsilon\\pmod m]\\mathsf{G}_1.\" alt=\"\\mathsf{B}=[\\phi]\\mathsf{S}=[\\phi\\upsilon\\pmod m]\\mathsf{G}_1.\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/eaf\/36c\/f31\/eaf36cf31a736ff4a5436f9b2fc6213a.svg\" width=\"254\" height=\"22\"\/><\/p>\n<\/li>\n<\/ol>\n<p>Obviously, <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{A}=\\mathsf{B}\" alt=\"\\mathsf{A}=\\mathsf{B}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/292\/228\/af8\/292228af847c35062dbae0242ec0cd30.svg\" width=\"51\" height=\"17\"\/> due to commutativity.<\/p>\n<p><strong>Impersonation of the verifier<\/strong><\/p>\n<p>An active attack includes a set of measures taken to replace the information that the parties exchange with each other during the identification protocol. <strong>Protocol 1<\/strong> and <strong>Protocol<\/strong> <strong>2<\/strong> are reliable provided that the probability of an active attack is negligible. For example, when data exchange between <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"P\" alt=\"P\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/73d\/3cc\/b91\/73d3ccb910f4cb518cf387d060d9a08f.svg\" width=\"14\" height=\"17\"\/> and <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"V\" alt=\"V\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e5a\/341\/448\/e5a3414482320370b49232d6e876e89c.svg\" width=\"15\" height=\"17\"\/> is carried out using NFC (Near-Field Communication) technology or similar.<\/p>\n<p>If the parties interact through other insecure communication channels, including the Internet, then an active attack aimed at impersonating the verifier is possible. Let&#8217;s call the bogus verifier as <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"V'.\" alt=\"V'.\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/414\/e98\/e7d\/414e98e7d5216413995b81f2916a3e9b.svg\" width=\"27\" height=\"19\"\/> The attacker tries to replace <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"V\" alt=\"V\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/3b4\/c04\/11d\/3b4c0411d3605e7d3fbf7a01e2453d6c.svg\" width=\"15\" height=\"17\"\/> with <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"V'.\" alt=\"V'.\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/0a8\/7a4\/b0e\/0a87a4b0ee81f851757e5cb960204255.svg\" width=\"27\" height=\"19\"\/><\/p>\n<p>Let&#8217;s choose <strong>Protocol 2<\/strong> as the object of attack. Using the interception and blocking technique, the attacker is able to impose <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{T}'=[\\phi']\\mathsf{G}_1\" alt=\"\\mathsf{T}'=[\\phi']\\mathsf{G}_1\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/624\/1b5\/769\/6241b5769ec6222f48efc8ad2d6ff441.svg\" width=\"94\" height=\"23\"\/> instead of <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{T},\" alt=\"\\mathsf{T},\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/562\/c8d\/a5d\/562c8da5d2f3b4ba3bcfc6a1f337a72c.svg\" width=\"18\" height=\"20\"\/> such that <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\phi'=\\phi\" alt=\"\\phi'=\\phi\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/00c\/1e7\/aac\/00c1e7aac67fc8de92e7c333e3bf782b.svg\" width=\"54\" height=\"22\"\/> with v.s.p. The <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"P\" alt=\"P\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/335\/680\/1a6\/3356801a6ebda4fd52968877a02c2d23.svg\" width=\"14\" height=\"17\"\/> computes <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\textit{response}\" alt=\"\\textit{response}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f48\/f4d\/cd4\/f48f4dcd44a568b95a41fee36d688deb.svg\" width=\"72\" height=\"15\"\/> as <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{N}'=[\\upsilon\\mathbf{x}\\pmod m]\\mathsf{T}'=[\\phi'\\upsilon\\mathbf{x}\\pmod m]\\mathsf{G}_1.\" alt=\"\\mathsf{N}'=[\\upsilon\\mathbf{x}\\pmod m]\\mathsf{T}'=[\\phi'\\upsilon\\mathbf{x}\\pmod m]\\mathsf{G}_1.\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/731\/f2f\/b92\/731f2fb92c8de615433838480d6d0f76.svg\" width=\"394\" height=\"23\"\/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"V'\" alt=\"V'\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/8de\/a9e\/6e4\/8dea9e6e4578b14c04a17f9e1cb1ccd6.svg\" width=\"22\" height=\"19\"\/> computes <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\hat{g}_2=e_m([\\phi']\\mathsf{S}, \\mathsf{P})=g^{\\phi'\\upsilon\\mathbf{x}\\pmod m}\" alt=\"\\hat{g}_2=e_m([\\phi']\\mathsf{S}, \\mathsf{P})=g^{\\phi'\\upsilon\\mathbf{x}\\pmod m}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/176\/316\/54a\/17631654a26dab4607cc44112e71e609.svg\" width=\"271\" height=\"27\"\/> and checks <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\hat{g}_2\\stackrel{?}{=}e_m(\\mathsf{N}', \\mathsf{G}_1).\" alt=\"\\hat{g}_2\\stackrel{?}{=}e_m(\\mathsf{N}', \\mathsf{G}_1).\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e8f\/057\/fd9\/e8f057fd964ca71aabaa7e122f0cec36.svg\" width=\"137\" height=\"30\"\/> <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"P\" alt=\"P\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e1a\/bef\/aba\/e1abefaba95abec3a0c719bc566ecf54.svg\" width=\"14\" height=\"17\"\/> computes <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"{\\mathsf{A}'=[\\upsilon]\\mathsf{T}'=[\\upsilon\\phi'\\pmod m]\\mathsf{G}_1}\" alt=\"{\\mathsf{A}'=[\\upsilon]\\mathsf{T}'=[\\upsilon\\phi'\\pmod m]\\mathsf{G}_1}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ed1\/f93\/350\/ed1f93350e118ba7d33ca01ac23befb7.svg\" width=\"267\" height=\"23\"\/> and <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"V'\" alt=\"V'\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/8d3\/23a\/47b\/8d323a47bab8db42519c68c59ac4825a.svg\" width=\"22\" height=\"19\"\/> computes <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{B}'=[\\phi']\\mathsf{S}=[\\phi'\\upsilon\\pmod m]\\mathsf{G}_1.\" alt=\"\\mathsf{B}'=[\\phi']\\mathsf{S}=[\\phi'\\upsilon\\pmod m]\\mathsf{G}_1.\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5f1\/27a\/9f0\/5f127a9f0b2eb624df69d3f515f5d720.svg\" width=\"271\" height=\"23\"\/> It is obvious that <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{A}'=\\mathsf{B}'.\" alt=\"\\mathsf{A}'=\\mathsf{B}'.\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c5b\/123\/472\/c5b1234722ea250fee6735eb1a17ff63.svg\" width=\"68\" height=\"19\"\/><\/p>\n<p>The above mentioned reasoning is equally valid for <strong>Protocol 1<\/strong>. In addition, the attack is also applicable to <a href=\"https:\/\/habr.com\/ru\/articles\/748354\/\" rel=\"noopener noreferrer nofollow\"><u>modified Schnorr protocol<\/u><\/a>.<\/p>\n<p>In the next section, we will demonstrate a protocol where impersonation is not presumably possible.<\/p>\n<p><strong>Protocol resistant to impersonation<\/strong><\/p>\n<p>Let&#8217;s assume that, for <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"{\\mathbf{x}, \\mathbf{y}\\in_R\\!(0,m-1]}\" alt=\"{\\mathbf{x}, \\mathbf{y}\\in_R\\!(0,m-1]}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/379\/7c0\/9eb\/3797c09ebf84b33c4ca4e855a48b222f.svg\" width=\"146\" height=\"22\"\/> <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"P\" alt=\"P\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/78e\/c04\/a77\/78ec04a7724ddf47e353330830c0ecf3.svg\" width=\"14\" height=\"17\"\/> and <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"V\" alt=\"V\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ddc\/0cd\/f4f\/ddc0cdf4f53287200d89a29594b321cb.svg\" width=\"15\" height=\"17\"\/> own key pairs <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\{\\mathbf{x}, \\mathsf{P}_P=[\\mathbf{x}]\\mathsf{G}_1\\}\" alt=\"\\{\\mathbf{x}, \\mathsf{P}_P=[\\mathbf{x}]\\mathsf{G}_1\\}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/7df\/b64\/ad8\/7dfb64ad8d21a84be07ed4082566bbda.svg\" width=\"134\" height=\"22\"\/> and <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\{\\mathbf{y},\\mathsf{P}_V=[\\mathbf{y}]\\mathsf{ G}_1\\},\" alt=\"\\{\\mathbf{y},\\mathsf{P}_V=[\\mathbf{y}]\\mathsf{ G}_1\\},\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/32a\/729\/e84\/32a729e8402273bd5554950dde734908.svg\" width=\"139\" height=\"22\"\/> respectively. There are certificates <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\{D_P,\\mathsf{P}_P, \\widetilde{\\Im}_{\\rm{T}}\\}\" alt=\"\\{D_P,\\mathsf{P}_P, \\widetilde{\\Im}_{\\rm{T}}\\}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/575\/94d\/edf\/57594dedf9cedd58c4a90f472f08daa7.svg\" width=\"112\" height=\"24\"\/> and <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\{D_V,\\mathsf{P}_V, \\widehat{\\Im}_{\\rm{T}}\\}\" alt=\"\\{D_V,\\mathsf{P}_V, \\widehat{\\Im}_{\\rm{T}}\\}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f5e\/d6d\/527\/f5ed6d52734a9ad2b744e0df7a8b125a.svg\" width=\"112\" height=\"26\"\/> issued for <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{P}_P\" alt=\"\\mathsf{P}_P\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b45\/142\/663\/b4514266336b3df74998b01f5b7e00b0.svg\" width=\"24\" height=\"19\"\/> and <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{P}_V.\" alt=\"\\mathsf{P}_V.\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/8f5\/ccc\/a95\/8f5ccca953f11668f8b0de1bc6d8f71f.svg\" width=\"30\" height=\"20\"\/><\/p>\n<p>Let us consider an IDS-compatible and at the same time impersonation-resistant protocol.<\/p>\n<p><strong>Protocol 3<\/strong><\/p>\n<p><em>Protocol messages<\/em>.<\/p>\n<ol>\n<li>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"P \\longrightarrow V : \\mathsf{S}=[\\upsilon]\\mathsf{P}_V\" alt=\"P \\longrightarrow V : \\mathsf{S}=[\\upsilon]\\mathsf{P}_V\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c93\/83b\/ade\/c9383badea3e305ad674965d904540d1.svg\" width=\"170\" height=\"22\"\/><\/p>\n<\/li>\n<li>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"P \\longleftarrow V :\u00a0 \\mathsf{T}=[\\phi]\\mathsf{P}_P\" alt=\"P \\longleftarrow V :\u00a0 \\mathsf{T}=[\\phi]\\mathsf{P}_P\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/049\/819\/4b6\/0498194b6be9bad3c4a19d0ffa2606e8.svg\" width=\"173\" height=\"22\"\/><\/p>\n<\/li>\n<li>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"P \\longrightarrow\u00a0 V\u00a0 : \\mathsf{N}=[\\upsilon^{-1}\\mathbf{x}^{-1}\\pmod m]\\mathsf{T}\" alt=\"P \\longrightarrow\u00a0 V\u00a0 : \\mathsf{N}=[\\upsilon^{-1}\\mathbf{x}^{-1}\\pmod m]\\mathsf{T}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/fb8\/b6c\/df2\/fb8b6cdf24b66579ee01834ce807211b.svg\" width=\"309\" height=\"25\"\/><\/p>\n<\/li>\n<\/ol>\n<p><em>Actions of the parties<\/em>.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"P\" alt=\"P\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/4c9\/c84\/c3c\/4c9c84c3cb9175a732bb1ffe71518848.svg\" width=\"14\" height=\"17\"\/> proves to <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"V\" alt=\"V\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/8d5\/fd4\/8df\/8d5fd48dfed3caab9e421c8bdefb2873.svg\" width=\"15\" height=\"17\"\/> that it owns (knows) <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathbf{x}.\" alt=\"\\mathbf{x}.\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/413\/c65\/848\/413c658489ab467f16b26355f98e2ba5.svg\" width=\"17\" height=\"12\"\/> To do this, the following steps are performed:<\/p>\n<ol>\n<li>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"P\" alt=\"P\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/6ef\/783\/e25\/6ef783e25b655813c49d7f3a4b5b6a06.svg\" width=\"14\" height=\"17\"\/> reads the current certificate <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\{D_V,\\mathsf{P}_V, \\widehat{\\Im}_{\\rm{T}}\\}\" alt=\"\\{D_V,\\mathsf{P}_V, \\widehat{\\Im}_{\\rm{T}}\\}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/695\/84d\/5f0\/69584d5f0ef559e3151d1cd10a1a0f71.svg\" width=\"112\" height=\"26\"\/> and verifies the DS of the trusted party <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\rm{T}.\" alt=\"\\rm{T}.\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ac8\/a4a\/fc7\/ac8a4afc7037522d59f561b346cafca5.svg\" width=\"19\" height=\"17\"\/> If <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathfrak{B}=False\" alt=\"\\mathfrak{B}=False\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a83\/409\/27b\/a8340927b381b035806c255bb7a1611e.svg\" width=\"91\" height=\"17\"\/> then the session ends. If <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathfrak{B}=True\" alt=\"\\mathfrak{B}=True\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/99c\/7b4\/b12\/99c7b4b1287fedf254d81b46a1030805.svg\" width=\"85\" height=\"17\"\/> then it selects <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"{\\upsilon\\in_R\\!(0,m-1]}\" alt=\"{\\upsilon\\in_R\\!(0,m-1]}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/083\/1d8\/435\/0831d84350f231e7c741a500d8fb98aa.svg\" width=\"124\" height=\"22\"\/> <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"(\\textit{commitment}),\" alt=\"(\\textit{commitment}),\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/323\/c67\/6eb\/323c676ebffa8a240409353eaee48d71.svg\" width=\"125\" height=\"22\"\/> computes <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{S}=[\\upsilon] \\mathsf{P}_V=[\\upsilon\\mathbf{y}\\pmod m]\\mathsf{G}_1\" alt=\"\\mathsf{S}=[\\upsilon] \\mathsf{P}_V=[\\upsilon\\mathbf{y}\\pmod m]\\mathsf{G}_1\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e4c\/853\/0df\/e4c8530df5626dd0cdb65cab90280a65.svg\" width=\"260\" height=\"22\"\/> <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"(\\textit{witness}),\" alt=\"(\\textit{witness}),\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/08a\/175\/d91\/08a175d91c491d8065bdb74426b6a060.svg\" width=\"81\" height=\"22\"\/> checks <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"{\\mathsf{S}\\stackrel{?}\\neq \\infty}.\" alt=\"{\\mathsf{S}\\stackrel{?}\\neq \\infty}.\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c91\/185\/9f0\/c911859f0241e97c820cd0a2c8fbb58e.svg\" width=\"61\" height=\"37\"\/> If <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{S}=\\infty,\" alt=\"\\mathsf{S}=\\infty,\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d75\/2ba\/5a7\/d752ba5a7695396d52ae6ae85b1d7ea5.svg\" width=\"61\" height=\"20\"\/> then it chooses a new <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\upsilon\" alt=\"\\upsilon\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/0af\/956\/649\/0af956649f820d20111e38ca1bbd5b39.svg\" width=\"10\" height=\"12\"\/> and re-executes the necessary computations and checks.<\/p>\n<\/li>\n<li>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"V\" alt=\"V\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/bc5\/eb9\/2f0\/bc5eb92f0618ba7fae82a17eb308bb7b.svg\" width=\"15\" height=\"17\"\/> reads the current certificate <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\{D_P,\\mathsf{P}_P, \\widetilde{\\Im}_{\\rm{T}}\\}\" alt=\"\\{D_P,\\mathsf{P}_P, \\widetilde{\\Im}_{\\rm{T}}\\}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/cc2\/2a6\/c82\/cc22a6c820248288ee3a26baa130cf1f.svg\" width=\"112\" height=\"24\"\/> and verifies the DS of the trusted party <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\rm{T}.\" alt=\"\\rm{T}.\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/759\/71a\/3de\/75971a3dea19a23edd53dec8e945813e.svg\" width=\"19\" height=\"17\"\/> If <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathfrak{B}=False\" alt=\"\\mathfrak{B}=False\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e91\/5c8\/db2\/e915c8db287e93b992c8e4246ac24470.svg\" width=\"91\" height=\"17\"\/> then the session ends. If <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathfrak{B}=True\" alt=\"\\mathfrak{B}=True\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/0fc\/b66\/bd3\/0fcb66bd3422003f2e26f6a3263326ba.svg\" width=\"85\" height=\"17\"\/> then it chooses <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"{\\phi\\in_R\\!(0, m-1]}\" alt=\"{\\phi\\in_R\\!(0, m-1]}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/0de\/c22\/505\/0dec2250550b70c5d463f4d764a41666.svg\" width=\"125\" height=\"22\"\/> and computes <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{T}=[\\phi]\\mathsf{P}_P= [\\phi\\mathbf{x}\\pmod m]\\mathsf{G}_1\" alt=\"\\mathsf{T}=[\\phi]\\mathsf{P}_P= [\\phi\\mathbf{x}\\pmod m]\\mathsf{G}_1\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/353\/638\/49e\/35363849e71be066b1b375cc750174da.svg\" width=\"264\" height=\"22\"\/> <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"(\\textit{challenge}).\" alt=\"(\\textit{challenge}).\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b03\/dfe\/0eb\/b03dfe0eb6891c0377476608b7e74d3f.svg\" width=\"96\" height=\"22\"\/> If <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{T}=\\infty,\" alt=\"\\mathsf{T}=\\infty,\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1de\/e5e\/1d1\/1dee5e1d1e92fa1a7d33f7faf259c5f0.svg\" width=\"63\" height=\"20\"\/> then it chooses a new <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\phi\" alt=\"\\phi\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/cd4\/3d5\/a11\/cd43d5a11d1d9148d9a1c1a353170fdf.svg\" width=\"11\" height=\"20\"\/> and re-executes the necessary computations and checks.<\/p>\n<\/li>\n<li>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"P\" alt=\"P\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/263\/6c1\/dff\/2636c1dff07a7346485d6e1cee98f932.svg\" width=\"14\" height=\"17\"\/> checks <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{T}\\stackrel{?}\\neq\\infty.\" alt=\"\\mathsf{T}\\stackrel{?}\\neq\\infty.\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/483\/081\/bef\/483081bef8d9219337faee70f3c52dfe.svg\" width=\"63\" height=\"37\"\/> if it is true, it computes <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{N}=[\\upsilon^{-1}\\mathbf{x}^ {-1}\\pmod m]\\mathsf{T}=[\\phi\\upsilon^{-1}\\pmod m]\\mathsf{G}_1\" alt=\"\\mathsf{N}=[\\upsilon^{-1}\\mathbf{x}^ {-1}\\pmod m]\\mathsf{T}=[\\phi\\upsilon^{-1}\\pmod m]\\mathsf{G}_1\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1f4\/74b\/859\/1f474b85996852dfda6604984507dcad.svg\" width=\"418\" height=\"25\"\/> <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"(\\textit{response}),\" alt=\"(\\textit{response}),\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a37\/888\/fe1\/a37888fe1cabcd03baf541ab06cffb92.svg\" width=\"93\" height=\"22\"\/> otherwise the session ends.<\/p>\n<\/li>\n<li>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"V\" alt=\"V\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/017\/720\/5b2\/0177205b2d8588a900f9a26a82bd0deb.svg\" width=\"15\" height=\"17\"\/> computes <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"g_2=e_m(\\mathsf{S}, \\mathsf{N})=e_m([\\upsilon\\mathbf{y}\\pmod m]\\mathsf{G}_1, [\\phi\\upsilon^{ -1}\\pmod m]\\mathsf{G}_1)=g^{\\phi\\mathbf{y}\\pmod m}.\" alt=\"g_2=e_m(\\mathsf{S}, \\mathsf{N})=e_m([\\upsilon\\mathbf{y}\\pmod m]\\mathsf{G}_1, [\\phi\\upsilon^{ -1}\\pmod m]\\mathsf{G}_1)=g^{\\phi\\mathbf{y}\\pmod m}.\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/9b1\/a4b\/486\/9b1a4b4865781fce39fd1a0d736558cb.svg\" width=\"632\" height=\"26\"\/> Then it checks <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"g_2\\stackrel{?}{=}e_m([\\phi]\\mathsf{P}_V, \\mathsf{G}_1).\" alt=\"g_2\\stackrel{?}{=}e_m([\\phi]\\mathsf{P}_V, \\mathsf{G}_1).\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b95\/99e\/f26\/b9599ef26abdd0704f793b48a44b9375.svg\" width=\"164\" height=\"30\"\/> If equal, then the proof is accepted, and rejected otherwise.<\/p>\n<\/li>\n<\/ol>\n<p>If <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"V\" alt=\"V\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c5b\/ecb\/f94\/c5becbf9434e6af3170dc7cf99274ffd.svg\" width=\"15\" height=\"17\"\/> accepted the proof provided by <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"P,\" alt=\"P,\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/697\/71e\/1a6\/69771e1a61b96d0f5b12648b4bbcb626.svg\" width=\"20\" height=\"20\"\/> then the parties independently compute a shared session secret:<\/p>\n<ol>\n<li>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"P\" alt=\"P\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/91e\/9dd\/4db\/91e9dd4db0c219faba449a9e76a507c3.svg\" width=\"14\" height=\"17\"\/> computes <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{A}=[\\upsilon\\mathbf{x}^{-1}\\pmod m]\\mathsf{T}=[\\upsilon\\phi\\pmod m]\\mathsf{G}_1.\" alt=\"\\mathsf{A}=[\\upsilon\\mathbf{x}^{-1}\\pmod m]\\mathsf{T}=[\\upsilon\\phi\\pmod m]\\mathsf{G}_1.\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a1d\/db1\/a37\/a1ddb1a37121b984c71f6bfa54daa1b6.svg\" width=\"384\" height=\"25\"\/><\/p>\n<\/li>\n<li>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"V\" alt=\"V\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e54\/5c9\/bd8\/e545c9bd812ba72e99435d2d7ba3cd94.svg\" width=\"15\" height=\"17\"\/> computes\u00a0 <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{B}=[\\phi\\mathbf{y}^{-1}\\pmod m]\\mathsf{S}=[\\phi\\upsilon\\pmod m]\\mathsf{G}_1.\" alt=\"\\mathsf{B}=[\\phi\\mathbf{y}^{-1}\\pmod m]\\mathsf{S}=[\\phi\\upsilon\\pmod m]\\mathsf{G}_1.\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/6b5\/7c6\/48f\/6b57c648f10569208bdd709d0bfec2a3.svg\" width=\"382\" height=\"25\"\/><\/p>\n<\/li>\n<\/ol>\n<p>It is clear that <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{A}=\\mathsf{B}\" alt=\"\\mathsf{A}=\\mathsf{B}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c6b\/a25\/311\/c6ba253112902da5c780fd0469a7bc69.svg\" width=\"51\" height=\"17\"\/> due to commutativity.<\/p>\n<p><strong>Preliminary analysis<\/strong><\/p>\n<p>Let bogus verifier <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"V'\" alt=\"V'\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/0cc\/c53\/a01\/0ccc53a018a11ef98c3197f0966da424.svg\" width=\"22\" height=\"19\"\/> owns the key pair <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\{\\mathbf{\\acute{y}},\\mathsf{P}_{V'}=[\\mathbf{\\acute{y}}]\\mathsf{G} _1\\},\" alt=\"\\{\\mathbf{\\acute{y}},\\mathsf{P}_{V'}=[\\mathbf{\\acute{y}}]\\mathsf{G} _1\\},\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/491\/5e8\/899\/4915e8899b921c971d9f6d41e9c0ee9d.svg\" width=\"144\" height=\"22\"\/> <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathbf{\\acute{y}}=\\mathbf{y}\" alt=\"\\mathbf{\\acute{y}}=\\mathbf{y}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/333\/c68\/90d\/333c6890ddc7fa5e02cf9546c72f9e9e.svg\" width=\"49\" height=\"21\"\/> with v.s.p.<\/p>\n<p>We restrict ourselves to the analysis of <strong>Protocol 3<\/strong>, in which it is necessary to impose <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{S}'=[\\upsilon]\\mathsf{P}_{V'}\" alt=\"\\mathsf{S}'=[\\upsilon]\\mathsf{P}_{V'}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/8d6\/594\/cde\/8d6594cde6dd27b382ca1b1ad329d7d8.svg\" width=\"93\" height=\"24\"\/> instead of <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{S}\" alt=\"\\mathsf{S}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e8c\/852\/b7e\/e8c852b7e7ab7f2aeccb6c26a83b39b8.svg\" width=\"11\" height=\"17\"\/> in order to impersonate the verifier (replace <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"V\" alt=\"V\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d26\/49d\/a24\/d2649da241bd7bb4a01f5b41a11baf13.svg\" width=\"15\" height=\"17\"\/> with <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"V'\" alt=\"V'\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a9d\/4d8\/ae7\/a9d4d8ae7b34d889801f539ce52045f6.svg\" width=\"22\" height=\"19\"\/>). However, the attacker does not know the <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\upsilon\" alt=\"\\upsilon\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/32b\/5d9\/fe3\/32b5d9fe3c42c2caa5d7d488c18c0cc3.svg\" width=\"10\" height=\"12\"\/> ephemeris. To reveal <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\upsilon,\" alt=\"\\upsilon,\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1b2\/e82\/b4b\/1b2e82b4b2d8c460357efe7edb92f6a9.svg\" width=\"16\" height=\"15\"\/> one need to solve an ECDLP\/DLP given\u00a0 <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{S}\" alt=\"\\mathsf{S}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/efc\/fcd\/8a7\/efcfcd8a72bd395b8a4893077bec04c3.svg\" width=\"11\" height=\"17\"\/> or <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"e_m(\\mathsf{S}, \\mathsf{G}_1).\" alt=\"e_m(\\mathsf{S}, \\mathsf{G}_1).\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/2ef\/dda\/dee\/2efddadeeb8569b5f0a6af8e97643e91.svg\" width=\"84\" height=\"22\"\/> <\/p>\n<p>Another strategy is to solve ECDLP\/DLP given <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{P}_V\" alt=\"\\mathsf{P}_V\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/8bf\/cb3\/730\/8bfcb3730d6bf956d253649a5b5f959e.svg\" width=\"25\" height=\"20\"\/> or <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"e_m(\\mathsf{P}_V, \\mathsf{G}_1).\" alt=\"e_m(\\mathsf{P}_V, \\mathsf{G}_1).\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ea0\/e80\/308\/ea0e80308e01fbdb5e04237ef35fdf35.svg\" width=\"98\" height=\"22\"\/> Then <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"{\\mathsf{S}'=[\\mathbf{y}^{-1} \\mathbf{\\acute{y}}\\pmod m]\\mathsf{S}= [\\upsilon]\\mathsf{P}_{V'}}.\" alt=\"{\\mathsf{S}'=[\\mathbf{y}^{-1} \\mathbf{\\acute{y}}\\pmod m]\\mathsf{S}= [\\upsilon]\\mathsf{P}_{V'}}.\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/bb7\/cb6\/bbc\/bb7cb6bbc39d8a5f64d20c438eba8272.svg\" width=\"285\" height=\"25\"\/> The relationship between ECDLP and DLP is explained in <a href=\"https:\/\/mega.nz\/file\/xSZkDAia#vIHZsR5MOHMfSMpjbaOWvhwgYasDzZ21kezv5i3ylcw\" rel=\"noopener noreferrer nofollow\"><u>Appendix A<\/u><\/a>.<\/p>\n<p>The attacker has access to <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{P}_P\" alt=\"\\mathsf{P}_P\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/01b\/ae4\/53d\/01bae453d11d019eea17f31ac13b7a9c.svg\" width=\"24\" height=\"19\"\/> and is able to impose <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{T}'=[\\phi']\\mathsf{P}_P\" alt=\"\\mathsf{T}'=[\\phi']\\mathsf{P}_P\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/dda\/346\/9d0\/dda3469d00e74967af0778bbebb33b8f.svg\" width=\"97\" height=\"23\"\/> instead of <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{T}\" alt=\"\\mathsf{T}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/0f6\/b3f\/4a9\/0f6b3f4a9ab573bc7f7a1acf7e7dbc4d.svg\" width=\"13\" height=\"17\"\/> and <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{S}'=[\\upsilon']\\mathsf{P}_{V'}\" alt=\"\\mathsf{S}'=[\\upsilon']\\mathsf{P}_{V'}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e91\/326\/eba\/e91326eba68e1c8e74dd176b0b92f073.svg\" width=\"98\" height=\"24\"\/> instead of <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf {S},\" alt=\"\\mathsf {S},\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d15\/e48\/7de\/d15e487de9974750a51a7bf73bdd89dd.svg\" width=\"16\" height=\"20\"\/> while <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\phi'=\\phi\" alt=\"\\phi'=\\phi\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ecd\/cd3\/b74\/ecdcd3b749be4790843d5ce6d454a0c1.svg\" width=\"54\" height=\"22\"\/> and <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\upsilon'=\\upsilon\" alt=\"\\upsilon'=\\upsilon\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/4bd\/642\/2bc\/4bd6422bcf52e4a3d93c8e3e8f783429.svg\" width=\"52\" height=\"19\"\/> being with v.s.p. <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"P\" alt=\"P\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/89f\/34a\/8da\/89f34a8dad15757eecc59da0f56f15ce.svg\" width=\"14\" height=\"17\"\/> computes <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\textit{response}\" alt=\"\\textit{response}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5dc\/6f7\/cc2\/5dc6f7cc2932935d5f23d1bb6317d06a.svg\" width=\"72\" height=\"15\"\/> as <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{N}'=[\\upsilon^{-1}\\mathbf{x}^{-1}\\pmod m]\\mathsf{T}'.\" alt=\"\\mathsf{N}'=[\\upsilon^{-1}\\mathbf{x}^{-1}\\pmod m]\\mathsf{T}'.\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/72a\/808\/572\/72a8085721f89e31297b15828f224ef0.svg\" width=\"238\" height=\"25\"\/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"V'\" alt=\"V'\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/22e\/541\/254\/22e5412547469fa2920f0ef4b0c9e496.svg\" width=\"22\" height=\"19\"\/> computes <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\hat{g}_2=e_m(\\mathsf{S}', \\mathsf{N}')=e_m([\\upsilon'\\mathbf{\\acute{y}}\\pmod m]\\mathsf{G}_1, [\\phi'\\upsilon^{-1}\\pmod m]\\mathsf{G}_1)=g^{\\upsilon'\\mathbf{\\acute{y}}\\phi'\\upsilon^{-1}\\pmod m}.\" alt=\"\\hat{g}_2=e_m(\\mathsf{S}', \\mathsf{N}')=e_m([\\upsilon'\\mathbf{\\acute{y}}\\pmod m]\\mathsf{G}_1, [\\phi'\\upsilon^{-1}\\pmod m]\\mathsf{G}_1)=g^{\\upsilon'\\mathbf{\\acute{y}}\\phi'\\upsilon^{-1}\\pmod m}.\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/695\/d78\/1af\/695d781af1a51cef1590f9c27d20e565.svg\" width=\"692\" height=\"27\"\/>   Obviously, <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\hat{g}_2=e_m([\\phi']\\mathsf{P}_{V'}, \\mathsf{G}_1)\" alt=\"\\hat{g}_2=e_m([\\phi']\\mathsf{P}_{V'}, \\mathsf{G}_1)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/6a8\/cc5\/9e2\/6a8cc59e2353085b88b9f692ff35e4bf.svg\" width=\"170\" height=\"23\"\/> with v.s.p. In addition, the attacker can choose arbitrary <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\upsilon'\" alt=\"\\upsilon'\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/693\/742\/464\/6937424644c50c8d6cf88d8789402c25.svg\" width=\"16\" height=\"19\"\/> and <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\phi'.\" alt=\"\\phi'.\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/17a\/111\/2ef\/17a1112ef56d6b6a9c6cbf7e5268af48.svg\" width=\"23\" height=\"22\"\/> Let <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\upsilon'=\\phi'=1\" alt=\"\\upsilon'=\\phi'=1\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/44f\/e3e\/582\/44fe3e582620a33eca4c01475aace828.svg\" width=\"94\" height=\"22\"\/> but <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"g^{\\mathbf{\\acute{y}}\\upsilon^{-1}\\pmod m}=g^{\\mathbf{\\acute{y}}}\" alt=\"g^{\\mathbf{\\acute{y}}\\upsilon^{-1}\\pmod m}=g^{\\mathbf{\\acute{y}}}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/bc1\/aea\/0cb\/bc1aea0cbc05a7739ef0e243ca53769c.svg\" width=\"150\" height=\"26\"\/> with v.s.p.<\/p>\n<p>It is easy to show that replacement of <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{T}\" alt=\"\\mathsf{T}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5a0\/dd5\/8c3\/5a0dd58c38783f2042d7f02580d73163.svg\" width=\"13\" height=\"17\"\/> does not lead to the desired result. To do this, when computing <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\hat{g}_2,\" alt=\"\\hat{g}_2,\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/97b\/ea9\/90a\/97bea990a72502bb50afa696f1155d84.svg\" width=\"24\" height=\"21\"\/> we set <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{N}'=\\mathsf{N}.\" alt=\"\\mathsf{N}'=\\mathsf{N}.\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/aaf\/285\/5ab\/aaf2855abf8b2e2f18e9675d9b2dae58.svg\" width=\"64\" height=\"19\"\/> However, <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"g^{\\upsilon'\\mathbf{\\acute{y}}\\phi\\upsilon^{-1}\\pmod m}=g^{\\phi'\\mathbf{\\acute{y}}\\pmod m }\" alt=\"g^{\\upsilon'\\mathbf{\\acute{y}}\\phi\\upsilon^{-1}\\pmod m}=g^{\\phi'\\mathbf{\\acute{y}}\\pmod m }\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/713\/cd2\/97c\/713cd297c6bcf0b368335011b6c10c14.svg\" width=\"246\" height=\"26\"\/> with v.s.p.<\/p>\n<p>If we assume that the attacker imposes <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{T}'\" alt=\"\\mathsf{T}'\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a2c\/3e3\/2fe\/a2c3e32fe2a087ec01dd617ce44dc8e9.svg\" width=\"19\" height=\"19\"\/> instead of <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{T},\" alt=\"\\mathsf{T},\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f8f\/42b\/c32\/f8f42bc329d78f0db5ba459efe094143.svg\" width=\"18\" height=\"20\"\/> but there is no replacement of <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{S},\" alt=\"\\mathsf{S},\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/4d3\/108\/be6\/4d3108be6df9d8be49dc03451f907bf1.svg\" width=\"16\" height=\"20\"\/> then the impersonation of <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"V\" alt=\"V\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/6ba\/be8\/18f\/6babe818ffde846af3a1be152a96aaf6.svg\" width=\"15\" height=\"17\"\/> is also impossible, since <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"g^{\\upsilon'\\mathbf{\\acute{y}}\\phi\\upsilon^{-1}\\pmod m}=g^{\\phi'\\mathbf{\\acute{y}}\\pmod m}\" alt=\"g^{\\upsilon'\\mathbf{\\acute{y}}\\phi\\upsilon^{-1}\\pmod m}=g^{\\phi'\\mathbf{\\acute{y}}\\pmod m}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/8b3\/30d\/ab9\/8b330dab94c7df31d868cb6b88a793c1.svg\" width=\"246\" height=\"26\"\/> with v.s.p.<\/p>\n<p>Note that <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{A}'=[\\upsilon\\mathbf{x}^{-1}\\pmod m]\\mathsf{T}'=[\\upsilon\\phi'\\pmod m]\\mathsf{G} _1,\" alt=\"\\mathsf{A}'=[\\upsilon\\mathbf{x}^{-1}\\pmod m]\\mathsf{T}'=[\\upsilon\\phi'\\pmod m]\\mathsf{G} _1,\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/dbb\/192\/a05\/dbb192a05302c408f0881b67f15f6fb8.svg\" width=\"401\" height=\"25\"\/> <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{B}'=[\\phi'\\mathbf{\\acute{y}}^{-1}\\pmod m]\\mathsf{S}=[\\phi'\\upsilon\\mathbf{\\acute {y}}^{-1}\\mathbf{y}\\pmod m]\\mathsf{G}_1\" alt=\"\\mathsf{B}'=[\\phi'\\mathbf{\\acute{y}}^{-1}\\pmod m]\\mathsf{S}=[\\phi'\\upsilon\\mathbf{\\acute {y}}^{-1}\\mathbf{y}\\pmod m]\\mathsf{G}_1\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b00\/089\/6bf\/b000896bf961f39ae6980dd05843d282.svg\" width=\"437\" height=\"25\"\/> or <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{B}'=[\\phi'\\mathbf{\\acute{y}}^{- 1}\\pmod m]\\mathsf{S}'=[\\phi'\\upsilon'\\pmod m]\\mathsf{G}_1.\" alt=\"\\mathsf{B}'=[\\phi'\\mathbf{\\acute{y}}^{- 1}\\pmod m]\\mathsf{S}'=[\\phi'\\upsilon'\\pmod m]\\mathsf{G}_1.\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/fb1\/0a0\/15b\/fb10a015ba76ab0c73387879ebb34b67.svg\" width=\"411\" height=\"25\"\/> Therefore, <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{A}'=\\mathsf{B}'\" alt=\"\\mathsf{A}'=\\mathsf{B}'\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/381\/565\/f35\/381565f35b6a376ed7ec15a4295dad94.svg\" width=\"63\" height=\"19\"\/> with v.s.p.<\/p>\n<p>When computing <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{T}',\" alt=\"\\mathsf{T}',\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1c4\/eaa\/660\/1c4eaa66090f2704e934d2378a85e0c3.svg\" width=\"24\" height=\"22\"\/> replacing <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{P}_P\" alt=\"\\mathsf{P}_P\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/9e1\/101\/f24\/9e1101f24eb06bed538a7226ed10f5be.svg\" width=\"24\" height=\"19\"\/> with some <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{P}_{P'}\" alt=\"\\mathsf{P}_{P'}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ecf\/25a\/3a9\/ecf25a3a9cd85bb61aceb6eb8087afa1.svg\" width=\"29\" height=\"21\"\/> seems to be counterproductive. If such a replacement is allowed, then <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{P}_{P'}=[\\mathbf{\\acute{x}}]\\mathsf{G}_1,\" alt=\"\\mathsf{P}_{P'}=[\\mathbf{\\acute{x}}]\\mathsf{G}_1,\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d31\/713\/8f2\/d317138f22461725ca6b93314c1a896d.svg\" width=\"104\" height=\"22\"\/> <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathbf{\\acute{x}}=\\mathbf{x}\" alt=\"\\mathbf{\\acute{x}}=\\mathbf{x}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1d2\/f0b\/2a3\/1d2f0b2a399465e57280ebfcc0f9cdc1.svg\" width=\"49\" height=\"18\"\/> with v.s.p., there will be a discrepancy in <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathbf{x}.\" alt=\"\\mathbf{x}.\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/bce\/b1f\/533\/bceb1f5333e8e35974bae63d489b3db2.svg\" width=\"17\" height=\"12\"\/> Let <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{S},\" alt=\"\\mathsf{S},\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/182\/c46\/a48\/182c46a48eee9864fdca165d5dcdf081.svg\" width=\"16\" height=\"20\"\/> <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{N}'=[\\upsilon^{-1}\\mathbf{x}^{-1}\\phi'\\mathbf{\\acute{x}}\\pmod m]\\mathsf{G}_1.\" alt=\"\\mathsf{N}'=[\\upsilon^{-1}\\mathbf{x}^{-1}\\phi'\\mathbf{\\acute{x}}\\pmod m]\\mathsf{G}_1.\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/69f\/d47\/c9b\/69fd47c9b0fd3aebdfa9c429d36311c9.svg\" width=\"270\" height=\"25\"\/> Then <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"g^{\\mathbf{y}\\mathbf{x}^{-1}\\phi'\\mathbf{\\acute{x}}\\pmod m}=g^{\\phi'\\mathbf{y}\\pmod m}\" alt=\"g^{\\mathbf{y}\\mathbf{x}^{-1}\\phi'\\mathbf{\\acute{x}}\\pmod m}=g^{\\phi'\\mathbf{y}\\pmod m}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/53d\/ed8\/05d\/53ded805df11f6cce2c1d1d55cd1a6ce.svg\" width=\"248\" height=\"26\"\/> with v.s.p.<\/p>\n<p><strong>The amount of information transmitted<\/strong><\/p>\n<p>If <a href=\"https:\/\/habr.com\/ru\/articles\/748354\/\" rel=\"noopener noreferrer nofollow\"><u>compact representation<\/u><\/a> is used, then one needs to transfer <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"3(\\lceil\\log_{2}{p}\\rceil+1)\" alt=\"3(\\lceil\\log_{2}{p}\\rceil+1)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/dd4\/aac\/981\/dd4aac98184620b81ac58800d0b87b4a.svg\" width=\"121\" height=\"22\"\/> bits in <strong>Protocol<\/strong> <strong>1<\/strong> and <strong>Protocol 2<\/strong> in order to deliver <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{S},\" alt=\"\\mathsf{S},\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/90d\/aec\/976\/90daec97645afcae4abda49f5830f4ae.svg\" width=\"16\" height=\"20\"\/> <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{T},\" alt=\"\\mathsf{T},\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/9bb\/660\/ef3\/9bb660ef3e132f2179e4de74d6e740cd.svg\" width=\"18\" height=\"20\"\/> and <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{N}\" alt=\"\\mathsf{N}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/608\/e3d\/ea8\/608e3dea84614f0e9a0ef2ef6d8586eb.svg\" width=\"14\" height=\"17\"\/> in total.<\/p>\n<p>In <strong>Protocol<\/strong> <strong>3<\/strong>, <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"P\" alt=\"P\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/446\/b44\/25e\/446b4425e977348afe2266b60beae223.svg\" width=\"14\" height=\"17\"\/> must inform <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"V\" alt=\"V\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/408\/5ea\/575\/4085ea5759f3ec8f9d2122e153440144.svg\" width=\"15\" height=\"17\"\/> of the serial number of <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\{D_P,\\mathsf{P}_P, \\widetilde{\\Im}_{\\rm{T}}\\}.\" alt=\"\\{D_P,\\mathsf{P}_P, \\widetilde{\\Im}_{\\rm{T}}\\}.\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e73\/278\/87f\/e7327887fd1475775c041fa5bbf2e62a.svg\" width=\"117\" height=\"24\"\/> Let&#8217;s suppose that <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\ell\" alt=\"\\ell\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f47\/f52\/6c3\/f47f526c3b7be2151c9d6e7bcee05fae.svg\" width=\"8\" height=\"17\"\/> bits need to be allocated to store this number in long-term memory. Then one needs to send <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"3(\\lceil\\log_{2}{p}\\rceil+1)+\\ell\" alt=\"3(\\lceil\\log_{2}{p}\\rceil+1)+\\ell\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/3db\/b2a\/00f\/3dbb2a00fb90d432f34504b7a667e79f.svg\" width=\"153\" height=\"22\"\/> bits in order to deliver <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{S},\" alt=\"\\mathsf{S},\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ffd\/96e\/9cb\/ffd96e9cbb5032abc9dbac4e6947201f.svg\" width=\"16\" height=\"20\"\/> <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{T},\" alt=\"\\mathsf{T},\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c07\/0f1\/0a5\/c070f10a5a63c3630851bd7fe812af04.svg\" width=\"18\" height=\"20\"\/> and <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{N}\" alt=\"\\mathsf{N}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1f1\/96c\/c36\/1f196cc365993f9378b384415f01d23f.svg\" width=\"14\" height=\"17\"\/> in total.<\/p>\n<p>Other overheads are allowed. The amount of information transmitted satisfies the asymptotic estimate <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"O(\\log_{2}{p}).\" alt=\"O(\\log_{2}{p}).\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/df1\/42d\/6b5\/df142d6b5582b0322b8a71b8fd30d806.svg\" width=\"81\" height=\"22\"\/><\/p>\n<p><strong>Computational complexity<\/strong><\/p>\n<p>In addition to the scalar multiplication, whose computation features are described <a href=\"https:\/\/habr.com\/ru\/articles\/748354\/\" rel=\"noopener noreferrer nofollow\"><u>here<\/u><\/a>, in the <strong>Protocol 3<\/strong> parties <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"P\" alt=\"P\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b37\/8c7\/c73\/b378c7c73226ba534e216b8926123174.svg\" width=\"14\" height=\"17\"\/> and <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"V\" alt=\"V\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/94c\/58c\/a4c\/94c58ca4c22a2fc8f223e5382b43a443.svg\" width=\"15\" height=\"17\"\/> compute <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\{\\upsilon^{-1},\" alt=\"\\{\\upsilon^{-1},\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e97\/444\/404\/e97444404656f764147119e6088adf86.svg\" width=\"45\" height=\"25\"\/> <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathbf{x}^{-1}\\}\" alt=\"\\mathbf{x}^{-1}\\}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/67d\/08b\/dd2\/67d08bdd21d0ed549ce52afb920bcc6e.svg\" width=\"41\" height=\"25\"\/> and <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathbf{y}^{-1},\" alt=\"\\mathbf{y}^{-1},\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d63\/030\/13d\/d6303013d92f5a5822ea9d917e0fc556.svg\" width=\"36\" height=\"24\"\/> respectively.<\/p>\n<p>In this case, <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathbf{x}^{-1}\" alt=\"\\mathbf{x}^{-1}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/0d4\/130\/950\/0d413095011d1dcfa4a3afc30bfb6de3.svg\" width=\"31\" height=\"21\"\/> and <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathbf{y}^{-1}\" alt=\"\\mathbf{y}^{-1}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/05c\/b21\/2c1\/05cb212c1f3f99d2a4aff45db8cc579e.svg\" width=\"31\" height=\"24\"\/> are computed only once. <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"P\" alt=\"P\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e8e\/9ad\/340\/e8e9ad340eb6a02dcf6b945788c2f599.svg\" width=\"14\" height=\"17\"\/> and <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"V\" alt=\"V\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/97c\/666\/966\/97c66696659a75a1ec31733319204874.svg\" width=\"15\" height=\"17\"\/> store the computed values in secured long-term memory. As a result, <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"P\" alt=\"P\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f41\/28a\/9eb\/f4128a9eb87366f87e8cadc9ce38235e.svg\" width=\"14\" height=\"17\"\/> and <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"V\" alt=\"V\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/96c\/10b\/c10\/96c10bc1082976b986bdf52355a648a8.svg\" width=\"15\" height=\"17\"\/> store <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\{\\mathbf{x}, \\mathbf{x}^{-1}, \\mathsf{P}_P\\}\" alt=\"\\{\\mathbf{x}, \\mathbf{x}^{-1}, \\mathsf{P}_P\\}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/21d\/497\/1d0\/21d4971d04eae73aaf5db25b88495d29.svg\" width=\"104\" height=\"25\"\/> and <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\{\\mathbf{y}, \\mathbf{y}^{-1}, \\mathsf{P}_V\\}\" alt=\"\\{\\mathbf{y}, \\mathbf{y}^{-1}, \\mathsf{P}_V\\}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/10c\/dce\/ad6\/10cdcead6e97ccda6fe72ffa4c7f035e.svg\" width=\"104\" height=\"25\"\/> respectively.  <\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"P\" alt=\"P\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/521\/8b6\/9f9\/5218b69f9274206e745af245c3a0719c.svg\" width=\"14\" height=\"17\"\/> computes <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\upsilon^{-1}\" alt=\"\\upsilon^{-1}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/aaa\/866\/79b\/aaa86679b3a0b346b1847d125acfecfa.svg\" width=\"30\" height=\"21\"\/> in every single session. If on the <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"P\" alt=\"P\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/810\/a03\/98a\/810a0398ad9bf3d662cfa97a98824d88.svg\" width=\"14\" height=\"17\"\/> side the performance of the platform exceeds the bandwidth of the communication channel between <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"P\" alt=\"P\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/7a2\/9f8\/55a\/7a29f855a3cdf9d330e6daa0bcc2202b.svg\" width=\"14\" height=\"17\"\/> and <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"V,\" alt=\"V,\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/4df\/cd2\/26d\/4dfcd226d370dd0a6ad4c9b9ab41bc12.svg\" width=\"20\" height=\"20\"\/> then with <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\upsilon\" alt=\"\\upsilon\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/2b1\/9da\/d68\/2b19dad68db5f3515e7fb269c5352c88.svg\" width=\"10\" height=\"12\"\/> known, it is appropriate to initiate the computation of <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\upsilon^{-1}\" alt=\"\\upsilon^{-1}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/23a\/52d\/b0e\/23a52db0ecf3ae988a1dc61a567b9f08.svg\" width=\"30\" height=\"21\"\/> ahead of time, until <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{ T}.\" alt=\"\\mathsf{ T}.\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/660\/812\/4bf\/6608124bf1a0ad06b0c67eb04e2e3393.svg\" width=\"18\" height=\"17\"\/> This method minimizes the computational delay, since it is plausible to assume that <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\upsilon^{-1}\" alt=\"\\upsilon^{-1}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a5a\/a67\/da3\/a5aa67da32669178e4fd1b4cb7cff710.svg\" width=\"30\" height=\"21\"\/> will be known by the time <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{N}\" alt=\"\\mathsf{N}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1b8\/c48\/b24\/1b8c48b244331a117807b0325f140e46.svg\" width=\"14\" height=\"17\"\/>  is needed to be computed.<\/p>\n<p>Since <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"e_m([\\phi]\\mathsf{P}_V, \\mathsf{G}_1)=e_m(\\mathsf{P}_V, [\\phi]\\mathsf{G}_1)\" alt=\"e_m([\\phi]\\mathsf{P}_V, \\mathsf{G}_1)=e_m(\\mathsf{P}_V, [\\phi]\\mathsf{G}_1)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/8e2\/f54\/da7\/8e2f54da7188702758882df21c4c522f.svg\" width=\"256\" height=\"22\"\/> due to the bilinearity, then optimization is possible when computing <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"[\\phi]\\mathsf{G}_1\" alt=\"[\\phi]\\mathsf{G}_1\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/2e8\/bdc\/5b6\/2e8bdc5b640ad7ebcfdcf6a2a92c50c8.svg\" width=\"44\" height=\"22\"\/> (<a href=\"https:\/\/habr.com\/ru\/articles\/748354\/\" rel=\"noopener noreferrer nofollow\"><u>Table 1<\/u><\/a>).<\/p>\n<p>Let the affine points <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{S},\" alt=\"\\mathsf{S},\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/827\/35e\/1b2\/82735e1b21aeec156aadb0792e101543.svg\" width=\"16\" height=\"20\"\/> <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{T}\" alt=\"\\mathsf{T}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f0a\/005\/8aa\/f0a0058aadb15a5b4f164941192a6cdb.svg\" width=\"13\" height=\"17\"\/> and <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{N}\" alt=\"\\mathsf{N}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/608\/71f\/016\/60871f0162dd52a78c8b882279370f6a.svg\" width=\"14\" height=\"17\"\/> <a href=\"https:\/\/habr.com\/ru\/articles\/748354\/\" rel=\"noopener noreferrer nofollow\"><u>represented compactly<\/u><\/a>, then it will be necessary to restore the coordinates of <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"y_{\\mathsf{S}},\" alt=\"y_{\\mathsf{S}},\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f9c\/ac7\/e87\/f9cac7e87e6da38449ef55addae9f999.svg\" width=\"24\" height=\"15\"\/> <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"y_{\\mathsf{T}}\" alt=\"y_{\\mathsf{T}}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/2e2\/43e\/8b2\/2e243e8b2d8ff656e849ce28f12d32fa.svg\" width=\"21\" height=\"15\"\/> and <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"y_{\\mathsf{N}}\" alt=\"y_{\\mathsf{N}}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/63e\/98c\/6f3\/63e98c6f37afe58b2668ecc651511674.svg\" width=\"21\" height=\"15\"\/> with using the Tonelli-Shanks algorithm of asymptotic complexity <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"O(\\log_{2}^2{p})\" alt=\"O(\\log_{2}^2{p})\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b37\/e17\/a46\/b37e17a4606aa29ccae0d573d3f09997.svg\" width=\"76\" height=\"25\"\/> [Cohen_etc._2006] (section 11.1.5) for subsequent computations. However, this is not necessary if point arithmetic is based on the Montgomery elliptic curve [Montgomery_1987]. It is possible to use birational equivalents, for example, twisted Edwards curves [Bernstein_2008].<\/p>\n<p>Methods for multiplicative inversion in <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathbb{F}_m^*\" alt=\"\\mathbb{F}_m^*\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b6c\/335\/11c\/b6c33511c7e362846c7527b7a32c5865.svg\" width=\"26\" height=\"22\"\/> are described in [Cohen_etc._2006] (section 11.1).<\/p>\n<p>For the software implementation of the considered protocols, it is advisable to use the primitives of the <a href=\"https:\/\/crypto.stanford.edu\/pbc\/\" rel=\"noopener noreferrer nofollow\"><u>PBC<\/u><\/a> library.<\/p>\n<p>The problem of hardware implementation of pairings is comprehensively considered in a number of publications [Rodriguez-Henriquez_etc._2006, Beuchat_etc._Nov_2008, Beuchat_etc._2008, Kammler_etc._2009, Ghosh_etc._2010, Estibals_2010, Ghosh_etc._2011, Beuchat_etc._2011, Cheung_etc._2011, Adikari_etc._2012].<\/p>\n<p><strong>Summary<\/strong><\/p>\n<p><strong>Protocol 1<\/strong> and <strong>Protocol 2<\/strong>, as well as <a href=\"https:\/\/habr.com\/ru\/articles\/748354\/\" rel=\"noopener noreferrer nofollow\"><u>modified Schnorr protocol<\/u><\/a>, have a limited scope due to the risk of impersonation.<\/p>\n<p>Preliminary analysis shows that impersonation is presumably impossible in <strong>Protocol 3<\/strong>. Everyone can use the keys <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{P}_P\" alt=\"\\mathsf{P}_P\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a60\/935\/423\/a6093542311a2e7247287e56acab722f.svg\" width=\"24\" height=\"19\"\/> and <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{P}_V,\" alt=\"\\mathsf{P}_V,\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/3a9\/45e\/7c1\/3a945e7c157a7aa1e5d80bb9e3549c5d.svg\" width=\"30\" height=\"20\"\/> but only <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"P\" alt=\"P\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/13d\/6aa\/876\/13d6aa876dce244e278551dc03bb3260.svg\" width=\"14\" height=\"17\"\/> can provide conclusive evidence because it owns the long-term secret key <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathbf{x}\" alt=\"\\mathbf{x}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/bb4\/9ed\/56e\/bb49ed56e7d86c811796b2d3914db0ea.svg\" width=\"12\" height=\"12\"\/> and knows the ephemeris <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\upsilon.\" alt=\"\\upsilon.\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f8b\/ec4\/c30\/f8bec4c30bb796603b2974c285f0551f.svg\" width=\"16\" height=\"12\"\/> Only <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"V\" alt=\"V\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/001\/d2d\/d36\/001d2dd364c8b7b7720ddb44d5fca735.svg\" width=\"15\" height=\"17\"\/> can verify the proof because it knows the ephemeris <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\phi.\" alt=\"\\phi.\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a9a\/f3c\/ecf\/a9af3cecfa624d9d7bb156b5b6cec5a1.svg\" width=\"17\" height=\"20\"\/><\/p>\n<p>In addition, only <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"P\" alt=\"P\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/bf9\/827\/4b9\/bf98274b937768ecded9212a5739a858.svg\" width=\"14\" height=\"17\"\/> and <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"V\" alt=\"V\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/2fe\/40c\/767\/2fe40c767f9db4110edfadd558335185.svg\" width=\"15\" height=\"17\"\/> can independently compute <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{A}\" alt=\"\\mathsf{A}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/cb0\/298\/234\/cb02982349cc3f65ce224210ca360059.svg\" width=\"13\" height=\"17\"\/> and <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{B}\" alt=\"\\mathsf{B}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/aae\/5b4\/730\/aae5b4730d175ba90cd93fddbc20fc35.svg\" width=\"13\" height=\"17\"\/> such that <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathsf{A}=\\mathsf{B},\" alt=\"\\mathsf{A}=\\mathsf{B},\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e0f\/aa8\/f16\/e0faa8f1669713b4b5535f34cac63fdd.svg\" width=\"57\" height=\"20\"\/> since they own the secret keys <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathbf{x}\" alt=\"\\mathbf{x}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d0e\/01a\/f0f\/d0e01af0f38a8b9005f06a077ce7bae9.svg\" width=\"12\" height=\"12\"\/> and <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathbf{y}.\" alt=\"\\mathbf{y}.\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/909\/0b0\/d25\/9090b0d25bbec345e65b3107c3743f39.svg\" width=\"17\" height=\"15\"\/><\/p>\n<p><strong>Conclusion<\/strong><\/p>\n<p>IDS-compatible identification protocols based on the pairing function have been presented and studied. The problem of impersonification is formulated. A new impersonation-resistant IDS-compatible identification protocol has been designed.<\/p>\n<p>The text of the article in pdf format can be <a href=\"https:\/\/mega.nz\/file\/8K41lIgZ#Uza0fmfDyeNKmqiQs_apguIG-pu3vDSWLR3G_sltt6k\" rel=\"noopener noreferrer nofollow\">downloaded here<\/a>.<\/p>\n<p><strong>Bibliography<\/strong><\/p>\n<p>[Boneh_Shacham_Lynn_2004] Boneh, D., Shacham, H. and Lynn B. &#171;Short Signatures from the Weil Pairing.&#187; <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\textit{J. Cryptol.},\" alt=\"\\textit{J. Cryptol.},\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/20e\/23f\/b7c\/20e23fb7cff3886dbbd10b34905ffbb5.svg\" width=\"95\" height=\"20\"\/> Vol. 17, No. 4, (2004) 297\u2013319.<\/p>\n<p>[Zhang_Safavi-Naini_Susilo_2004] Zhang, F., Safavi-Naini, R. and Susilo, W. &#171;An efficient signature scheme from bilinear pairing and its applications.\u201d <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\textit{Public Key Cryptography},\" alt=\"\\textit{Public Key Cryptography},\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/461\/8af\/a46\/4618afa46b6c8c162e0ebada4578f13b.svg\" width=\"214\" height=\"20\"\/> LNCS 2947, (2004) 277\u2013290.<\/p>\n<p>[Fiat_Shamir_1987] Fiat, A. and Shamir, &#171;How to prove yourself: Practical solutions to identification and signature problems.\u201d <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\textit{Advances in Cryptology \u2014 CRYPTO\u201986}\" alt=\"\\textit{Advances in Cryptology \u2014 CRYPTO\u201986}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/611\/0d6\/27e\/6110d627ebb3eb8a089300feaf5fbbb3.svg\" width=\"336\" height=\"20\"\/> LNCS 263, (1987) 186\u2013194.<\/p>\n<p>[Cohen_etc._2006] Cohen, H., Frey, G., Roberto Avanzi, R., Doche C., Lange, T., Nguyen, K. and Vercauteren, F. <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\textit{Handbook of Elliptic and Hyperelliptic Curve Cryptography},\" alt=\"\\textit{Handbook of Elliptic and Hyperelliptic Curve Cryptography},\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/cc5\/fe3\/77e\/cc5fe377efbb385b9c1d157512be8073.svg\" width=\"493\" height=\"20\"\/> Chapman and Hall\/CRC, 2006.<\/p>\n<p>[Montgomery_1987] Montgomery, Peter L. &#171;Speeding the Pollard and Elliptic Curve Methods of Factorization.\u201d <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\textit{Mathematics of Computation},\" alt=\"\\textit{Mathematics of Computation},\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/9c0\/64a\/0c3\/9c064a0c39fe11725fcd34f47a2d2c8d.svg\" width=\"247\" height=\"20\"\/> (1987) 48 (177): 243\u2013264.<\/p>\n<p>[Bernstein_2008] Bernstein, Daniel J., Birkner, Peter, Joye, Marc, Lange, Tanja, Peters, Christiane. In Vaudenay, Serge (ed.). &#171;Twisted Edwards Curves.\u201d <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\textit{Progress in Cryptology \u2014 AFRICACRYPT 2008},\" alt=\"\\textit{Progress in Cryptology \u2014 AFRICACRYPT 2008},\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/2e7\/467\/c86\/2e7467c86f0a5a741c15cafe9882205d.svg\" width=\"414\" height=\"20\"\/> LNCS 5023, (2008) 389\u2013405.\u00a0<\/p>\n<p>[Rodriguez-Henriquez_etc._2006] Rodr\u00edguez-Henr\u00edquez, F., D\u00edaz-P\u00e9rez, A., Saqib, N. A. and Ko\u010d, \u010c. K. <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\textit{Cryptographic Algorithms on Reconfigurable Hardware},\" alt=\"\\textit{Cryptographic Algorithms on Reconfigurable Hardware},\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/dc6\/ed2\/ee1\/dc6ed2ee1414e56671151eb000a32a82.svg\" width=\"462\" height=\"20\"\/> Signals and Communication Technology. Boston, MA: Springer US, 2006.<\/p>\n<p>[Beuchat_etc._Nov_2008] Beuchat, J.-L., Brisebarre, N., Detrey, J., Okamoto, E., Shirase, M. and Takagi,\u00a0 T. &#171;Algorithms and Arithmetic Operators for Computing the <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\eta T\" alt=\"\\eta T\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/8d8\/cc0\/1aa\/8d8cc01aa434488f54e64ffcf43dc705.svg\" width=\"23\" height=\"21\"\/> Pairing in Characteristic Three.\u201d <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\textit{IEEE Transactions on Computers},\" alt=\"\\textit{IEEE Transactions on Computers},\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ba0\/f77\/15c\/ba0f7715c7bad2e1303b05c9100c3fb4.svg\" width=\"288\" height=\"20\"\/> vol. 57, no. 11, (Nov. 2008) 1454\u20131468.<\/p>\n<p>[Beuchat_etc._2008] Beuchat, J.-L., Brisebarre, N., Detrey, J., Okamoto,\u00a0 E. and\u00a0 Rodriguez-Henriquez, F. &#171;A Comparison Between Hardware Accelerators for the Modified Tate Pairing over <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"F_{2^m}\" alt=\"F_{2^m}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/663\/5a5\/09c\/6635a509c78d828dac4c5f6f5086e98f.svg\" width=\"31\" height=\"20\"\/> and <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"F_{3^m}.\" alt=\"F_{3^m}.\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ec3\/ee0\/e09\/ec3ee0e09f927954d4c21b7f94c54712.svg\" width=\"36\" height=\"20\"\/>\u201d <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\textit{Pairing-Based Cryptography \u2014 Pairing 2008},\" alt=\"\\textit{Pairing-Based Cryptography \u2014 Pairing 2008},\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/8e0\/e68\/39c\/8e0e6839ccaae87278c3f3baa437b2e9.svg\" width=\"379\" height=\"20\"\/> (2008) 297\u2013315.<\/p>\n<p>[Kammler_etc._2009] Kammler, D.,\u00a0 Zhang, D., Schwabe, P., Scharwaechter, H., Langenberg, M.,\u00a0 Auras, D., Ascheid, G. and\u00a0 Mathar, R. &#171;Designing an ASIP for Cryptographic Pairings over Barreto-Naehrig Curves.\u201d <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\textit{Cryptographic Hardware and Embedded Systems \u2014 CHES 2009},\" alt=\"\\textit{Cryptographic Hardware and Embedded Systems \u2014 CHES 2009},\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5f5\/c6e\/246\/5f5c6e2468719ed6ed60b401104e52c6.svg\" width=\"534\" height=\"20\"\/> Springer Berlin\/Heidelberg, (2009) 254\u2013271.<\/p>\n<p>[Ghosh_etc._2010]\u00a0 Ghosh, S., Mukhopadhyay, D. and Roychowdhury, D. &#171;High Speed Flexible Pairing Cryptoprocessor on FPGA Platform.\u201d <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\textit{Pairing-Based Cryptography \u2014 Pairing 2010},\" alt=\"\\textit{Pairing-Based Cryptography \u2014 Pairing 2010},\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1cb\/153\/417\/1cb153417f84f5a76eda51d1aea0a261.svg\" width=\"379\" height=\"20\"\/> vol. 6487, (2010) 450\u2013466.<\/p>\n<p>[Estibals_2010] Estibals, N. &#171;Compact Hardware for Computing the Tate Pairing over 128-Bit Security Supersingular Curves.\u201d <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\textit{Pairing-Based Cryptography \u2014 Pairing 2010}\" alt=\"\\textit{Pairing-Based Cryptography \u2014 Pairing 2010}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/df0\/b3a\/1fa\/df0b3a1fa9d6c24f1d7d4c5d9862ff0b.svg\" width=\"375\" height=\"20\"\/> vol. 6487, (2010) 397\u2013416.<\/p>\n<p>[Ghosh_etc._2011] Ghosh, S., Roychowdhury, D. and Das, A. &#171;High Speed Cryptoprocessor for <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\eta T\" alt=\"\\eta T\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/739\/02f\/e63\/73902fe6370b51bcbbb8acc406178ebd.svg\" width=\"23\" height=\"21\"\/> Pairing on 128-bit Secure Supersingular Elliptic Curves over Characteristic Two Fields.\u201d <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\textit{Cryptographic Hardware and Embedded Systems \u2014 CHES 2011},\" alt=\"\\textit{Cryptographic Hardware and Embedded Systems \u2014 CHES 2011},\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/3d2\/3c1\/401\/3d23c1401e444d260fc3d0e78281b994.svg\" width=\"534\" height=\"20\"\/> (2011) 442\u2013458.<\/p>\n<p>[Beuchat_etc._2011] Beuchat, J.-L.,\u00a0 Detrey, J., Estibals, N.,\u00a0 Okamoto, E. and\u00a0 Rodriguez-Henriquez, F. &#171;Fast Architectures for the <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\eta T\" alt=\"\\eta T\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/59d\/9e7\/fc8\/59d9e7fc80271625b63a4f290b4c8046.svg\" width=\"23\" height=\"21\"\/> Pairing over Small-Characteristic Supersingular Elliptic Curves.\u201d <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\textit{IEEE Transactions on Computers},\" alt=\"\\textit{IEEE Transactions on Computers},\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f01\/e14\/32e\/f01e1432eeaf7cc226ba70eff5c26460.svg\" width=\"288\" height=\"20\"\/> vol. 60, no. 2,\u00a0 (Feb. 2011) 266\u2013281.<\/p>\n<p>[Cheung_etc._2011]\u00a0 Cheung, R. C. C.,\u00a0 Duquesne, S., Fan, J.,\u00a0 Guillermin, N., Verbauwhede, I. and Yao, G. X. &#171;FPGA Implementation of Pairings Using Residue Number System and Lazy Reduction.\u201d <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\textit{Cryptographic Hardware and Embedded Systems \u2014 CHES 2011},\" alt=\"\\textit{Cryptographic Hardware and Embedded Systems \u2014 CHES 2011},\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/71b\/92d\/e15\/71b92de157b4082a842ce728a1d7a414.svg\" width=\"534\" height=\"20\"\/> no. 07, (2011) 421\u2013441.<\/p>\n<p>[Adikari_etc._2012] Adikari, J., Hasan, M. A. and Negre, C. &#171;Towards Faster and Greener Cryptoprocessor for Eta Pairing on Supersingular Elliptic Curve over <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"F_{2^{1223}}.\" alt=\"F_{2^{1223}}.\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/fef\/2d9\/702\/fef2d97028bd956a9d4100d3487b9e6f.svg\" width=\"47\" height=\"22\"\/>\u201d <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"19^{\\mbox{th}}\" alt=\"19^{\\mbox{th}}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/63a\/1a2\/25a\/63a1a225a54d03d58457091fe42416b2.svg\" width=\"39\" height=\"25\"\/> <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\textit{International Conference, Selected Areas in Cryptography 2012},\" alt=\"\\textit{International Conference, Selected Areas in Cryptography 2012},\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b90\/afe\/aba\/b90afeaba03909b2deb00d739dd68b63.svg\" width=\"532\" height=\"20\"\/> (2012) 166\u2013183.<\/p>\n<\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/754688\/\"> https:\/\/habr.com\/ru\/articles\/754688\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>In our <a href=\"https:\/\/habr.com\/ru\/articles\/748354\/\" rel=\"noopener noreferrer nofollow\"><u>previous post<\/u><\/a>, we presented a modified Schnorr protocol compatible with the Instant Digital Signature (IDS) mode and also announced the design of other protocols with this feature. In this post we describe such protocols based on the pairing function.<\/p>\n<p><strong>Introduction<\/strong><\/p>\n<p>The following text is dedicated to the description of two digital signature (DS) schemes based on the pairing function (<a href=\"https:\/\/mega.nz\/file\/MCARjYKA#rsylBNfuCUpRQ8ERy-7F6b2aTL3F8vs30IEYKuHy68o\" rel=\"noopener noreferrer nofollow\"><u>Appendix A<\/u><\/a>). These schemes are then transformed into IDS-compatible identification protocols. We specified and investigated the problem of impersonation, that is, the substitution of one party involved in protocol, with another one. The achieved result consists in the design and analysis of a new IDS-compatible identification protocol, with impersonation presumably impossible for it.<\/p>\n<p>We will use the abbreviation v.s.p. to denote a vanishingly small probability. This means that for some  and  distributed uniformly and independently on the interval  otherwise   and for large  this probability is vanishingly small. For example,  for  A similar argument applies to  where  is a generator of  (<a href=\"https:\/\/mega.nz\/file\/MCARjYKA#rsylBNfuCUpRQ8ERy-7F6b2aTL3F8vs30IEYKuHy68o\" rel=\"noopener noreferrer nofollow\"><u>Appendix A<\/u><\/a>).<\/p>\n<p>When describing DS schemes and identification protocols, we will proceed from the assumption that there is a pair of linked keys  where  is a secret key,  and  is a public one for which a certificate  is issued. In this certificate,  is the personal data of the owner of   is the DS of the trusted party  (the certification authority responsible for issuing and maintaining certificates).<\/p>\n<p>Let&#8217;s call the functions of signing and verifying the digital signature as  and  respectively. Let&#8217;s denote the cryptographic hash function by  (<a href=\"https:\/\/mega.nz\/file\/MOQDjBiR#AjDbufbjnrSPW2pFIYoK-R6EES9MWP_7BA95_JWtigA\" rel=\"noopener noreferrer nofollow\"><u>Appendix B<\/u><\/a>). Then  where  is the secret key of the trusted party  consigned for signing.<\/p>\n<p>Before use,  is checked for authenticity, integrity, and relevance. The latter task is done by checking a list of revoked certificates.  is computed, where  is the public key of trusted party  If  is valid, then the boolean variable  and this means integrity, authenticity of  and  otherwise  The trusted party  can use any DS scheme, for example, one of those described below.\u00a0<\/p>\n<p>For the sake of simplicity, let&#8217;s assume that different DS schemes and identification protocols use the same public key <\/p>\n<p>It should be noted that most of the known DS schemes use simple equations. This is important, because this simplifies their understanding and analysis. We will be guided by the same  when design identification protocols.<\/p>\n<p><strong>DS schemes based on pairing<\/strong><\/p>\n<p>Hereinafter let&#8217;s call the one who sign the message  as the  Below there are descriptions of two DS schemes based on pairing (<a href=\"https:\/\/mega.nz\/file\/MCARjYKA#rsylBNfuCUpRQ8ERy-7F6b2aTL3F8vs30IEYKuHy68o\" rel=\"noopener noreferrer nofollow\"><u>Appendix A<\/u><\/a>).<\/p>\n<p>In the DS scheme [Zhang_Safavi-Naini_Susilo_2004] for a given message  the witness performs the following actions:<\/p>\n<ol>\n<li>\n<p>Computes <\/p>\n<\/li>\n<li>\n<p>Generates the signature <\/p>\n<\/li>\n<\/ol>\n<p>Let there be some signature  and a message  The verifier performs the following actions:<\/p>\n<ol>\n<li>\n<p>Computes <\/p>\n<\/li>\n<li>\n<p>Checks the authenticity, integrity and relevance of  if the relevance is not confirmed or  then it completes the verification of the DS.<\/p>\n<\/li>\n<li>\n<p>Computes <\/p>\n<\/li>\n<li>\n<p>Checks <\/p>\n<\/li>\n<\/ol>\n<p>Then  if  If  then  with v.s.p.<\/p>\n<p>It is clear that  is computed only once and stored in the local long-term memory. Authenticity and integrity of  needs to be guaranteed. For example, it can be stored in secure memory along with the secret key <\/p>\n<p>Let&#8217;s look at another DS scheme from [Boneh_Shacham_Lynn_2004]. There is a given hash function \u00a0 (<a href=\"https:\/\/mega.nz\/file\/MOQDjBiR#AjDbufbjnrSPW2pFIYoK-R6EES9MWP_7BA95_JWtigA\" rel=\"noopener noreferrer nofollow\"><u>Appendix B<\/u><\/a>). The witness performs the following steps:<\/p>\n<ol>\n<li>\n<p>Computes <\/p>\n<\/li>\n<li>\n<p>Generates the signature <\/p>\n<\/li>\n<\/ol>\n<p>There is a message  and signature  The verifier does the following steps:<\/p>\n<ol>\n<li>\n<p>Computes <\/p>\n<\/li>\n<li>\n<p>Checks the authenticity, integrity and relevance of  if the relevance is not confirmed or  then it completes the verification of the DS.<\/p>\n<\/li>\n<li>\n<p>Checks <\/p>\n<\/li>\n<\/ol>\n<p>If  and  then, due to the bilinearity,  If  and\/or  then  with v.s.p.<\/p>\n<p>Both above-mentioned DS schemes use the  pairing function, but differ in computational complexity of check. In the [Zhang_Safavi-Naini_Susilo_2004] scheme, when checking the DS, only one pairing is computed, while in [Boneh_Shacham_Lynn_2004] it is necessary to compute two pairings.<\/p>\n<p><strong>IDS-compatible identification protocols based on pairing<\/strong><\/p>\n<p>According to the Fiat-Shamir heuristic [Fiat_Shamir_1987], each DS scheme has its own identification protocol. However, we will be interested in IDS-compatible versions of such protocols.<\/p>\n<p>Below there is a description of the IDS-compatible identification protocol for the DS scheme from [Zhang_Safavi-Naini_Susilo_2004].<\/p>\n<p><strong>Protocol 1<\/strong><\/p>\n<p><em>Protocol messages.<\/em><\/p>\n<ol>\n<li>\n<\/li>\n<li>\n<\/li>\n<li>\n<\/li>\n<\/ol>\n<p><em>Actions of the parties.<\/em><\/p>\n<p> proves to  that it owns (knows)  To do this, the following steps are performed:<\/p>\n<ol>\n<li>\n<p> selects   computes   checks  If  then selects a new  re-executes the necessary computations and checks.<\/p>\n<\/li>\n<li>\n<p> reads the current certificate  and checks the DS of the trusted party  If  then the session ends. If  then it chooses  and computes   If  then it chooses a new  and re-executes the necessary computations and checks.<\/p>\n<\/li>\n<li>\n<p> checks  if it is true, it computes   otherwise the session ends.<\/p>\n<\/li>\n<li>\n<p> computes  Then it checks  If equal, then the proof is accepted, and rejected otherwise.<\/p>\n<\/li>\n<\/ol>\n<p>Now let&#8217;s see what IDS-compatible protocol can be proposed for the DS scheme from [Boneh_Shacham_Lynn_2004].<\/p>\n<p><strong>Protocol 2<\/strong><\/p>\n<p><em>Protocol messages.<\/em><\/p>\n<ol>\n<li>\n<\/li>\n<li>\n<\/li>\n<li>\n<\/li>\n<\/ol>\n<p><em>Actions of the parties.<\/em><\/p>\n<p> proves to  that it owns (knows)  To do this, the following steps are performed:<\/p>\n<ol>\n<li>\n<p>As in <strong>Protocol 1<\/strong>.<\/p>\n<\/li>\n<li>\n<p>As in <strong>Protocol 1<\/strong>.<\/p>\n<\/li>\n<li>\n<p> checks  if it is true, it computes   otherwise the session ends.<\/p>\n<\/li>\n<li>\n<p> computes  Then it checks  If equal, then the proof is accepted, and rejected otherwise.<\/p>\n<\/li>\n<\/ol>\n<p>For <strong>Protocols 1<\/strong> and <strong>2<\/strong>, in case of successful completion of the identification stage, the parties independently compute a shared session secret key in accordance with the following rules:<\/p>\n<ol>\n<li>\n<p> computes <\/p>\n<\/li>\n<li>\n<p> computes <\/p>\n<\/li>\n<\/ol>\n<p>Obviously,  due to commutativity.<\/p>\n<p><strong>Impersonation of the verifier<\/strong><\/p>\n<p>An active attack includes a set of measures taken to replace the information that the parties exchange with each other during the identification protocol. <strong>Protocol 1<\/strong> and <strong>Protocol<\/strong> <strong>2<\/strong> are reliable provided that the probability of an active attack is negligible. For example, when data exchange between  and  is carried out using NFC (Near-Field Communication) technology or similar.<\/p>\n<p>If the parties interact through other insecure communication channels, including the Internet, then an active attack aimed at impersonating the verifier is possible. Let&#8217;s call the bogus verifier as  The attacker tries to replace  with <\/p>\n<p>Let&#8217;s choose <strong>Protocol 2<\/strong> as the object of attack. Using the interception and blocking technique, the attacker is able to impose  instead of  such that  with v.s.p. The  computes  as <\/p>\n<p> computes  and checks   computes  and  computes  It is obvious that <\/p>\n<p>The above mentioned reasoning is equally valid for <strong>Protocol 1<\/strong>. In addition, the attack is also applicable to <a href=\"https:\/\/habr.com\/ru\/articles\/748354\/\" rel=\"noopener noreferrer nofollow\"><u>modified Schnorr protocol<\/u><\/a>.<\/p>\n<p>In the next section, we will demonstrate a protocol where impersonation is not presumably possible.<\/p>\n<p><strong>Protocol resistant to impersonation<\/strong><\/p>\n<p>Let&#8217;s assume that, for   and  own key pairs  and  respectively. There are certificates  and  issued for  and <\/p>\n<p>Let us consider an IDS-compatible and at the same time impersonation-resistant protocol.<\/p>\n<p><strong>Protocol 3<\/strong><\/p>\n<p><em>Protocol messages<\/em>.<\/p>\n<ol>\n<li>\n<\/li>\n<li>\n<\/li>\n<li>\n<\/li>\n<\/ol>\n<p><em>Actions of the parties<\/em>.<\/p>\n<p> proves to  that it owns (knows)  To do this, the following steps are performed:<\/p>\n<ol>\n<li>\n<p> reads the current certificate  and verifies the DS of the trusted party  If  then the session ends. If  then it selects   computes   checks  If  then it chooses a new  and re-executes the necessary computations and checks.<\/p>\n<\/li>\n<li>\n<p> reads the current certificate  and verifies the DS of the trusted party  If  then the session ends. If  then it chooses  and computes   If  then it chooses a new  and re-executes the necessary computations and checks.<\/p>\n<\/li>\n<li>\n<p> checks  if it is true, it computes   otherwise the session ends.<\/p>\n<\/li>\n<li>\n<p> computes  Then it checks  If equal, then the proof is accepted, and rejected otherwise.<\/p>\n<\/li>\n<\/ol>\n<p>If  accepted the proof provided by  then the parties independently compute a shared session secret:<\/p>\n<ol>\n<li>\n<p> computes <\/p>\n<\/li>\n<li>\n<p> computes\u00a0 <\/p>\n<\/li>\n<\/ol>\n<p>It is clear that  due to commutativity.<\/p>\n<p><strong>Preliminary analysis<\/strong><\/p>\n<p>Let bogus verifier  owns the key pair   with v.s.p.<\/p>\n<p>We restrict ourselves to the analysis of <strong>Protocol 3<\/strong>, in which it is necessary to impose  instead of  in order to impersonate the verifier (replace  with ). However, the attacker does not know the  ephemeris. To reveal  one need to solve an ECDLP\/DLP given\u00a0  or  <\/p>\n<p>Another strategy is to solve ECDLP\/DLP given  or  Then  The relationship between ECDLP and DLP is explained in <a href=\"https:\/\/mega.nz\/file\/xSZkDAia#vIHZsR5MOHMfSMpjbaOWvhwgYasDzZ21kezv5i3ylcw\" rel=\"noopener noreferrer nofollow\"><u>Appendix A<\/u><\/a>.<\/p>\n<p>The attacker has access to  and is able to impose  instead of  and  instead of  while  and  being with v.s.p.  computes  as <\/p>\n<p> computes    Obviously,  with v.s.p. In addition, the attacker can choose arbitrary  and  Let  but  with v.s.p.<\/p>\n<p>It is easy to show that replacement of  does not lead to the desired result. To do this, when computing  we set  However,  with v.s.p.<\/p>\n<p>If we assume that the attacker imposes  instead of  but there is no replacement of  then the impersonation of  is also impossible, since  with v.s.p.<\/p>\n<p>Note that   or  Therefore,  with v.s.p.<\/p>\n<p>When computing  replacing  with some  seems to be counterproductive. If such a replacement is allowed, then   with v.s.p., there will be a discrepancy in  Let   Then  with v.s.p.<\/p>\n<p><strong>The amount of information transmitted<\/strong><\/p>\n<p>If <a href=\"https:\/\/habr.com\/ru\/articles\/748354\/\" rel=\"noopener noreferrer nofollow\"><u>compact representation<\/u><\/a> is used, then one needs to transfer  bits in <strong>Protocol<\/strong> <strong>1<\/strong> and <strong>Protocol 2<\/strong> in order to deliver   and  in total.<\/p>\n<p>In <strong>Protocol<\/strong> <strong>3<\/strong>,  must inform  of the serial number of  Let&#8217;s suppose that  bits need to be allocated to store this number in long-term memory. Then one needs to send  bits in order to deliver   and  in total.<\/p>\n<p>Other overheads are allowed. The amount of information transmitted satisfies the asymptotic estimate <\/p>\n<p><strong>Computational complexity<\/strong><\/p>\n<p>In addition to the scalar multiplication, whose computation features are described <a href=\"https:\/\/habr.com\/ru\/articles\/748354\/\" rel=\"noopener noreferrer nofollow\"><u>here<\/u><\/a>, in the <strong>Protocol 3<\/strong> parties  and  compute   and  respectively.<\/p>\n<p>In this case,  and  are computed only once.  and  store the computed values in secured long-term memory. As a result,  and  store  and  respectively.  <\/p>\n<p> computes  in every single session. If on the  side the performance of the platform exceeds the<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-352195","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/352195","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=352195"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/352195\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=352195"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=352195"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=352195"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}