<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Computer Science on Bitsy Services Wiki</title>
    <link>https://wiki.bitsy.services/wiki/cs/</link>
    <description>Recent content in Computer Science on Bitsy Services Wiki</description>
    <generator>Hugo</generator>
    <language>en</language>
    <atom:link href="https://wiki.bitsy.services/wiki/cs/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Canonicalization Attack</title>
      <link>https://wiki.bitsy.services/wiki/cs/canonicalization-attack/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://wiki.bitsy.services/wiki/cs/canonicalization-attack/</guid>
      <description>&lt;p&gt;A canonicalization attack exploits inconsistencies in how systems normalize data into a standard (&amp;ldquo;canonical&amp;rdquo;) form. When two components in a pipeline disagree on what a given input &lt;em&gt;means&lt;/em&gt; &amp;ndash; because they canonicalize it differently, or one canonicalizes and the other doesn&amp;rsquo;t &amp;ndash; an attacker can craft input that passes validation in one form but behaves maliciously in another.&lt;/p&gt;&#xA;&lt;h2 id=&#34;what-is-canonicalization&#34;&gt;What is canonicalization?&lt;a class=&#34;anchor&#34; href=&#34;#what-is-canonicalization&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Canonicalization (sometimes abbreviated C14N) is the process of converting data that has more than one valid representation into a single, standard form. Examples are everywhere:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Canonicalization Attacks on Signed XML</title>
      <link>https://wiki.bitsy.services/wiki/cs/canonicalization-attacks-on-signed-xml/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://wiki.bitsy.services/wiki/cs/canonicalization-attacks-on-signed-xml/</guid>
      <description>&lt;p&gt;XML digital signatures bind a cryptographic signature to a canonicalized representation of an XML document (or a portion of it). This creates a gap that attackers can exploit: the signature covers what the canonicalization algorithm &lt;em&gt;sees&lt;/em&gt;, but the application processes what the XML parser &lt;em&gt;produces&lt;/em&gt;. When those two views diverge, an attacker can modify the document&amp;rsquo;s effective meaning without invalidating its signature.&lt;/p&gt;&#xA;&lt;p&gt;This page focuses on XML-specific attacks. For the general concept, see &lt;a href=&#34;https://wiki.bitsy.services/wiki/cs/canonicalization-attack&#34;&gt;Canonicalization Attack&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Homoiconicity</title>
      <link>https://wiki.bitsy.services/wiki/cs/homoiconicity/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://wiki.bitsy.services/wiki/cs/homoiconicity/</guid>
      <description>&lt;p&gt;Homoiconicity is a property of programming languages in which programs are represented using the language&amp;rsquo;s own data structures. The term combines the Greek &lt;em&gt;homo&lt;/em&gt; (same) and &lt;em&gt;icon&lt;/em&gt; (representation) &amp;ndash; code and data share the same form, and the language can manipulate its own code with the same tools it uses to manipulate any other data.&lt;/p&gt;&#xA;&lt;h2 id=&#34;why-it-matters&#34;&gt;Why it matters&lt;a class=&#34;anchor&#34; href=&#34;#why-it-matters&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;When code is data, a program can inspect, generate, and transform other programs (or itself) at compile time or runtime using ordinary language constructs. This makes several things practical that are awkward or impossible in non-homoiconic languages:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Zero-Knowledge Proofs</title>
      <link>https://wiki.bitsy.services/wiki/cs/zero-knowledge-proofs/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://wiki.bitsy.services/wiki/cs/zero-knowledge-proofs/</guid>
      <description>&lt;p&gt;A zero-knowledge proof (ZKP) is a cryptographic protocol that allows one party (the &lt;strong&gt;prover&lt;/strong&gt;) to convince another party (the &lt;strong&gt;verifier&lt;/strong&gt;) that a statement is true, without revealing any information beyond the truth of the statement itself. The prover demonstrates &lt;em&gt;knowledge&lt;/em&gt; without disclosing &lt;em&gt;content&lt;/em&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;three-properties&#34;&gt;Three properties&lt;a class=&#34;anchor&#34; href=&#34;#three-properties&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;A protocol qualifies as a zero-knowledge proof if it satisfies:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;Completeness.&lt;/strong&gt; If the statement is true and both parties follow the protocol honestly, the verifier will be convinced.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Soundness.&lt;/strong&gt; If the statement is false, no cheating prover can convince an honest verifier (except with negligible probability).&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Zero-knowledge.&lt;/strong&gt; If the statement is true, the verifier learns nothing beyond the fact that it is true. Formally, anything the verifier could compute from the interaction, it could also compute without the interaction &amp;ndash; the proof can be &lt;em&gt;simulated&lt;/em&gt;.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h2 id=&#34;the-cave-analogy&#34;&gt;The cave analogy&lt;a class=&#34;anchor&#34; href=&#34;#the-cave-analogy&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;The classic illustration uses a circular cave with a locked door blocking the path at the far end. Peggy (the prover) claims to know the secret that opens the door. Victor (the verifier) wants to be convinced without learning the secret.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
