<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Furkan KAMACI on Medium]]></title>
        <description><![CDATA[Stories by Furkan KAMACI on Medium]]></description>
        <link>https://medium.com/@furkankamaci?source=rss-d9d1705b0f76------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/2*fyjZSY7EA4itzvi_TSkI2Q.png</url>
            <title>Stories by Furkan KAMACI on Medium</title>
            <link>https://medium.com/@furkankamaci?source=rss-d9d1705b0f76------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Mon, 01 Jun 2026 01:18:51 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@furkankamaci/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[Unlocking the Secrets of Cryptography: A Beginner’s Guide to Breaking Ciphers — Part 3]]></title>
            <link>https://furkankamaci.medium.com/unlocking-the-secrets-of-cryptography-a-beginners-guide-to-breaking-ciphers-part-3-8e93996162db?source=rss-d9d1705b0f76------2</link>
            <guid isPermaLink="false">https://medium.com/p/8e93996162db</guid>
            <category><![CDATA[machine-learning]]></category>
            <category><![CDATA[python]]></category>
            <category><![CDATA[hacking]]></category>
            <category><![CDATA[cybersecurity]]></category>
            <category><![CDATA[cryptography]]></category>
            <dc:creator><![CDATA[Furkan KAMACI]]></dc:creator>
            <pubDate>Mon, 08 May 2023 11:46:38 GMT</pubDate>
            <atom:updated>2023-05-08T11:46:38.683Z</atom:updated>
            <content:encoded><![CDATA[<h3>Unlocking the Secrets of Cryptography: A Beginner’s Guide to Breaking Ciphers — Part 3</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*zYudC7Wd7yLfa0HW" /><figcaption>Photo by <a href="https://unsplash.com/@spacex?utm_source=medium&amp;utm_medium=referral">SpaceX</a> on <a href="https://unsplash.com?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><p>This is the third post and last part of my breaking ciphers series. If you haven’t read the previous one, you can find it here:</p><p><a href="https://furkankamaci.medium.com/unlocking-the-secrets-of-cryptography-a-beginners-guide-to-breaking-ciphers-part-2-a4ab2996e522">https://furkankamaci.medium.com/unlocking-the-secrets-of-cryptography-a-beginners-guide-to-breaking-ciphers-part-2-a4ab2996e522</a></p><p>In my previous post, I showed how to break Product Cipher Composed of the same ciphers. In this post, I will make the cipher much more complicated and try to break it again.</p><p>I will use the same ciphertext for this post:</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/521475316a38a7e1a824557c2cf1a507/href">https://medium.com/media/521475316a38a7e1a824557c2cf1a507/href</a></iframe><h4>Cryptanalysis of Combination of Porta Cipher and Permutation Cipher</h4><p>As I have demonstrated, the Product cipher of Porta Ciphers results in an <em>idempotent system</em>. As <em>Shannon</em> proposed, taking the product of substitution-type ciphers with permutation-type ciphers is a commonly used technique to fix that issue.</p><p>We have <strong>m!</strong> probabilities to find out the original key for the permutation cipher. However, in total, we have <em>13^key length ∗ m!</em> of key space for a combination of Porta Cipher and Permutation Cipher, and this combination is not idempotent anymore.</p><p>To investigate it, I created a permutation cipher using that permutation key:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/307/1*tfvGFtgIQevqinPZzOHxNQ.png" /></figure><p>At this point, you may wonder that what is a Permutation Cipher. A <em>Permutation Cipher</em> is a type of encryption technique that involves rearranging the order of characters or blocks of text in the plaintext message to produce the ciphertext.</p><p>In a Permutation Cipher, each character or block of characters in the plaintext is assigned a unique position or index, and then the positions are shuffled or permuted according to a specific key. The resulting permutation is used to encrypt the plaintext message, resulting in a ciphertext that appears jumbled and unintelligible without knowledge of the key.</p><p>Here is how it works for my permutation key: divide the plaintext into 6-length chunks. Put 0th character into 3rd place, 1st character into 2nd place, so on so forth.</p><p>The resulting character frequency output of the permutation cipher is:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/758/1*ASlRXgyByBveuzdAJp1Egg.png" /><figcaption>Character frequency of permutation ciphertext</figcaption></figure><p>As expected, we can observe that the character frequency remains unchanged when using the permutation cipher compared to using only the Porta Cipher.</p><p>The Porta Cipher repeats a secret to cipher a text, regardless of the plaintext length. However, when the text size is not a multiple of the permutation key, we should find a solution for the permutation cipher. Padding is one solution, but in our case, since we have long text, we can remove the last <em>2</em> characters to align with the permutation key length. We can then use this modified text as the input for the permutation cipher.</p><p>For the permutation cipher operations, I created the following class:</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/a79b3b0d887c104b7d7ec222afdbf3a8/href">https://medium.com/media/a79b3b0d887c104b7d7ec222afdbf3a8/href</a></iframe><p>For a key length of <em>6</em>, we can find the original key by trying:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/122/1*AOD-Y_GtIK05Q_XtQrwwrQ.png" /></figure><p>possibilities.</p><p>When I try it with below code, I could easily find the permutation key:</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/e5e904f408da0be2f251bcb93f806242/href">https://medium.com/media/e5e904f408da0be2f251bcb93f806242/href</a></iframe><p>I found the permutation key in epoch <em>412</em>. However, since this is an exhaustive search, the number of epochs may vary depending on the key, and we still need to try <em>m!</em> possibilities.</p><p>We can find a solution if we use a better search approach. Therefore, I decided to use a metaheuristic optimization algorithm to overcome this issue. There are some alternative for metaheuristic optimization algorithms. Hill Climbing and Genetic Algorithms are one of the most used ones.</p><p><em>Hill Climbing</em> is a simple and efficient algorithm that can converge quickly to a local optimum, especially in small search spaces. However, it can get stuck in a local optimum and fail to find the global optimum, and it may not be effective in large or complex search spaces.</p><p>On the other hand, <em>Genetic Algorithms</em> are more robust and versatile than Hill Climbing. They can explore large search spaces efficiently and can potentially find global optima. However, they require more computational resources than Hill Climbing, and Genetic Algorithms can be slower in converging to a solution.</p><p>As I mentioned, our key space is <em>13^key length ∗ m!</em> Since the key length is <em>6</em>, we should try:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/302/1*HvNulj_H_a_UuVrCRHdjBA.png" /></figure><p>possibilities, which is large enough. Hence, I implemented a Genetic Algorithm as my metaheuristic optimization algorithm.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/702/1*QLytK2vI3L9lICeiJoj0tw.png" /><figcaption>Genetic Algorithm flow</figcaption></figure><p>The product cipher is a combination of two distinct ciphers, namely, the Porta Cipher and the Permutation Cipher. Although the Porta Cipher has a larger key space than the permutation cipher, it is still susceptible to frequency analysis. Conversely, the permutation cipher has a smaller key space, but it is resistant to frequency analysis. Therefore, what if we assume that the output of the product cipher is not an output of a permutation cipher and try to break it? This approach can potentially reveal a shuffled key as the result, which we can then attempt to crack to determine the correct shuffle order. As a result, we can break that product cipher not within a <em>13^key length ∗ m!</em> key search space, but <em>13^key length + m!</em>.</p><p>Below are the results of the Chi-squared Statistics when directly applying each key element trans- formation to each cluster of permutation cipher output:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*9J2PHd9aj4xq0FZwrqSehA.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*JM-jKQBzTWJpor_TiWt6Lg.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*J6OxvIwhtA7jBlLyOVPo9A.png" /></figure><p>So, the candidate key is all of the combinations of these letters:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/884/1*1zFbFqWpNJq9xFybkL8KwQ.png" /></figure><p>One of the candidate key is:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/144/1*vpPCLQtZnETMi3IJYKvbcQ.png" /></figure><p>This is exactly a shuffled version of the original key. However, I didn’t use that information since I assumed that I don’t know how to crack the intermediate cipher, Porta Cipher.</p><p>I implemented a Genetic Algorithm as I mentioned. I created a weighted trigram approach as the fitness function. Here is the code I implemented:</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/487b772a047988342b14d8974f6b158b/href">https://medium.com/media/487b772a047988342b14d8974f6b158b/href</a></iframe><p>With only <em>60</em> evaluations, I was able to discover the solution, which is significantly fewer than the <em>m! = 720</em> possibilities that would have been required. This solution would also address the issue in the event of a lengthier key:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/804/1*6HDPX-Ix-5PNRKX0Z-_9Mg.png" /><figcaption>Decryption of product cipher with Genetic Algorithm</figcaption></figure><p>Here is the key that I found, which is the same as the original one:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/298/1*NrISD7b2PIIMIkPZ40uSLg.png" /></figure><p>The proposed method searches on a space of <em>13^key length+m!</em> instead of <em>13^key length∗m!</em>. Furthermore, as previously mentioned, by independently processing the elements of the key, we process <em>13 ∗ key_length</em> candidates for the Porta Cipher. Therefore, we are able to consider <em>13 ∗ key length + m!</em> possibilities. Moreover, the <em>m!</em> part of the Permutation Cipher can be reduced using the Genetic Algorithm as demonstrated. Effect of narrowing the key search space is demonstrated below (without adding the leverage of the Genetic Algorithm):</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/789/1*RmOIYROGHJvaqjC2NOwd_w.png" /><figcaption>Improvement of key search space with proposed approach</figcaption></figure><p>As I demonstrated, the proposed method exposes both keys of the Porta Cipher and Permutation Cipher.</p><h4>Conclusion</h4><p>I hope you enjoyed this series.</p><p>Don’t forget to follow me on Twitter: <a href="https://twitter.com/kamaci_furkan">https://twitter.com/kamaci_furkan</a></p><p>Stay tuned!</p><h4>References</h4><p>[1] David Kahn. The Codebreakers: The Comprehensive History of Secret Communication from Ancient Times to the Internet. Scribner, 1996, p. 139. isbn: 9780684831305.</p><p>[2] Keith M. Martin. Everyday Cryptography. Oxford University Press, 2012, p. 142. isbn: 9780191625886.</p><p>[3] Berna Örs Yalçın. Lecture notes in Cryptography. Apr. 2023.</p><p>[4] William F Friedman. The index of coincidence and its applications in cryptography. Riverbank Laboratories. Department of Ciphers. Publ. OCLC, 1922.</p><p>[5] Practical Cryptography. Chi-squared Statistic. url: <a href="http://practicalcryptography.com/cryptanalysis/%20text-characterisation/chi-squared-statistic/">http://practicalcryptography.com/cryptanalysis/ text-characterisation/chi-squared-statistic/</a>. (Accessed: 03.04.2023).</p><p>[6] Douglas R. Stinson and Maura B. Paterson. Cryptography: Theory and Practice. 4th. Boca Raton, FL: CRC Press, 2019, pp. 75–78. isbn: 9781138197015.</p><p>[7] Vittorio et. al Maniezzo. Matheuristics, Algorithms and Implementations. Springer International Pub- lishing, 2021.</p><p>[8] Bill Waggener. Pulse Code Modulation Techniques. Springer, 1995, p. 206. isbn: 9780442014360.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=8e93996162db" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Unlocking the Secrets of Cryptography: A Beginner’s Guide to Breaking Ciphers — Part 2]]></title>
            <link>https://furkankamaci.medium.com/unlocking-the-secrets-of-cryptography-a-beginners-guide-to-breaking-ciphers-part-2-a4ab2996e522?source=rss-d9d1705b0f76------2</link>
            <guid isPermaLink="false">https://medium.com/p/a4ab2996e522</guid>
            <category><![CDATA[algorithms]]></category>
            <category><![CDATA[cryptography]]></category>
            <category><![CDATA[security]]></category>
            <category><![CDATA[python]]></category>
            <category><![CDATA[hacking]]></category>
            <dc:creator><![CDATA[Furkan KAMACI]]></dc:creator>
            <pubDate>Fri, 05 May 2023 18:40:52 GMT</pubDate>
            <atom:updated>2023-05-05T18:40:52.173Z</atom:updated>
            <content:encoded><![CDATA[<h3>Unlocking the Secrets of Cryptography: A Beginner’s Guide to Breaking Ciphers — Part 2</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*bfW1OB5cIPnNStZZ" /><figcaption>Photo by <a href="https://unsplash.com/@tomrdesigns?utm_source=medium&amp;utm_medium=referral">Tom Roberts</a> on <a href="https://unsplash.com?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><p>This is the second post in my breaking ciphers series. If you haven’t read the previous one, you can find it here:</p><p><a href="https://furkankamaci.medium.com/unlocking-the-secrets-of-cryptography-a-beginners-guide-to-breaking-ciphers-part-1-67d79c470127">https://furkankamaci.medium.com/unlocking-the-secrets-of-cryptography-a-beginners-guide-to-breaking-ciphers-part-1-67d79c470127</a></p><p>In my previous post, I showed how to apply frequency analysis and break a cipher. In this post, I will make the cipher more complicated and try to break it again.</p><p>I will use the same ciphertext for this post:</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/521475316a38a7e1a824557c2cf1a507/href">https://medium.com/media/521475316a38a7e1a824557c2cf1a507/href</a></iframe><h4>Cryptanalysis of Product Cipher Composed of Porta Ciphers</h4><p>As I defined previously, creating substrings and measuring their closeness to English letter characteristics after applying transformations allows us to gain insight and figure out key elements.</p><p>How about applying a Porta Cipher into the output of another Porta Cipher? Will it increase the security?</p><p>If both Porta Ciphers of that product cipher have the same key lengths, we can smoothly apply the previous approach because encrypting a letter with one key and then encrypting it again with another key is akin to using a different type of tableau. Here is an example:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/865/1*_rHNVV27FNWud2G0WJKB1w.png" /><figcaption>Porta Cipher with single key</figcaption></figure><p>When we use that ciphertext as an input of a Porta Cipher, we will get the plain text as expected:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/865/1*t9q7bOlW28Y7oBlsNGEVRg.png" /><figcaption>Reusing same key for Porta Cipher</figcaption></figure><p>So, to create a noteworthy product cipher, we should choose a different key than the original one.</p><p>As an example:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/865/1*pjSRVeIpf4sNMGdvGjLdsQ.png" /><figcaption>Applying a different key for Porta Cipher</figcaption></figure><p>Even though we used different keys and created a ciphertext from a ciphertext, it is similar to using only one Porta Cipher. We can demonstrate the above product cipher as:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/301/1*vHAL_PCuhue3xQRYtiLEWA.png" /></figure><p>One may assume that obtaining <em>Q</em> and then <em>K</em> is equivalent to directly acquiring <em>K</em> upon initial observation. However, the reality differs from this assumption.</p><p>The character frequency of the second cipher’s ciphertext, obtained through the product cipher using <em>MUDFOG</em> as the key for the second cipher, is presented below.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/797/1*U6tCMiM7omBweCfTr58egg.png" /><figcaption>Character frequency of multiple Porta Ciphers</figcaption></figure><p>Upon calculating the IoC for the ciphertext, we obtain the following result:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/797/1*Er0dGmg24E3JylJ_D9B2NQ.png" /><figcaption>IoC values for random key length of multiple Porta Ciphers</figcaption></figure><p>The initial hypothesis of obtaining <em>Q</em> and then <em>K</em> is equivalent to directly acquiring <em>K</em> holds true since the key length of <em>6</em> and the resulting output is identical to using only the first cipher. However, this initial judgment is not definitive since, as previously noted, the <em>Porta Cipher</em> is <strong>reciprocal</strong> such that <strong>[A-M]</strong> is mapped to <strong>[N-Z]</strong> and vice versa. Therefore, there is no direct correspondence between the composition of two Porta Ciphers and the original plaintext.</p><p>To resolve the issue of <em>non-idempotency</em>, I offered a solution to encrypt the output of the second Porta Cipher with another Porta Cipher of key length <em>6</em>. Upon analyzing the resulting ciphertext, I obtained the following frequency distribution:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/797/1*Nvrct6fVO5wMHjSGCNl6HA.png" /><figcaption>Character frequency of triple Porta Ciphers</figcaption></figure><p>The IoC values yield the following results:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/818/1*oQB8GGEyu1onFfbNFTLu7A.png" /><figcaption>IoC values for random key length of triple Porta Ciphers</figcaption></figure><p>We observe that the key length is congruent, prompting an attempt to treat the cipher text as a non-product cipher and decipher it accordingly. Furthermore, we got the reciprocal versions of characters compared to using two Porta Ciphers. Below are the results of the Chi-squared Statistics when applying each key element transformation to each cluster:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*bm9lBvcROWMA83fWiBlt7g.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*1T7-pjbZHazQ9tMK7zOHug.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*7pe_eawllYKY1LIOcNFivQ.png" /></figure><p>So, the candidate key is all of the combinations of these letters:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/953/1*PG2myf6-56HMWwR53BL8EA.png" /></figure><p>I tried that as a candidate key:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/171/1*ONiDvw6eSqjllcTDWxPpAg.png" /></figure><p>Therefore, this triple encryption has become idempotent, and it is evident that iterating it does not enhance its security. In summary, we have the following:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/939/1*o6U01s5Rze481b5NSbGu3g.png" /></figure><p>Regardless, it is equivalent to that:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/261/1*9ehSiFDjnGgT2BlulgPhoA.png" /></figure><p>So, the key space remains <em>13^key length</em>.</p><p>On the other hand, a question may arise regarding the case of having different key lengths. However, we should comprehend that having a key with a length of <em>6</em> is equivalent to having a key with a length of <em>12</em>, achieved by repeating the original key once more. Therefore, if we have a sufficiently long ciphertext, we can aim for the least common multiple of the key lengths and attempt to break it accordingly as a solution.</p><p>Overall, we applied Porta Cipher twice but security did not increase. That is called as <em>non-idempotency</em> and mentioned by <em>Shannon</em>. He proposed using the product of substitution-type ciphers with permutation-type ciphers to fix that issue.</p><h4>What is Next?</h4><p>In the next post, I will try to break a combination of Porta Cipher and Permutation Cipher.</p><p>Don’t forget to follow me on Twitter: <a href="https://twitter.com/kamaci_furkan">https://twitter.com/kamaci_furkan</a></p><p>Stay tuned!</p><h4>References</h4><p>[1] David Kahn. The Codebreakers: The Comprehensive History of Secret Communication from Ancient Times to the Internet. Scribner, 1996, p. 139. isbn: 9780684831305.</p><p>[2] Keith M. Martin. Everyday Cryptography. Oxford University Press, 2012, p. 142. isbn: 9780191625886.</p><p>[3] Berna Örs Yalçın. Lecture notes in Cryptography. Apr. 2023.</p><p>[4] William F Friedman. The index of coincidence and its applications in cryptography. Riverbank Laboratories. Department of Ciphers. Publ. OCLC, 1922.</p><p>[5] Practical Cryptography. Chi-squared Statistic. url: <a href="http://practicalcryptography.com/cryptanalysis/%20text-characterisation/chi-squared-statistic/">http://practicalcryptography.com/cryptanalysis/ text-characterisation/chi-squared-statistic/</a>. (Accessed: 03.04.2023).</p><p>[6] Douglas R. Stinson and Maura B. Paterson. Cryptography: Theory and Practice. 4th. Boca Raton, FL: CRC Press, 2019, pp. 75–78. isbn: 9781138197015.</p><p>[7] Vittorio et. al Maniezzo. Matheuristics, Algorithms and Implementations. Springer International Pub- lishing, 2021.</p><p>[8] Bill Waggener. Pulse Code Modulation Techniques. Springer, 1995, p. 206. isbn: 9780442014360.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=a4ab2996e522" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Unlocking the Secrets of Cryptography: A Beginner’s Guide to Breaking Ciphers — Part 1]]></title>
            <link>https://furkankamaci.medium.com/unlocking-the-secrets-of-cryptography-a-beginners-guide-to-breaking-ciphers-part-1-67d79c470127?source=rss-d9d1705b0f76------2</link>
            <guid isPermaLink="false">https://medium.com/p/67d79c470127</guid>
            <category><![CDATA[hacking]]></category>
            <category><![CDATA[cryptology]]></category>
            <category><![CDATA[security]]></category>
            <category><![CDATA[cipher]]></category>
            <category><![CDATA[cryptanalysis]]></category>
            <dc:creator><![CDATA[Furkan KAMACI]]></dc:creator>
            <pubDate>Tue, 02 May 2023 14:21:42 GMT</pubDate>
            <atom:updated>2023-05-02T14:21:42.909Z</atom:updated>
            <content:encoded><![CDATA[<h3>Unlocking the Secrets of Cryptography: A Beginner’s Guide to Breaking Ciphers — Part 1</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*jgWqws6Zg5nllzel" /><figcaption>Photo by <a href="https://unsplash.com/@maurosbicego?utm_source=medium&amp;utm_medium=referral">Mauro Sbicego</a> on <a href="https://unsplash.com?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><h4>Historical Background</h4><p>Cryptography has a long and fascinating history, dating back to ancient civilizations. The use of codes and ciphers allowed people to send messages that could not be understood by anyone who intercepted them.</p><p>One of the earliest known examples of cryptography comes from ancient Egypt, where hieroglyphs were often written in a code that only priests and scribes could understand. In ancient Greece, the famous Scytale was used as a cryptographic tool by Spartan military leaders to send secret messages during wartime.</p><p>During the Middle Ages, European monasteries were centers of learning and cryptography. Monks used simple ciphers and codes to protect their books and manuscripts from theft or unauthorized access. However, cryptography became much more sophisticated during the Renaissance, as new mathematical techniques were developed.</p><p>In the 20th century, the use of cryptography became increasingly important for government and military communication. During World War II, both the Allies and the Axis powers used sophisticated codes and ciphers to communicate securely. The most famous of these was the German Enigma machine, which was used to encrypt military messages and was famously broken by Alan Turing and his team at Bletchley Park.</p><p>In the modern era, cryptography has become an essential tool for protecting digital information, such as online transactions and confidential communications. Cryptography techniques are used in a wide variety of applications, from secure email to banking and e-commerce, and the field continues to evolve as new threats emerge and new encryption methods are developed.</p><h4>Fundamental Definitions</h4><p><strong>Steganography: </strong>Originates from the Greek words “<em>steganos</em>” meaning “<em>covered</em>” and “<em>graphein</em>” meaning “<em>to write</em>”, is the practice of concealing the existence of a message as a means of achieving covert communication.</p><p><strong>Cryptography</strong>: The term was coined from the Greek word “<em>kryptos</em>” meaning “<em>hidden</em>”. Its main objective is not to conceal the presence of a message, but rather to conceal its content through encryption.</p><p><strong>Cryptanalysis: </strong>Refers to the process of deciphering ciphertext to plaintext without having complete knowledge of the encryption method used.</p><p><strong>Cryptology</strong>: Cryptography + Cryptanalysis</p><p><strong>Cryptosystem</strong>: A set of algorithms and protocols that are used to perform encryption and decryption of data, ensuring that the information remains secure and confidential during transmission and storage.</p><h4>Example of a Basic Cipher: Shift Cipher</h4><p>After explaining historical background and presenting fundamental definitions, let’s give some examples from classical era of cryptography. My first example will be <em>Shift Cipher</em>. A shift cipher is a simple form of encryption in which each letter in a message is replaced by another letter that is a fixed number of positions down the alphabet. For example, if the shift value is 3, then the letter ‘A’ would be replaced by the letter ‘D’, ‘B’ would become ‘E’, ‘C’ would become ‘F’, and so on. The shift value is also known as the key, and if it is kept secret, the message is considered encrypted. The shift cipher is one of the earliest and simplest methods of encryption and can be easily broken with a brute-force attack if the shift value is known. This method is named after <a href="https://en.wikipedia.org/wiki/Julius_Caesar">Julius Caesar</a>, who used it in his private correspondence.</p><p>Shift cipher is a <em>substitution cipher</em>, in particular it is a <em>mono-alphabetic substitution cipher</em> since a character is replaced with only other character. Our key space for shift cipher is <strong>26! </strong>in English due to first letter can be replaced with 26 candidate characters, second one 25, so on so forth. Nowadays, it is easy to break such a cipher, but Caesar used it before the computer era for a long time. Here is my code to apply encrypt, decrypt and <em>exhaustive search</em> for a Shift Cipher:</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/5a46afac349b3f0b52ba4685f5b2183e/href">https://medium.com/media/5a46afac349b3f0b52ba4685f5b2183e/href</a></iframe><p>Such ciphers are vulnerable to <em>frequency attacks</em> and I will explain it later with an example.</p><p>Can we improve this cipher? What if we encode a character with different characters regarding to a certain rule? <em>Vigenère Cipher</em> is a good example for it. The Vigenère Cipher is a <em>poly-alphabetic substitution cipher</em> that was invented by Blaise de Vigenère in the 16th century. It is a method of encrypting alphabetic text by using a series of interwoven Caesar ciphers, based on the letters of a keyword.</p><p>The Vigenère cipher works by using a keyword or key phrase that is repeated over and over again to generate a series of Caesar ciphers. Each letter of the keyword corresponds to a Caesar shift value, and the plaintext message is shifted by the corresponding shift value for each letter of the keyword. The result is a ciphertext message that is much more difficult to break than a simple Caesar cipher.</p><h4>Cryptanalysis Time!</h4><p>Another example for a poly-alphabetic cipher is <em>Porta Cipher</em>. Giovanni Battista Della Porta invented the Porta Cipher, a poly-alphabetic substitution cipher that utilizes 13 alphabets, in contrast to the Vigenere Cipher, which uses 26 alphabets. Due to its <em>reciprocal</em> nature, the cipher alphabets used in Porta Cipher enable the encryption and decryption processes to be the same.</p><p>The Porta Cipher employs the following tableau to encrypt a plaintext:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*y47zI12J2S8V-DGZSji_QQ.png" /><figcaption>Porta tableau</figcaption></figure><p>To use the Porta Cipher to a encrypt text, we should follow these steps:</p><ul><li>Choose a keyword</li><li>Repeat the keyword above the plaintext message</li><li>Find the corresponding value for each letter of the keyword and the plain text letter in the tableau</li><li>Use these values to generate the ciphertext</li></ul><p>Below is an example of encrypting a text using <em>secret</em> as the keyword:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/909/1*v_gXkKki6rbCAfO5rMMkww.png" /><figcaption>Porta Cipher example</figcaption></figure><p>Since we use a tableau of <em>13</em> rows, key space of Porta Cipher is <em>13^key_length</em>.</p><p>Here is the encrypted text I used for this analysis:</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/521475316a38a7e1a824557c2cf1a507/href">https://medium.com/media/521475316a38a7e1a824557c2cf1a507/href</a></iframe><p>In order to analyze the complete process, I have implemented a statistics collector class that can be used in future processes. The code for this class is shown below:</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/f7c95de5db194fb998580707f99f9e0f/href">https://medium.com/media/f7c95de5db194fb998580707f99f9e0f/href</a></iframe><p>First of all, given plain text was long enough and we can understand it from its frequency analysis since it is too close to the original English letter frequencies. Letter probabilities sorted by descending in the English language are as follows (it is different at different resources):</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/324/1*QNK3HkzyTGENLS0TOlgpgw.png" /><figcaption>English letter probabilities</figcaption></figure><p>When we run a frequency analysis on the plaintext, we notice that:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/785/1*XoyHvBvY_zbnGH58Ka9-Cw.png" /><figcaption>Character frequency of plaintext</figcaption></figure><p>Plaintext has <strong>13874</strong> characters, <strong>26</strong> unique characters, and character distribution is too close to the original English letter probabilities. I used only ciphertext to find the key of the Porta Cipher, and as an initial step, I applied a frequency analysis on the ciphertext. Here is the output:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/785/1*545jk3-rfBRj_306RDj29Q.png" /><figcaption>Character frequency of ciphertext</figcaption></figure><p>Ciphertext has <strong>13874</strong> characters and <strong>26</strong> unique characters like plain text. However, as shown, letter frequencies are near evenly distributed. So, this information helps us to understand this ciphertext not generated by a mono-alphabetic substitution cipher. As mentioned, Porta Cipher is a poly-alphabetic substitution cipher that correlates with that finding.</p><p>I tried to find the key length to break the Porta Cipher. I used the <em>Index of Coincidence (IoC)</em> method for that purpose (another alternative is using <em>Kasiski Test</em>). The Index of Coincidence (IoC) is a statistical measure of how similar a frequency distribution is to a uniform distribution.</p><p>The IoC is calculated simply by taking the sum of the frequencies of each letter in the ciphertext squared, divided by the total number of letters in the ciphertext:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/209/1*l7JLIXyGSBGNs_p03dXqVw.png" /></figure><p>where <em>fi</em> is the frequency of the <em>i-th</em> letter in the ciphertext, and <em>n</em> is the total number of letters in the ciphertext.</p><p>Using probabilities, we can calculate that English letters have an approximate IoC value of <strong>0.065</strong>. On the other hand, a random text will have a value IoC value of <strong>0.038</strong>.</p><p>The length of the key is crucial in a poly-alphabetic substitution cipher. In such ciphers, a letter can be encrypted with a different character, but after the length of the key, the same character will be encrypted to the same character with a period equal to the length of the key.</p><p>To determine the key length, I began with a random key length and created substring clusters of that length. I filled the clusters with elements that have a gap of the key length between them.</p><p>Creating substrings according to the key length will not directly solve our problem. However, it will have characteristics of a mono-alphabetic substitution cipher and should have a similar IoC value to English letters. So, I divided ciphertext into different substrings (buckets) and compared their IoC concerning being close to <em>0.065</em>. Here is the complete class I created to calculate IoC:</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/267a2bedb1300d70e140cfbc12bf284c/href">https://medium.com/media/267a2bedb1300d70e140cfbc12bf284c/href</a></iframe><p>Below is the output of IoC values corresponding random key lengths:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/795/1*tp9OQcu2JER9dUFa6QoIXQ.png" /><figcaption>IoC values for random key length</figcaption></figure><p>It reveals that the key lengths of <em>6</em> and <em>12</em> are in close proximity to the desired IoC values.</p><p>If the key length is <em>6</em>, we can consider its multiples as possible key candidates since a <em>12-length</em> key can be generated by repeating a <em>6-length</em> key twice. Alternatively, we could test <em>12</em> since it may be the original key length. After analyzing these options, I initially accepted 6 as the key length and proceeded with it.</p><p>As the next step, I created substrings with a key length of <em>6</em>. Below figure demonstrates my approach for the first <em>7</em> letters of the given ciphertext:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/926/1*iyhbUSyr7vGvlW4KTT4qDg.png" /><figcaption>Creating substrings of key period</figcaption></figure><p>For each cluster of letters, I tried <em>13</em> transformations defined in the Porta tableau. However, the result of performing that transformations will not be meaningful since we have a scattered version of the candidate plaintext. One solution to understand whether we found a potential solution at one of the transformations is to measure the cluster statistics with English letter statistics. For that purpose, I applied the <em>Chi-squared Statistic</em>. The Chi-squared Statistic quantifies the dissimilarity between two categorical probability distributions. If the two distributions are the same, the Chi-squared Statistic will be <em>0</em>, whereas if the distributions are substantially different, the statistic will be larger.</p><p>The formula for the Chi-squared Statistic is:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/333/1*qHdbwVw7R9kW2r60z4gi5A.png" /></figure><p>where <em>C_i</em> is the count of letter i, and <em>E_i</em> is the expected count of letter i. To calculate the expected count of a given letter, I multiplied the total number of letters with letter probability defined at English letter probabilities table.</p><p>Below is the code I implemented to calculate the Chi-squared Statistics of each cluster:</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/a87bdbbf1f8505ec13d966ba69d23273/href">https://medium.com/media/a87bdbbf1f8505ec13d966ba69d23273/href</a></iframe><p>The results of the Chi-squared Statistics for applying each key element transformation to each cluster are shown below:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*PGJw8tQDpKGwiSQIJZnblQ.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*63wIOrTh6739X0BdUa9LvA.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*C3vnd1EopMMKMyn5tQflZg.png" /></figure><p>So, the candidate key is all of the combinations of these letters:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/890/1*e_9iJDzCkxGY82LErbaGTg.png" /></figure><p>One of the meaningful words from that combination is <strong>OLIVER</strong>, and I accepted it as the potential key. I created the below class for Porta cipher operations:</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/dbbff5b0a4d2c4d798a5c62b10d496cf/href">https://medium.com/media/dbbff5b0a4d2c4d798a5c62b10d496cf/href</a></iframe><p>When I used that key, Porta Cipher broken, and I got the exact match with plaintext. As a final remark, if I couldn’t get a match, I had to back-propagate from candidate key elements and different key lengths.</p><p>Overall, one of the found keys is:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/224/1*H2PnDJh-b8vRBYztX_Jpmw.png" /></figure><p>As a final remark, <em>independently</em> working on elements of key length let us consider <em>13 ∗ key length </em>candidates instead of trying <em>13^key length</em> possibilities.</p><h4>What is Next?</h4><p>In the next post, I will cover <em>Shannon’s theory</em> and product cryptosystems. For this purpose, I will modify our Porta Cipher example and attempt to break the modified version.</p><p>Don’t forget to follow me on Twitter: <a href="https://twitter.com/kamaci_furkan">https://twitter.com/kamaci_furkan</a></p><p>Stay tuned!</p><h4>References</h4><p>[1] David Kahn. The Codebreakers: The Comprehensive History of Secret Communication from Ancient Times to the Internet. Scribner, 1996, p. 139. isbn: 9780684831305.</p><p>[2] Keith M. Martin. Everyday Cryptography. Oxford University Press, 2012, p. 142. isbn: 9780191625886.</p><p>[3] Berna Örs Yalçın. Lecture notes in Cryptography. Apr. 2023.</p><p>[4] William F Friedman. The index of coincidence and its applications in cryptography. Riverbank Laboratories. Department of Ciphers. Publ. OCLC, 1922.</p><p>[5] Practical Cryptography. Chi-squared Statistic. url: <a href="http://practicalcryptography.com/cryptanalysis/%20text-characterisation/chi-squared-statistic/">http://practicalcryptography.com/cryptanalysis/ text-characterisation/chi-squared-statistic/</a>. (Accessed: 03.04.2023).</p><p>[6] Douglas R. Stinson and Maura B. Paterson. Cryptography: Theory and Practice. 4th. Boca Raton, FL: CRC Press, 2019, pp. 75–78. isbn: 9781138197015.</p><p>[7] Vittorio et. al Maniezzo. Matheuristics, Algorithms and Implementations. Springer International Pub- lishing, 2021.</p><p>[8] Bill Waggener. Pulse Code Modulation Techniques. Springer, 1995, p. 206. isbn: 9780442014360.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=67d79c470127" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Algorithm to Solve Sudoku]]></title>
            <link>https://furkankamaci.medium.com/algorithm-to-solve-a-sudoku-416a22711f9f?source=rss-d9d1705b0f76------2</link>
            <guid isPermaLink="false">https://medium.com/p/416a22711f9f</guid>
            <category><![CDATA[software-development]]></category>
            <category><![CDATA[algorithms]]></category>
            <category><![CDATA[technology]]></category>
            <category><![CDATA[programming]]></category>
            <category><![CDATA[interview]]></category>
            <dc:creator><![CDATA[Furkan KAMACI]]></dc:creator>
            <pubDate>Thu, 03 Jun 2021 11:45:51 GMT</pubDate>
            <atom:updated>2021-06-03T12:28:37.320Z</atom:updated>
            <content:encoded><![CDATA[<p>Sudoku is a logic-based number-placement puzzle. In classic sudoku, the objective is to fill a 9×9 grid with digits so that each column, each row, and each of the nine 3×3 sub-grids that compose the grid (also called “boxes”, “blocks”, or “regions”) contains all of the digits from 1 to 9. The puzzle setter provides a partially completed grid, which for a well-posed puzzle has a single solution [1].</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/690/1*kTaLkCAXjO8rOdU53nhRyQ.png" /><figcaption>Sudoku example and its solution</figcaption></figure><p>As the nature of the logic, we may fill empty cells with numbers and have many solution candidates. Trying to solve this problem with a brute force approach is feasible since it has a complexity of O(9^m) (m demonstrates empty cells).</p><p>When you think about the brute force solution, one can realize that some of the solution attempts have unnecessary branching i.e. when we place a number in a row, we don’t need to derive new solution attempts which has the same number twice at the same row since it will not be a valid solution.</p><p>So, the key point is we are looking for an algorithm trying to solve a problem with pruning unnecessary branching. At this point, <strong>backtracking</strong> can help us.</p><p>Backtracking is a general algorithm for finding all (or some) solutions to some computational problems, notably constraint satisfaction problems, that incrementally builds candidates to the solutions, and abandons a candidate (“backtracks”) as soon as it determines that the candidate cannot possibly be completed to a valid solution [2].</p><p>Backtracking algorithms work like that:</p><ol><li>Iterate to construct solution attempts.</li><li>Do not construct a candidate if it is not valid.</li><li>Branch to next candidate with moving ahead</li><li>Recursively follow step 1.</li><li>Return if the solution is found.</li><li>Take one step back and try moving ahead with the next.</li></ol><p>This means that we will try to put numbers to the empty cells and continue if it is valid sudoku with existing numbers. We will recursively follow these steps until we hit an invalid solution. If so, we will take one step back and try the next number.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/297/1*Vpi3HGa0wDoX_8rSGlK8Aw.gif" /><figcaption>Solving sudoku with backtracking</figcaption></figure><p>Assume that we have given sudoku as a 2d char array with empty cells are defined with ‘.’ (dot) character. The algorithm that solves sudoku with backtracking is as follows:</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/768d12cf46dd21771c5ffb20531bd38b/href">https://medium.com/media/768d12cf46dd21771c5ffb20531bd38b/href</a></iframe><p>This article is a part of my solutions for the classical algorithm problems series. Check my profile to read existing articles and stay in tune with new ones.</p><p>You can follow me on Twitter: <a href="https://twitter.com/kamaci_furkan">https://twitter.com/kamaci_furkan</a></p><p>[1] <a href="https://en.wikipedia.org/wiki/Sudoku">https://en.wikipedia.org/wiki/Sudoku</a></p><p>[2] Gurari, Eitan (1999). “CIS 680: DATA STRUCTURES: Chapter 19: Backtracking Algorithms”. Archived from the original on 17 March 2007.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=416a22711f9f" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Apache NLPCraft]]></title>
            <link>https://medium.com/analytics-vidhya/apache-nlpcraft-2a705b4c30f1?source=rss-d9d1705b0f76------2</link>
            <guid isPermaLink="false">https://medium.com/p/2a705b4c30f1</guid>
            <category><![CDATA[machine-learning]]></category>
            <category><![CDATA[open-source]]></category>
            <category><![CDATA[apache]]></category>
            <category><![CDATA[nlp]]></category>
            <category><![CDATA[artificial-intelligence]]></category>
            <dc:creator><![CDATA[Furkan KAMACI]]></dc:creator>
            <pubDate>Tue, 10 Mar 2020 12:04:48 GMT</pubDate>
            <atom:updated>2020-03-10T12:04:48.933Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*H8btECr6I5c8Ck8eFW-9eg.jpeg" /><figcaption>Photo by <a href="https://unsplash.com/@lunarts?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Volodymyr Hryshchenko</a> on <a href="https://unsplash.com/s/photos/communication?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure><p>NLPCraft is an open source library for adding Natural Language Interface to any applications. Based on semantic modeling it requires no ML/DL model training or existing text corpora.</p><p>NLPCraft is simple to use: define a semantic model and intents to interpret user input. Securely deploy this model and use REST API to explore the data using natural language from your applications.</p><h3>Why NLI</h3><p>Natural Language Interface (NLI) enables users to explore any type of data sources using natural language augmenting existing UI/UX with fidelity and simplicity of conversational AI.</p><p>There is no learning curve, no special rules or applications to master, no syntax or terms to remember — just a natural language that your users already speak and the tools they already use.</p><h3>Key Features</h3><p><strong>Semantic Modeling</strong></p><p>Advanced semantic modeling and intent-based matching enable deterministic natural language understanding without requiring ML/DL training or text corpora.</p><p><strong>Strong Security</strong></p><p>HTTPs, model deployment isolation, 256-bit encryption, and ingress-only connectivity are among the key security features in NLPCraft.</p><p><strong>Any Data Source</strong></p><p>Any data source, device, or service — public or private. From databases and SaaS systems to smart home devices, voice assistants and chatbots.</p><p><strong>Model-As-A-Code</strong></p><p>Model-as-a-code convention natively supports any system development life cycle tools and frameworks in Java eco-system.</p><p><strong>Java-First</strong></p><p>REST API and Java-based implementation natively support the world’s largest ecosystem of development tools, programming languages, and services.</p><p><strong>Out-Of-The-Box Integration</strong></p><p>NLPCraft natively integrates with <a href="https://opennlp.apache.org/">OpenNLP</a>, <a href="https://cloud.google.com/natural-language/">Google Cloud Natural Language API</a>, <a href="https://stanfordnlp.github.io/CoreNLP/">CoreNLP</a> and <a href="https://spacy.io/">spaCY</a> for base NLP processing and named entity recognition.</p><h3>How It Works</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*LsdslTztROr3wOuGxjSUbQ.png" /></figure><p>There are three main software components:</p><p><strong>Data model</strong> specifies how to interpret user input, how to query a data source, and how to format the result back. Developers use a model-as-a-code approach to build models using any JVM language like Java or Scala.</p><p><strong>Data probe</strong> is a DMZ-deployed application designed to securely deploy and manage data models. Each probe can manage multiple models and you can have many probes.</p><p><strong>REST server</strong> provides REST endpoint for user applications to securely query data sources using NLI via data models deployed in data probes.</p><h3>NLI Applications</h3><p>Despite being seemingly obvious that NLI (Natural Language Interface) has wide applicability to many applications and software systems there are specific areas where NLI is already used today and has demonstrated its unique capabilities.</p><p><strong>NLI-Enhanced Search</strong></p><p>NLI-enhanced search, filter, and sort is one area where NLI has been successful for a number of years already. Look at Google Analytics, Gmail, JIRA, or many other applications that allow you to search, filter or sort their content with natural language queries. This use case is a perfect application of NLI as it naturally augments the existing UI/UX by replacing often cumbersome and hard-to-use search/filter/sort UX with a simple text box.</p><p>As a matter of fact, all major general-purpose search platforms today (i.e. Google, Bing, or Siri) use the NLI-enhanced approach to their search queries processing.</p><p><strong>Chatbots</strong></p><p>NLI is clearly at the heart of any chatbot implementation. And although most naive implementations of chatbots have failed to gain significant traction — the advancement in NLI technology is allowing modern chatbots to become gradually more sophisticated and outgrow the early “childhood” problems of parasitic dialogues, lack of contextual awareness, inability to comprehend a spoken, free-form language, and primitive rule-based logic.</p><p><strong>Data Reporting</strong></p><p>Fully deterministic NLI systems like NLPCraft provide critical technology for NLI-based data reporting. Unlike data insights analytics or data exploration, the data reporting typically cannot rely on the probabilistic nature of ML/DL-based approaches as it must provide 100% correctness in all cases.</p><p>NLPCraft employs advanced semantic modeling that provides fully deterministic results and NL comprehension.</p><p><strong>Ad-Hoc Data Exploration</strong></p><p>One of the most exciting applications of NLI is an ad-hoc data analytics or data exploration. This is the area where the proper NLI application can bring about a fundamental seismic change to how we explore our data and discover insights from it.</p><p>Today the most data is walled off in the silos of the individual, incompatible data systems making it mostly inaccessible to all but a few “power” users. Very few can gain access to all the different systems in a typical company, learn all the different ways to analyze the data and master incompatible and drastically different user interfaces.</p><p>The NLI-based approach can democratize access to the sprawling silo-ed data with a single unified UX by allowing users to use the natural language to explore and analyze the data. The natural language is the only UX/UI that everyone already knows, requires no training or learning and is universal regardless of the data source.</p><p><strong>Device Control</strong></p><p>With the popularization of consumer technologies like Amazon Alexa, Apple HomeKit, Mercedes MBUX and similar the NLI-based control of various devices and systems becoming a norm.</p><p>While most of these systems today can only understand the rudimentary 2–3 words command the advancements in NLI technology are rapidly leading to more sophisticated interfaces. The enterprise world is starting to catch up and NLI-based systems appear today in various manufacturing, oil and gas, pharma and medical applications.</p><p>NLPCraft has been accepted to Apache Incubator and I will be a Mentor of the Apache NLPCraft project. I’ll supervise the NLPCraft community in order to align with the Apache Way.</p><p>[1] <a href="https://nlpcraft.org/index.html">https://nlpcraft.org/index.html</a></p><p>[2] <a href="https://medium.com/@furkankamaci/open-source-software-development-and-apache-incubator-372cc90081ae">https://medium.com/@furkankamaci/open-source-software-development-and-apache-incubator-372cc90081ae</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=2a705b4c30f1" width="1" height="1" alt=""><hr><p><a href="https://medium.com/analytics-vidhya/apache-nlpcraft-2a705b4c30f1">Apache NLPCraft</a> was originally published in <a href="https://medium.com/analytics-vidhya">Analytics Vidhya</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Apache NLPCraft]]></title>
            <link>https://furkankamaci.medium.com/apache-nlpcraft-275fe15c4667?source=rss-d9d1705b0f76------2</link>
            <guid isPermaLink="false">https://medium.com/p/275fe15c4667</guid>
            <category><![CDATA[nlp]]></category>
            <category><![CDATA[open-source]]></category>
            <category><![CDATA[apache]]></category>
            <category><![CDATA[artificial-intelligence]]></category>
            <category><![CDATA[machine-learning]]></category>
            <dc:creator><![CDATA[Furkan KAMACI]]></dc:creator>
            <pubDate>Wed, 04 Mar 2020 13:26:42 GMT</pubDate>
            <atom:updated>2020-03-04T13:26:42.890Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*H8btECr6I5c8Ck8eFW-9eg.jpeg" /><figcaption>Photo by <a href="https://unsplash.com/@lunarts?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Volodymyr Hryshchenko</a> on <a href="https://unsplash.com/s/photos/communication?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure><p>NLPCraft is an open source library for adding Natural Language Interface to any applications. Based on semantic modeling it requires no ML/DL model training or existing text corpora.</p><p>NLPCraft is simple to use: define a semantic model and intents to interpret user input. Securely deploy this model and use REST API to explore the data using natural language from your applications.</p><h3>Why NLI</h3><p>Natural Language Interface (NLI) enables users to explore any type of data sources using natural language augmenting existing UI/UX with fidelity and simplicity of conversational AI.</p><p>There is no learning curve, no special rules or applications to master, no syntax or terms to remember — just a natural language that your users already speak and the tools they already use.</p><h3>Key Features</h3><p><strong>Semantic Modeling</strong></p><p>Advanced semantic modeling and intent-based matching enable deterministic natural language understanding without requiring ML/DL training or text corpora.</p><p><strong>Strong Security</strong></p><p>HTTPs, model deployment isolation, 256-bit encryption, and ingress-only connectivity are among the key security features in NLPCraft.</p><p><strong>Any Data Source</strong></p><p>Any data source, device, or service — public or private. From databases and SaaS systems to smart home devices, voice assistants and chatbots.</p><p><strong>Model-As-A-Code</strong></p><p>Model-as-a-code convention natively supports any system development life cycle tools and frameworks in Java eco-system.</p><p><strong>Java-First</strong></p><p>REST API and Java-based implementation natively support the world’s largest ecosystem of development tools, programming languages, and services.</p><p><strong>Out-Of-The-Box Integration</strong></p><p>NLPCraft natively integrates with <a href="https://opennlp.apache.org/">OpenNLP</a>, <a href="https://cloud.google.com/natural-language/">Google Cloud Natural Language API</a>, <a href="https://stanfordnlp.github.io/CoreNLP/">CoreNLP</a> and <a href="https://spacy.io/">spaCY</a> for base NLP processing and named entity recognition.</p><h3><strong>How It Works</strong></h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*LsdslTztROr3wOuGxjSUbQ.png" /></figure><p>There are three main software components:</p><p><strong>Data model</strong> specifies how to interpret user input, how to query a data source, and how to format the result back. Developers use a model-as-a-code approach to build models using any JVM language like Java or Scala.</p><p><strong>Data probe</strong> is a DMZ-deployed application designed to securely deploy and manage data models. Each probe can manage multiple models and you can have many probes.</p><p><strong>REST server</strong> provides REST endpoint for user applications to securely query data sources using NLI via data models deployed in data probes.</p><h3>NLI Applications</h3><p>Despite being seemingly obvious that NLI (Natural Language Interface) has wide applicability to many applications and software systems there are specific areas where NLI is already used today and has demonstrated its unique capabilities.</p><p><strong>NLI-Enhanced Search</strong></p><p>NLI-enhanced search, filter, and sort is one area where NLI has been successful for a number of years already. Look at Google Analytics, Gmail, JIRA, or many other applications that allow you to search, filter or sort their content with natural language queries. This use case is a perfect application of NLI as it naturally augments the existing UI/UX by replacing often cumbersome and hard-to-use search/filter/sort UX with a simple text box.</p><p>As a matter of fact, all major general-purpose search platforms today (i.e. Google, Bing, or Siri) use the NLI-enhanced approach to their search queries processing.</p><p><strong>Chatbots</strong></p><p>NLI is clearly at the heart of any chatbot implementation. And although most naive implementations of chatbots have failed to gain significant traction — the advancement in NLI technology is allowing modern chatbots to become gradually more sophisticated and outgrow the early “childhood” problems of parasitic dialogues, lack of contextual awareness, inability to comprehend a spoken, free-form language, and primitive rule-based logic.</p><p><strong>Data Reporting</strong></p><p>Fully deterministic NLI systems like NLPCraft provide critical technology for NLI-based data reporting. Unlike data insights analytics or data exploration, the data reporting typically cannot rely on the probabilistic nature of ML/DL-based approaches as it must provide 100% correctness in all cases.</p><p>NLPCraft employs advanced semantic modeling that provides fully deterministic results and NL comprehension.</p><p><strong>Ad-Hoc Data Exploration</strong></p><p>One of the most exciting applications of NLI is an ad-hoc data analytics or data exploration. This is the area where the proper NLI application can bring about a fundamental seismic change to how we explore our data and discover insights from it.</p><p>Today the most data is walled off in the silos of the individual, incompatible data systems making it mostly inaccessible to all but a few “power” users. Very few can gain access to all the different systems in a typical company, learn all the different ways to analyze the data and master incompatible and drastically different user interfaces.</p><p>The NLI-based approach can democratize access to the sprawling silo-ed data with a single unified UX by allowing users to use the natural language to explore and analyze the data. The natural language is the only UX/UI that everyone already knows, requires no training or learning and is universal regardless of the data source.</p><p><strong>Device Control</strong></p><p>With the popularization of consumer technologies like Amazon Alexa, Apple HomeKit, Mercedes MBUX and similar the NLI-based control of various devices and systems becoming a norm.</p><p>While most of these systems today can only understand the rudimentary 2–3 words command the advancements in NLI technology are rapidly leading to more sophisticated interfaces. The enterprise world is starting to catch up and NLI-based systems appear today in various manufacturing, oil and gas, pharma and medical applications.</p><p>NLPCraft has been accepted to Apache Incubator and I will be a Mentor of the Apache NLPCraft project. I’ll supervise the NLPCraft community in order to align with the Apache Way.</p><p>[1] <a href="https://nlpcraft.org/index.html">https://nlpcraft.org/index.html</a></p><p>[2] <a href="https://medium.com/@furkankamaci/open-source-software-development-and-apache-incubator-372cc90081ae">https://medium.com/@furkankamaci/open-source-software-development-and-apache-incubator-372cc90081ae</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=275fe15c4667" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[U.S. National Institute of Standards and Technology Released the Privacy Framework]]></title>
            <link>https://medium.com/lagomtech/u-s-national-institute-of-standards-and-technology-released-the-privacy-framework-67292000dc7b?source=rss-d9d1705b0f76------2</link>
            <guid isPermaLink="false">https://medium.com/p/67292000dc7b</guid>
            <category><![CDATA[privacy]]></category>
            <category><![CDATA[ccpa]]></category>
            <category><![CDATA[gdpr]]></category>
            <category><![CDATA[machine-learning]]></category>
            <category><![CDATA[cybersecurity]]></category>
            <dc:creator><![CDATA[Furkan KAMACI]]></dc:creator>
            <pubDate>Mon, 20 Jan 2020 14:52:28 GMT</pubDate>
            <atom:updated>2020-01-20T14:52:28.421Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*DjFzq_JcSPviXP4u5b60Vw.jpeg" /><figcaption>Photo by <a href="https://unsplash.com/@fabioha?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">fabio</a> on <a href="https://unsplash.com/?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure><p>The National Institute of Standards and Technology (NIST) is a physical sciences laboratory and a non-regulatory agency of the United States Department of Commerce. Its mission is to promote innovation and industrial competitiveness. NIST’s activities are organized into laboratory programs that include nanoscale science and technology, engineering, information technology, neutron research, material measurement, and physical measurement.</p><p>NIST released the version 1.0 of Privacy Framework: A tool for Improving Privacy through Enterprise Risk Management (Privacy Framework), to enable better privacy engineering practices that support privacy by design concepts and help organizations protect individuals’ privacy. The Privacy Framework can support organizations in:</p><ul><li>Building customers’ trust by supporting ethical decision-making in product and service design or deployment that optimizes beneficial uses of data while minimizing adverse consequences for individuals’ privacy and society as a whole;</li><li>Fulfilling current compliance obligations, as well as future-proofing products and services to meet these obligations in a changing technological and policy environment; and</li><li>Facilitating communication about privacy practices with individuals, business partners, assessors, and regulators.</li></ul><p>The framework is developed in collaboration with a range of stakeholders, the framework provides a useful set of privacy protection strategies for organizations that wish to improve their approach to using and protecting personal data.</p><p>The NIST Privacy Framework is not a law or regulation, but rather a voluntary tool that can help organizations manage privacy risk arising from their products and services, as well as demonstrate compliance with laws that may affect them, such as the California Consumer Privacy Act and the European Union’s General Data Protection Regulation. It helps organizations identify the privacy outcomes they want to achieve and then prioritize the actions needed to do so.</p><p>The Privacy Framework follows the structure of the Framework for Improving Critical Infrastructure Cybersecurity (Cybersecurity Framework) to facilitate the use of both frameworks together. Like the Cybersecurity Framework, the Privacy Framework is composed of three parts: <em>Core</em>, <em>Profiles</em>, and <em>Implementation Tiers</em>. Each component reinforces privacy risk management through the connection between business and mission drivers, organizational roles and responsibilities, and privacy protection activities.</p><ul><li>The <strong>Core</strong> enables a dialogue — from the executive level to the implementation/operations level — about important privacy protection activities and desired outcomes.</li><li><strong>Profiles</strong> enable the prioritization of the outcomes and activities that best meet organizational privacy values, mission or business needs, and risks.</li><li><strong>Implementation</strong> <strong>Tiers</strong> support decision-making and communication about the sufficiency of organizational processes and resources to manage privacy risk.</li></ul><p>In summary,<em> the Privacy Framework is intended to help organizations build better privacy foundations by bringing privacy risk into parity with their broader enterprise risk portfolio.</em></p><h4>Privacy Risk Management</h4><p>Companies have a tremendous amount of data but they are distributed as sparse from the view of storage intermediates and data types. Such data includes a huge amount of personal data and companies are honeypot in that manner.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*59oGIgDlQdocKzeBfBOBAQ.png" /></figure><p><strong>Lagom Data Knowledge Platform </strong>can connect to any data source including both <em>structured</em> (i.e. databases) and <em>unstructured</em> (i.e. file systems, e-mails, documents) then can <em>search</em>, <em>analyze</em>, <em>report, </em>make<em> predictions</em>, and also take automated <em>actions</em> on them via static or ML-based rules as blazing fast.</p><p>To manage privacy risk arising from their products and services as like pointed by <strong>Privacy Framework</strong>, as well as demonstrate compliance with laws that may affect them, such as the <strong>CCPA</strong> and the <strong>GDPR</strong>, <strong>Lagom</strong> provides a <strong>Data Governance</strong> solution to discover structured and unstructured data, catalog sensitive data, take automatic actions as like pseudonymization or anonymization, create reports, notify authorized people to prevent data breaches and provide cybersecurity.</p><p>If you think that you are a good fit for Lagom and want to work with us, send your resume to <strong>career@lagom.ai</strong></p><p>Do you want us to visit your country for a tech talk? Please send an email to <strong>contact@lagom.ai</strong></p><p>Visit our <strong>webpage</strong> at <a href="https://lagom.ai/">https://lagom.ai</a></p><p>Follow us on <strong>Twitter</strong>: <a href="https://twitter.com/lagom_tech">https://twitter.com/lagom_tech</a></p><p>Follow us on <strong>Linkedin</strong>: <a href="https://www.linkedin.com/company/lagom-technologies">https://www.linkedin.com/company/lagom-technologies</a></p><p>[1] <a href="https://www.nist.gov/system/files/documents/2020/01/16/NIST%20Privacy%20Framework_V1.0.pdf">https://www.nist.gov/system/files/documents/2020/01/16/NIST%20Privacy%20Framework_V1.0.pdf</a></p><p>[2] <a href="https://www.nist.gov/news-events/news/2020/01/nist-releases-version-10-privacy-framework">https://www.nist.gov/news-events/news/2020/01/nist-releases-version-10-privacy-framework</a></p><p>[3] <a href="https://nvlpubs.nist.gov/nistpubs/CSWP/NIST.CSWP.04162018.pdf">https://nvlpubs.nist.gov/nistpubs/CSWP/NIST.CSWP.04162018.pdf</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=67292000dc7b" width="1" height="1" alt=""><hr><p><a href="https://medium.com/lagomtech/u-s-national-institute-of-standards-and-technology-released-the-privacy-framework-67292000dc7b">U.S. National Institute of Standards and Technology Released the Privacy Framework</a> was originally published in <a href="https://medium.com/lagomtech">LAGOM</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[California Consumer Privacy Act (CCPA) and Comparison with GDPR]]></title>
            <link>https://medium.com/lagomtech/california-consumer-privacy-act-ccpa-and-gdpr-ba90125fbabd?source=rss-d9d1705b0f76------2</link>
            <guid isPermaLink="false">https://medium.com/p/ba90125fbabd</guid>
            <category><![CDATA[ccpa]]></category>
            <category><![CDATA[cybersecurity]]></category>
            <category><![CDATA[privacy]]></category>
            <category><![CDATA[gdpr]]></category>
            <category><![CDATA[machine-learning]]></category>
            <dc:creator><![CDATA[Furkan KAMACI]]></dc:creator>
            <pubDate>Thu, 28 Nov 2019 10:41:19 GMT</pubDate>
            <atom:updated>2019-11-28T10:53:43.630Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*bwARat8keWu42sLpP71YCQ.png" /></figure><p><strong>31 states</strong> at the United States have established laws regulating the secure destruction or disposal of personal information, with at least a dozen states imposing broader data security requirements and California is a pioneer belong them.</p><p>The California Consumer Privacy Act (CCPA) was enacted in 2018 and takes effect on <strong>January 1, 2020</strong>. This landmark piece of legislation secures new privacy rights for California consumers.</p><p>The CCPA grants new rights to California consumers:</p><ul><li>The <strong>right to know</strong> what personal information is collected, used, shared or sold, both as to the categories and specific pieces of personal information;</li><li>The <strong>right to delete</strong> personal information held by businesses and by extension, a business’s service provider;</li><li>The <strong>right to opt-out</strong> of sale of personal information. Consumers are able to direct a business that sells personal information to stop selling that information. Children under the age of 16 must provide opt in consent, with a parent or guardian consenting for children under 13.</li><li>The <strong>right to non-discrimination</strong> in terms of price or service when a consumer exercises a privacy right under CCPA.</li></ul><p>The CCPA applies to certain businesses :</p><ul><li>Businesses are subject to the CCPA if one or more of the following are true:</li></ul><ol><li>Has gross annual revenues in excess of $25 million;</li><li>Buys, receives, or sells the personal information of 50,000 or more consumers, households, or devices;</li><li>Derives 50 percent or more of annual revenues from selling consumers’ personal information.</li></ol><ul><li>As proposed by the draft regulations, businesses that handle the personal information of more than 4 million consumers will have additional obligations.</li></ul><h4>CCPA and GDPR</h4><p>The California Consumer Privacy Act (CCPA) and the European Union’s General Data Protection Regulation (GDPR) are separate legal frameworks with different scopes, definitions, and requirements. A business that complies with GDPR and is subject to CCPA may have additional obligations under CCPA.</p><ul><li>For example, under GDPR, companies must undertake a <strong>data inventory and mapping of data flows</strong> in furtherance of creating records to demonstrate compliance. Additional data mapping may be important to reflect the different requirements under CCPA.</li><li>Under GDPR, companies must develop <strong>processes and/or systems to respond to individual requests</strong> for access to personal information and for erasure of personal information. These processes and/or systems may be applied to handling CCPA consumer requests, although businesses may need to review and reconcile the different definitions of personal information and applicable rules on verification of consumer requests.</li><li>Under GDPR, companies must disclose <strong>data privacy practices in a privacy policy</strong>. CCPA also requires companies to disclose specific business practices in a comprehensive privacy policy. Many California companies that operate commercial websites and online services must post a privacy policy under the California Online Privacy Protection Policy, or CalOPPA, and will need to update this policy for CCPA.</li><li>Under GDPR, companies must draft and execute <strong>written contracts with its service providers</strong> (“processors”). Companies may need to review these contracts to reflect requirements under CCPA.</li></ul><h4>Solution</h4><p>Companies have a tremendous amount of data but they are distributed as sparse from the view of storage intermediates and data types. Such data includes a huge amount of personal data and companies are honeypot in that manner.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*59oGIgDlQdocKzeBfBOBAQ.png" /></figure><p><strong>Lagom Data Knowledge Platform </strong>can connect to any data source including both <em>structured</em> (i.e. databases) and <em>unstructured</em> (i.e. file systems, e-mails, documents) then can <em>search</em>, <em>analyze</em>, <em>report, </em>make<em> predictions</em>, and also take automated <em>actions</em> on them via static or ML-based rules as blazing fast.</p><p>To make companies compliant with regulations like CCPA, Lagom provides a <strong>Data Governance </strong>solution to discover structured and unstructured data, catalog sensitive data, take automatic actions as like pseudonymization or anonymization, create reports, notify authorized people to prevent data breaches and provide cybersecurity.</p><p>If you think that you are a good fit for Lagom and want to work with us, send your resume to <strong>career@lagom.ai</strong></p><p>Do you want us to visit your country for a tech talk? Please send an email to <strong>contact@lagom.ai</strong></p><p>Visit our <strong>webpage</strong> at <a href="https://lagom.ai/">https://lagom.ai</a></p><p>Follow us on <strong>Twitter</strong>: <a href="https://twitter.com/lagom_tech">https://twitter.com/lagom_tech</a></p><p>Follow us on <strong>Linkedin</strong>: <a href="https://www.linkedin.com/company/lagom-technologies">https://www.linkedin.com/company/lagom-technologies</a></p><p>[1] <a href="https://oag.ca.gov/privacy/ccpa">https://oag.ca.gov/privacy/ccpa</a></p><p>[2] <a href="https://www.helpnetsecurity.com/2019/05/23/american-gdpr-awareness/">https://www.helpnetsecurity.com/2019/05/23/american-gdpr-awareness/</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=ba90125fbabd" width="1" height="1" alt=""><hr><p><a href="https://medium.com/lagomtech/california-consumer-privacy-act-ccpa-and-gdpr-ba90125fbabd">California Consumer Privacy Act (CCPA) and Comparison with GDPR</a> was originally published in <a href="https://medium.com/lagomtech">LAGOM</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Becoming Compliant with GDPR]]></title>
            <link>https://medium.com/lagomtech/becoming-compliant-with-gdpr-155677cccb06?source=rss-d9d1705b0f76------2</link>
            <guid isPermaLink="false">https://medium.com/p/155677cccb06</guid>
            <category><![CDATA[cybersecurity]]></category>
            <category><![CDATA[security]]></category>
            <category><![CDATA[gdpr]]></category>
            <category><![CDATA[privacy]]></category>
            <category><![CDATA[machine-learning]]></category>
            <dc:creator><![CDATA[Furkan KAMACI]]></dc:creator>
            <pubDate>Mon, 25 Nov 2019 11:15:08 GMT</pubDate>
            <atom:updated>2019-11-25T11:15:08.269Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*oEpqSHbX0ZZXJqbJS-V2Rw.jpeg" /><figcaption>Photo by <a href="https://unsplash.com/@dtopkin1?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Dayne Topkin</a> on <a href="https://unsplash.com/s/photos/privacy?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure><p>The GDPR has been a milestone for collecting, using and processing personal data which gives EU citizens more control over their data. This Regulation applies to the processing of personal data in the context of the activities of an establishment of a controller or a processor in the Union, regardless of whether the processing takes place in the Union or not.</p><p>Personal data, processing data, profiling data, restriction of personal data processing and pseudonymization are all explained at GDPR.</p><h3>Personal Data</h3><p>Any information relating to an identified or identifiable natural person (‘data subject’); an identifiable natural person is one who can be identified, directly or indirectly, in particular by reference to an identifier such as a name, an identification number, location data, an online identifier or to one or more factors specific to the physical, physiological, genetic, mental, economic, cultural or social identity of that natural person.</p><h3>Processing</h3><p>Any operation or set of operations which is performed on personal data or on sets of personal data, whether or not by automated means, such as collection, recording, organization, structuring, storage, adaptation or alteration, retrieval, consultation, use, disclosure by transmission, dissemination or otherwise making available, alignment or combination, restriction, erasure or destruction;</p><p>According to Article 6 at GDPR, there are six lawful bases for processing the information:</p><h4>1. Consent</h4><p>The data subject has given consent to the processing of his or her personal data for one or more specific purposes.</p><h4>2. Contracts</h4><p>Processing is necessary for the performance of a contract to which the data subject is party or in order to take steps at the request of the data subject prior to entering into a contract.</p><h4>3. Legal obligation</h4><p>Processing is necessary for compliance with a legal obligation to which the controller is subject.</p><h4>4. Vital Interest</h4><p>Processing is necessary in order to protect the vital interests of the data subject or of another natural person.</p><h4>5. Public Interest</h4><p>Processing is necessary for the performance of a task carried out in the public interest or in the exercise of official authority vested in the controller.</p><h4>6. Legitimate Interest</h4><p>Processing is necessary for the purposes of the legitimate interests pursued by the controller or by a third party, except where such interests are overridden by the interests or fundamental rights and freedoms of the data subject which require protection of personal data, in particular where the data subject is a child.</p><p>Processing shall be lawful only if and to the extent that at least one of them applies.</p><h3>Profiling</h3><p>Any form of automated processing of personal data consisting of the use of personal data to evaluate certain personal aspects relating to a natural person, in particular to analyze or predict aspects concerning that natural person’s performance at work, economic situation, health, personal preferences, interests, reliability, behavior, location or movements.</p><h3>Restriction of Processing</h3><p>The marking of stored personal data with the aim of limiting their processing in the future.</p><h3>Pseudonymization</h3><p>The processing of personal data in such a manner that the personal data can no longer be attributed to a specific data subject without the use of additional information, provided that such additional information is kept separately and is subject to technical and organizational measures to ensure that the personal data are not attributed to an identified or identifiable natural person.</p><h3>Penalties</h3><p>Fines at GDPR are up to <strong>20 Million EUR</strong>, or in the case of an undertaking, up to <strong>4% </strong>of the total <strong>worldwide annual turnover</strong> of the preceding financial year, <strong>whichever is higher</strong>.</p><h3>Solution</h3><p>Companies have a tremendous amount of data but they are distributed as sparse from the view of storage intermediates and data types. Such data includes a huge amount of personal data and companies are honeypot in that manner.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*59oGIgDlQdocKzeBfBOBAQ.png" /></figure><p><strong>Lagom Data Knowledge Platform </strong>can connect to any data source including both <em>structured</em> (i.e. databases) and <em>unstructured</em> (i.e. file systems, e-mails, documents) then can <em>search</em>, <em>analyze</em>, <em>report, </em>make<em> predictions</em>, and also take automated <em>actions</em> on them via static or ML-based rules as blazing fast.</p><p>To make companies compliant with regulations like GDPR, Lagom provides a <strong>Data Governance </strong>solution to discover structured and unstructured data, catalog sensitive data, take automatic actions as like pseudonymization or anonymization, create reports, notify authorized people to prevent data breaches and provide cybersecurity.</p><p>If you think that you are a good fit for Lagom and want to work with us, send your resume to <strong>career@lagom.ai</strong></p><p>Do you want us to visit your country for a tech talk? Please send an email to <strong>contact@lagom.ai</strong></p><p>Visit our <strong>webpage</strong> at <a href="https://lagom.ai/">https://lagom.ai</a></p><p>Follow us on <strong>Twitter</strong>: <a href="https://twitter.com/lagom_tech">https://twitter.com/lagom_tech</a></p><p>Follow us on <strong>Linkedin</strong>: <a href="https://www.linkedin.com/company/lagom-technologies">https://www.linkedin.com/company/lagom-technologies</a></p><p>[1] <a href="https://eur-lex.europa.eu/legal-content/EN/TXT/PDF/?uri=CELEX:32016R0679">https://eur-lex.europa.eu/legal-content/EN/TXT/PDF/?uri=CELEX:32016R0679</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=155677cccb06" width="1" height="1" alt=""><hr><p><a href="https://medium.com/lagomtech/becoming-compliant-with-gdpr-155677cccb06">Becoming Compliant with GDPR</a> was originally published in <a href="https://medium.com/lagomtech">LAGOM</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Lagom Data Governance]]></title>
            <link>https://medium.com/lagomtech/lagom-data-governance-1d4145e4bb85?source=rss-d9d1705b0f76------2</link>
            <guid isPermaLink="false">https://medium.com/p/1d4145e4bb85</guid>
            <category><![CDATA[cybersecurity]]></category>
            <category><![CDATA[privacy]]></category>
            <category><![CDATA[machine-learning]]></category>
            <category><![CDATA[gdpr]]></category>
            <category><![CDATA[big-data]]></category>
            <dc:creator><![CDATA[Furkan KAMACI]]></dc:creator>
            <pubDate>Mon, 18 Nov 2019 07:14:50 GMT</pubDate>
            <atom:updated>2019-11-18T07:14:50.808Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*F6wKBESYnLQewC2XVifMKA.png" /></figure><p>Data privacy and protection are really important problems to be solved for all companies especially in a world that collected data is increasing which includes personal data.</p><p>Personal data is defined as any information relating to an identified or identifiable natural person (‘data subject’); an identifiable natural person is one who can be identified, directly or indirectly, in particular by reference to an identifier such as a name, an identification number, location data, an online identifier or to one or more factors specific to the physical, physiological, genetic, mental, economic, cultural or social identity of that natural person according to GDPR.</p><p>On the other hand, protecting such data, preventing information leak and running an operation to be aligned with regulations or any other purposes is a challenging task.</p><p><strong>Lagom Data Knowledge Platform </strong>can connect to any data source including both <em>structured</em> (i.e. databases) and <em>unstructured</em> (i.e. file systems, e-mails, documents) then can <em>search</em>, <em>analyze</em>, <em>report, </em>make<em> predictions</em>, and also take automated <em>actions</em> on them via static or ML-based rules as blazing fast and provides a <strong>Data Governance </strong>solution<strong> </strong>[1].</p><h4>Lagom Data Governance Flow</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*dWM9ZTaIFXD7AY-Np4RKgA.png" /></figure><p>Lagom does not need installing agents on your systems and can you can run it as on-premise. Lagom requires to write permission only for desired operations as an optional choice as like defining actions which modify data.</p><p>Our platform provides an <em>Authority Matrix </em>and all the access, read or write operations can be defined to provide more granular security. Actions taken on the platform, search operations or managing the platform itself can be controlled by Authority Matrix.</p><p>You can connect your existing authority systems i.e. LDAP implementations and all operations are done respected to related authorities. After that, you can connect any type of data sources i.e. SQL data source, NoSQL data source, Documents (Word, Excel, PDF, Images, etc.), E-mail, Exchange, Office365, Dropbox, Google, IBM FileNet, Alfresco or any other CMS systems to start <em>discovery</em>.</p><p>The next step is defining <em>procedures</em>, <em>policies</em>, and <em>concepts</em> for your data. Procedures and policies are semantic definitions for your data governance operations. Concepts are complex search bundles that include <em>dictionaries</em>, <em>advanced search queries</em>, and <em>functions</em>. One of the powerful features of Lagom is, concepts can be defined any time and does not require a re-discovery. Concept results are <em>cataloged</em> according to your custom or predefined or definitions.</p><p>After all, you can define actions and retentions for your cataloged data. Actions and retentions can be scheduled time-based and triggered at defined certain conditions. These can be asking an explicit consent from your users, archiving, pseudonymization or anonymization operation, or any other function you have defined. As an example, you can detect whether district information resides at your data or not and then replace it with any other district which is close to 5 miles to the original one.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*59oGIgDlQdocKzeBfBOBAQ.png" /></figure><p>Lagom also reports analytics data both for ongoing processes and for overall data. On the other hand, it extracts quality metrics of your data i.e. duplicate documents or unnecessary columns at a database table.</p><p>All in all, Lagom provides a <strong>Data Governance</strong> solution to discover structured and unstructured data, catalog sensitive data, take automatic actions as like pseudonymization or anonymization, create reports, notify authorized people to prevent data breaches and provide cybersecurity.</p><p>If you think that you are a good fit for Lagom and want to work with us, send your resume to <strong>career@lagom.ai</strong></p><p>Do you want us to visit your country for a tech talk? Please send an email to <strong>contact@lagom.ai</strong></p><p>Visit our <strong>webpage</strong> at <a href="https://lagom.ai/">https://lagom.ai</a></p><p>Follow us on <strong>Twitter</strong>: <a href="https://twitter.com/lagom_tech">https://twitter.com/lagom_tech</a></p><p>Follow us on <strong>Linkedin</strong>: <a href="https://www.linkedin.com/company/lagom-technologies">https://www.linkedin.com/company/lagom-technologies</a></p><p>[1] <a href="https://medium.com/lagomtech/lagom-data-knowledge-platform-3-7a09709634db">https://medium.com/lagomtech/lagom-data-knowledge-platform-3-7a09709634db</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=1d4145e4bb85" width="1" height="1" alt=""><hr><p><a href="https://medium.com/lagomtech/lagom-data-governance-1d4145e4bb85">Lagom Data Governance</a> was originally published in <a href="https://medium.com/lagomtech">LAGOM</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
    </channel>
</rss>