{"id":24633,"date":"2014-03-30T21:27:28","date_gmt":"2014-03-31T02:27:28","guid":{"rendered":"http:\/\/blogs.ams.org\/mathgradblog\/?p=24633"},"modified":"2014-04-03T09:51:45","modified_gmt":"2014-04-03T14:51:45","slug":"rsa","status":"publish","type":"post","link":"https:\/\/blogs.ams.org\/mathgradblog\/2014\/03\/30\/rsa\/","title":{"rendered":"RSA Encryption &#8211; Keeping the Internet Secure"},"content":{"rendered":"<p>&nbsp;<\/p>\n<div id=\"attachment_24637\" style=\"width: 298px\" class=\"wp-caption alignleft\"><a href=\"http:\/\/blogs.ams.org\/mathgradblog\/files\/2014\/03\/Public-Key.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-24637\" class=\"size-full wp-image-24637\" alt=\"A flowchart describing the process of generating a public and private key.  Photo acquired from Wikimedia Commons, the free media repository\" src=\"http:\/\/blogs.ams.org\/mathgradblog\/files\/2014\/03\/Public-Key.png\" width=\"288\" height=\"288\" srcset=\"https:\/\/blogs.ams.org\/mathgradblog\/files\/2014\/03\/Public-Key.png 288w, https:\/\/blogs.ams.org\/mathgradblog\/files\/2014\/03\/Public-Key-150x150.png 150w\" sizes=\"auto, (max-width: 288px) 100vw, 288px\" \/><\/a><p id=\"caption-attachment-24637\" class=\"wp-caption-text\">A flowchart describing the process of generating a public and private key. Photo acquired from Wikimedia Commons, the free media repository<\/p><\/div>\n<p>We use the Internet for many things, from reading news articles, to keeping in touch with friends on social media, to shopping from the comfort of our own homes. Many of these tasks involve sending sensitive personal information (such as credit card numbers and our home address) to complete strangers. We would like to keep this information safe, making sure no malicious third party is able to intercept our messages. RSA is a cryptosystem which is known as one of the first practicable public-key cryptosystems and is widely used for secure data transmission. RSA has stood the test of nearly 40 years of attacks, making it the algorithm of choice for encrypting Internet credit-card transactions, securing e-mail, and authenticating phone calls.<\/p>\n<p><!--more--><\/p>\n<p>One of the distinguishing techniques employed in public-key cryptography is the use of asymmetric keys. In this scheme, one key (the public key) is used to encrypt the message while a different key (the private key) is used to decrypt it. The keys are related mathematically, but the parameters are chosen so that calculating the private key from the public key is either impossible or prohibitively expensive.<\/p>\n<p>At MIT in the fall of 1976, computer scientists Ronald Rivest and Adi Shamir, along with number theorist Leonard Adleman devised the public-key encryption code that bears their initials (RSA encryption), and has been in use ever since to secure electronic transactions. The RSA algorithm was the culmination of many months of work, which all started when Rivest read a paper by Diffie and Hellman, proposing that a good public-key encryption scheme would need to be based on what they called a \u201ctrap-door one-way function.\u201d This function would be easy to compute, but hard to invert unless you knew the secret (the \u201ctrap door\u201d). Rivest and Shamir would come up with numerous number theoretic schemes to fit this \u201ctrap door\u201d idea, and then Adleman would try to poke holes in it (usually succeeding after a few minutes&#8217; thought). However, one evening Rivest called Adleman with a new idea, which Adleman agreed was a good one because it seemed that only factoring would break the algorithm. Rivest wrote up a paper about the new algorithm and sent a copy to Adleman. The authors were listed in the standard alphabetic order: Adleman, Rivest, and Shamir. Adleman objected to this ordering, however, because he stated that he had not done enough work to be listed first. Adleman consented to being listed as an author only if his name was put last, reflecting what he considered his minimal contribution. Adleman said later, \u201cI remember thinking that this is probably the least interesting paper I will ever write and no one will read it and it will appear in some obscure journal.\u201d The paper in question was published in Communications of the ACM and so the RSA (instead of the ARS) algorithm was born.<\/p>\n<p>The RSA algorithm involves three steps: key generation, encryption, and decryption. RSA involves two keys \u2013 a public key and a private key. As the names suggest, anyone can be given information about the public key, whereas the private key must be kept secret. Anyone can use the public key to encrypt a message, but only someone with knowledge of the private key can hope to decrypt the message in a reasonable amount of time. So how are these keys generated? The power and security of the RSA cryptosystem is based on the fact that the factoring problem is \u201chard.\u201d That is, it is believed that the full decryption of an RSA ciphertext is infeasible because no efficient algorithm currently exists for factoring large numbers. The keys for the RSA algorithm are generated as follows:<\/p>\n<p>1. Choose two distinct prime numbers <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=p&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"p\" class=\"latex\" \/> and <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=q&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"q\" class=\"latex\" \/>. In order for the system to be secure, the integers <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=p&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"p\" class=\"latex\" \/> and <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=q&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"q\" class=\"latex\" \/> should be chosen at random and should be of similar bit-length. To find large primes, the numbers can be chosen at random and, using one of several fast probabilistic methods, we can test their primality.<\/p>\n<p>2. Compute <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=n+%3D+pq&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"n = pq\" class=\"latex\" \/>. The product <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=n&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"n\" class=\"latex\" \/> will be used as the modulus for both the public and private keys. Its length, usually expressed in bits, is the length of the key.<\/p>\n<p>3. Compute <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=%5Cvarphi+%28n%29+%3D+%5Cvarphi+%28p%29%5Cvarphi+%28q%29+%3D+%28p-1%29%28q-1%29&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"&#92;varphi (n) = &#92;varphi (p)&#92;varphi (q) = (p-1)(q-1)\" class=\"latex\" \/>, where <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=%5Cvarphi&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"&#92;varphi\" class=\"latex\" \/> is Euler&#8217;s totient function.<\/p>\n<p>4. Choose an integer <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=e&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"e\" class=\"latex\" \/> such that <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=1+%3C+e+%3C+%5Cvarphi+%28n%29&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"1 &lt; e &lt; &#92;varphi (n)\" class=\"latex\" \/> and gcd<img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=%28e%2C+%5Cvarphi+%28n%29%29+%3D+1&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"(e, &#92;varphi (n)) = 1\" class=\"latex\" \/> (that is, <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=e&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"e\" class=\"latex\" \/> and <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=%5Cvarphi+%28n%29&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"&#92;varphi (n)\" class=\"latex\" \/> are coprime). The number <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=e&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"e\" class=\"latex\" \/> is released as the public key exponent.<\/p>\n<p>5. Determine <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=d&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"d\" class=\"latex\" \/> as <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=d+%5Cequiv+e%5E%7B-1%7D&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"d &#92;equiv e^{-1}\" class=\"latex\" \/> mod <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=%5Cvarphi+%28n%29&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"&#92;varphi (n)\" class=\"latex\" \/>. That is, <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=d&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"d\" class=\"latex\" \/> is the multiplicative inverse of <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=e&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"e\" class=\"latex\" \/> (modulo <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=%5Cvarphi+%28n%29&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"&#92;varphi (n)\" class=\"latex\" \/>). This is often computed using the extended Euclidean algorithm. The number <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=d&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"d\" class=\"latex\" \/> is kept as the private key exponent.<\/p>\n<p>The public key is formed by the pair <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=%28n%2C+e%29&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"(n, e)\" class=\"latex\" \/>, where <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=n&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"n\" class=\"latex\" \/> is called the modulus and <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=e&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"e\" class=\"latex\" \/> is called the public (or encryption) exponent. The private key is formed by the pair <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=%28n%2C+d%29&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"(n, d)\" class=\"latex\" \/>, where <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=d&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"d\" class=\"latex\" \/> is called the private (or decryption) exponent. It is imperative that the decryption exponent <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=d&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"d\" class=\"latex\" \/> is kept secret. In addition, the numbers <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=p%2C+q&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"p, q\" class=\"latex\" \/>, and <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=%5Cvarphi+%28n%29&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"&#92;varphi (n)\" class=\"latex\" \/> must also be kept private because they can be used to calculate <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=d&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"d\" class=\"latex\" \/>.<\/p>\n<p>Once the keys are determined, secure messages can now be sent. Suppose Bob would like to send Alice a message. Alice transmits her public key <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=%28n%2C+e%29&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"(n, e)\" class=\"latex\" \/> to Bob, keeping her private key secret. In order to send Alice an encrypted message, Bob first has to turn the message <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=M&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"M\" class=\"latex\" \/> into an integer <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=m&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"m\" class=\"latex\" \/>, such that <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=0+%5Cleq+m+%3C+n&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"0 &#92;leq m &lt; n\" class=\"latex\" \/>. This is done by using a previously agreed-upon reversible protocol known as a padding scheme. Bob then computes the ciphertext <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=c&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"c\" class=\"latex\" \/> corresponding to his message. The ciphertext can be found by computing <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=c+%5Cequiv+m%5E%7Be%7D&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"c &#92;equiv m^{e}\" class=\"latex\" \/> (mod <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=n&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"n\" class=\"latex\" \/>). Bob then transmits the encoded message <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=c&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"c\" class=\"latex\" \/> to Alice. In order to recover the message, Alice uses her private key, computing <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=m+%5Cequiv+c%5E%7Bd%7D&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"m &#92;equiv c^{d}\" class=\"latex\" \/> (mod <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=n&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"n\" class=\"latex\" \/>). Given <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=m&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"m\" class=\"latex\" \/>, she can recover the original message <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=M&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"M\" class=\"latex\" \/> by reversing the padding scheme.<\/p>\n<p>We will now look at a small (and insecure) example. Alice would like to create a public and private key to use for her secure internet transactions. In order to create these keys, she chooses <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=p+%3D+101&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"p = 101\" class=\"latex\" \/> and <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=q+%3D+113&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"q = 113\" class=\"latex\" \/>. Next, she computes <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=n+%3D+pq+%3D+11413&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"n = pq = 11413\" class=\"latex\" \/> as well as the totient <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=%5Cvarphi+%28n%29+%3D+%28p-1%29%28q-1%29+%3D+11200&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"&#92;varphi (n) = (p-1)(q-1) = 11200\" class=\"latex\" \/>. In order to find the public key exponent, Alice must choose a number <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=1+%3C+e+%3C+11200&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"1 &lt; e &lt; 11200\" class=\"latex\" \/> which is also coprime to 11200. For this example, Alice will choose <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=e+&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"e \" class=\"latex\" \/> = 3533. Finally, Alice must compute <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=d+%5Cequiv+e%5E%7B-1%7D&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"d &#92;equiv e^{-1}\" class=\"latex\" \/> (mod <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=%5Cvarphi+%28n%29&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"&#92;varphi (n)\" class=\"latex\" \/>) = 6597. Alice publishes the public key pair <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=%28n+%3D+11413%2C+e+%3D+3533%29&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"(n = 11413, e = 3533)\" class=\"latex\" \/>, while keeping <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=p%2C+q%2C&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"p, q,\" class=\"latex\" \/> and <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=d&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"d\" class=\"latex\" \/> private. Now suppose that Bob would like to send the message <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=m+%3D+9726&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"m = 9726\" class=\"latex\" \/> to Alice. Bob would compute<\/p>\n<p style=\"text-align: center\"><img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=c+%5Cequiv+9726%5E%7B3533%7D&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"c &#92;equiv 9726^{3533}\" class=\"latex\" \/> (mod <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=11413&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"11413\" class=\"latex\" \/>) = 5761,<\/p>\n<p>which he would then send to Alice. After receiving the ciphertext <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=c&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"c\" class=\"latex\" \/>, Alice can decode the message using her private key<\/p>\n<p style=\"text-align: center\"><img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=m+%5Cequiv+5761%5E%7B6597%7D&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"m &#92;equiv 5761^{6597}\" class=\"latex\" \/> (mod <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=11413&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"11413\" class=\"latex\" \/>) = 9726.<\/p>\n<p>The RSA algorithm has remained a secure scheme for sending encrypted messages for almost 40 years, earning Rivest, Shamir, and Adleman the Association for Computing Machinery&#8217;s 2002 Alan Turing Award, among one of the highest honors in computer science. Currently, the only way to completely break the RSA cryptosystem in use today (which is slightly more sophisticated than that described here) is to factor the modulus <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=n&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"n\" class=\"latex\" \/>. With the ability to recover the prime factors <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=p&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"p\" class=\"latex\" \/> and <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=q&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"q\" class=\"latex\" \/>, an attacker can compute the secret exponent <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=d&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"d\" class=\"latex\" \/> from the public key <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=%28n%2Ce%29&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"(n,e)\" class=\"latex\" \/>. Once they have the secret exponent, the attacker can decrypt any message sent using the public key. What keeps RSA safe from such an attack is the fact that no polynomial-time algorithm for factoring large integers on a classical computer has been found yet. However, it also has not been proven that no such algorithm exists. As of 2010, the largest known number factored by a general-purpose factoring algorithm was 768 bits long, using a state-of-the-art distributed implementation. RSA keys are typically 1024 to 2048 bits long, though some experts believe that 1024-bit keys could be broken in the near future. It is generally believed that 4096-bit keys are unlikely to be broken in the foreseeable future, meaning that RSA should remain secure as long as <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=n&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"n\" class=\"latex\" \/> is chosen to be sufficiently large. It is currently recommended that <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=n&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"n\" class=\"latex\" \/> be at least 2048 bits long.<\/p>\n<p>In 1994, Peter Shor showed that a quantum computer could be used to factor a number <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=n&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"n\" class=\"latex\" \/> in polynomial time, thus effectively breaking RSA. Stay tuned for my next article where we will look at Shor&#8217;s algorithm in depth!<\/p>\n<p>&nbsp;<\/p>\n<p>Sources:<\/p>\n<p>Robinson, Sara. \u201cStill Guarding Secrets after Years of Attacks, RSA Earns Accolades for its Founders.\u201d SIAM News, Volume 36, Number 5, June 2003.<\/p>\n<p>R. L. Rivest, A. Shamir, and L. Adleman. 1978. A method for obtaining digital signatures and public-key cryptosystems. Commun. ACM 21, 2 (February 1978), 120-126. DOI=10.1145\/359340.359342 http:\/\/doi.acm.org\/10.1145\/359340.359342<\/p>\n<div style=\"margin-top: 0px; margin-bottom: 0px;\" class=\"sharethis-inline-share-buttons\" ><\/div>","protected":false},"excerpt":{"rendered":"<p>&nbsp; We use the Internet for many things, from reading news articles, to keeping in touch with friends on social media, to shopping from the comfort of our own homes. Many of these tasks involve sending sensitive personal information (such &hellip; <a href=\"https:\/\/blogs.ams.org\/mathgradblog\/2014\/03\/30\/rsa\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n<div style=\"margin-top: 0px; margin-bottom: 0px;\" class=\"sharethis-inline-share-buttons\" data-url=https:\/\/blogs.ams.org\/mathgradblog\/2014\/03\/30\/rsa\/><\/div>\n","protected":false},"author":68,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[15,16,21],"tags":[],"class_list":["post-24633","post","type-post","status-publish","format-standard","hentry","category-mathematics-in-society","category-mathematics-online","category-technology-math"],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/s3gbww-rsa","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/blogs.ams.org\/mathgradblog\/wp-json\/wp\/v2\/posts\/24633","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.ams.org\/mathgradblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.ams.org\/mathgradblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.ams.org\/mathgradblog\/wp-json\/wp\/v2\/users\/68"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.ams.org\/mathgradblog\/wp-json\/wp\/v2\/comments?post=24633"}],"version-history":[{"count":14,"href":"https:\/\/blogs.ams.org\/mathgradblog\/wp-json\/wp\/v2\/posts\/24633\/revisions"}],"predecessor-version":[{"id":24651,"href":"https:\/\/blogs.ams.org\/mathgradblog\/wp-json\/wp\/v2\/posts\/24633\/revisions\/24651"}],"wp:attachment":[{"href":"https:\/\/blogs.ams.org\/mathgradblog\/wp-json\/wp\/v2\/media?parent=24633"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.ams.org\/mathgradblog\/wp-json\/wp\/v2\/categories?post=24633"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.ams.org\/mathgradblog\/wp-json\/wp\/v2\/tags?post=24633"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}