{"id":31183,"date":"2026-08-04T04:16:10","date_gmt":"2026-08-03T19:16:10","guid":{"rendered":"https:\/\/aireviewirush.com\/?p=31183"},"modified":"2026-08-04T04:16:10","modified_gmt":"2026-08-03T19:16:10","slug":"a-totally-different-highway-to-quantum-security-the-ppk-ipsec-sequence-half-5","status":"publish","type":"post","link":"https:\/\/aireviewirush.com\/?p=31183","title":{"rendered":"A Totally different Highway to Quantum Security: The PPK &#8211; IPsec Sequence, Half 5"},"content":{"rendered":"<p> <br \/>\n<\/p>\n<div>\n<p class=\"code-line\" dir=\"auto\" data-line=\"6\">Up to now on this pillar we made the\u00a0<em>key trade itself<\/em> quantum-safe by bolting a post-quantum algorithm (ML-KEM) onto it. That\u2019s the headline method, and in Half 4 we watched it run. However it\u2019s not the one option to beat \u201charvest now, decrypt later.\u201d There\u2019s another highway that will get you to the <em>similar<\/em>\u00a0vacation spot with none new crypto algorithm in any respect.<\/p>\n<p class=\"code-line\" dir=\"auto\" data-line=\"8\">It\u2019s referred to as a\u00a0<strong>Postquantum Preshared Key (PPK)<\/strong>, outlined in\u00a0<strong><a href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc8784\" data-href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc8784\" data- target=\"_blank\" rel=\"noopener\">RFC 8784<\/a><\/strong>. Let\u2019s perceive it, then show it really works.<\/p>\n<p class=\"code-line\" dir=\"auto\" data-line=\"8\">Be aware: this Half makes use of the identical <code>key-exchange\/<\/code>\u00a0lab as Half 4.<\/p>\n<hr class=\"code-line\" dir=\"auto\" data-line=\"12\"\/>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_53 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title \" >Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\" role=\"button\"><label for=\"item-6a71079fe5393\" ><span class=\"\"><span style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/label><input aria-label=\"Toggle\" aria-label=\"item-6a71079fe5393\"  type=\"checkbox\" id=\"item-6a71079fe5393\"><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/aireviewirush.com\/?p=31183\/#The_thought_combine_in_a_secret_that_by_no_means_travels\" title=\"The thought: combine in a secret that by no means travels\">The thought: combine in a secret that by no means travels<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/aireviewirush.com\/?p=31183\/#Arrange_the_lab\" title=\"Arrange the lab\">Arrange the lab<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/aireviewirush.com\/?p=31183\/#Let%E2%80%99s_show_it_drop_to_classical_KE_and_let_the_PPK_carry_it\" title=\"Let\u2019s show it: drop to classical KE and let the PPK carry it\">Let\u2019s show it: drop to classical KE and let the PPK carry it<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/aireviewirush.com\/?p=31183\/#Provoke_and_make_sure_the_PPK_is_in_play\" title=\"Provoke and make sure the PPK is in play\">Provoke and make sure the PPK is in play<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/aireviewirush.com\/?p=31183\/#Show_it%E2%80%99s_really_required\" title=\"Show it\u2019s really required\">Show it\u2019s really required<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/aireviewirush.com\/?p=31183\/#When_would_you_really_use_this\" title=\"When would you really use this?\">When would you really use this?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/aireviewirush.com\/?p=31183\/#That%E2%80%99s_a_wrap_on_key_trade\" title=\"That\u2019s a wrap on key trade\">That\u2019s a wrap on key trade<\/a><\/li><\/ul><\/nav><\/div>\n<h2 id=\"the-idea-mix-in-a-secret-that-never-travels\" class=\"code-line\" dir=\"auto\" data-line=\"14\"><span class=\"ez-toc-section\" id=\"The_thought_combine_in_a_secret_that_by_no_means_travels\"><\/span>The thought: combine in a secret that by no means travels<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p class=\"code-line\" dir=\"auto\" data-line=\"16\">RFC 8784 takes a very completely different path to the harvest-now-decrypt-later drawback. As a substitute of a brand new algorithm, it mixes a\u00a0<strong>static, out-of-band preshared key<\/strong>\u00a0into the IKE key schedule. The important thing property:\u00a0<strong>the PPK by no means travels on the wire.<\/strong>\u00a0It\u2019s distributed forward of time, so each friends already understand it.<\/p>\n<p class=\"code-line\" dir=\"auto\" data-line=\"18\">Right here\u2019s why that defeats a future quantum pc. Suppose an attacker information your handshake at the moment and, years from now, makes use of a quantum pc to recuperate the X25519 shared secret from it. They\u00a0<em>nonetheless<\/em>\u00a0can\u2019t derive your visitors keys, as a result of these keys additionally rely on the PPK, which was by no means transmitted and which their recording due to this fact doesn\u2019t comprise. No PPK, no keys. The recorded session stays locked.<\/p>\n<blockquote class=\"code-line\" dir=\"auto\" data-line=\"20\">\n<p class=\"code-line\" dir=\"auto\" data-line=\"20\"><strong>Two roads, one vacation spot.<\/strong>\u00a0ML-KEM (RFC 9370) makes the\u00a0<em>math<\/em>\u00a0quantum-hard and is negotiated like some other algorithm. PPK (RFC 8784) makes\u00a0<em>no new cryptographic assumption<\/em> concerning the trade; it simply requires {that a} high-entropy secret stays secret and is shared out of band. Meaning PPK works even on legacy gear that can&#8217;t negotiate ML-KEM, which makes it a sensible <strong>first step<\/strong>: get post-quantum confidentiality at the moment, migrate to ML-KEM as soon as each ends assist it.<\/p>\n<\/blockquote>\n<p class=\"code-line\" dir=\"auto\" data-line=\"22\">The catch is operational, and it\u2019s an enormous one: each peer\u00a0<em>pair<\/em>\u00a0wants the identical secret pre-shared and rotated, which is strictly the key-distribution headache public-key crypto was invented to keep away from. (At scale, the secrets and techniques are both managed manually or generated by Quantum Key Distribution home equipment needing a full mesh of point-to-point fibers, none of which scales gracefully.) So PPK is a transitional step, not a vacation spot. Additionally word: PPK protects solely the\u00a0<em>derived keys<\/em>; authentication right here remains to be a classical PSK.<\/p>\n<hr class=\"code-line\" dir=\"auto\" data-line=\"24\"\/>\n<h2 id=\"set-up-the-lab\" class=\"code-line\" dir=\"auto\" data-line=\"26\"><span class=\"ez-toc-section\" id=\"Arrange_the_lab\"><\/span>Arrange the lab<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p class=\"code-line\" dir=\"auto\" data-line=\"28\">This makes use of the identical two-container key-exchange lab as Half 4. When you don\u2019t have already got it working, clone the repo, construct, and begin each friends (solely Docker required):<\/p>\n<pre><code class=\"code-line language-bash\" dir=\"auto\" data-line=\"30\">git <span class=\"hljs-built_in\">clone<\/span> https:\/\/github.com\/juliogomez\/pqc.git&#13;\n<span class=\"hljs-built_in\">cd<\/span> pqc\/key-exchange&#13;\n&#13;\n&#13;\ndocker compose construct&#13;\ndocker compose up -d&#13;\ndocker compose ps        &#13;\n<\/code><\/pre>\n<hr class=\"code-line\" dir=\"auto\" data-line=\"40\"\/>\n<h2 id=\"lets-prove-it-drop-to-classical-ke-and-let-the-ppk-carry-it\" class=\"code-line\" dir=\"auto\" data-line=\"42\"><span class=\"ez-toc-section\" id=\"Let%E2%80%99s_show_it_drop_to_classical_KE_and_let_the_PPK_carry_it\"><\/span>Let\u2019s show it: drop to classical KE and let the PPK carry it<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p class=\"code-line\" dir=\"auto\" data-line=\"44\">To make the \u201cvarious to ML-KEM\u201d level crystal clear, this train drops the important thing trade again to\u00a0<strong>classical-only X25519<\/strong> on goal (standing in for a legacy gadget that doesn&#8217;t assist ML-KEM) and lets the PPK present the quantum resistance completely by itself.<\/p>\n<p class=\"code-line\" dir=\"auto\" data-line=\"46\">Shell into the initiator (<code>docker exec -it ike-initiator bash<\/code>) and edit\u00a0<code>swanctl.conf<\/code>. First, swap the proposal to classical-only (similar toggle as Half 4):<\/p>\n<pre><code class=\"code-line\" dir=\"auto\" data-line=\"48\"># proposals = aes256gcm16-prfsha256-x25519-ke1_mlkem768&#13;\nproposals = aes256gcm16-prfsha256-x25519&#13;\n<\/code><\/pre>\n<p class=\"code-line\" dir=\"auto\" data-line=\"53\">Then uncomment the 2 PPK traces within the connection:<\/p>\n<pre><code class=\"code-line\" dir=\"auto\" data-line=\"55\">        ppk_id = pqc-lab-ppk&#13;\n        ppk_required = sure&#13;\n<\/code><\/pre>\n<p class=\"code-line\" dir=\"auto\" data-line=\"60\">And uncomment the key block on the backside:<\/p>\n<pre><code class=\"code-line\" dir=\"auto\" data-line=\"62\">    ppk-lab {&#13;\n        id = pqc-lab-ppk&#13;\n        secret = 0x5c9a3f1e8b7d4602af19e3c8d05b6f27a4e91d83c2b7f0a6e5d4c3b2a1908f7e&#13;\n    }&#13;\n<\/code><\/pre>\n<p class=\"code-line\" dir=\"auto\" data-line=\"69\">Make the identical edits within the responder, then reload each with\u00a0<code>swanctl --load-all<\/code>. The output now lists the PPK alongside the auth PSK:<\/p>\n<pre><code class=\"code-line\" dir=\"auto\" data-line=\"71\">loaded ike secret 'ike-psk'&#13;\nloaded ppk secret 'ppk-lab'&#13;\n<\/code><\/pre>\n<blockquote class=\"code-line\" dir=\"auto\" data-line=\"76\">\n<p class=\"code-line\" dir=\"auto\" data-line=\"76\"><strong>Reminder: these are lab secrets and techniques.<\/strong>\u00a0That hex worth is a throwaway for studying. In the true world a PPK is a high-entropy secret you\u2019d generate securely, distribute out of band, retailer rigorously, and rotate. By no means reuse lab keys wherever that issues.<\/p>\n<\/blockquote>\n<hr class=\"code-line\" dir=\"auto\" data-line=\"78\"\/>\n<h2 id=\"initiate-and-confirm-the-ppk-is-in-play\" class=\"code-line\" dir=\"auto\" data-line=\"80\"><span class=\"ez-toc-section\" id=\"Provoke_and_make_sure_the_PPK_is_in_play\"><\/span>Provoke and make sure the PPK is in play<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p class=\"code-line\" dir=\"auto\" data-line=\"82\">From the initiator:<\/p>\n<pre><code class=\"code-line language-bash\" dir=\"auto\" data-line=\"84\">swanctl --initiate --child pqc-child&#13;\n<\/code><\/pre>\n<p class=\"code-line\" dir=\"auto\" data-line=\"88\">4 traces within the log inform the entire story:<\/p>\n<pre><code class=\"code-line\" dir=\"auto\" data-line=\"90\">[ENC] producing IKE_SA_INIT request 0 [ SA KE No ... N(USE_PPK) ]&#13;\n[CFG] chosen proposal: IKE:AES_GCM_16_256\/PRF_HMAC_SHA2_256\/CURVE_25519&#13;\n[ENC] producing IKE_AUTH request 1 [ IDi AUTH SA TSi TSr ... N(PPK_ID) ]&#13;\n[CFG] utilizing PPK for PPK_ID 'pqc-lab-ppk'&#13;\n<\/code><\/pre>\n<p class=\"code-line\" dir=\"auto\" data-line=\"97\">Discover what\u2019s\u00a0<em>lacking<\/em>\u00a0in comparison with Half 4: the chosen proposal is obvious\u00a0<code>CURVE_25519<\/code>: no\u00a0<code>KE1_ML_KEM_768<\/code>, no\u00a0<code>IKE_INTERMEDIATE<\/code>, no fragments. That is an old style classical handshake.\u00a0<strong>And but it\u2019s now quantum-resistant<\/strong>, completely because of the PPK:<\/p>\n<ul class=\"code-line\" dir=\"auto\" data-line=\"99\">\n<li class=\"code-line\" dir=\"auto\" data-line=\"99\"><code>N(USE_PPK)<\/code>\u00a0rides within the\u00a0<em>cleartext<\/em>\u00a0<code>IKE_SA_INIT<\/code>, every peer promoting assist.<\/li>\n<li class=\"code-line\" dir=\"auto\" data-line=\"100\"><code>N(PPK_ID)<\/code>\u00a0rides contained in the\u00a0<em>encrypted<\/em>\u00a0<code>IKE_AUTH<\/code>, signalling which PPK is in use.<\/li>\n<li class=\"code-line\" dir=\"auto\" data-line=\"101\"><code>utilizing PPK for PPK_ID 'pqc-lab-ppk'<\/code>\u00a0is strongSwan confirming the key was discovered and blended into the important thing schedule.<\/li>\n<\/ul>\n<p class=\"code-line\" dir=\"auto\" data-line=\"103\">When you seize the run (similar\u00a0<code>tcpdump<\/code>\u00a0recipe as Half 4), three contrasts with the ML-KEM runs stand out:<\/p>\n<ul class=\"code-line\" dir=\"auto\" data-line=\"105\">\n<li class=\"code-line\" dir=\"auto\" data-line=\"105\"><strong>No\u00a0<code>#43<\/code>, no fragments.<\/strong>\u00a0Simply the plain two-round-trip classical handshake. The quantum resistance is using completely on the PPK, invisible within the packets.<\/li>\n<li class=\"code-line\" dir=\"auto\" data-line=\"106\"><strong><code>USE_PPK<\/code>\u00a0is public;\u00a0<code>PPK_ID<\/code>\u00a0is personal.<\/strong>\u00a0Discovery (\u201ccan we each assist it?\u201d) is within the cleartext\u00a0<code>IKE_SA_INIT<\/code>;\u00a0<em>which<\/em>\u00a0PPK is chosen travels encrypted inside\u00a0<code>IKE_AUTH<\/code>.<\/li>\n<li class=\"code-line\" dir=\"auto\" data-line=\"107\"><strong>The PPK itself seems nowhere.<\/strong>\u00a0That\u2019s the entire level: blended into the keys on each ends, by no means despatched.<\/li>\n<\/ul>\n<hr class=\"code-line\" dir=\"auto\" data-line=\"109\"\/>\n<h2 id=\"prove-its-actually-required-not-just-for-show\" class=\"code-line\" dir=\"auto\" data-line=\"111\"><span class=\"ez-toc-section\" id=\"Show_it%E2%80%99s_really_required\"><\/span>Show it\u2019s really required<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p class=\"code-line\" dir=\"auto\" data-line=\"113\">As a result of we set\u00a0<code>ppk_required = sure<\/code>, a peer that doesn\u2019t maintain the matching PPK can\u2019t full the handshake. Let\u2019s show the key is genuinely folded into the keys. Terminate the tunnel, then,\u00a0<em>within the initiator solely<\/em>, change its\u00a0<code>ppk-lab<\/code>\u00a0secret to a distinct worth (simulating a peer that doesn\u2019t know the true one):<\/p>\n<pre><code class=\"code-line\" dir=\"auto\" data-line=\"115\">    ppk-lab {&#13;\n        id = pqc-lab-ppk&#13;\n        secret = 0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef&#13;\n    }&#13;\n<\/code><\/pre>\n<p class=\"code-line\" dir=\"auto\" data-line=\"122\">Reload simply the initiator and re-initiate. This time it\u00a0<strong>fails<\/strong>: the mismatched PPK modifications the\u00a0<code>SK_pi<\/code>\/<code>SK_pr<\/code>\u00a0keys, so the responder can\u2019t confirm the initiator\u2019s AUTH payload and rejects it:<\/p>\n<pre><code class=\"code-line\" dir=\"auto\" data-line=\"124\">[ENC] parsed IKE_AUTH response 1 [ N(AUTH_FAILED) ]&#13;\n[IKE] obtained AUTHENTICATION_FAILED notify error&#13;\nprovoke failed: establishing CHILD_SA 'pqc-child' failed&#13;\n<\/code><\/pre>\n<p class=\"code-line\" dir=\"auto\" data-line=\"130\">There\u2019s your proof: the PPK isn\u2019t ornamental; it\u2019s baked into the keys. Get it fallacious and the tunnel merely received\u2019t come up.<\/p>\n<blockquote class=\"code-line\" dir=\"auto\" data-line=\"132\">\n<p class=\"code-line\" dir=\"auto\" data-line=\"132\"><strong>Tidy up your clone.<\/strong>\u00a0As a result of\u00a0<code>config\/<\/code>\u00a0is bind-mounted, your\u00a0<code>vi<\/code>\u00a0edits have been written to your repo information. Since they\u2019re git-tracked, one command from the host (in\u00a0<code>key-exchange\/<\/code>) snaps each friends again to the shipped state:\u00a0<code>git restore config\/<\/code>. That re-comments the PPK traces, restores the key, and switches the proposal again to hybrid: a clear slate for the subsequent run.<\/p>\n<\/blockquote>\n<hr class=\"code-line\" dir=\"auto\" data-line=\"134\"\/>\n<h2 id=\"when-would-you-actually-use-this\" class=\"code-line\" dir=\"auto\" data-line=\"136\"><span class=\"ez-toc-section\" id=\"When_would_you_really_use_this\"><\/span>When would you really use this?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p class=\"code-line\" dir=\"auto\" data-line=\"138\">Primarily as a\u00a0<strong>stepping stone<\/strong>. Tools that may\u2019t negotiate RFC 9370 \/ ML-KEM but, however wants harvest-now-decrypt-later safety\u00a0<em>at the moment<\/em>, can deploy a PPK now and migrate to ML-KEM as soon as each ends assist it. The worth is the traditional preshared-key burden (safe distribution, storage, and rotation of a \u2265256-bit secret throughout each peer pair), which is strictly why it\u2019s a transition, not a house.<\/p>\n<p class=\"code-line\" dir=\"auto\" data-line=\"140\">So the 2 roads complement one another: PPK for \u201cI want safety now on legacy gear,\u201d ML-KEM for \u201cI can negotiate it and wish it to scale.\u201d Loads of actual deployments will use <em>each<\/em>\u00a0throughout the migration years forward.<\/p>\n<hr class=\"code-line\" dir=\"auto\" data-line=\"142\"\/>\n<h2 id=\"thats-a-wrap-on-key-exchange\" class=\"code-line\" dir=\"auto\" data-line=\"144\"><span class=\"ez-toc-section\" id=\"That%E2%80%99s_a_wrap_on_key_trade\"><\/span>That\u2019s a wrap on key trade<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p class=\"code-line\" dir=\"auto\" data-line=\"146\">During the last 4 posts we\u2019ve taken the pressing pillar finish to finish: the menace, the contenders, the hybrid showdown, an actual captured handshake, and now a second unbiased highway to the identical security. You\u2019ve seen, actually\u00a0<em>seen<\/em>, that quantum-safe key trade is right here, sensible, and reasonably priced at the moment.<\/p>\n<p class=\"code-line\" dir=\"auto\" data-line=\"148\">Now we flip to the\u00a0<strong>different<\/strong>\u00a0pillar, and it behaves\u00a0<em>utterly<\/em>\u00a0in a different way. No \u201charvest now, decrypt later\u201d right here, however a sneakier deadline that catches virtually everybody off guard. In\u00a0<strong>Half 6<\/strong>\u00a0we begin the authentication story and meet the post-quantum signatures. See you there, and convey your curiosity, as a result of this half has a twist.<\/p>\n<\/p><\/div>\n\n","protected":false},"excerpt":{"rendered":"<p>Up to now on this pillar we made the\u00a0key trade itself quantum-safe by bolting a post-quantum algorithm (ML-KEM) onto it. That\u2019s the headline method, and in Half 4 we watched it run. However it\u2019s not the one option to beat \u201charvest now, decrypt later.\u201d There\u2019s another highway that will get you to the similar\u00a0vacation spot [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":31185,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[22],"tags":[],"class_list":["post-31183","post","type-post","status-publish","format-standard","has-post-thumbnail","category-iot"],"_links":{"self":[{"href":"https:\/\/aireviewirush.com\/index.php?rest_route=\/wp\/v2\/posts\/31183","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/aireviewirush.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/aireviewirush.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/aireviewirush.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/aireviewirush.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=31183"}],"version-history":[{"count":1,"href":"https:\/\/aireviewirush.com\/index.php?rest_route=\/wp\/v2\/posts\/31183\/revisions"}],"predecessor-version":[{"id":31184,"href":"https:\/\/aireviewirush.com\/index.php?rest_route=\/wp\/v2\/posts\/31183\/revisions\/31184"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/aireviewirush.com\/index.php?rest_route=\/wp\/v2\/media\/31185"}],"wp:attachment":[{"href":"https:\/\/aireviewirush.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=31183"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/aireviewirush.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=31183"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/aireviewirush.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=31183"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}