|
|
Subscribe / Log in / New account

Security

An introduction to Elliptic Curve Cryptography

March 8, 2006

This article was contributed by Jake Edge.

Elliptic Curve Cryptography (ECC) has been gaining momentum as a replacement for RSA public key cryptography largely based on its efficiency, but also because the US National Security Agency (NSA) included it, while excluding RSA, from its Suite B cryptography recommendations. Suite B is a set of algorithms that the NSA recommends for use in protecting both classified and unclassified US government information and systems.

Public key cryptography is the basis for tools like ssh as well as Secure Sockets Layer (SSL) for encrypting web traffic. For readers who would like more information, a nice introduction to public key cryptography and the RSA algorithm can be found on Wikipedia.

ECC is based on some very deep math involving elliptic curves in a finite field. It relies on the difficulty of solving the Elliptic Curve Discrete Logarithm Problem (ECDLP) in much the same way that RSA depends on the difficulty of factoring the product of two large primes. The best known method for solving ECDLP is fully exponential, whereas the number field sieve (for factoring) is sub-exponential. This allows ECC to use drastically smaller keys to provide the equivalent security; a 160-bit ECC key is equivalent to a 1024-bit RSA key.

Smaller key sizes lead to faster processing, which is very interesting to folks that are implementing encryption on small, mobile devices with limited resources in terms of power, CPU and memory. It is also very desirable for large web servers that will be handling many encrypted sessions. These are the technical considerations driving adoption. The NSA's recommendation makes it very attractive to companies that sell encryption products to the government and many non-governmental entities will also want products that implement ECC.

In order to use elliptic curves as part of a public key cryptosystem, both parties must agree on a set of domain parameters that fully specify the curve that is being used. Various groups, notably the US National Institute for Standards and Technology (NIST) and the Standards for Efficient Cryptography Group (SECG) have recommendations for the domain parameters to be used for various key sizes. The Internet Engineering Task Force (IETF) also has a draft specification for adding ECC to SSL/TLS.

Sun Microsystems has donated ECC code to OpenSSL and the Network Security Services (NSS) library; this allows the Apache web server and Mozilla browsers (and many other programs) to use ECC.

Unfortunately, as with RSA before its patent expired, the ECC landscape is littered with patent claims; some of dubious enforceability due to prior art. Sun claims patents on ECC technology, but has provided a "patent peace" provision in its license that states that it will not enforce its patent claims and asks that anyone holding patents associated with the code not enforce them against Sun.

The wild card in the ECC patent arena seems to be Certicom which claims a large number of ECC patents and has not made a clear statement of its intentions with regard to open source implementations. The NSA licensed Certicom's patents for $25 million to allow them and their suppliers to use ECC, lending some credence to at least some of the Certicom patents. Other companies also have patents on various pieces of ECC technology.

As is often the case with patents, it is well nigh impossible to determine what the patents cover and if an implementation infringes without going to court. Ironically, the clearest description of what is and is not patented is an RSA Laboratories FAQ entry:

In all of these cases, it is the implementation technique that is patented, not the prime or representation, and there are alternative, compatible implementation techniques that are not covered by the patents.

Of course, this is not legal advice from RSA and may or may not be how it is interpreted by the courts. We will all have to wait and see how it plays out if one or more of the patent holders decides to sue.

[The author wishes to thank his employer, Privacy Networks, for sending him to the RSA 2006 conference which inspired this article.]

Comments (7 posted)

New vulnerabilities

bmv: integer overflow

Package(s):bmv CVE #(s):CVE-2005-3278
Created:March 2, 2006 Updated:March 8, 2006
Description: The bmv PostScript viewer has an integer overflow vulnerability. If a specially crafted PostScript file is read by bmv, it may be possible to execute arbitrary code.
Alerts:
Debian DSA-981-1 bmv 2006-02-26

Comments (none posted)

flex: buffer overflow

Package(s):flex CVE #(s):CVE-2006-0459
Created:March 7, 2006 Updated:March 28, 2006
Description: Chris Moore discovered a buffer overflow in a particular class of lexicographical scanners generated by flex. This could be exploited to execute arbitrary code by processing specially crafted user-defined input to an application that uses a flex scanner for parsing.
Alerts:
Debian DSA-1020-1 flex 2006-03-28
Gentoo 200603-07 flex 2006-03-10
Ubuntu USN-260-1 flex 2006-03-06

Comments (none posted)

freeciv: denial of service

Package(s):freeciv CVE #(s):CVE-2006-0047
Created:March 8, 2006 Updated:March 16, 2006
Description: The freeciv "civserver" application is susceptible to a denial of service vulnerability.
Alerts:
Gentoo 200603-11 freeciv 2006-03-16
Debian DSA-994-1 freeciv 2006-03-13
Mandriva MDKSA-2006:053 freeciv 2006-03-07

Comments (none posted)

initscripts: privilege escalation

Package(s):initscripts CVE #(s):CVE-2005-3629
Created:March 7, 2006 Updated:March 15, 2006
Description: A bug was found in the way initscripts handled various environment variables when the /sbin/service command is run. It is possible for a local user with permissions to execute /sbin/service via sudo to execute arbitrary commands as the 'root' user.
Alerts:
Red Hat RHSA-2006:0015-01 initscripts 2006-03-15
Red Hat RHSA-2006:0016-01 initscripts 2006-03-07

Comments (none posted)

irssi-text: denial of service

Package(s):irssi-text CVE #(s):CVE-2006-0458
Created:March 2, 2006 Updated:March 8, 2006
Description: irssi-text has a remote denial of service vulnerability that is caused by incomplete verification of arguments by the DCC ACCEPT command handler. A remote attacker can crash irssi and cause a denial of service.
Alerts:
Ubuntu USN-259-1 irssi-text 2006-03-01

Comments (none posted)

kernel: multiple vulnerabilities

Package(s):kernel CVE #(s):CVE-2006-0741 CVE-2006-0555
Created:March 2, 2006 Updated:March 23, 2006
Description: The Linux kernel has multiple vulnerabilities including a sanity check problem with sys_mbind that can lead to a local denial of service, an ELF vulnerability that can crash Intel EM64T systems and an NFS client panic problem that can be triggered by direct I/O from a local user.
Alerts:
Mandriva MDKSA-2006:059 kernel 2006-03-22
Ubuntu USN-263-1 linux-source-2.6.8.1/-2.6.10/-2.6.12 2006-03-13
Trustix TSLSA-2006-0012 kernel mailman 2006-03-10
Fedora FEDORA-2006-131 kernel 2006-03-02

Comments (none posted)

Mozilla Thunderbird: remote code execution and DoS

Package(s):mozilla-thunderbird CVE #(s):CVE-2006-0884
Created:March 3, 2006 Updated:May 4, 2006
Description: The WYSIWYG rendering engine in Mozilla Thunderbird 1.0.7 and earlier allows user-complicit attackers to bypass javascript security settings and obtain sensitive information or cause a crash via an e-mail containing a javascript URI in the SRC attribute of an IFRAME tag, which is executed when the user edits the e-mail.
Alerts:
Debian DSA-1051-1 mozilla-thunderbird 2006-05-04
Mandriva MDKSA-2006:052 mozilla-thunderbird 2006-03-02

Comments (1 posted)

WordPress: SQL injection

Package(s):wordpress CVE #(s):
Created:March 6, 2006 Updated:March 8, 2006
Description: Patrik Karlsson reported that WordPress 1.5.2 makes use of an insufficiently filtered User Agent string in SQL queries related to comments posting. This vulnerability was already fixed in the 2.0-series of WordPress.
Alerts:
Gentoo 200603-01 wordpress 2006-03-04

Comments (none posted)

zoo: stack-based buffer overflow

Package(s):zoo CVE #(s):CVE-2006-0855
Created:March 7, 2006 Updated:March 16, 2006
Description: Stack-based buffer overflow in the fullpath function in misc.c for zoo 2.10 and earlier allows user-complicit attackers to execute arbitrary code via a crafted ZOO file that causes the combine function to return a longer string than expected.
Alerts:
Gentoo 200603-12 zoo 2006-03-16
Debian DSA-991-1 zoo 2006-03-10
Gentoo 200603-05 zoo 2006-03-06

Comments (none posted)

Page editor: Jonathan Corbet
Next page: Kernel development>>


Copyright © 2006, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds