<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-9204759972978204390</atom:id><lastBuildDate>Thu, 05 Sep 2024 14:23:32 +0000</lastBuildDate><category>project</category><category>update</category><category>code</category><category>knowledge</category><title>GSoC &#39;22 × Aditya Rajput</title><description>This blog documents my GSoC journey.</description><link>https://burgers-gsoc.blogspot.com/</link><managingEditor>noreply@blogger.com (Aditya Rajput (BURG3R5))</managingEditor><generator>Blogger</generator><openSearch:totalResults>12</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9204759972978204390.post-8475445944925892388</guid><pubDate>Mon, 22 Aug 2022 17:56:00 +0000</pubDate><atom:updated>2022-08-22T10:56:25.595-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">project</category><category domain="http://www.blogger.com/atom/ns#">update</category><title>[Week 10] Overthrowing the King of Bugs</title><description>&lt;span style=&quot;font-family: helvetica;&quot;&gt;In the end, all it took was a few nights, several scribbled whiteboards and a ton of manually going through 9000 line long JSON files.&lt;/span&gt;&lt;br /&gt;&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;
&lt;h2 style=&quot;text-align: left;&quot;&gt;
  &lt;span style=&quot;font-family: helvetica;&quot;&gt;&lt;span&gt;Summary&lt;/span&gt;&lt;/span&gt;
&lt;/h2&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Fixed handling of split chunks in &lt;b&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;IndexStorage.update_lookup_table&lt;/span&gt;&lt;/b&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Began working on performance evaluation&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;&lt;span&gt;Details&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;The stuff in the intro is true. It did take a lot of work to figure out exactly how to best fix the split chunk handling bug. I started by logically working through every edge case and narrowing down the issue to the handling of &quot;fraction of bucket&quot; files. Then began experimentation on methods to fix the problem.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;I&#39;ll spare you the gory details, but trust me when I say that the number of lines changed in the fixing PR does not indicate the amount of debugging code and supplementary code I had to write in order to analyze this issue.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;I&#39;ve never mentioned this before, but generating data for the tests is not an easy job at all. In fact, the amount of code I&#39;ve written just to generate the test data rivals the size of the main library itself!&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Anyway, once that was done, I started working on performance evaluation, which is one of the last milestones remaining for this project.&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;</description><link>https://burgers-gsoc.blogspot.com/2022/08/week10.html</link><author>noreply@blogger.com (Aditya Rajput (BURG3R5))</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9204759972978204390.post-8064002657066807046</guid><pubDate>Mon, 15 Aug 2022 17:32:00 +0000</pubDate><atom:updated>2022-08-15T10:32:33.442-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">project</category><category domain="http://www.blogger.com/atom/ns#">update</category><title>[Week 9] Now Make It Dynamic!</title><description>&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;When I was originally reading the &lt;i&gt;Demertzis et al.&lt;/i&gt; paper&lt;/span&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;, I thought writing an updation scheme for the index would be the hardest part. After the storms I&#39;ve conquered, this was a middling gale.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;
&lt;h2 style=&quot;text-align: left;&quot;&gt;
  &lt;span style=&quot;font-family: helvetica;&quot;&gt;&lt;span&gt;Summary&lt;/span&gt;&lt;/span&gt;
&lt;/h2&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Implemented a merging scheme for encrypted indices&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Added documentation and tests for &lt;b&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;IndexMerge&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Discovered and analyzed a major bug&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;&lt;span&gt;Details&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;This week was a return to normal for me. I ha&lt;/span&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;d a precise idea of what the merging scheme would look like and which methods were to be exposed to the user. Some code from previous classes like &lt;b&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;IndexStorage&lt;/span&gt;&lt;/b&gt; and &lt;b&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;EncryptedSearch&lt;/span&gt;&lt;/b&gt; came handy when designing the skeleton of &lt;b&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;IndexMerge&lt;/span&gt;&lt;/b&gt;, which felt like a nice touch.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Writing the tests was a breeze, but the very first time I ran them I ran into a problem. Three keywords were missing one document id. To be concrete: the results for &quot;&lt;b&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;open&lt;/span&gt;&lt;/b&gt;&quot;, &quot;&lt;b&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;matrix&lt;/span&gt;&lt;/b&gt;&quot; and &quot;&lt;b&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;communication&lt;/span&gt;&lt;/b&gt;&quot; were missing the document id &quot;&lt;span style=&quot;font-family: courier;&quot;&gt;&lt;b&gt;$e4uS...HGHg&lt;/b&gt;&lt;/span&gt;&quot; even though they did appear in that document.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Now, there are multiple systems at play here: three indices being built, two indices being partitioned into &quot;blocs&quot;, and one merge operation. One thing I noticed pretty early on was that the three keywords were the most frequent in the messages I was running the test over. Next: when I repeated the test, the missing document id was different.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Then I started backtracking through the process for where it could have faltered. This step took a while because of the shear volume of output from the test and the number of suspicious lines of code.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;But eventually I narrowed my eyes at one method that seemed to be the culprit. &lt;b&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;IndexStorage.__convert_location&lt;/span&gt;&lt;/b&gt; was converting each local chunk&#39;s location to a location in a remote file. Notice the &quot;a remote file&quot; there, because several chunks &lt;i&gt;did&lt;/i&gt;, in fact, split into multiple files before this method and those extra files were just ignored completely.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;(I realize that I&#39;m blaming the method as if it is a being with agency when in fact this is entirely Past Me&#39;s fault.)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Anyway, I&#39;ve raised &lt;a href=&quot;https://github.com/BURG3R5/matrix-encrypted-search/issues/10&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;an issue&lt;/a&gt; for this and will sort it out once I&#39;ve finished up with &lt;b&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;IndexMerge&lt;/span&gt;&lt;/b&gt;.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;</description><link>https://burgers-gsoc.blogspot.com/2022/08/week9.html</link><author>noreply@blogger.com (Aditya Rajput (BURG3R5))</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9204759972978204390.post-6211681047394570708</guid><pubDate>Mon, 08 Aug 2022 16:53:00 +0000</pubDate><atom:updated>2022-08-08T09:53:40.403-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">project</category><category domain="http://www.blogger.com/atom/ns#">update</category><title>[Week 8] Tests and Docs and Optimization</title><description>&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Optimization &amp;gt;&amp;gt;&amp;gt; Debugging.&lt;/span&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;
&lt;h2 style=&quot;text-align: left;&quot;&gt;
  &lt;span style=&quot;font-family: helvetica;&quot;&gt;&lt;span&gt;Summary&lt;/span&gt;&lt;/span&gt;
&lt;/h2&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Fixed &lt;b&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;update_lookup_table&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;/span&gt;
  &lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Added documentation and tests for &lt;b&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;IndexStorage&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Optimized &lt;b&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;IndexStorage&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;font-family: courier;&quot;&gt; &lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;h2 style=&quot;text-align: left;&quot;&gt;
  &lt;span style=&quot;font-family: helvetica;&quot;&gt;Details&lt;br /&gt;&lt;/span&gt;
&lt;/h2&gt;
&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;This week I fixed the bugs I found in the bin-packing code I found last week. I wrote some testcases for it and then documented the high-level methods in the &lt;b&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;IndexStorage&lt;/span&gt;&lt;/b&gt; class.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Then I found that there was some extra data being stored in that class and its testcases. I swiftly cut it out and patched the &quot;bugs&quot; that sprung up after that.&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;</description><link>https://burgers-gsoc.blogspot.com/2022/08/week8.html</link><author>noreply@blogger.com (Aditya Rajput (BURG3R5))</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9204759972978204390.post-1749956799341299739</guid><pubDate>Mon, 01 Aug 2022 22:12:00 +0000</pubDate><atom:updated>2022-08-01T15:16:36.562-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">project</category><category domain="http://www.blogger.com/atom/ns#">update</category><title>[Week 7] Jarvis, get the bugspray!</title><description>&lt;p&gt;&amp;nbsp;&lt;span style=&quot;font-family: helvetica;&quot;&gt;The joy of debugging!&lt;/span&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;
&lt;h2 style=&quot;text-align: left;&quot;&gt;
  &lt;span style=&quot;font-family: helvetica;&quot;&gt;&lt;span&gt;Summary&lt;/span&gt;&lt;/span&gt;
&lt;/h2&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Implemented code to update local locations to remote locations after blobs have been uploaded.&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Started to work on tests for the above. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Found several bugs in the implemented code, start fixing them.&lt;br /&gt;&lt;/span&gt;
  &lt;/li&gt;&lt;/ul&gt;
&lt;h2 style=&quot;text-align: left;&quot;&gt;
  &lt;span style=&quot;font-family: helvetica;&quot;&gt;Details&lt;br /&gt;&lt;/span&gt;
&lt;/h2&gt;
&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;The method I&#39;m working on currently is named &lt;b&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;update_lookup_table&lt;/span&gt;&lt;/b&gt; and it is a classic &lt;/span&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;&lt;span class=&quot;ILfuVd&quot; lang=&quot;en&quot;&gt;&lt;span class=&quot;hgKElc&quot;&gt;bin packing problem.&lt;/span&gt;&lt;/span&gt; Now, you&#39;d think a &quot;classic&quot; problem would not take a whole week to successfully implement. Yeah, I thought so too. But this seemingly innocuous method has given me a crappy time all week.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;&lt;img alt=&quot;screenshot of a failed assertion during debugging&quot; height=&quot;293&quot; src=&quot;data:image/png;base64,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&quot; title=&quot;screenshot of a failed assertion during debugging&quot; width=&quot;320&quot; /&gt; &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;i&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;The output from this &lt;/span&gt;&lt;/i&gt;&lt;i&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;&lt;span class=&quot;ILfuVd&quot; lang=&quot;en&quot;&gt;&lt;span class=&quot;hgKElc&quot;&gt;bin packing problem&lt;/span&gt;&lt;/span&gt; contains negative array indicies!&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Anyway, currently I&#39;m debugging this method line-by-line to figure out what&#39;s going wrong.&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;</description><link>https://burgers-gsoc.blogspot.com/2022/08/week7.html</link><author>noreply@blogger.com (Aditya Rajput (BURG3R5))</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9204759972978204390.post-3305314366726404781</guid><pubDate>Mon, 25 Jul 2022 16:34:00 +0000</pubDate><atom:updated>2022-07-25T09:34:09.115-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">update</category><title>[Week 6] Nothing At All</title><description>&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;This week I was traveling to my college campus and settling into my new room and routine, so I wasn&#39;t able to give time to the project.&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;</description><link>https://burgers-gsoc.blogspot.com/2022/07/week6.html</link><author>noreply@blogger.com (Aditya Rajput (BURG3R5))</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9204759972978204390.post-4209949991035998804</guid><pubDate>Mon, 18 Jul 2022 18:29:00 +0000</pubDate><atom:updated>2022-07-18T11:29:53.536-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">project</category><category domain="http://www.blogger.com/atom/ns#">update</category><title>[Week 5] Choppy Waters</title><description>&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Wrangling naughty data structures. That was my job this week.&lt;/span&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;
&lt;h2 style=&quot;text-align: left;&quot;&gt;
  &lt;span style=&quot;font-family: helvetica;&quot;&gt;&lt;span&gt;Summary&lt;/span&gt;&lt;/span&gt;
&lt;/h2&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Implemented code to blob-ify &lt;/span&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;the encrypted index&#39;s &lt;b&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;datastore&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;/span&gt;
  &lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Wrote an iterator-style interface for the client to store &lt;/span&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;each blob in the Matrix Content Repository&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Added tests for above functionalities&lt;br /&gt;&lt;/span&gt;
  &lt;/li&gt;&lt;/ul&gt;
&lt;h2 style=&quot;text-align: left;&quot;&gt;
  &lt;span style=&quot;font-family: helvetica;&quot;&gt;Details&lt;br /&gt;&lt;/span&gt;
&lt;/h2&gt;
&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;
  &lt;span style=&quot;font-family: helvetica;&quot;&gt;My idea for storing extra-large-buckets was greenlit by my mentor, but (absolutely unlike my prediction) it was very difficult to properly implement. I&#39;ll summarize the basic idea here:&lt;/span&gt;&lt;/p&gt;&lt;ol style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;We have a structure called a blob. Every blob is smaller than a defined size limit. Each blob corresponds to one file in the Matrix Content Repository and thus has one MXC URI.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;We will try to fit each level of our encrypted index into a separate blob.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;For the levels which are too big, we will try to divide them into sub-levels. Each sub-level is an array of one or more &lt;i&gt;whole&lt;/i&gt; buckets. We will try to fit each sub-level into a separate blob.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;It may be that some buckets are too large for a blob and so they can&#39;t be saved as a sub-level. In this case we split up the bucket into equal-sized sub-buckets. Each sub-bucket is an array of strings. We will save each sub-bucket as a separate blob. &lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;(The code for these steps is unavoidably ugly and I&#39;ve rewritten it about eight times now 😭) &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Once the blob-ification process is complete, we can provide each blob to the client to upload to the homeservers and save the MXC URIs in our &lt;b&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;IndexStorage&lt;/span&gt;&lt;/b&gt; object.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;The next step is to update the &lt;b&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;Location&lt;/span&gt;&lt;/b&gt; objects in the encrypted index&#39;s &lt;b&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;lookup_table&lt;/span&gt;&lt;/b&gt; so that when search is performed, we only fetch the required files and not all the files of the level. This is what I&#39;m working on as of writing this blog.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;And it goes without saying that these methods have been thoroughly tested. Documentation, though, will have to wait until I&#39;m done with the class.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;</description><link>https://burgers-gsoc.blogspot.com/2022/07/week5.html</link><author>noreply@blogger.com (Aditya Rajput (BURG3R5))</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9204759972978204390.post-1056653061200879621</guid><pubDate>Mon, 11 Jul 2022 18:08:00 +0000</pubDate><atom:updated>2022-07-11T11:08:38.122-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">project</category><category domain="http://www.blogger.com/atom/ns#">update</category><title>[Week 4] First Contact with Reality</title><description>&lt;p&gt;&lt;/p&gt;
&lt;p&gt;
  &lt;span style=&quot;font-family: helvetica;&quot;&gt;This week was spent fighting the messiness of reality.&lt;br /&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;
&lt;h2 style=&quot;text-align: left;&quot;&gt;
  &lt;span style=&quot;font-family: helvetica;&quot;&gt;&lt;span&gt;Summary&lt;/span&gt;&lt;/span&gt;
&lt;/h2&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
  &lt;li&gt;
    &lt;span style=&quot;font-family: helvetica;&quot;&gt;Fixed the normalizer used during search and updated tests&lt;br /&gt;&lt;/span&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;span style=&quot;font-family: helvetica;&quot;&gt;Began implementing a Storage scheme&lt;br /&gt;&lt;/span&gt;
  &lt;/li&gt;
&lt;/ul&gt;
&lt;h2 style=&quot;text-align: left;&quot;&gt;
  &lt;span style=&quot;font-family: helvetica;&quot;&gt;Details&lt;br /&gt;&lt;/span&gt;
&lt;/h2&gt;
&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;
  &lt;span style=&quot;font-family: helvetica;&quot;&gt;As planned in the last blog, I set about fixing the method used for
    normalization the search query. But soon my mentor @cvwright saw the blog
    post and my code and corrected me that there was no need to search for the
    sub-tokens. Additionally, I realized how cumbersome it would be if the user
    wanted to search for &quot;user@example.com&quot; and the client search for every
    single appearance of &quot;com&quot;.&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
  &lt;span style=&quot;font-family: helvetica;&quot;&gt;Hence I rewrote the normalizer method yet again and fixed the tests yet
    again.&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
  &lt;span style=&quot;font-family: helvetica;&quot;&gt;Once that PR was approved and merged, I moved on to a helper class that
    needs to be merged before we can call the Search algorithm complete:
    &lt;b&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;IndexStorage&lt;/span&gt;&lt;/b&gt;.&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
  &lt;span style=&quot;font-family: helvetica;&quot;&gt;As a part of the library&#39;s core functionality, we also need to divvy-up the
    datastore so that the client can upload them to Matrix content repositories.
    Ideally, each level of the datastore will be stored in a single file as is.
    But in practice, content repositories usually have a file size limit. Which
    throws a wrench into the plans.&lt;br /&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
  &lt;span style=&quot;font-family: helvetica;&quot;&gt;The natural next step is to try storing each bucket as a separate file.
    Problem is, an unbelievably huge number of buckets are empty at the end of
    Setup. And this is intentional. So if we store bucket-wise, we&#39;ll have to
    store the following file content a billion times:&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;&lt;script src=&quot;https://gist.github.com/BURG3R5/fa13188966b476a43b9123cea57a326c.js&quot;&gt;&lt;/script&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;That&#39;s inefficient.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;
  &lt;span style=&quot;font-family: helvetica;&quot;&gt;The good news is that I&#39;ve got an idea. I have to talk to my mentor to confirm that it doesn&#39;t break the scheme entirely. If greenlit, I &lt;i&gt;think&lt;/i&gt; it&#39;ll be easy enough to implement.&lt;/span&gt;&lt;/p&gt;</description><link>https://burgers-gsoc.blogspot.com/2022/07/week4.html</link><author>noreply@blogger.com (Aditya Rajput (BURG3R5))</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9204759972978204390.post-7051687875562995028</guid><pubDate>Mon, 04 Jul 2022 18:14:00 +0000</pubDate><atom:updated>2022-07-04T11:14:36.995-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">project</category><category domain="http://www.blogger.com/atom/ns#">update</category><title>[Week 3] The Hidden Challenge</title><description>&lt;p&gt;&amp;nbsp;&lt;span style=&quot;font-family: helvetica;&quot;&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;This week was a doozy! Implementing the Search algorithm took more time than I&#39;d expected.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;p&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Summary&lt;/span&gt;&lt;/h2&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Added tests for &lt;b&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;distribute&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Implemented the Search algorithm&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Added tests for &lt;b&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;locate&lt;/span&gt;&lt;/b&gt; and &lt;b&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;lookup&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Details&lt;br /&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;The first insight I had when I started working this week was that I needed a stronger &lt;b&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;Location&lt;/span&gt;&lt;/b&gt; model, one that could adapt to both local and remote locations. Since that meant leaving &lt;b&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;NamedTuple&lt;/span&gt;&lt;/b&gt; behind, I had to override &lt;b&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;__eq__&lt;/span&gt;&lt;/b&gt; and &lt;b&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;__hash__&lt;/span&gt;&lt;/b&gt; method to make &lt;b&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;Location&lt;/span&gt;&lt;/b&gt; objects hashable, and add a deserializer.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Once that was done, I planned the structure of the Search code. I knew that I was going to delegate the &quot;fetching the files&quot; portion of the algorithm to the client using the library, so the process had to broken into three steps:&lt;/span&gt;&lt;/p&gt;&lt;ol style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Lookup: Find relevant locations in all lookup tables in the scope of this search.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Fetch: Get relevant files from content repositories.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Locate: Collect and shortlist event ids within fetched files.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Step 1 and 3 became methods of the &lt;b&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;EncryptedSearch&lt;/span&gt;&lt;/b&gt; class. Additionally, as step 0, the &lt;b&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;EncryptedSearch&lt;/span&gt;&lt;/b&gt; object needs to be initialized with all available/necessary lookup tables.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Slight detour: By supporting multiple indices in the same search object, the intention is to give the client the ability to search all the indices in a room (or even &lt;i&gt;all indices in all the rooms&lt;/i&gt;) at the same time.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Anyway, because of the optimizations made during week two (Implementation of the Search algorithm), the &lt;b&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;locate&lt;/span&gt;&lt;/b&gt; and &lt;span style=&quot;font-family: courier;&quot;&gt;&lt;b&gt;lookup&lt;/b&gt;&lt;/span&gt; methods themselves are pretty simple. And to make things simple for the user, the methods deal in explicit Matrix Content Repositories, not exposing any other implementation details including interpreted keywords and locations looked up.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Writing tests for these methods, though, was a pain in the butt. Honestly, the temp code code I write to produce test cases, I think, is longer than the actual test case and the main library code!&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Now I must confess, I did lie about the search methods being &quot;pretty simple&quot;. They&#39;re &lt;i&gt;theoretically&lt;/i&gt; simple. They aren&#39;t &quot;pretty simple&quot; when dealing with &lt;b&gt;phrase search&lt;/b&gt;. The search query needs to be parsed into normalized tokens. (This is not the difficult part: I already have a utility method for this.)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;The problem is subtokens.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;See, when the indexing methods encounter a word like &quot;matrix.org&quot; in the document content, they store store keywords: &quot;matrix&quot; and &quot;matrix.org&quot;. This is to avoid splitting significant content into subtokens that are by themselves meaningless. For example, if we index &quot;alice.0@example.co.us&quot;, we&#39;ll store &quot;alice&quot;, &quot;example&quot; and &quot;co&quot; and &quot;&lt;/span&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;alice.0@example.co.us&lt;/span&gt;&quot; (losing the stopwords &quot;us&quot;). If we didn&#39;t store the main token, we won&#39;t be able to search for the email at all.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strike&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Anyway, while searching for phrases we need to ensure the following:&lt;/span&gt;&lt;/strike&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;strike&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Find each main token&#39;s docs &lt;/span&gt;&lt;/strike&gt;&lt;/li&gt;&lt;li&gt;&lt;strike&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;For sub tokens of each main token:&lt;/span&gt;&lt;/strike&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;strike&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Create temp set &lt;br /&gt;&lt;/span&gt;&lt;/strike&gt;&lt;/li&gt;&lt;li&gt;&lt;strike&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;For each sub token:&lt;/span&gt;&lt;/strike&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;strike&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Find set of docs that contain sub token&lt;/span&gt;&lt;/strike&gt;&lt;/li&gt;&lt;li&gt;&lt;strike&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Take intersection&lt;/span&gt; with temp set&lt;br /&gt;&lt;/span&gt;&lt;/strike&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;strike&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Add temp set to the main token&#39;s results&lt;/span&gt;&lt;/strike&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;&lt;strike&gt;Find intersection of all main token results&lt;/strike&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Complicated? Yeah.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;&lt;b&gt;Put simply, when searching for &quot;cheese-pizza bazooka&quot;, documents that contain &quot;cheese and some pizza&quot; need to be treated as containing &quot;cheese-pizza&quot;.&lt;/b&gt; If the document content is &quot;I shot some cheese and some pizza out of a bazooka&quot;, it needs to show up as a result of the search.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;So the important takeaway is that we to distinguish between main and sub tokens at each step, including normalization. It doesn&#39;t change a lot, but it changes enough. As of typing this post, I&#39;m finalizing the patch commit that fixes this. Hopefully it&#39;ll be done in an hour.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;PS: Weird discovery– The parser is letting empty strings and single letter strings through. I&#39;ve fixed it for empty strings, but single-letter strings give me pause. Those occur rarely and may have some importance. But maybe they need to be remove from sub tokens, because storing the &quot;e&quot; in &quot;i.e.&quot; is wasteful to say the least.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;</description><link>https://burgers-gsoc.blogspot.com/2022/07/week3.html</link><author>noreply@blogger.com (Aditya Rajput (BURG3R5))</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9204759972978204390.post-7664833957004236065</guid><pubDate>Mon, 27 Jun 2022 15:15:00 +0000</pubDate><atom:updated>2022-06-27T08:15:16.191-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">project</category><category domain="http://www.blogger.com/atom/ns#">update</category><title>[Week 2] Tackling the Beast</title><description>&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Second week of the coding period!&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;p&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Summary&lt;/span&gt;&lt;/h2&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Added tests for &lt;b&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;calculate_parameters&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Implemented the Setup algorithm&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Adapted the paper&#39;s algorithm to the Matrix ecosystem.&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Details&lt;br /&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;I received suggested changes in the &lt;b&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;calculate_parameters&lt;/span&gt;&lt;/b&gt; PR (&lt;a href=&quot;https://github.com/BURG3R5/matrix-encrypted-search/pull/4&quot; target=&quot;_blank&quot;&gt;#4&lt;/a&gt;) I made those changes and finished off the PR with tests for the method. This took a while, because the expected outcomes for these tests needed to be manually calculated.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Once that was done, I spent the rest of the week working on the &lt;b&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;distribute&lt;/span&gt;&lt;/b&gt; method, which is direct implementation of the Setup algorithm as given in the &lt;/span&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;“&lt;a href=&quot;http://idemertzis.com/Papers/sigmod17.pdf&quot; target=&quot;_blank&quot;&gt;Fast Searchable Encryption with Tunable Locality&lt;/a&gt;” paper.&lt;/span&gt;&lt;/p&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitbaIuOyecku4f6g0GJKmaIW_7pX0d08w6XVK1ou45qBxNbY55PfVzNuNlqDmiQ81x0cQpa5ZWDDi1la3FGy5B78fmu4QGfLSITvIgqGIVOZQLNyZoLlqW2CfR-IlHzZNpbp1LzBiOQWUBX-6fu4bLTOKjvty-qUiUfgrTf9zGQs4RRLF-JtTHhPab3w/s1220/(algo)%20KeyGen%20+%20Setup.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;Setup algorithm, from “Fast Searchable Encryption with Tunable Locality”&quot; border=&quot;0&quot; data-original-height=&quot;661&quot; data-original-width=&quot;1220&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitbaIuOyecku4f6g0GJKmaIW_7pX0d08w6XVK1ou45qBxNbY55PfVzNuNlqDmiQ81x0cQpa5ZWDDi1la3FGy5B78fmu4QGfLSITvIgqGIVOZQLNyZoLlqW2CfR-IlHzZNpbp1LzBiOQWUBX-6fu4bLTOKjvty-qUiUfgrTf9zGQs4RRLF-JtTHhPab3w/s16000/(algo)%20KeyGen%20+%20Setup.png&quot; title=&quot;Setup algorithm, from “Fast Searchable Encryption with Tunable Locality”&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Setup algorithm, from “Fast Searchable Encryption with Tunable Locality”&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;&lt;/span&gt;&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;The paper&#39;s algorithm involves encryption and server-side search. For our purposes, we are choosing to rely on the the inbuilt encryption that the Matrix ecosystem provides to room events and content repository files. Additionally, the search algorithm will be run on the client side. What all of this means, for our project, is that there&#39;s no additional encryption required. This simplifies the steps quite a bit.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;This method is the heart and soul of the encrypted search scheme, so I spent a while optimizing it and making sure the correspondence between code and algorithm was clear.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;I&#39;ve started working on the tests for this method, but I&#39;m waiting on my mentor&#39;s guidance before I proceed.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;</description><link>https://burgers-gsoc.blogspot.com/2022/06/week2.html</link><author>noreply@blogger.com (Aditya Rajput (BURG3R5))</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitbaIuOyecku4f6g0GJKmaIW_7pX0d08w6XVK1ou45qBxNbY55PfVzNuNlqDmiQ81x0cQpa5ZWDDi1la3FGy5B78fmu4QGfLSITvIgqGIVOZQLNyZoLlqW2CfR-IlHzZNpbp1LzBiOQWUBX-6fu4bLTOKjvty-qUiUfgrTf9zGQs4RRLF-JtTHhPab3w/s72-c/(algo)%20KeyGen%20+%20Setup.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9204759972978204390.post-497996273994958011</guid><pubDate>Mon, 20 Jun 2022 04:32:00 +0000</pubDate><atom:updated>2022-06-19T21:45:06.971-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">project</category><category domain="http://www.blogger.com/atom/ns#">update</category><title>[Week 1] Setup the project and Setup-Helpers!</title><description>&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;First week of the coding period!&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;p&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Summary&lt;/span&gt;&lt;/h2&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Initialized GitHub repository at &lt;a href=&quot;https://github.com/BURG3R5/matrix-encrypted-search&quot; target=&quot;_blank&quot;&gt;BURG3R5/matrix-encrypted-search&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Added helper methods for Setup algorithm (&lt;a href=&quot;https://github.com/BURG3R5/matrix-encrypted-search/pull/2&quot; target=&quot;_blank&quot;&gt;#2&lt;/a&gt;)&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Set up:&lt;/span&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;&lt;a href=&quot;https://github.com/google/yapf&quot; target=&quot;_blank&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;yapf&lt;/span&gt;&lt;/b&gt;&lt;/a&gt; and &lt;a href=&quot;https://pycqa.github.io/isort/index.html&quot; target=&quot;_blank&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;isort&lt;/span&gt;&lt;/b&gt;&lt;/a&gt; via &lt;a href=&quot;http://pre-commit.com/&quot; target=&quot;_blank&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;pre-commit&lt;/span&gt;&lt;/b&gt;&lt;/a&gt;, and&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;a &lt;a href=&quot;https://github.com/BURG3R5/matrix-encrypted-search/blob/b363b64a7a3910358ddb69f785e965e917ac1ab8/.github/workflows/ci.yaml&quot; target=&quot;_blank&quot;&gt;CI workflow&lt;/a&gt; for testing and &lt;a href=&quot;https://github.com/BURG3R5/matrix-encrypted-search/blob/35d05ec965d83662d23b085e8e8c63a68b3a54f8/.pre-commit-config.yaml&quot; target=&quot;_blank&quot;&gt;linting&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Details&lt;br /&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;I spent a significant portion of this week planning the structure of the code. First the project structure itself, and then later the test cases. One of my targets was to make sure the code was modular and readable. I refactored and renamed till I was happy with the structure.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;And then I refactored some more :)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Thankfully I had implemented a large portion of the code while I was writing the proposal, so I had a pretty good idea of what the final product should look like, so the planning was easy.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Once I started coding in earnest, implementing the helpers was simple enough. First came the &lt;span style=&quot;font-family: courier;&quot;&gt;&lt;b&gt;parse&lt;/b&gt;&lt;/span&gt; method, to read a bunch of room events and extract a relevant and simplified corpus out of them. Of course, I wrote tests for and documented all code I wrote.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Before tackling the next helper method, I took a short detour and refactored a couple of methods to generalize and improve performance.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;With that taken care of, I started working on the &lt;b&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;invert&lt;/span&gt;&lt;/b&gt; method, which was, thanks to Python, only about 5 lines long. Then came its tests, which took just slightly longer to complete.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Then I requested a review from my mentor @cvwright. With his review he helped me improve the parse method to prevent loss of significant &quot;mega&quot; tokens such as user mentions (@like:this.com) and room mentions (#this:is-a.room). The PR was merged shortly after that.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Next I quickly added a GitHub Actions workflow for CI to ensure the code is formatted properly and passing tests.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Once that was done, I worked on the &lt;b&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;calculate_parameters&lt;/span&gt;&lt;/b&gt; method, which simply determines the index and level parameters.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;</description><link>https://burgers-gsoc.blogspot.com/2022/06/week1.html</link><author>noreply@blogger.com (Aditya Rajput (BURG3R5))</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9204759972978204390.post-1436018047693717296</guid><pubDate>Mon, 06 Jun 2022 12:45:00 +0000</pubDate><atom:updated>2022-06-06T05:46:07.361-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">code</category><category domain="http://www.blogger.com/atom/ns#">knowledge</category><category domain="http://www.blogger.com/atom/ns#">project</category><title>Searching, Normally</title><description>&lt;p&gt;
  &lt;span style=&quot;font-family: helvetica;&quot;&gt;Before we can build a Symmetric Searchable Encryption scheme, we need to
    understand how searching works in a case where privacy isn&#39;t a
    concern.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h2 style=&quot;text-align: left;&quot;&gt;
  &lt;span style=&quot;font-family: helvetica;&quot;&gt;Indexing&lt;/span&gt;
&lt;/h2&gt;
&lt;p&gt;
  &lt;span style=&quot;font-family: helvetica;&quot;&gt;An index is, in our case, a mapping from a document id to that document&#39;s
    content. In the case of Matrix message events, the documents are
    non-redacted messages and their ids are the event ids.&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
  &lt;span style=&quot;font-family: helvetica;&quot;&gt;So to create an index, we first obtain a &lt;code&gt;list&lt;/code&gt; from the JSON
    file exported from a room.&lt;/span&gt;
&lt;/p&gt;
&lt;script src=&quot;https://gist.github.com/BURG3R5/b12e41b6339e195acdcaa389051d6be5.js&quot;&gt;&lt;/script&gt;
&lt;p&gt;
  &lt;span style=&quot;font-family: helvetica;&quot;&gt;Next, we iterate over the events and store the valid ones in a
    &lt;code&gt;dict&lt;/code&gt;.&lt;br /&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;script src=&quot;https://gist.github.com/BURG3R5/1c1acef11b352bcff570aba1e61eb721.js&quot;&gt;&lt;/script&gt;
&lt;p&gt;
  &lt;span style=&quot;font-family: helvetica;&quot;&gt;And we&#39;re done with indexing! If we wanted to, we could search by iterating
    over each document in &lt;code&gt;messages&lt;/code&gt; and looking for the query in
    that message. The time complexity for such a searching operation would be
    &lt;code&gt;O(&amp;lt;number of messages&amp;gt; &lt;/code&gt;&lt;/span&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;&lt;code&gt;&lt;span data-v-a1f8458a=&quot;&quot; data-v-fb910866=&quot;&quot;&gt;×&lt;/span&gt; &amp;lt;average length
      of message&amp;gt;)&lt;/code&gt;. That&#39;s &lt;i&gt;terrible&lt;/i&gt;.&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
  &lt;span style=&quot;font-family: helvetica;&quot;&gt;We can do much, &lt;i&gt;much&lt;/i&gt; better. How? Well, by—&lt;/span&gt;
&lt;/p&gt;
&lt;h2 style=&quot;text-align: left;&quot;&gt;
  &lt;span style=&quot;font-family: helvetica;&quot;&gt;Inverting&lt;/span&gt;
&lt;/h2&gt;
&lt;p&gt;
  &lt;span style=&quot;font-family: helvetica;&quot;&gt;A regular index consists of a mapping from document id to document content.
    An &lt;i&gt;inverted&lt;/i&gt; index consists of a mapping from a token to a list of
    document ids in which it was found.&lt;/span&gt;
&lt;/p&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;
  &lt;span style=&quot;font-family: helvetica;&quot;&gt;Tokens&lt;/span&gt;
&lt;/h3&gt;
&lt;p&gt;
  &lt;span style=&quot;font-family: helvetica;&quot;&gt;A token is an atomic part of a document&#39;s content that can be searched for.
    For English and similar languages, this is a regular word that carries
    meaning. To obtain tokens from a documents string, we do the
    following:&lt;/span&gt;
&lt;/p&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
  &lt;li&gt;
    &lt;span style=&quot;font-family: helvetica;&quot;&gt;
      Remove all punctuation from the string&lt;br /&gt;&lt;/span&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;span style=&quot;font-family: helvetica;&quot;&gt;Convert the string to lowercase&lt;/span&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;span style=&quot;font-family: helvetica;&quot;&gt;Split the string into a list of words&lt;/span&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;span style=&quot;font-family: helvetica;&quot;&gt;Remove any
      &lt;a href=&quot;https://en.wikipedia.org/wiki/Stop_word&quot; target=&quot;_blank&quot;&gt;stopwords&lt;/a&gt;
      from the list&lt;/span&gt;
  &lt;/li&gt;
&lt;/ul&gt;
&lt;script src=&quot;https://gist.github.com/BURG3R5/0b2c95e0e3f3afac43298547bc291dba.js&quot;&gt;&lt;/script&gt;
&lt;p&gt;
  &lt;span style=&quot;font-family: helvetica;&quot;&gt;Once we&#39;ve tokenized all the documents&#39; contents, we extract all the unique
    keywords from them.&lt;/span&gt;
&lt;/p&gt;
&lt;script src=&quot;https://gist.github.com/BURG3R5/5ff8003b608cd800915d959d147ebe13.js&quot;&gt;&lt;/script&gt;
&lt;p&gt;
  &lt;span style=&quot;font-family: helvetica;&quot;&gt;Armed with tokenized documents and a set of keywords, we can finally
    getting to inverting. The algorithm is simple: For each keyword, we find the
    list of documents containing that keyword and store their ids against the
    keyword itself.&lt;/span&gt;
&lt;/p&gt;
&lt;script src=&quot;https://gist.github.com/BURG3R5/8ca2bed351696717197debeb8b33d141.js&quot;&gt;&lt;/script&gt;
&lt;p&gt;
  &lt;span style=&quot;font-family: helvetica;&quot;&gt;Now what have we achieved? Well, the procedure to search over an &lt;i&gt;inverted&lt;/i&gt; index is to a simple key lookup in the index. For a hash table, this takes &lt;code&gt;O(1)&lt;/code&gt; time!&lt;/span&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Conclusion&lt;/span&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;By doing a few extra operations while setting up our index, we&#39;ve drastically reduced the time required for a search query to execute. But this system is not great for cases where privacy is valued. More on that in the next post about Leakages.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;&lt;span&gt;Further&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;If, instead of just storing the document ids, we store the document ids &lt;i&gt;and&lt;/i&gt; the position where the keyword occurs, we can extend this system to &lt;i&gt;phrase search&lt;/i&gt;. By looking for documents where two keywords occur in close proximity, we can let user search for phrases. However, I will not go into details because phrase search via proximity is even &lt;i&gt;less&lt;/i&gt; privacy-friendly, and the SSE scheme that will be implemented in this project will &lt;i&gt;not&lt;/i&gt; be using that.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Ciao for now!&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;&lt;/span&gt;
</description><link>https://burgers-gsoc.blogspot.com/2022/06/searching-normally.html</link><author>noreply@blogger.com (Aditya Rajput (BURG3R5))</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-9204759972978204390.post-6360984259319433752</guid><pubDate>Fri, 03 Jun 2022 19:30:00 +0000</pubDate><atom:updated>2022-06-04T09:08:17.651-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">project</category><title>Introduction</title><description>&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Hey there!&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;I&#39;m Aditya Rajput, known in some circles as &lt;a href=&quot;http://github.com/BURG3R5&quot; target=&quot;_blank&quot;&gt;BURG3R5&lt;/a&gt; and in others as &lt;a href=&quot;http://matrix.to/#/@burgers:matrix.org&quot; target=&quot;_blank&quot;&gt;@burgers:matrix.org&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;(My favorite food is pizza; the nickname is ironic.)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;This summer I&#39;m gonna be implementing &lt;a href=&quot;http://summerofcode.withgoogle.com/programs/2022/projects/xjCmlvMW&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;encrypted search in Matrix&lt;/a&gt;, a project under the Matrix.org organization for the Google Summer of Code program. I&#39;ll be mentored by Charles Wright (aka &lt;a href=&quot;http://github.com/cvwright&quot; target=&quot;_blank&quot;&gt;cvwright&lt;/a&gt;).&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;If you want to keep up with this project, you can join the public Matrix room &lt;a href=&quot;http://matrix.to/#/#encrypted-search:matrix.org&quot; target=&quot;_blank&quot;&gt;#encrypted-search:matrix.org&lt;/a&gt;. You can also subscribe to &lt;a href=&quot;http://feeds.feedburner.com/burg3r5-gsoc&quot; target=&quot;_blank&quot;&gt;this blog&#39;s RSS feed&lt;/a&gt;.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;!--more--&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;About Me&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;I&#39;m a sophomore currently enrolled in a B.Tech. program at the Indian Institute of Technology at Roorkee, India. My love for computer science began when I was 14 years old and laid eyes on the Python docs on my family PC. I was fascinated by the idea of a perfect machine that worked according to a well-defined set of rules. From there, my love for programming grew exponentially as I learned about Java, C++, Flutter, Node.js, cryptography, reversing and so on.&lt;/span&gt;&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Skills&lt;/span&gt;&lt;/h3&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Languages/Frameworks:&lt;/span&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Dart: Flutter&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Python: Django, Flask, numpy, pandas, scikit-learn&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;JavaScript/TypeScript: Node.js, Express.js, ReactJS&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Java/Kotlin: Android Native&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Tools: Linux-Bash scripting, Docker, Sentry, Heroku, Firebase, MongoDB, Vim.&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;!--more--&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;About The Project&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;In this project I will implement, in particular, the keyword search scheme 
outlined in a &lt;i&gt;Demertzis et al.&lt;/i&gt; paper titled “&lt;a href=&quot;http://idemertzis.com/Papers/sigmod17.pdf&quot; target=&quot;_blank&quot;&gt;Fast Searchable Encryption with Tunable Locality&lt;/a&gt;”. I will achieve this by creating a Python library
 that exposes methods to create, update and search on encrypted indices 
stored in content repositories in a Matrix homeserver.
 
As a part of the project, I will be demonstratively integrating the 
library into an existing Matrix client. Additionally, I will submit 
results of preliminary performance evaluation.&lt;/span&gt;&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Goals&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;In this project I intend to:&lt;/span&gt;&lt;/p&gt;&lt;ol style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Implement the keyword search SSE scheme outlined in the aforementioned &lt;i&gt;Demertzis et al.&lt;/i&gt; paper.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Create encrypted indices of a few public Matrix rooms.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Implement an updation procedure for the above SSE i.e. provide a way to add new messages/documents to the encrypted index.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Integrate the project into a suitable client.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Perform performance evaluation of the created library.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Deliverables&lt;/span&gt;&lt;/h3&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;A Python library that exposes methods to create, update and search on encrypted&lt;/span&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt; indices.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Demonstrative integration into a suitable Matrix client.&lt;/span&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Complete documentation (comments and website) for the library and example codes.&lt;/span&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Preliminary performance analysis results.&lt;/span&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Weekly blogs on project progress.&lt;/span&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;GSoC end project report.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;Pre-GSoC Code&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;In order to understand the paper and the project idea in the best way possible, I implemented a sort of MVP of this project before writing my proposal for this project. It helped me gain much insight into the project idea and also helped me set milestones. The code is available &lt;a href=&quot;http://github.com/BURG3R5/sse-experiments&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;. Included are tests, in which both keyword and phrase search are run over 500 messages exported from the official GSoC Matrix room (&lt;a href=&quot;http://matrix.to/#/#gsoc:matrix.org&quot; target=&quot;_blank&quot;&gt;#gsoc:matrix.org&lt;/a&gt;).&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;!--more--&gt;&lt;p&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;About This Blog&lt;br /&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;On this blog I&#39;ll posting weekly updates about my progress with the project. I&#39;ll also be posting about interesting technical stuff I come across during my journey, whether it may be neat tricks or ugly bugs. I hope you&#39;ll accompany me on this journey.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;!--more--&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;See you next time!&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;p&gt;&lt;span style=&quot;font-family: helvetica;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;</description><link>https://burgers-gsoc.blogspot.com/2022/06/introduction.html</link><author>noreply@blogger.com (Aditya Rajput (BURG3R5))</author><thr:total>0</thr:total></item></channel></rss>