<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Akash Kumar Sikarwar</title>
    <description>The latest articles on Forem by Akash Kumar Sikarwar (@akashkumarsikarwar).</description>
    <link>https://forem.com/akashkumarsikarwar</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F282960%2Fea217ffd-582b-4cf5-bb4c-ec5b7a77967c.jpeg</url>
      <title>Forem: Akash Kumar Sikarwar</title>
      <link>https://forem.com/akashkumarsikarwar</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/akashkumarsikarwar"/>
    <language>en</language>
    <item>
      <title>All about HTTPS (part-4)</title>
      <dc:creator>Akash Kumar Sikarwar</dc:creator>
      <pubDate>Sat, 10 Jul 2021 12:35:54 +0000</pubDate>
      <link>https://forem.com/akashkumarsikarwar/all-about-https-part-4-22ga</link>
      <guid>https://forem.com/akashkumarsikarwar/all-about-https-part-4-22ga</guid>
      <description>&lt;h2&gt;
  
  
  The differences between HTTPS, SSL and TLS
&lt;/h2&gt;

&lt;p&gt;In the &lt;a href="https://dev.to/akashkumarsikarwar/all-about-https-part-3-1pd7"&gt;previous post&lt;/a&gt; we talked about the handshake process between browser and the server. There we mentioned various terms like HTTPS, SSL and TLS.&lt;/p&gt;

&lt;p&gt;It's easy to confuse these terms and use them interchangeably. Let's look into each one and see how they differ.&lt;/p&gt;

&lt;h3&gt;
  
  
  HTTPS
&lt;/h3&gt;

&lt;p&gt;HTTPS is the secured version of HTTP: HyperText Transfer Protocol. It is the protocol used by your browser and web servers to communicate and exchange information. When that exchange of data is encrypted with SSL/TLS, then we call it HTTPS. The 'S' stands for Secure.&lt;/p&gt;

&lt;h3&gt;
  
  
  SSL
&lt;/h3&gt;

&lt;p&gt;SSL stands for 'Secure Sockets Layer'. A protocol created by Netscape. It is a dinosaur by Internet standards.&lt;br&gt;
Netscape developed it in the year 1994. It was envisioned as a system that will ensure secure communication between client and server systems on the web. Gradually, the IETF (the Internet Engineering Task Force) picked up the protocol and standardized it as a protocol. Two versions of SSL followed that ironed out the vulnerabilities found in version 1. The current SSL version is SSL 3.0. &lt;/p&gt;

&lt;p&gt;If we look at below history, we can assume that IETF seriously attempted to secure online data with robust security at its best.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;SSL 1.0&lt;/strong&gt; - Due to security flaw, SSL 1.0 was never released.&lt;br&gt;
&lt;strong&gt;SSL 2.0&lt;/strong&gt; - First public release of it by Netscape in February 1995 but there were design flaws that compelled Netscape to release SSL v.3. However, SSL v.2.0 was deprecated in 2011.&lt;br&gt;
&lt;strong&gt;SSL 3.0&lt;/strong&gt; - SSL v3 was an upgrade version of earlier version SSL v2.0 that fixed few security design flaws of SSL v2.0 However, SSL v3.0 deemed insecure in 2004 due to the POODLE attack.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  TLS
&lt;/h3&gt;

&lt;p&gt;TLS means Transport Layer Security, which is a cryptographic protocol successor of SSL 3.0, which was released in 1999.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;TLS 1.0&lt;/strong&gt; - TLS 1.0 which was upgrade of SSL v.3.0 released in January 1999 but it allows connection downgrade to SSL v.3.0.&lt;br&gt;
&lt;strong&gt;TLS 1.1&lt;/strong&gt; - After that, TLS v1.1 was released in April 2006, which was an update of TLS 1.0 version. It added protection against CBC (Cipher Block Chaining) attacks. In March 2020, Google, Apple, Mozilla and Microsoft has announced for deprecation of TLS 1.0 and 1.1 versions.&lt;br&gt;
&lt;strong&gt;TLS 1.2&lt;/strong&gt; - TLS v1.2 was released in 2008 that allows the specification of hash algorithm used by the client and server. It allows authenticated encryption, which added more support with extra data modes. TLS 1.2 was able to verify length of data based on cipher suite.&lt;br&gt;
&lt;strong&gt;TLS 1.3&lt;/strong&gt; - TLS v1.3 was released in August 2018 and had major features that differentiate it with its earlier version TLS v1.2 like removal of MD5 and SHA-224 support, require digital signature when earlier configuration used, compulsory use of Perfect forward secrecy in case of public-key based key exchange, handshake messages will now be encrypted after “Server Hello”.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In nutshell, SSL is obsolete and TLS is the new  SSL protocol as modern encryption standard being used by everybody. Technically, TLS is more accurate, but everyone knows SSL.&lt;/p&gt;

&lt;p&gt;Thanks for reading this. Until next time.&lt;/p&gt;

</description>
      <category>tutorial</category>
      <category>beginners</category>
      <category>todayilearned</category>
      <category>https</category>
    </item>
    <item>
      <title>All about HTTPS (part-3)</title>
      <dc:creator>Akash Kumar Sikarwar</dc:creator>
      <pubDate>Sat, 10 Jul 2021 09:44:27 +0000</pubDate>
      <link>https://forem.com/akashkumarsikarwar/all-about-https-part-3-1pd7</link>
      <guid>https://forem.com/akashkumarsikarwar/all-about-https-part-3-1pd7</guid>
      <description>&lt;h2&gt;
  
  
  The handshake
&lt;/h2&gt;

&lt;p&gt;In the &lt;a href="https://dev.to/akashkumarsikarwar/all-about-https-part-2-2hnd"&gt;prev post&lt;/a&gt;, we talked about two types of encryption keys algorithms. In this post, let me walk you through the process of the handshake.&lt;/p&gt;

&lt;p&gt;When you started reading this article, your browser displayed a green lock in the address bar. How did that happen?&lt;/p&gt;

&lt;p&gt;Your browser communicated with dev.to server, where this post is hosted, and they both established a secure connection to transmit messages. &lt;br&gt;
But first, they needed to agree on how to communicate securely. If the negotiation is not successful, your browser lets you know by showing an error or warning. If an agreement is reached, your browser is happy to display a green padlock on the address bar. This process, the negotiation between a browser and a server, is called 'the handshake'. It happens very fast without any delay. Let me help you understand it step by step.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1:&lt;/strong&gt; Client Hello. Your browser sends a list of SSL/TLS versions and encryption algorithms that it can work with to dev.to server. A fancy word for the encryption algorithm list is 'cipher suite'. And then your browser waits for an answer from dev.to server.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2:&lt;/strong&gt; Server Hello. Server chooses the best SSL/TLS version and encryption algorithm among the ones browser sent it, and based on its preferences. Server replies with its certificate, which includes its public key, so that it can verify who it is.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3:&lt;/strong&gt; Client Key Exchange. Your browser checks server's certificate to make sure its legit. It generates a 'pre-master key' so they can both user it later when they generate a unique key. Browser encrypts that pre-master key with server's public key and sends it back to the server.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4:&lt;/strong&gt; Change Cipher spec. Server uses its private key to decrypt the pre-master key. So far all the communication between them has been in open. They have not secured any messages. They used asymmetric keys (public and private keys) to encrypt the pre-master key so nobody could spy on it. Now they both generate the same 'shared secret' that they are going to use as a symmetric key. Browser sends a test an encrypted test message to which server responds saying everything is OK.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5:&lt;/strong&gt; Everything is now secured. Now all data going back and forth between your browser and dev.to server is now secured for the rest of the session. Passwords, credit card details(if any), everything.&lt;/p&gt;

&lt;p&gt;Simple right? Here is a diagram to help you understand this handshake better.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8g8uwzk8htjncbo13tuj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8g8uwzk8htjncbo13tuj.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the &lt;a href="https://dev.to/akashkumarsikarwar/all-about-https-part-4-22ga"&gt;next post&lt;/a&gt;, we will try to understand the differences between the terms HTTPS, SSL and TLS we talked about earlier. &lt;/p&gt;

</description>
      <category>tutorial</category>
      <category>beginners</category>
      <category>todayilearned</category>
      <category>https</category>
    </item>
    <item>
      <title>All about HTTPS (part-2)</title>
      <dc:creator>Akash Kumar Sikarwar</dc:creator>
      <pubDate>Sat, 10 Jul 2021 09:42:53 +0000</pubDate>
      <link>https://forem.com/akashkumarsikarwar/all-about-https-part-2-2hnd</link>
      <guid>https://forem.com/akashkumarsikarwar/all-about-https-part-2-2hnd</guid>
      <description>&lt;h2&gt;
  
  
  Encryption Keys
&lt;/h2&gt;

&lt;p&gt;Welcome to the second post of the series on All about HTTPS.&lt;br&gt;
In the &lt;a href="https://dev.to/akashkumarsikarwar/all-about-https-part-1-4032"&gt;prev post&lt;/a&gt;, we talked about why do we need HTTPS connection. In this post we will talk about how the encryption keys work.&lt;/p&gt;

&lt;p&gt;HTTPS needs a way to provide privacy, integrity and identification on the web that we talked about last time by converting the plain text into some unreadable data. And that mechanism is called encryption. For that we have two types of encryption algorithms. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Symmetric key algorithm&lt;/strong&gt;&lt;br&gt;
In this scenario, there is only one type of key to encrypt and decrypt a message. Lets try to understand this by taking a simple example. Before sending the message to Bob, Alice encrypted the message with a key. You can think of the encryption process like putting the message in a box and locking the box with a key. Only the person that has a copy of the key can open the box and read the message.&lt;br&gt;
This guarantees that the box cannot be opened until it reaches the person with the right key. When Bob gets the box, he uses his key to open it and read the message. It's important that the key is kept private. You should not share the key in plain text, or send it with the box. Remember, anyone with the key can open the box. Using the box is a nice visual to understand encryption, but it's really oversimplifying it. In reality, anyone looking at the message without the key only sees nonsense text like below.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp3lahji7wn68e2yl9e2x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp3lahji7wn68e2yl9e2x.png" alt="image"&gt;&lt;/a&gt;&lt;br&gt;
To decrypt a message, we just need to apply the same steps, but in reverse order.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fth71wtvhyhhnabqi98wp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fth71wtvhyhhnabqi98wp.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The encryption key is mixed in with the message, so even if you know the encryption algorithm, without the key, the message is still nonsense. &lt;br&gt;
One main issue with symmetric keys is that they are hard to share. You have to be super careful with how you distribute the key. This brings us to the next topic of discussion asymmetric keys.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Asymmetric keys algorithm&lt;/strong&gt;&lt;br&gt;
This time instead of one like in symmetric, we have two keys. One key is public, the other one is private. They are paired and work together. Share your public key with anyone. Send it in plain text, make stickers, tattoos. Anything you want! It's public!. Alice is sending his public key to Bob and now Bob is sending a message back to Alice encrypting it with Alice's public key. In other words, Bob puts the message in a box and locks it with Alice's public key. Bob can now use his private key to read the message. That's the main idea. Only the private key can open a box locked with the public key pair. Alice uses Bob's public key to send him another message. This is great not only for privacy, but also for identification since we know for sure that only the owner of the 2 keys can open the message.&lt;/p&gt;

&lt;p&gt;Next, we'll be looking at how symmetric and asymmetric keys play a role when we connect to a site with SSL. See you in the &lt;a href="https://dev.to/akashkumarsikarwar/all-about-https-part-3-1pd7"&gt;next post&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>tutorial</category>
      <category>beginners</category>
      <category>todayilearned</category>
      <category>encryption</category>
    </item>
    <item>
      <title>All about HTTPS (part-1)</title>
      <dc:creator>Akash Kumar Sikarwar</dc:creator>
      <pubDate>Sat, 10 Jul 2021 09:41:12 +0000</pubDate>
      <link>https://forem.com/akashkumarsikarwar/all-about-https-part-1-4032</link>
      <guid>https://forem.com/akashkumarsikarwar/all-about-https-part-1-4032</guid>
      <description>&lt;h2&gt;
  
  
  Why do we even need HTTPS protocol?
&lt;/h2&gt;

&lt;p&gt;When you arrived at this post, do you see any green pad lock on your address bar of the browser just in front of dev.to? Let me tell you what is it and why is it there?&lt;/p&gt;

&lt;p&gt;This green lock represents that the site is using HTTPS as its protocol and is relatively more secure than when it is not there.&lt;/p&gt;

&lt;p&gt;We need HTTPS for mainly three reasons:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Privacy&lt;/strong&gt;&lt;br&gt;
Lets talk about Privacy first. Lets say we have three people Alice, Bob and Candice. Alice is trying to send messages to Bob and the message is not encrypted meaning plain text. If we don't have HTTPS an evil person like Candice who is jealous of their friendship can listen on the communication and also can capture the messages potentially for doing evil things. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwlm1i0k4b89nyyrx77kx.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwlm1i0k4b89nyyrx77kx.gif" alt="privacy"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Privacy means that no one can eavesdrop on your messages. The green padlock on the URL bar of our browser tells us that there is no one watching over our shoulder. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Integrity&lt;/strong&gt;&lt;br&gt;
Second comes Integrity. Lets suppose when Alice sends another message to Bob unencrypted saying some nice words, but before it reaches Bob Candice intercepts the message and updates it with bad words about Bob and forwards to him, ruining their friendship. This is called man-in-the-middle attack. &lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq6u8t90fd7jw2km55n52.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq6u8t90fd7jw2km55n52.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Integrity means that the message is not manipulated on the way to its destination. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Identification&lt;/strong&gt;&lt;br&gt;
Lets take the same example from above. Identification means that Bob can check that this message is indeed coming from Alice. A digital signature attached to a message can identify the sender. And when you are browsing the web, identification means that the site that you are visiting is indeed the one you think it is.&lt;br&gt;
 HTTPS, via SSL certificates, ensures you are connected exactly with the receiver you would expect. This SSL certificate is valid and has been issued by a legitimate Certificate Authority. You are good to go.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2pfnv0ye0h8p748pbx8a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2pfnv0ye0h8p748pbx8a.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now that we know the why, the &lt;a href="https://dev.to/akashkumarsikarwar/all-about-https-part-2-2hnd"&gt;next step&lt;/a&gt; is to understand symmetric and asymmetric encryption.&lt;/p&gt;

</description>
      <category>tutorial</category>
      <category>beginners</category>
      <category>todayilearned</category>
      <category>learning</category>
    </item>
    <item>
      <title>Github pages for your simple web projects</title>
      <dc:creator>Akash Kumar Sikarwar</dc:creator>
      <pubDate>Mon, 05 Jul 2021 20:35:48 +0000</pubDate>
      <link>https://forem.com/akashkumarsikarwar/github-pages-for-your-simple-web-projects-3m72</link>
      <guid>https://forem.com/akashkumarsikarwar/github-pages-for-your-simple-web-projects-3m72</guid>
      <description>&lt;p&gt;Before you buy a domain or subscribe to a hosting service, you should probably think about if you even need them. Why?, you ask. Then probably you should not skip this post.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Too many steps&lt;/strong&gt;&lt;br&gt;
What stops most of the people to start their first web project is the hesitation to go through all the steps starting from selecting a hosting service from various choices available, selecting the plan and then go through all the actual hosting steps, which generally never happens smoothly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Costly&lt;/strong&gt;&lt;br&gt;
Then comes the money part which is the second most popular hurdle to have your own website. Buying a domain name, could sometimes be expensive especially for students who need to save money more than anybody. Also, most of the hosting services charge some amount to customers to keep running their business.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Security and reliability&lt;/strong&gt;&lt;br&gt;
For simple projects like personal website, this is important but many would agree that it is essential for business. We are always hearing news about data breaches on hosting services even on some popular services like hostinger etc.&lt;/p&gt;

&lt;p&gt;For all the above problems, there is one useful feature of Github yet unknown to many.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Github Pages&lt;/strong&gt; allows you to host your simple web project/website directly from your Github repository. It means you can make your website live for the world to see without bearing the hosting pain!&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Note: Github Pages works only for static websites.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;By definition: A &lt;em&gt;static website&lt;/em&gt; contains Web pages with fixed content. Each page is coded in HTML and displays the same information to every visitor. These are the most basic type of website and are the easiest to create. Unlike dynamic websites, they do not require any Web programming or database design. A static site can be built by simply creating a few HTML pages and publishing them to a Web server.&lt;/p&gt;

&lt;p&gt;The major examples of static websites are as follows:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Documentation&lt;/li&gt;
&lt;li&gt;Developing Cache&lt;/li&gt;
&lt;li&gt;Website presentation&lt;/li&gt;
&lt;li&gt;Communication cache-scrapping buffer&lt;/li&gt;
&lt;li&gt;Forms&lt;/li&gt;
&lt;li&gt;Newsletter Contents&lt;/li&gt;
&lt;li&gt;Disaster page&lt;/li&gt;
&lt;li&gt;Recovery from disaster status&lt;/li&gt;
&lt;li&gt;Landing page/scales&lt;/li&gt;
&lt;li&gt;Blogs&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you are wondering what could be achieved with a static website, go through below link, you will be amazed(found this while surfing web randomly).&lt;br&gt;
&lt;a href="https://www.covid19india.org/"&gt;https://www.covid19india.org/&lt;/a&gt;&lt;br&gt;
Github repo: &lt;a href="https://github.com/covid19india/covid19india-react"&gt;https://github.com/covid19india/covid19india-react&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Although, there are a lot of similar/better alternatives to github pages like Netlify, but probably you may never need it.&lt;/p&gt;

&lt;p&gt;For more information on github pages: &lt;a href="https://pages.github.com/"&gt;https://pages.github.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Although there are a lot of articles already on github actions, I will also be posting an article on how to use it.&lt;/p&gt;

</description>
      <category>github</category>
      <category>webdev</category>
      <category>tutorial</category>
      <category>hosting</category>
    </item>
  </channel>
</rss>
