<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://debianws.lexgopc.com/wiki143/index.php?action=history&amp;feed=atom&amp;title=GGH_encryption_scheme</id>
	<title>GGH encryption scheme - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://debianws.lexgopc.com/wiki143/index.php?action=history&amp;feed=atom&amp;title=GGH_encryption_scheme"/>
	<link rel="alternate" type="text/html" href="http://debianws.lexgopc.com/wiki143/index.php?title=GGH_encryption_scheme&amp;action=history"/>
	<updated>2026-05-14T23:07:20Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>http://debianws.lexgopc.com/wiki143/index.php?title=GGH_encryption_scheme&amp;diff=7113840&amp;oldid=prev</id>
		<title>imported&gt;WikiCleanerBot: v2.05b - Bot T20 CW#61 - Fix errors for CW project (Reference before punctuation)</title>
		<link rel="alternate" type="text/html" href="http://debianws.lexgopc.com/wiki143/index.php?title=GGH_encryption_scheme&amp;diff=7113840&amp;oldid=prev"/>
		<updated>2025-06-28T05:49:28Z</updated>

		<summary type="html">&lt;p&gt;v2.05b - &lt;a href=&quot;/wiki143/index.php?title=User:WikiCleanerBot&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;User:WikiCleanerBot (page does not exist)&quot;&gt;Bot T20 CW#61&lt;/a&gt; - Fix errors for &lt;a href=&quot;/wiki143/index.php?title=WP:WCW&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;WP:WCW (page does not exist)&quot;&gt;CW project&lt;/a&gt; (Reference before punctuation)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Short description|Lattice-based cryptosystem}}&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;Goldreich–Goldwasser–Halevi (GGH)&amp;#039;&amp;#039;&amp;#039; [[Lattice-based cryptography|lattice-based]] [[cryptosystem]] is a broken [[Public-key cryptography|asymmetric]] cryptosystem based on [[Lattice (group)|lattices]].  There is also a [[GGH signature scheme]] which hasn&amp;#039;t been broken as of 2024.&lt;br /&gt;
&lt;br /&gt;
The Goldreich–Goldwasser–Halevi (GGH) cryptosystem makes use of the fact that the [[Lattice problems|closest vector problem]] can be a hard problem. This system was published in 1997 by  [[Oded Goldreich]], [[Shafi Goldwasser]], and [[Shai Halevi]], and uses a [[trapdoor function|trapdoor one-way function]] which relies on the difficulty of [[lattice reduction]]. The idea included in this trapdoor function is that, given any basis for a lattice, it is easy to generate a vector which is close to a lattice point, for example taking a lattice point and adding a small error vector. But to return from this erroneous vector to the original lattice point a special basis is needed.&lt;br /&gt;
&lt;br /&gt;
The GGH encryption scheme was cryptanalyzed (broken) in 1999 by {{ill|Phong Q. Nguyen|fr|Phong Nguyen}}. Nguyen and [[Oded Regev (computer scientist)|Oded Regev]] had cryptanalyzed the related [[GGH signature scheme]] in 2006.&lt;br /&gt;
&lt;br /&gt;
== Operation ==&lt;br /&gt;
GGH involves a &amp;#039;&amp;#039;private key&amp;#039;&amp;#039; and a &amp;#039;&amp;#039;public key&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
The private key is a basis &amp;lt;math&amp;gt; B &amp;lt;/math&amp;gt; of a lattice &amp;lt;math&amp;gt; L &amp;lt;/math&amp;gt; with good properties (such as short [[Lattice_reduction#Nearly_Orthogonal|nearly orthogonal]] vectors) and a [[unimodular matrix]] &amp;lt;math&amp;gt;U&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The public key is another basis of the lattice &amp;lt;math&amp;gt;L&amp;lt;/math&amp;gt; of the form &amp;lt;math&amp;gt;B&amp;#039;=UB&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
For some chosen M, the message space consists of the vector &amp;lt;math&amp;gt;(m_1,..., m_n)&amp;lt;/math&amp;gt; in the range &amp;lt;math&amp;gt;-M &amp;lt;m_i &amp;lt; M&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Encryption ===&lt;br /&gt;
Given a message &amp;lt;math&amp;gt;m = (m_1,..., m_n)&amp;lt;/math&amp;gt;, error &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt;, and a&lt;br /&gt;
public key &amp;lt;math&amp;gt;B&amp;#039;&amp;lt;/math&amp;gt; compute&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;math&amp;gt;v = \sum m_i b_i&amp;#039;&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In matrix notation this is&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;math&amp;gt;v=m\cdot B&amp;#039;&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Remember &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; consists of integer values, and &amp;lt;math&amp;gt;b&amp;#039;&amp;lt;/math&amp;gt; is a lattice point, so v is also a lattice point. The ciphertext is then&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;math&amp;gt;c=v+e=m \cdot B&amp;#039; + e&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Decryption ===&lt;br /&gt;
To decrypt the ciphertext one computes&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;math&amp;gt; c \cdot B^{-1} = (m\cdot B^\prime +e)B^{-1} = m\cdot U\cdot B\cdot B^{-1} + e\cdot B^{-1} = m\cdot U + e\cdot B^{-1}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Babai rounding technique will be used to remove the term &amp;lt;math&amp;gt;e \cdot B^{-1}&amp;lt;/math&amp;gt; as long as it is small enough. Finally compute&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;math&amp;gt; m = m \cdot U \cdot U^{-1} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to get the message.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
Let &amp;lt;math&amp;gt;L \subset \mathbb{R}^2&amp;lt;/math&amp;gt; be a lattice with the basis &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt; and its inverse &amp;lt;math&amp;gt;B^{-1}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;math&amp;gt; B=  \begin{pmatrix}&lt;br /&gt;
 7 &amp;amp; 0 \\ 0 &amp;amp; 3 \\      &lt;br /&gt;
     \end{pmatrix}&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;B^{-1}=  \begin{pmatrix}&lt;br /&gt;
 \frac{1}{7} &amp;amp; 0 \\ 0 &amp;amp; \frac{1}{3} \\      &lt;br /&gt;
     \end{pmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;math&amp;gt;U = \begin{pmatrix}&lt;br /&gt;
         2 &amp;amp; 3 \\ 3 &amp;amp;5\\&lt;br /&gt;
        \end{pmatrix}&amp;lt;/math&amp;gt; and&lt;br /&gt;
: &amp;lt;math&amp;gt;U^{-1} = \begin{pmatrix}&lt;br /&gt;
         5 &amp;amp; -3 \\ -3 &amp;amp;2\\&lt;br /&gt;
        \end{pmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
this gives&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;math&amp;gt;B&amp;#039; = U B = \begin{pmatrix}&lt;br /&gt;
            14 &amp;amp; 9 \\ 21 &amp;amp; 15 \\&lt;br /&gt;
           \end{pmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Let the message be &amp;lt;math&amp;gt;m = (3, -7)&amp;lt;/math&amp;gt; and the error vector &amp;lt;math&amp;gt;e = (1, -1)&amp;lt;/math&amp;gt;. Then the ciphertext is&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;math&amp;gt;c = m B&amp;#039;+e=(-104, -79).\,&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To decrypt one must compute&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;math&amp;gt;c B^{-1} = \left( \frac{-104}{7}, \frac{-79}{3}\right).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is rounded to &amp;lt;math&amp;gt;(-15, -26)&amp;lt;/math&amp;gt; and the message is recovered with&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;math&amp;gt;m= (-15, -26) U^{-1} = (3, -7).\,&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Security of the scheme ==&lt;br /&gt;
In 1999, Nguyen &amp;lt;ref&amp;gt;Phong Nguyen. &amp;#039;&amp;#039;Cryptanalysis of the Goldreich-Goldwasser-Halevi Cryptosystem from Crypto &amp;#039;97&amp;#039;&amp;#039;. CRYPTO, 1999&amp;lt;/ref&amp;gt;  showed that the GGH encryption scheme has a flaw in the design. He showed that every ciphertext reveals information about the plaintext and that the problem of decryption could be turned into a special [[closest vector problem]] much easier to solve than the general CVP.&lt;br /&gt;
&lt;br /&gt;
== Implementations ==&lt;br /&gt;
* [https://github.com/TheGaBr0/GGH TheGaBr0/GGH] – A Python implementation of the GGH cryptosystem and its optimized variant GGH-HNF.&amp;lt;ref&amp;gt;Micciancio, Daniele. (2001). Improving Lattice Based Cryptosystems Using the Hermite Normal Form. LNCS. 2146. 10.1007/3-540-44670-2_11.&amp;lt;/ref&amp;gt; The library includes key generation, encryption, decryption, basic lattice reduction techniques, and demonstrations of known attacks. It is intended for educational and research purposes and is available via [https://pypi.org/project/GGH-crypto/ PyPI].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
{{Reflist}}&lt;br /&gt;
&lt;br /&gt;
== Bibliography ==&lt;br /&gt;
*{{cite book |first1=Oded |last1=Goldreich |first2=Shafi |last2=Goldwasser |first3=Shai |last3=Halevi |chapter=Public-key cryptosystems from lattice reduction problems |title=CRYPTO &amp;#039;97: Proceedings of the 17th Annual International Cryptology Conference on Advances in Cryptology |pages=112–131 |location=London  |year=1997 |publisher=Springer-Verlag }}&lt;br /&gt;
*{{cite book |first=Phong Q. |last=Nguyen |chapter-url=https://www.di.ens.fr/~pnguyen/pub_Ng99.htm |chapter=Cryptanalysis of the Goldreich–Goldwasser–Halevi Cryptosystem from Crypto ’97 |title=CRYPTO &amp;#039;99: Proceedings of the 19th Annual International Cryptology Conference on Advances in Cryptology |pages=288–304 |location=London |year=1999 |publisher=Springer-Verlag }}&lt;br /&gt;
* {{cite journal | last1 = Nguyen | first1 = Phong Q. | last2 = Regev | first2 = Oded | title = Learning a Parallelepiped: Cryptanalysis of GGH and NTRU Signatures| journal = Journal of Cryptology | date = 11 November 2008 | volume = 22 | issue = 2 | pages = 139–160 | issn = 0933-2790 | eissn = 1432-1378 | doi = 10.1007/s00145-008-9031-0 | pmid = | s2cid = 2164840 | url = https://iacr.org/archive/eurocrypt2006/40040273/40040273.pdf}}&amp;lt;small&amp;gt;Preliminary version in EUROCRYPT 2006.&amp;lt;/small&amp;gt;&lt;br /&gt;
*{{cite book |last=Micciancio |first=Daniele |chapter=Improving Lattice Based Cryptosystems Using the Hermite Normal Form |title=Cryptography and Lattices |series=Lecture Notes in Computer Science |volume=2146 |pages=126–145 |year=2001 |publisher=Springer |doi=10.1007/3-540-44670-2_11 }}&lt;br /&gt;
&lt;br /&gt;
[[Category:Lattice-based cryptography]]&lt;br /&gt;
[[Category:Public-key encryption schemes]]&lt;br /&gt;
[[Category:Broken cryptography algorithms]]&lt;/div&gt;</summary>
		<author><name>imported&gt;WikiCleanerBot</name></author>
	</entry>
</feed>