ca575303bf
travis build: 25 commit: 05b02f5624f2054cdf2e802f63c834162c2fe05b auto-pushed to gh-pages
135 lines
9.2 KiB
HTML
135 lines
9.2 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
|
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
|
<title>post quantum cryptography: Index Page</title>
|
|
|
|
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
|
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
|
|
|
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
|
<script type="text/javascript" src="jquery.js"></script>
|
|
<script type="text/javascript" src="search/search.js"></script>
|
|
<script type="text/javascript">
|
|
$(document).ready(function() { searchBox.OnSelectItem(0); });
|
|
</script>
|
|
|
|
</head>
|
|
<body>
|
|
<div id="top"><!-- do not remove this div! -->
|
|
|
|
|
|
<div id="titlearea">
|
|
<table cellspacing="0" cellpadding="0">
|
|
<tbody>
|
|
<tr style="height: 56px;">
|
|
|
|
|
|
<td style="padding-left: 0.5em;">
|
|
<div id="projectname">post quantum cryptography
|
|
|
|
</div>
|
|
<div id="projectbrief">Highly optimized implementation of the NTRUEncrypt algorithm</div>
|
|
</td>
|
|
|
|
|
|
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
|
|
<!-- Generated by Doxygen 1.7.6.1 -->
|
|
<script type="text/javascript">
|
|
var searchBox = new SearchBox("searchBox", "search",false,'Search');
|
|
</script>
|
|
<div id="navrow1" class="tabs">
|
|
<ul class="tablist">
|
|
<li class="current"><a href="index.html"><span>Main Page</span></a></li>
|
|
<li><a href="annotated.html"><span>Data Structures</span></a></li>
|
|
<li><a href="files.html"><span>Files</span></a></li>
|
|
<li>
|
|
<div id="MSearchBox" class="MSearchBoxInactive">
|
|
<span class="left">
|
|
<img id="MSearchSelect" src="search/mag_sel.png"
|
|
onmouseover="return searchBox.OnSearchSelectShow()"
|
|
onmouseout="return searchBox.OnSearchSelectHide()"
|
|
alt=""/>
|
|
<input type="text" id="MSearchField" value="Search" accesskey="S"
|
|
onfocus="searchBox.OnSearchFieldFocus(true)"
|
|
onblur="searchBox.OnSearchFieldFocus(false)"
|
|
onkeyup="searchBox.OnSearchFieldChange(event)"/>
|
|
</span><span class="right">
|
|
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
|
|
</span>
|
|
</div>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
<div class="header">
|
|
<div class="headertitle">
|
|
<div class="title">Index Page </div> </div>
|
|
</div><!--header-->
|
|
<div class="contents">
|
|
<div class="textblock"><dl class="author"><dt><b>Author:</b></dt><dd>hasufell</dd></dl>
|
|
<h2><a class="anchor" id="intro_sec"></a>
|
|
Introduction</h2>
|
|
<p>Highly optimized C implementation of the NTRUEncrypt algorithm, using the FLINT library.</p>
|
|
<h2><a class="anchor" id="mot"></a>
|
|
Motivation</h2>
|
|
<p>Modern quantum computers will enable us to ride extremely effective attacks on crypto algorithms like rsa. One known attack is the quantum algorithm called <a href="http://en.wikipedia.org/wiki/Shor%27s_algorithm">Shor's algorithm</a>. In the light of fast paced computer hardware development and known quantum algorithms, it is of importance to find and implement alternatives which are not vulnerable to these attacks.</p>
|
|
<p>One known alternative is called <a href="http://en.wikipedia.org/wiki/NTRUEncrypt">NTRU</a> and will be our main focus. It is lattice-based (shortest vector problem in a lattice). In fact, NTRU is a parametrised family of cryptosystems. As such it is represented by the triple (N, p, q), where N is prime, q is always larger than p and p and q are coprime. As well as four sets of polynomials: a polynomial part of the private key, a polynomial for generation of the public key, the message and a blinding value, respectively, all of degree at most N - 1. It is, in theory, very efficient, since encryption and decryption only use simple polynomial multiplication which are very fast compared to asymmetric encryption schemes.</p>
|
|
<h2><a class="anchor" id="goals"></a>
|
|
Goals</h2>
|
|
<p>Our main goal is to implement an alternative library of the NTRU algorithm in C and gather experience in cryptographic programming. Further, it may help to raise awareness of the need of quantum-secure encryption and enable us to contribute to already present implementations. It may even reveal problems of other implementations and help advancing them. It may as well help with diversity in crypto implementations, which is always a good thing. On top of that we will provide a command-line interface to our library and allow basic operations like key creation and encryption from stdin.</p>
|
|
<p>Optimizing the algorithm itself is not within our scope. However, the library may undergo heavy changes on the mathematical implementation of polynomial arithmetic, in order to optimize run-time behaviour.</p>
|
|
<h2><a class="anchor" id="algos"></a>
|
|
Algorithms</h2>
|
|
<p>Most of the algorithms in <a class="el" href="ntru__poly_8c.html" title="operations on polynomials">ntru_poly.c</a>, <a class="el" href="ntru__decrypt_8c.html" title="NTRU decryption.">ntru_decrypt.c</a>, <a class="el" href="ntru__encrypt_8c.html" title="NTRU encryption.">ntru_encrypt.c</a> and <a class="el" href="ntru__keypair_8c.html" title="key creation and operations">ntru_keypair.c</a> are based on the pseudo-code from <a href="http://www.crypto.wpi.edu/Publications/Documents/ms_corourke.pdf">Efficient NTRU Implementations by Colleen Marie O'Rourke</a>.</p>
|
|
<p>Further work is based on <a href="http://www.math.uni-hamburg.de/home/kuehn/moldenhauer-bsc-NTRUKryptosystem-final.pdf">Das NTRU-Kryptosystem von Anja Moldenhauer</a> and the official <a href="https://www.securityinnovation.com/uploads/Crypto/NTRUTech014.pdf">NTRU Cryptosystems Technical Report #14</a>.</p>
|
|
<h2><a class="anchor" id="license"></a>
|
|
License</h2>
|
|
<p><a href="https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html">LGPL-2.1</a></p>
|
|
<h2><a class="anchor" id="deps"></a>
|
|
Dependencies</h2>
|
|
<p>This library was written for Linux systems. Support for windows will not be added. \* <a href="http://www.flintlib.org">FLINT-2.4.3 or later</a> (compiled with gmp and mpfr) \* <a href="https://developer.gnome.org/glib/stable/">glib-2.0</a> \* <a href="http://www.freedesktop.org/wiki/Software/pkg-config/">pkg-config</a> (for the build only)</p>
|
|
<h2><a class="anchor" id="install_sec"></a>
|
|
Installation</h2>
|
|
<p>\* make \* make install</p>
|
|
<h2><a class="anchor" id="usage"></a>
|
|
Usage</h2>
|
|
<p>See this API doc, the public headers are in the include/ subfolder.</p>
|
|
<h2><a class="anchor" id="perf"></a>
|
|
Performance</h2>
|
|
<p>See <a href="https://github.com/hasufell/pqc/wiki/Performance-analysis">Performance Analysis on github</a>.</p>
|
|
<h2><a class="anchor" id="ref"></a>
|
|
References</h2>
|
|
<p>\* <a href="https://github.com/hasufell/pqc">This library on github</a> \* <a href="http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.25.8422&rep=rep1&type=pdf">Original NTRUEncrypt paper</a> \* <a href="http://www.crypto.wpi.edu/Publications/Documents/ms_corourke.pdf">Efficient NTRU Implementations by Colleen Marie O'Rourke</a> \* <a href="http://www.math.uni-hamburg.de/home/kuehn/moldenhauer-bsc-NTRUKryptosystem-final.pdf">Das NTRU-Kryptosystem von Anja Moldenhauer</a> \* <a href="https://www.securityinnovation.com/uploads/Crypto/NTRUTech014.pdf">NTRU Cryptosystems Technical Report #14</a> \* <a href="http://teal.gmu.edu/courses/ECE646/project/reports_2001/dsouza.pdf">The NTRU Cryptosystem: Implementation and Comparative Analysis by Rodney D'Souza</a> \* <a href="http://en.wikipedia.org/wiki/NTRUEncrypt">Wikipedia Article</a> </p>
|
|
</div></div><!-- contents -->
|
|
<!-- window showing the filter options -->
|
|
<div id="MSearchSelectWindow"
|
|
onmouseover="return searchBox.OnSearchSelectShow()"
|
|
onmouseout="return searchBox.OnSearchSelectHide()"
|
|
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
|
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Defines</a></div>
|
|
|
|
<!-- iframe showing the search results (closed by default) -->
|
|
<div id="MSearchResultsWindow">
|
|
<iframe src="javascript:void(0)" frameborder="0"
|
|
name="MSearchResults" id="MSearchResults">
|
|
</iframe>
|
|
</div>
|
|
|
|
|
|
|
|
<hr class="footer"/><address class="footer"><small>
|
|
Generated on Sun Jun 8 2014 21:44:13 for post quantum cryptography by  <a href="http://www.doxygen.org/index.html">
|
|
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
|
</a> 1.7.6.1
|
|
</small></address>
|
|
|
|
</body>
|
|
</html>
|