├── .gitignore
├── CNAME
├── Gemfile
├── LICENSE
├── README.md
├── _config.yml
├── _includes
├── head-custom-google-analytics.html
└── head-custom.html
├── _layouts
└── default.html
├── _sass
├── cayman.scss
├── jekyll-theme-cayman.scss
├── normalize.scss
├── rouge-github.scss
└── variables.scss
├── assets
└── css
│ └── style.scss
├── club.md
├── docs
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
└── SUPPORT.md
├── index.md
├── jekyll-theme-cayman.gemspec
├── lattices.bib
├── policies.md
├── script
├── bootstrap
├── cibuild
├── release
├── server
└── validate-html
└── thumbnail.png
/.gitignore:
--------------------------------------------------------------------------------
1 | _site
2 | .sass-cache
3 | Gemfile.lock
4 | *.gem
5 | .jekyll-cache
6 | .jekyll-cache
7 |
--------------------------------------------------------------------------------
/CNAME:
--------------------------------------------------------------------------------
1 | thelatticeclub.com
--------------------------------------------------------------------------------
/Gemfile:
--------------------------------------------------------------------------------
1 | # frozen_string_literal: true
2 |
3 | source "https://rubygems.org"
4 |
5 | gemspec
6 |
7 | gem "webrick", "~> 1.7"
8 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | CC0 1.0 Universal
2 |
3 | Statement of Purpose
4 |
5 | The laws of most jurisdictions throughout the world automatically confer
6 | exclusive Copyright and Related Rights (defined below) upon the creator and
7 | subsequent owner(s) (each and all, an "owner") of an original work of
8 | authorship and/or a database (each, a "Work").
9 |
10 | Certain owners wish to permanently relinquish those rights to a Work for the
11 | purpose of contributing to a commons of creative, cultural and scientific
12 | works ("Commons") that the public can reliably and without fear of later
13 | claims of infringement build upon, modify, incorporate in other works, reuse
14 | and redistribute as freely as possible in any form whatsoever and for any
15 | purposes, including without limitation commercial purposes. These owners may
16 | contribute to the Commons to promote the ideal of a free culture and the
17 | further production of creative, cultural and scientific works, or to gain
18 | reputation or greater distribution for their Work in part through the use and
19 | efforts of others.
20 |
21 | For these and/or other purposes and motivations, and without any expectation
22 | of additional consideration or compensation, the person associating CC0 with a
23 | Work (the "Affirmer"), to the extent that he or she is an owner of Copyright
24 | and Related Rights in the Work, voluntarily elects to apply CC0 to the Work
25 | and publicly distribute the Work under its terms, with knowledge of his or her
26 | Copyright and Related Rights in the Work and the meaning and intended legal
27 | effect of CC0 on those rights.
28 |
29 | 1. Copyright and Related Rights. A Work made available under CC0 may be
30 | protected by copyright and related or neighboring rights ("Copyright and
31 | Related Rights"). Copyright and Related Rights include, but are not limited
32 | to, the following:
33 |
34 | i. the right to reproduce, adapt, distribute, perform, display, communicate,
35 | and translate a Work;
36 |
37 | ii. moral rights retained by the original author(s) and/or performer(s);
38 |
39 | iii. publicity and privacy rights pertaining to a person's image or likeness
40 | depicted in a Work;
41 |
42 | iv. rights protecting against unfair competition in regards to a Work,
43 | subject to the limitations in paragraph 4(a), below;
44 |
45 | v. rights protecting the extraction, dissemination, use and reuse of data in
46 | a Work;
47 |
48 | vi. database rights (such as those arising under Directive 96/9/EC of the
49 | European Parliament and of the Council of 11 March 1996 on the legal
50 | protection of databases, and under any national implementation thereof,
51 | including any amended or successor version of such directive); and
52 |
53 | vii. other similar, equivalent or corresponding rights throughout the world
54 | based on applicable law or treaty, and any national implementations thereof.
55 |
56 | 2. Waiver. To the greatest extent permitted by, but not in contravention of,
57 | applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and
58 | unconditionally waives, abandons, and surrenders all of Affirmer's Copyright
59 | and Related Rights and associated claims and causes of action, whether now
60 | known or unknown (including existing as well as future claims and causes of
61 | action), in the Work (i) in all territories worldwide, (ii) for the maximum
62 | duration provided by applicable law or treaty (including future time
63 | extensions), (iii) in any current or future medium and for any number of
64 | copies, and (iv) for any purpose whatsoever, including without limitation
65 | commercial, advertising or promotional purposes (the "Waiver"). Affirmer makes
66 | the Waiver for the benefit of each member of the public at large and to the
67 | detriment of Affirmer's heirs and successors, fully intending that such Waiver
68 | shall not be subject to revocation, rescission, cancellation, termination, or
69 | any other legal or equitable action to disrupt the quiet enjoyment of the Work
70 | by the public as contemplated by Affirmer's express Statement of Purpose.
71 |
72 | 3. Public License Fallback. Should any part of the Waiver for any reason be
73 | judged legally invalid or ineffective under applicable law, then the Waiver
74 | shall be preserved to the maximum extent permitted taking into account
75 | Affirmer's express Statement of Purpose. In addition, to the extent the Waiver
76 | is so judged Affirmer hereby grants to each affected person a royalty-free,
77 | non transferable, non sublicensable, non exclusive, irrevocable and
78 | unconditional license to exercise Affirmer's Copyright and Related Rights in
79 | the Work (i) in all territories worldwide, (ii) for the maximum duration
80 | provided by applicable law or treaty (including future time extensions), (iii)
81 | in any current or future medium and for any number of copies, and (iv) for any
82 | purpose whatsoever, including without limitation commercial, advertising or
83 | promotional purposes (the "License"). The License shall be deemed effective as
84 | of the date CC0 was applied by Affirmer to the Work. Should any part of the
85 | License for any reason be judged legally invalid or ineffective under
86 | applicable law, such partial invalidity or ineffectiveness shall not
87 | invalidate the remainder of the License, and in such case Affirmer hereby
88 | affirms that he or she will not (i) exercise any of his or her remaining
89 | Copyright and Related Rights in the Work or (ii) assert any associated claims
90 | and causes of action with respect to the Work, in either case contrary to
91 | Affirmer's express Statement of Purpose.
92 |
93 | 4. Limitations and Disclaimers.
94 |
95 | a. No trademark or patent rights held by Affirmer are waived, abandoned,
96 | surrendered, licensed or otherwise affected by this document.
97 |
98 | b. Affirmer offers the Work as-is and makes no representations or warranties
99 | of any kind concerning the Work, express, implied, statutory or otherwise,
100 | including without limitation warranties of title, merchantability, fitness
101 | for a particular purpose, non infringement, or the absence of latent or
102 | other defects, accuracy, or the present or absence of errors, whether or not
103 | discoverable, all to the greatest extent permissible under applicable law.
104 |
105 | c. Affirmer disclaims responsibility for clearing rights of other persons
106 | that may apply to the Work or any use thereof, including without limitation
107 | any person's Copyright and Related Rights in the Work. Further, Affirmer
108 | disclaims responsibility for obtaining any necessary consents, permissions
109 | or other rights required for any use of the Work.
110 |
111 | d. Affirmer understands and acknowledges that Creative Commons is not a
112 | party to this document and has no duty or obligation with respect to this
113 | CC0 or use of the Work.
114 |
115 | For more information, please see
116 |
117 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Lattice-based cryptography
2 |
3 | Welcome to our repo of Reference repository on Lattice-based Cryptography!
4 |
5 | ## Usage
6 |
7 | To build locally run:
8 |
9 | ```
10 | bundle install
11 | bundle exec jekyll server
12 | ```
13 |
14 | ## Want to collaborate?
15 |
16 | You can propose an edit by sending a PR. (Note that after making your edits, there are 3 confirmations to click through in order to create the “pull request” in the Git repository underlying this page.)
17 |
18 | If you don’t feel confident or skilled to directly contribute through github, please feel free to reach out any of the existing contributors with your ideas and comments on how to improve this page.
19 |
20 | Thank you!
21 |
22 | ## Contact
23 |
24 | You can contact us over twitter at: @claucece or @octaviopk
25 |
--------------------------------------------------------------------------------
/_config.yml:
--------------------------------------------------------------------------------
1 | title: Lattice-based Cryptography
2 | description: Reference repository on Lattice-based Cryptography
3 | show_downloads: false
4 | google_analytics:
5 | theme: jekyll-theme-cayman
--------------------------------------------------------------------------------
/_includes/head-custom-google-analytics.html:
--------------------------------------------------------------------------------
1 | {% if site.google_analytics %}
2 |
10 | {% endif %}
11 |
--------------------------------------------------------------------------------
/_includes/head-custom.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | {% include head-custom-google-analytics.html %}
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/_layouts/default.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | {% seo %}
7 |
8 |
9 |
10 |
11 |
12 |
13 | {% include head-custom.html %}
14 |
15 |
16 | Skip to the content.
17 |
18 |
29 |
30 |
31 | {{ content }}
32 |
33 |
37 |
38 |
39 |
40 |
--------------------------------------------------------------------------------
/_sass/cayman.scss:
--------------------------------------------------------------------------------
1 | // Placeholder file. If your site uses
2 | // @import "{{ site.theme }}";
3 | // Then using this theme with jekyll-remote-theme will work fine.
4 | @import "jekyll-theme-cayman";
5 |
--------------------------------------------------------------------------------
/_sass/jekyll-theme-cayman.scss:
--------------------------------------------------------------------------------
1 | @import "normalize";
2 | @import "rouge-github";
3 | @import "variables";
4 | @import url('https://fonts.googleapis.com/css?family=Open+Sans:400,700&display=swap');
5 | @import url('https://fonts.googleapis.com/css2?family=Bebas+Neue&display=swap');
6 |
7 | @mixin large {
8 | @media screen and (min-width: #{$large-breakpoint}) {
9 | @content;
10 | }
11 | }
12 |
13 | @mixin medium {
14 | @media screen and (min-width: #{$medium-breakpoint}) and (max-width: #{$large-breakpoint}) {
15 | @content;
16 | }
17 | }
18 |
19 | @mixin small {
20 | @media screen and (max-width: #{$medium-breakpoint}) {
21 | @content;
22 | }
23 | }
24 |
25 | * {
26 | box-sizing: border-box;
27 | }
28 |
29 | body {
30 | padding: 0;
31 | margin: 0;
32 | font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
33 | font-size: 16px;
34 | line-height: 1.5;
35 | color: $body-text-color;
36 | }
37 |
38 | #skip-to-content {
39 | height: 1px;
40 | width: 1px;
41 | position: absolute;
42 | overflow: hidden;
43 | top: -10px;
44 |
45 | &:focus {
46 | position: fixed;
47 | top: 10px;
48 | left: 10px;
49 | height: auto;
50 | width: auto;
51 | background: invert($body-link-color);
52 | outline: thick solid invert($body-link-color);
53 | }
54 | }
55 |
56 | a {
57 | color: $body-link-color;
58 | text-decoration: none;
59 |
60 | &:hover {
61 | text-decoration: underline;
62 | }
63 | }
64 |
65 | .btn {
66 | display: inline-block;
67 | margin-bottom: 1rem;
68 | color: rgba(255, 255, 255, 0.7);
69 | background-color: rgba(255, 255, 255, 0.08);
70 | border-color: rgba(255, 255, 255, 0.2);
71 | border-style: solid;
72 | border-width: 1px;
73 | border-radius: 0.3rem;
74 | transition: color 0.2s, background-color 0.2s, border-color 0.2s;
75 |
76 | &:hover {
77 | color: rgba(255, 255, 255, 0.8);
78 | text-decoration: none;
79 | background-color: rgba(255, 255, 255, 0.2);
80 | border-color: rgba(255, 255, 255, 0.3);
81 | }
82 |
83 | + .btn {
84 | margin-left: 1rem;
85 | }
86 |
87 | @include large {
88 | padding: 0.75rem 1rem;
89 | }
90 |
91 | @include medium {
92 | padding: 0.6rem 0.9rem;
93 | font-size: 0.9rem;
94 | }
95 |
96 | @include small {
97 | display: block;
98 | width: 100%;
99 | padding: 0.75rem;
100 | font-size: 0.9rem;
101 |
102 | + .btn {
103 | margin-top: 1rem;
104 | margin-left: 0;
105 | }
106 | }
107 | }
108 |
109 | .page-header {
110 | color: $header-heading-color;
111 | text-align: center;
112 | border-bottom: 10px solid #000000;
113 |
114 | @include large {
115 | padding: 3rem 6rem;
116 | }
117 |
118 | @include medium {
119 | padding: 2rem 4rem;
120 | }
121 |
122 | @include small {
123 | padding: 2rem 1rem;
124 | }
125 | }
126 |
127 | .project-name {
128 | margin-top: 0;
129 | margin-bottom: 0.1rem;
130 | font-family: 'Bebas Neue', cursive;
131 |
132 | @include large {
133 | font-size: 6rem;
134 | }
135 |
136 | @include medium {
137 | font-size: 3.25rem;
138 | }
139 |
140 | @include small {
141 | font-size: 1.75rem;
142 | }
143 | }
144 |
145 | .project-tagline {
146 | margin-bottom: 2rem;
147 | font-weight: normal;
148 | opacity: 0.7;
149 |
150 | @include large {
151 | font-size: 1.25rem;
152 | }
153 |
154 | @include medium {
155 | font-size: 1.15rem;
156 | }
157 |
158 | @include small {
159 | font-size: 1rem;
160 | }
161 | }
162 |
163 | .main-content {
164 | word-wrap: break-word;
165 |
166 | :first-child {
167 | margin-top: 0;
168 | }
169 |
170 | @include large {
171 | max-width: 64rem;
172 | padding: 2rem 6rem;
173 | margin: 0 auto;
174 | font-size: 1.1rem;
175 | }
176 |
177 | @include medium {
178 | padding: 2rem 4rem;
179 | font-size: 1.1rem;
180 | }
181 |
182 | @include small {
183 | padding: 2rem 1rem;
184 | font-size: 1rem;
185 | }
186 |
187 | kbd {
188 | background-color: #fafbfc;
189 | border: 1px solid #c6cbd1;
190 | border-bottom-color: #959da5;
191 | border-radius: 3px;
192 | box-shadow: inset 0 -1px 0 #959da5;
193 | color: #444d56;
194 | display: inline-block;
195 | font-size: 11px;
196 | line-height: 10px;
197 | padding: 3px 5px;
198 | vertical-align: middle;
199 | }
200 |
201 | img {
202 | max-width: 100%;
203 | }
204 |
205 | h1,
206 | h2,
207 | h3,
208 | h4,
209 | h5,
210 | h6 {
211 | margin-top: 2rem;
212 | margin-bottom: 1rem;
213 | font-weight: normal;
214 | color: $section-headings-color;
215 | }
216 |
217 | p {
218 | margin-bottom: 1em;
219 | }
220 |
221 | code {
222 | padding: 2px 4px;
223 | font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace;
224 | font-size: 0.9rem;
225 | color: $code-text-color;
226 | background-color: $code-bg-color;
227 | border-radius: 0.3rem;
228 | }
229 |
230 | pre {
231 | padding: 0.8rem;
232 | margin-top: 0;
233 | margin-bottom: 1rem;
234 | font: 1rem Consolas, "Liberation Mono", Menlo, Courier, monospace;
235 | color: $code-text-color;
236 | word-wrap: normal;
237 | background-color: $code-bg-color;
238 | border: solid 1px $border-color;
239 | border-radius: 0.3rem;
240 |
241 | > code {
242 | padding: 0;
243 | margin: 0;
244 | font-size: 0.9rem;
245 | color: $code-text-color;
246 | word-break: normal;
247 | white-space: pre;
248 | background: transparent;
249 | border: 0;
250 | }
251 | }
252 |
253 | .highlight {
254 | margin-bottom: 1rem;
255 |
256 | pre {
257 | margin-bottom: 0;
258 | word-break: normal;
259 | }
260 | }
261 |
262 | .highlight pre,
263 | pre {
264 | padding: 0.8rem;
265 | overflow: auto;
266 | font-size: 0.9rem;
267 | line-height: 1.45;
268 | border-radius: 0.3rem;
269 | -webkit-overflow-scrolling: touch;
270 | }
271 |
272 | pre code,
273 | pre tt {
274 | display: inline;
275 | max-width: initial;
276 | padding: 0;
277 | margin: 0;
278 | overflow: initial;
279 | line-height: inherit;
280 | word-wrap: normal;
281 | background-color: transparent;
282 | border: 0;
283 |
284 | &:before,
285 | &:after {
286 | content: normal;
287 | }
288 | }
289 |
290 | ul,
291 | ol {
292 | margin-top: 0;
293 | }
294 |
295 | blockquote {
296 | padding: 0 1rem;
297 | margin-left: 0;
298 | color: $blockquote-text-color;
299 | border-left: 0.3rem solid $border-color;
300 |
301 | > :first-child {
302 | margin-top: 0;
303 | }
304 |
305 | > :last-child {
306 | margin-bottom: 0;
307 | }
308 | }
309 |
310 | table {
311 | display: block;
312 | width: 100%;
313 | overflow: auto;
314 | word-break: normal;
315 | word-break: keep-all; // For Firefox to horizontally scroll wider tables.
316 | -webkit-overflow-scrolling: touch;
317 |
318 | th {
319 | font-weight: bold;
320 | }
321 |
322 | th,
323 | td {
324 | padding: 0.5rem 1rem;
325 | border: 1px solid $table-border-color;
326 | }
327 | }
328 |
329 | dl {
330 | padding: 0;
331 |
332 | dt {
333 | padding: 0;
334 | margin-top: 1rem;
335 | font-size: 1rem;
336 | font-weight: bold;
337 | }
338 |
339 | dd {
340 | padding: 0;
341 | margin-bottom: 1rem;
342 | }
343 | }
344 |
345 | hr {
346 | height: 2px;
347 | padding: 0;
348 | margin: 1rem 0;
349 | background-color: $hr-border-color;
350 | border: 0;
351 | }
352 | }
353 |
354 | .site-footer {
355 | padding-top: 2rem;
356 | margin-top: 2rem;
357 | border-top: solid 1px $hr-border-color;
358 |
359 | @include large {
360 | font-size: 1rem;
361 | }
362 |
363 | @include medium {
364 | font-size: 1rem;
365 | }
366 |
367 | @include small {
368 | font-size: 0.9rem;
369 | }
370 | }
371 |
372 | .site-footer-owner {
373 | display: block;
374 | font-weight: bold;
375 | }
376 |
377 | .site-footer-credits {
378 | color: $blockquote-text-color;
379 | }
380 |
--------------------------------------------------------------------------------
/_sass/normalize.scss:
--------------------------------------------------------------------------------
1 | /*! normalize.css v3.0.2 | MIT License | git.io/normalize */
2 |
3 | /**
4 | * 1. Set default font family to sans-serif.
5 | * 2. Prevent iOS text size adjust after orientation change, without disabling
6 | * user zoom.
7 | */
8 |
9 | html {
10 | font-family: sans-serif; /* 1 */
11 | -ms-text-size-adjust: 100%; /* 2 */
12 | -webkit-text-size-adjust: 100%; /* 2 */
13 | }
14 |
15 | /**
16 | * Remove default margin.
17 | */
18 |
19 | body {
20 | margin: 0;
21 | }
22 |
23 | /* HTML5 display definitions
24 | ========================================================================== */
25 |
26 | /**
27 | * Correct `block` display not defined for any HTML5 element in IE 8/9.
28 | * Correct `block` display not defined for `details` or `summary` in IE 10/11
29 | * and Firefox.
30 | * Correct `block` display not defined for `main` in IE 11.
31 | */
32 |
33 | article,
34 | aside,
35 | details,
36 | figcaption,
37 | figure,
38 | footer,
39 | header,
40 | hgroup,
41 | main,
42 | menu,
43 | nav,
44 | section,
45 | summary {
46 | display: block;
47 | }
48 |
49 | /**
50 | * 1. Correct `inline-block` display not defined in IE 8/9.
51 | * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
52 | */
53 |
54 | audio,
55 | canvas,
56 | progress,
57 | video {
58 | display: inline-block; /* 1 */
59 | vertical-align: baseline; /* 2 */
60 | }
61 |
62 | /**
63 | * Prevent modern browsers from displaying `audio` without controls.
64 | * Remove excess height in iOS 5 devices.
65 | */
66 |
67 | audio:not([controls]) {
68 | display: none;
69 | height: 0;
70 | }
71 |
72 | /**
73 | * Address `[hidden]` styling not present in IE 8/9/10.
74 | * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22.
75 | */
76 |
77 | [hidden],
78 | template {
79 | display: none;
80 | }
81 |
82 | /* Links
83 | ========================================================================== */
84 |
85 | /**
86 | * Remove the gray background color from active links in IE 10.
87 | */
88 |
89 | a {
90 | background-color: transparent;
91 | }
92 |
93 | /**
94 | * Improve readability when focused and also mouse hovered in all browsers.
95 | */
96 |
97 | a:active,
98 | a:hover {
99 | outline: 0;
100 | }
101 |
102 | /* Text-level semantics
103 | ========================================================================== */
104 |
105 | /**
106 | * Address styling not present in IE 8/9/10/11, Safari, and Chrome.
107 | */
108 |
109 | abbr[title] {
110 | border-bottom: 1px dotted;
111 | }
112 |
113 | /**
114 | * Address style set to `bolder` in Firefox 4+, Safari, and Chrome.
115 | */
116 |
117 | b,
118 | strong {
119 | font-weight: bold;
120 | }
121 |
122 | /**
123 | * Address styling not present in Safari and Chrome.
124 | */
125 |
126 | dfn {
127 | font-style: italic;
128 | }
129 |
130 | /**
131 | * Address variable `h1` font-size and margin within `section` and `article`
132 | * contexts in Firefox 4+, Safari, and Chrome.
133 | */
134 |
135 | h1 {
136 | font-size: 2em;
137 | margin: 0.67em 0;
138 | }
139 |
140 | /**
141 | * Address styling not present in IE 8/9.
142 | */
143 |
144 | mark {
145 | background: #ff0;
146 | color: #000;
147 | }
148 |
149 | /**
150 | * Address inconsistent and variable font size in all browsers.
151 | */
152 |
153 | small {
154 | font-size: 80%;
155 | }
156 |
157 | /**
158 | * Prevent `sub` and `sup` affecting `line-height` in all browsers.
159 | */
160 |
161 | sub,
162 | sup {
163 | font-size: 75%;
164 | line-height: 0;
165 | position: relative;
166 | vertical-align: baseline;
167 | }
168 |
169 | sup {
170 | top: -0.5em;
171 | }
172 |
173 | sub {
174 | bottom: -0.25em;
175 | }
176 |
177 | /* Embedded content
178 | ========================================================================== */
179 |
180 | /**
181 | * Remove border when inside `a` element in IE 8/9/10.
182 | */
183 |
184 | img {
185 | border: 0;
186 | }
187 |
188 | /**
189 | * Correct overflow not hidden in IE 9/10/11.
190 | */
191 |
192 | svg:not(:root) {
193 | overflow: hidden;
194 | }
195 |
196 | /* Grouping content
197 | ========================================================================== */
198 |
199 | /**
200 | * Address margin not present in IE 8/9 and Safari.
201 | */
202 |
203 | figure {
204 | margin: 1em 40px;
205 | }
206 |
207 | /**
208 | * Address differences between Firefox and other browsers.
209 | */
210 |
211 | hr {
212 | box-sizing: content-box;
213 | height: 0;
214 | }
215 |
216 | /**
217 | * Contain overflow in all browsers.
218 | */
219 |
220 | pre {
221 | overflow: auto;
222 | }
223 |
224 | /**
225 | * Address odd `em`-unit font size rendering in all browsers.
226 | */
227 |
228 | code,
229 | kbd,
230 | pre,
231 | samp {
232 | font-family: monospace, monospace;
233 | font-size: 1em;
234 | }
235 |
236 | /* Forms
237 | ========================================================================== */
238 |
239 | /**
240 | * Known limitation: by default, Chrome and Safari on OS X allow very limited
241 | * styling of `select`, unless a `border` property is set.
242 | */
243 |
244 | /**
245 | * 1. Correct color not being inherited.
246 | * Known issue: affects color of disabled elements.
247 | * 2. Correct font properties not being inherited.
248 | * 3. Address margins set differently in Firefox 4+, Safari, and Chrome.
249 | */
250 |
251 | button,
252 | input,
253 | optgroup,
254 | select,
255 | textarea {
256 | color: inherit; /* 1 */
257 | font: inherit; /* 2 */
258 | margin: 0; /* 3 */
259 | }
260 |
261 | /**
262 | * Address `overflow` set to `hidden` in IE 8/9/10/11.
263 | */
264 |
265 | button {
266 | overflow: visible;
267 | }
268 |
269 | /**
270 | * Address inconsistent `text-transform` inheritance for `button` and `select`.
271 | * All other form control elements do not inherit `text-transform` values.
272 | * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.
273 | * Correct `select` style inheritance in Firefox.
274 | */
275 |
276 | button,
277 | select {
278 | text-transform: none;
279 | }
280 |
281 | /**
282 | * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
283 | * and `video` controls.
284 | * 2. Correct inability to style clickable `input` types in iOS.
285 | * 3. Improve usability and consistency of cursor style between image-type
286 | * `input` and others.
287 | */
288 |
289 | button,
290 | html input[type="button"], /* 1 */
291 | input[type="reset"],
292 | input[type="submit"] {
293 | -webkit-appearance: button; /* 2 */
294 | cursor: pointer; /* 3 */
295 | }
296 |
297 | /**
298 | * Re-set default cursor for disabled elements.
299 | */
300 |
301 | button[disabled],
302 | html input[disabled] {
303 | cursor: default;
304 | }
305 |
306 | /**
307 | * Remove inner padding and border in Firefox 4+.
308 | */
309 |
310 | button::-moz-focus-inner,
311 | input::-moz-focus-inner {
312 | border: 0;
313 | padding: 0;
314 | }
315 |
316 | /**
317 | * Address Firefox 4+ setting `line-height` on `input` using `!important` in
318 | * the UA stylesheet.
319 | */
320 |
321 | input {
322 | line-height: normal;
323 | }
324 |
325 | /**
326 | * It's recommended that you don't attempt to style these elements.
327 | * Firefox's implementation doesn't respect box-sizing, padding, or width.
328 | *
329 | * 1. Address box sizing set to `content-box` in IE 8/9/10.
330 | * 2. Remove excess padding in IE 8/9/10.
331 | */
332 |
333 | input[type="checkbox"],
334 | input[type="radio"] {
335 | box-sizing: border-box; /* 1 */
336 | padding: 0; /* 2 */
337 | }
338 |
339 | /**
340 | * Fix the cursor style for Chrome's increment/decrement buttons. For certain
341 | * `font-size` values of the `input`, it causes the cursor style of the
342 | * decrement button to change from `default` to `text`.
343 | */
344 |
345 | input[type="number"]::-webkit-inner-spin-button,
346 | input[type="number"]::-webkit-outer-spin-button {
347 | height: auto;
348 | }
349 |
350 | /**
351 | * 1. Address `appearance` set to `searchfield` in Safari and Chrome.
352 | * 2. Address `box-sizing` set to `border-box` in Safari and Chrome
353 | * (include `-moz` to future-proof).
354 | */
355 |
356 | input[type="search"] {
357 | -webkit-appearance: textfield; /* 1 */ /* 2 */
358 | box-sizing: content-box;
359 | }
360 |
361 | /**
362 | * Remove inner padding and search cancel button in Safari and Chrome on OS X.
363 | * Safari (but not Chrome) clips the cancel button when the search input has
364 | * padding (and `textfield` appearance).
365 | */
366 |
367 | input[type="search"]::-webkit-search-cancel-button,
368 | input[type="search"]::-webkit-search-decoration {
369 | -webkit-appearance: none;
370 | }
371 |
372 | /**
373 | * Define consistent border, margin, and padding.
374 | */
375 |
376 | fieldset {
377 | border: 1px solid #c0c0c0;
378 | margin: 0 2px;
379 | padding: 0.35em 0.625em 0.75em;
380 | }
381 |
382 | /**
383 | * 1. Correct `color` not being inherited in IE 8/9/10/11.
384 | * 2. Remove padding so people aren't caught out if they zero out fieldsets.
385 | */
386 |
387 | legend {
388 | border: 0; /* 1 */
389 | padding: 0; /* 2 */
390 | }
391 |
392 | /**
393 | * Remove default vertical scrollbar in IE 8/9/10/11.
394 | */
395 |
396 | textarea {
397 | overflow: auto;
398 | }
399 |
400 | /**
401 | * Don't inherit the `font-weight` (applied by a rule above).
402 | * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
403 | */
404 |
405 | optgroup {
406 | font-weight: bold;
407 | }
408 |
409 | /* Tables
410 | ========================================================================== */
411 |
412 | /**
413 | * Remove most spacing between table cells.
414 | */
415 |
416 | table {
417 | border-collapse: collapse;
418 | border-spacing: 0;
419 | }
420 |
421 | td,
422 | th {
423 | padding: 0;
424 | }
425 |
--------------------------------------------------------------------------------
/_sass/rouge-github.scss:
--------------------------------------------------------------------------------
1 | .highlight table td { padding: 5px; }
2 | .highlight table pre { margin: 0; }
3 | .highlight .cm {
4 | color: #999988;
5 | font-style: italic;
6 | }
7 | .highlight .cp {
8 | color: #999999;
9 | font-weight: bold;
10 | }
11 | .highlight .c1 {
12 | color: #999988;
13 | font-style: italic;
14 | }
15 | .highlight .cs {
16 | color: #999999;
17 | font-weight: bold;
18 | font-style: italic;
19 | }
20 | .highlight .c, .highlight .cd {
21 | color: #999988;
22 | font-style: italic;
23 | }
24 | .highlight .err {
25 | color: #a61717;
26 | background-color: #e3d2d2;
27 | }
28 | .highlight .gd {
29 | color: #000000;
30 | background-color: #ffdddd;
31 | }
32 | .highlight .ge {
33 | color: #000000;
34 | font-style: italic;
35 | }
36 | .highlight .gr {
37 | color: #aa0000;
38 | }
39 | .highlight .gh {
40 | color: #999999;
41 | }
42 | .highlight .gi {
43 | color: #000000;
44 | background-color: #ddffdd;
45 | }
46 | .highlight .go {
47 | color: #888888;
48 | }
49 | .highlight .gp {
50 | color: #555555;
51 | }
52 | .highlight .gs {
53 | font-weight: bold;
54 | }
55 | .highlight .gu {
56 | color: #aaaaaa;
57 | }
58 | .highlight .gt {
59 | color: #aa0000;
60 | }
61 | .highlight .kc {
62 | color: #000000;
63 | font-weight: bold;
64 | }
65 | .highlight .kd {
66 | color: #000000;
67 | font-weight: bold;
68 | }
69 | .highlight .kn {
70 | color: #000000;
71 | font-weight: bold;
72 | }
73 | .highlight .kp {
74 | color: #000000;
75 | font-weight: bold;
76 | }
77 | .highlight .kr {
78 | color: #000000;
79 | font-weight: bold;
80 | }
81 | .highlight .kt {
82 | color: #445588;
83 | font-weight: bold;
84 | }
85 | .highlight .k, .highlight .kv {
86 | color: #000000;
87 | font-weight: bold;
88 | }
89 | .highlight .mf {
90 | color: #009999;
91 | }
92 | .highlight .mh {
93 | color: #009999;
94 | }
95 | .highlight .il {
96 | color: #009999;
97 | }
98 | .highlight .mi {
99 | color: #009999;
100 | }
101 | .highlight .mo {
102 | color: #009999;
103 | }
104 | .highlight .m, .highlight .mb, .highlight .mx {
105 | color: #009999;
106 | }
107 | .highlight .sb {
108 | color: #d14;
109 | }
110 | .highlight .sc {
111 | color: #d14;
112 | }
113 | .highlight .sd {
114 | color: #d14;
115 | }
116 | .highlight .s2 {
117 | color: #d14;
118 | }
119 | .highlight .se {
120 | color: #d14;
121 | }
122 | .highlight .sh {
123 | color: #d14;
124 | }
125 | .highlight .si {
126 | color: #d14;
127 | }
128 | .highlight .sx {
129 | color: #d14;
130 | }
131 | .highlight .sr {
132 | color: #009926;
133 | }
134 | .highlight .s1 {
135 | color: #d14;
136 | }
137 | .highlight .ss {
138 | color: #990073;
139 | }
140 | .highlight .s {
141 | color: #d14;
142 | }
143 | .highlight .na {
144 | color: #008080;
145 | }
146 | .highlight .bp {
147 | color: #999999;
148 | }
149 | .highlight .nb {
150 | color: #0086B3;
151 | }
152 | .highlight .nc {
153 | color: #445588;
154 | font-weight: bold;
155 | }
156 | .highlight .no {
157 | color: #008080;
158 | }
159 | .highlight .nd {
160 | color: #3c5d5d;
161 | font-weight: bold;
162 | }
163 | .highlight .ni {
164 | color: #800080;
165 | }
166 | .highlight .ne {
167 | color: #990000;
168 | font-weight: bold;
169 | }
170 | .highlight .nf {
171 | color: #990000;
172 | font-weight: bold;
173 | }
174 | .highlight .nl {
175 | color: #990000;
176 | font-weight: bold;
177 | }
178 | .highlight .nn {
179 | color: #555555;
180 | }
181 | .highlight .nt {
182 | color: #000080;
183 | }
184 | .highlight .vc {
185 | color: #008080;
186 | }
187 | .highlight .vg {
188 | color: #008080;
189 | }
190 | .highlight .vi {
191 | color: #008080;
192 | }
193 | .highlight .nv {
194 | color: #008080;
195 | }
196 | .highlight .ow {
197 | color: #000000;
198 | font-weight: bold;
199 | }
200 | .highlight .o {
201 | color: #000000;
202 | font-weight: bold;
203 | }
204 | .highlight .w {
205 | color: #bbbbbb;
206 | }
207 | .highlight {
208 | background-color: #f8f8f8;
209 | }
210 |
--------------------------------------------------------------------------------
/_sass/variables.scss:
--------------------------------------------------------------------------------
1 | // Breakpoints
2 | $large-breakpoint: 64em !default;
3 | $medium-breakpoint: 42em !default;
4 |
5 | // Headers
6 | $header-heading-color: #000000 !default;
7 | $header-bg-color: #159957 !default;
8 | $header-bg-color-secondary: #155799 !default;
9 |
10 | // Text
11 | $section-headings-color: #000000 !default;
12 | $body-text-color: #606c71 !default;
13 | $body-link-color: #1e6bb8 !default;
14 | $blockquote-text-color: #819198 !default;
15 |
16 | // Code
17 | $code-bg-color: #f3f6fa !default;
18 | $code-text-color: #567482 !default;
19 |
20 | // Borders
21 | $border-color: #dce6f0 !default;
22 | $table-border-color: #e9ebec !default;
23 | $hr-border-color: #eff0f1 !default;
24 |
--------------------------------------------------------------------------------
/assets/css/style.scss:
--------------------------------------------------------------------------------
1 | ---
2 | ---
3 |
4 | @import 'jekyll-theme-cayman';
5 |
--------------------------------------------------------------------------------
/club.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: default
3 | title: The lattice club
4 | description: Welcome to the lattice club!
5 | ---
6 |
7 | ## Welcome to the lattice club!
8 |
9 | As part of our lattice-based cryptography community, we will have a bi-weekly virtual seminar for young latticists.
10 | This is inspired by [The Isogeny Club](https://the-isogeny-club.github.io/).
11 |
12 | Reach out to [Sofía](https://sofiaceli.com/) and/or [Octavio](https://www.octavio.pk/) via thelatticeclub (at) gmail (dot) com to join!
13 |
14 | [Back to main](./)
15 |
--------------------------------------------------------------------------------
/docs/CODE_OF_CONDUCT.md:
--------------------------------------------------------------------------------
1 | # Contributor Covenant Code of Conduct
2 |
3 | ## Our Pledge
4 |
5 | In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
6 |
7 | ## Our Standards
8 |
9 | Examples of behavior that contributes to creating a positive environment include:
10 |
11 | * Using welcoming and inclusive language
12 | * Being respectful of differing viewpoints and experiences
13 | * Gracefully accepting constructive criticism
14 | * Focusing on what is best for the community
15 | * Showing empathy towards other community members
16 |
17 | Examples of unacceptable behavior by participants include:
18 |
19 | * The use of sexualized language or imagery and unwelcome sexual attention or advances
20 | * Trolling, insulting/derogatory comments, and personal or political attacks
21 | * Public or private harassment
22 | * Publishing others' private information, such as a physical or electronic address, without explicit permission
23 | * Other conduct which could reasonably be considered inappropriate in a professional setting
24 |
25 | ## Our Responsibilities
26 |
27 | Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
28 |
29 | Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
30 |
31 | ## Scope
32 |
33 | This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
34 |
35 | ## Enforcement
36 |
37 | Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at opensource@github.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
38 |
39 | Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
40 |
41 | ## Attribution
42 |
43 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version]
44 |
45 | [homepage]: http://contributor-covenant.org
46 | [version]: http://contributor-covenant.org/version/1/4/
47 |
--------------------------------------------------------------------------------
/docs/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | # Contributing to the Cayman theme
2 |
3 | Hi there! We're thrilled that you'd like to contribute to the Cayman theme. Your help is essential for keeping it great.
4 |
5 | the Cayman theme is an open source project supported by the efforts of an entire community and built one contribution at a time by users like you. We'd love for you to get involved. Whatever your level of skill or however much time you can give, your contribution is greatly appreciated. There are many ways to contribute, from writing tutorials or blog posts, improving the documentation, submitting bug reports and feature requests, helping other users by commenting on issues, or writing code which can be incorporated into the Cayman theme itself.
6 |
7 | Following these guidelines helps to communicate that you respect the time of the developers managing and developing this open source project. In return, they should reciprocate that respect in addressing your issue, assessing changes, and helping you finalize your pull requests.
8 |
9 |
10 | ## Looking for support?
11 |
12 | We'd love to help. Check out [the support guidelines](SUPPORT.md).
13 |
14 | ## How to report a bug
15 |
16 | Think you found a bug? Please check [the list of open issues](https://github.com/pages-themes/cayman/issues) to see if your bug has already been reported. If it hasn't please [submit a new issue](https://github.com/pages-themes/cayman/issues/new).
17 |
18 | Here are a few tips for writing *great* bug reports:
19 |
20 | * Describe the specific problem (e.g., "widget doesn't turn clockwise" versus "getting an error")
21 | * Include the steps to reproduce the bug, what you expected to happen, and what happened instead
22 | * Check that you are using the latest version of the project and its dependencies
23 | * Include what version of the project your using, as well as any relevant dependencies
24 | * Only include one bug per issue. If you have discovered two bugs, please file two issues
25 | * Even if you don't know how to fix the bug, including a failing test may help others track it down
26 |
27 | **If you find a security vulnerability, do not open an issue. Please email security@github.com instead.**
28 |
29 | ## How to suggest a feature or enhancement
30 |
31 | If you find yourself wishing for a feature that doesn't exist in the Cayman theme, you are probably not alone. There are bound to be others out there with similar needs. Many of the features that the Cayman theme has today have been added because our users saw the need.
32 |
33 | Feature requests are welcome. But take a moment to find out whether your idea fits with the scope and goals of the project. It's up to you to make a strong case to convince the project's developers of the merits of this feature. Please provide as much detail and context as possible, including describing the problem you're trying to solve.
34 |
35 | [Open an issue](https://github.com/pages-themes/cayman/issues/new) which describes the feature you would like to see, why you want it, how it should work, etc.
36 |
37 |
38 |
39 | ## Your first contribution
40 |
41 | We'd love for you to contribute to the project. Unsure where to begin contributing to the Cayman theme? You can start by looking through these "good first issue" and "help wanted" issues:
42 |
43 | * [Good first issues](https://github.com/pages-themes/cayman/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) - issues which should only require a few lines of code and a test or two
44 | * [Help wanted issues](https://github.com/pages-themes/cayman/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22) - issues which may be a bit more involved, but are specifically seeking community contributions
45 |
46 | *p.s. Feel free to ask for help; everyone is a beginner at first* :smiley_cat:
47 |
48 | ## How to propose changes
49 |
50 | Here's a few general guidelines for proposing changes:
51 |
52 | * If you are making visual changes, include a screenshot of what the affected element looks like, both before and after.
53 | * Follow the [Jekyll style guide](https://ben.balter.com/jekyll-style-guide).
54 | * If you are changing any user-facing functionality, please be sure to update the documentation
55 | * Each pull request should implement **one** feature or bug fix. If you want to add or fix more than one thing, submit more than one pull request
56 | * Do not commit changes to files that are irrelevant to your feature or bug fix
57 | * Don't bump the version number in your pull request (it will be bumped prior to release)
58 | * Write [a good commit message](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html)
59 |
60 | At a high level, [the process for proposing changes](https://guides.github.com/introduction/flow/) is:
61 |
62 | 1. [Fork](https://github.com/pages-themes/cayman/fork) and clone the project
63 | 2. Configure and install the dependencies: `script/bootstrap`
64 | 3. Make sure the tests pass on your machine: `script/cibuild`
65 | 4. Create a new branch: `git checkout -b my-branch-name`
66 | 5. Make your change, add tests, and make sure the tests still pass
67 | 6. Push to your fork and [submit a pull request](https://github.com/pages-themes/cayman/compare)
68 | 7. Pat your self on the back and wait for your pull request to be reviewed and merged
69 |
70 | **Interesting in submitting your first Pull Request?** It's easy! You can learn how from this *free* series [How to Contribute to an Open Source Project on GitHub](https://egghead.io/series/how-to-contribute-to-an-open-source-project-on-github)
71 |
72 | ## Bootstrapping your local development environment
73 |
74 | `script/bootstrap`
75 |
76 | ## Running tests
77 |
78 | `script/cibuild`
79 |
80 | ## Code of conduct
81 |
82 | This project is governed by [the Contributor Covenant Code of Conduct](CODE_OF_CONDUCT.md). By participating, you are expected to uphold this code.
83 |
84 | ## Additional Resources
85 |
86 | * [Contributing to Open Source on GitHub](https://guides.github.com/activities/contributing-to-open-source/)
87 | * [Using Pull Requests](https://help.github.com/articles/using-pull-requests/)
88 | * [GitHub Help](https://help.github.com)
89 |
--------------------------------------------------------------------------------
/docs/SUPPORT.md:
--------------------------------------------------------------------------------
1 | ## Where to get help
2 |
3 | If you think you've found a bug in the Cayman theme, please [check the existing issues](https://github.com/pages-themes/cayman/issues), and if no one has reported the problem, [open a new issue](https://github.com/pages-themes/cayman/issues/new).
4 |
5 | If you have a general question about the theme, how to implement it, or how to customize it for your site you have two options:
6 |
7 | 1. Search for your query on [`support.github.com`](https://support.github.com/?q=pages+Cayman+theme), which will also look for similar topics on [`github.community`](https://github.community/search?q=pages+Cayman+theme)
8 | 2. Ask your question of the Jekyll community on [talk.jekyllrb.com](https://talk.jekyllrb.com/)
9 | 3. [Contact GitHub Support](https://github.com/contact?form%5Bsubject%5D=GitHub%20Pages%20theme%20pages-themes/cayman)
10 |
--------------------------------------------------------------------------------
/index.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: default
3 | ---
4 |
5 | ## What is Lattice-based Cryptography?
6 | - [Post-quantum Cryptography: An Introduction (Shweta Agrawal)](http://www.cse.iitm.ac.in/~shwetaag/papers/PQC.pdf)
7 | - [Lattice-based Cryptography (Daniele Micciancio and Oded Regev)](https://cims.nyu.edu/~regev/papers/pqc.pdf)
8 | - [Lattice Cryptography: Understanding Kyber (ML-KEM) and Dilithium (ML-DSA) (Vadim Lyubashevsky)](https://github.com/VadimLyubash/LatticeTutorial/blob/main/tutorial.pdf)
9 | - [Tutorial introduction to the security of lattice-based cryptosystems (Laarhoven et. al.)](https://eprint.iacr.org/2012/533.pdf)
10 |
11 | ## Courses and online lectures
12 | - [Lattices, Learning with Errors and Post-Quantum Cryptography (Vinod Vaikuntanathan)](http://people.csail.mit.edu/vinodv/CS294/)
13 | - [Lattices Algorithms and Applications (Daniele Micciancio)](https://cseweb.ucsd.edu/classes/fa21/cse206A-a/)
14 | - [An Intensive Introduction to Cryptography (Boaz Barak)](https://intensecrypto.org/public/index.html)
15 | - [Lattices in Cryptography (Chris Peikert)](https://github.com/cpeikert/LatticesInCryptography)
16 | - [Lattices in Computer Science (Oded Regev)](https://cims.nyu.edu/~regev/teaching/lattices_fall_2009/index.html)
17 | - [BIU Winter School on Lattice-based Cryptography and Applications (Bar-Ilan University, 2012)](https://cyber.biu.ac.il/event/the-2nd-biu-winter-school/)
18 | - [Workshop on Mathematics of Lattices and Cybersecurity (Brown University, 2015)](https://icerm.brown.edu/topical_workshops/tw15-7-mlc/#lecturevideos)
19 | - [Spring School on Lattice-Based Cryptography (University of Oxford, 2017)](https://www.maths.ox.ac.uk/groups/cryptography/spring-school-lattice-based-cryptography)
20 | - [Lattices: Algorithms, Complexity, and Cryptography (Simons Institute, 2020)](https://simons.berkeley.edu/programs/lattices2020)
21 | - [Foundations and Applications of Lattice-based Cryptography (ICMS, 2022)](https://www.icms.org.uk/workshops/2022/foundations-and-applications-lattice-based-cryptography)
22 |
23 | ## Surveys
24 | - [A Decade of Lattice Cryptography (Chris Peikert)](https://eprint.iacr.org/2015/939.pdf)
25 | - [Advances on quantum cryptanalysis of ideal lattices (Léo Ducas)](http://www.nieuwarchief.nl/serie5/pdf/naw5-2017-18-3-184.pdf)
26 | - [Lattice Attacks on NTRU and LWE: A History of Refinements (Martin Albrecht and Léo Ducas)](https://eprint.iacr.org/2021/799)
27 |
28 | ## PhD theses
29 | - [Design and Implementation of Lattice-Based Cryptography (Tancrède Lepoint, 2014)](https://tlepoint.github.io/phd/lepoint-phd-thesis.pdf)
30 | - [On the Concrete Security of Lattice-Based Cryptography (Michael Walter, 2017)](https://escholarship.org/uc/item/5n51z56s)
31 | - [Efficient Lattice-Based Zero-Knowledge Proofs and Applications (Rafaël del Pino, 2018)](https://tel.archives-ouvertes.fr/tel-02445482/document)
32 | - [Gadgets and Gaussians in Lattice-Based Cryptography (Nicholas Genise, 2019)](https://escholarship.org/uc/item/8b40w7r8)
33 | - [On ideal lattices and the GGH13 multilinear map (Alice Pellet--Mary, 2019)](https://apelletm.pages.math.cnrs.fr/page-perso/documents/articles/PhD_thesis.pdf)
34 | - [Lattice-based Protocols for Privacy (Cecilia Boschini, 2020)](https://doc.rero.ch/record/328567/files/2020INFO002.pdf)
35 | - [Practice-Oriented Techniques in Lattice-Based Cryptography (Muhammed F. Esgin, 2020)](https://bridges.monash.edu/articles/thesis/Practice-Oriented_Techniques_in_Lattice-Based_Cryptography/12279728)
36 | - [Extended Security of Lattice-based Cryptography (Mélissa Rossi, 2020)](https://www.di.ens.fr/~mrossi/docs/thesis.pdf)
37 | - [Practical lattice-based cryptography over structured lattices (Sarah McCarthy, 2020)](https://pureadmin.qub.ac.uk/ws/portalfiles/portal/211831925/thesis.pdf)
38 | - [Efficiency and security aspects of lattice-based cryptography (Carl Bootland, 2021)](https://www.esat.kuleuven.be/cosic/publications/thesis-399.pdf)
39 | - [Post-Quantum Cryptography: Cryptanalysis and Implementation (Fernando Vidria, 2021)](https://fundamental.domains/2021virdiafphd.pdf)
40 | - [Efficient Implementation Techniques for Lattice-based Cryptosystems (Raymond K. Zhao, 2022)](https://bridges.monash.edu/articles/thesis/Efficient_Implementation_Techniques_for_Lattice-based_Cryptosystems/19224867)
41 |
42 | ## Other resources
43 | - [Collection of resources and links maintained by Daniele Micciancio](https://cseweb.ucsd.edu/~daniele/LatticeLinks/index.html)
44 | - [Workshop on Lattices with Symmetry (University of California, Irvine, 2013)](https://www.math.uci.edu/~asilverb/Lattices/)
45 | - [Computational Challenges in the Theory of Lattices (Brown University, 2018)](https://icerm.brown.edu/programs/sp-s18/w4/)
46 | - [Mathematical Foundations of Asymmetric Cryptography (French Mathematical Society, 2019)](https://mathsofpkc.sciencesconf.org/resource/page/id/1)
47 |
48 | ## Reading groups and seminars open to the public
49 | - [Monash Cybersecurity Seminars](https://www.monash.edu/it/ssc/cybersecurity/seminars)
50 | - [ENSL/CWI/RHUL Joint Online Cryptography Seminars](https://jcs.trusted-third-party.org/)
51 |
52 | ## Lattice-based primitives selected by NIST for standardization
53 |
54 | | Name | Primitive | Description |
55 | | :----------- | :------- | :------- |
56 | | CRYSTALS-KYBER | PKE & KEM | [Official site](https://pq-crystals.org/kyber/)|
57 | | CRYSTALS-DILITHIUM | Digital signature | [Official site](https://pq-crystals.org/dilithium/)|
58 | | FALCON | Digital signature | [Official site](https://falcon-sign.info/) |
59 |
60 |
61 | ## Implementations of cryptographic primitives
62 |
63 | | Name | Language | Author |
64 | | :---------- | :--- | :------- |
65 | | [CRYSTALS-KYBER](https://github.com/pq-crystals/kyber) | C | Official |
66 | | [CRYSTALS-KYBER](https://github.com/symbolicsoft/kyber-k2so) | Go | Symbolic Software |
67 | | [CRYSTALS-KYBER](https://github.com/antontutoveanu/crystals-kyber-javascript) | JavaScript | Anton Tutoveanu |
68 | | [CRYSTALS-KYBER](https://github.com/bcgit/bc-java/tree/master/core/src/main/java/org/bouncycastle/pqc/crypto/crystals/kyber) | Java | Legion of the Bouncy Castle Inc. |
69 | | [CRYSTALS-KYBER](https://github.com/bcgit/bc-csharp/tree/master/crypto/src/pqc/crypto/crystals/kyber) | C# | Legion of the Bouncy Castle Inc. |
70 | | [CRYSTALS-KYBER](https://github.com/jack4818/kyber-py) | Python | Giacomo Pope |
71 | | [CRYSTALS-DILITHIUM](https://github.com/pq-crystals/dilithium) | C | Official |
72 | | [CRYSTALS-DILITHIUM](https://github.com/bcgit/bc-java/tree/master/core/src/main/java/org/bouncycastle/pqc/crypto/crystals/dilithium) | Java | Legion of the Bouncy Castle Inc. |
73 | | [CRYSTALS-DILITHIUM](https://github.com/bcgit/bc-csharp/tree/master/crypto/src/pqc/crypto/crystals/dilithium) | C# | Legion of the Bouncy Castle Inc. |
74 | | [CRYSTALS-DILITHIUM](https://github.com/jack4818/dilithium-py) | Python | Giacomo Pope |
75 | | [FALCON](https://falcon-sign.info/impl/falcon.h.html) | C | Official |
76 | | [FALCON](https://github.com/tprest/falcon.py) | Python | Thomas Prest |
77 | | [FALCON](https://github.com/bcgit/bc-java/tree/master/core/src/main/java/org/bouncycastle/pqc/crypto/falcon) | Java | Legion of the Bouncy Castle Inc. |
78 | | [FALCON](https://github.com/bcgit/bc-csharp/tree/master/crypto/src/pqc/crypto/falcon) | C# | Legion of the Bouncy Castle Inc. |
79 | | [FRODO](https://github.com/Microsoft/PQCrypto-LWEKE) | C | Official |
80 | | [FRODO](https://github.com/mariiatuzovska/frodo) | Go | Mariia Tuzovska |
81 | | [FRODO](https://github.com/bcgit/bc-java/tree/master/core/src/main/java/org/bouncycastle/pqc/crypto/frodo) | Java | Legion of the Bouncy Castle Inc. |
82 | | [FRODO](https://github.com/bcgit/bc-csharp/tree/master/crypto/src/pqc/crypto/frodo) | C# | Legion of the Bouncy Castle Inc. |
83 | | [NTRU](https://github.com/prokls/ntrust-native) | Rust | Lukas Prokop |
84 | | [NTRU](https://github.com/bcgit/bc-java/tree/master/core/src/main/java/org/bouncycastle/pqc/crypto/ntru) | Java | Legion of the Bouncy Castle Inc. |
85 | | [NTRU](https://github.com/bcgit/bc-csharp/tree/master/crypto/src/pqc/crypto/ntru) | C# | Legion of the Bouncy Castle Inc. |
86 | | [NTRU Prime](https://github.com/bcgit/bc-java/tree/master/core/src/main/java/org/bouncycastle/pqc/crypto/ntruprime) | Java | Legion of the Bouncy Castle Inc. |
87 | | [NTRU Prime](https://github.com/bcgit/bc-csharp/tree/master/crypto/src/pqc/crypto/ntruprime) | C# | Legion of the Bouncy Castle Inc. |
88 | | [SABER](https://github.com/lkiem/rusty_saber) | Rust | Lukas Prokop & Lukas Kiem |
89 | | [SABER](https://github.com/bcgit/bc-java/tree/master/core/src/main/java/org/bouncycastle/pqc/crypto/saber) | Java | Legion of the Bouncy Castle Inc. |
90 | | [SABER](https://github.com/bcgit/bc-csharp/tree/master/crypto/src/pqc/crypto/saber) | C# | Legion of the Bouncy Castle Inc. |
91 |
92 | ## Security estimation tools
93 | - [Lattice estimator](https://github.com/malb/lattice-estimator/)
94 | - [Leaky LWE estimator (Dachman-Soled et. al.)](https://github.com/lducas/leaky-LWE-Estimator)
95 |
96 |
101 |
102 | ## Lattice.bib
103 |
104 | We provide a .bib file with references to lattice-based cryptography papers. Find it [here](https://github.com/octaviopk9/lattice-based-cryptography/blob/main/lattices.bib).
105 |
106 | ## About this page
107 |
108 | This page is based on [zkp.science](https://zkp.science/)'s page, which hosts a number of resources and references on Zero-Knowledge Proofs. Everyone is welcome to contribute to this effort. Additions, corrections and other suggestions are very much welcome!
109 |
110 | For more information about the contents and policies we follow, please see [here](./policies).
111 |
112 | For more information about the club meetings and events, please see [here](./club).
113 |
114 | ## How to improve this page
115 |
116 | You can propose an edit to this page [here](https://github.com/octaviopk9/lattice-based-cryptography). (Note that after making your edits, there are 3 confirmations to click through in order to create the "pull request" in the Git repository underlying this page.)
117 |
118 | For more broad changes, you can make a pull request [here](https://github.com/octaviopk9/lattice-based-cryptography)!
119 |
120 | If you don't feel confident or skilled to directly contribute through github, please feel free to reach out any of the existing contributors with your ideas and comments on how to improve this page.
121 |
--------------------------------------------------------------------------------
/jekyll-theme-cayman.gemspec:
--------------------------------------------------------------------------------
1 | # frozen_string_literal: true
2 |
3 | Gem::Specification.new do |s|
4 | s.name = "jekyll-theme-cayman"
5 | s.version = "0.2.0"
6 | s.license = "CC0-1.0"
7 | s.authors = ["Jason Long", "GitHub, Inc."]
8 | s.email = ["opensource+jekyll-theme-cayman@github.com"]
9 | s.homepage = "https://github.com/pages-themes/cayman"
10 | s.summary = "Cayman is a Jekyll theme for GitHub Pages"
11 |
12 | s.files = `git ls-files -z`.split("\x0").select do |f|
13 | f.match(%r{^((_includes|_layouts|_sass|assets)/|(LICENSE|README)((\.(txt|md|markdown)|$)))}i)
14 | end
15 |
16 | s.required_ruby_version = ">= 2.4.0"
17 |
18 | s.platform = Gem::Platform::RUBY
19 | s.add_runtime_dependency "jekyll", "> 3.5", "< 5.0"
20 | s.add_runtime_dependency "jekyll-seo-tag", "~> 2.0"
21 | s.add_development_dependency "html-proofer", "~> 3.0"
22 | s.add_development_dependency "rubocop-github", "~> 0.16"
23 | s.add_development_dependency "w3c_validators", "~> 1.3"
24 | end
25 |
--------------------------------------------------------------------------------
/lattices.bib:
--------------------------------------------------------------------------------
1 | @InProceedings{10.1007/978-3-642-13190-5_1,
2 | author="Lyubashevsky, Vadim and Peikert, Chris and Regev, Oded",
3 | editor="Gilbert, Henri",
4 | title="On Ideal Lattices and Learning with Errors over Rings",
5 | booktitle="Advances in Cryptology -- EUROCRYPT 2010",
6 | year="2010",
7 | publisher="Springer Berlin Heidelberg",
8 | address="Berlin, Heidelberg",
9 | pages="1--23",
10 | abstract="The ``learning with errors'' (LWE) problem is to distinguish random linear equations, which have been perturbed by a small amount of noise, from truly uniform ones. The problem has been shown to be as hard as worst-case lattice problems, and in recent years it has served as the foundation for a plethora of cryptographic applications. Unfortunately, these applications are rather inefficient due to an inherent quadratic overhead in the use of LWE. A main open question was whether LWE and its applications could be made truly efficient by exploiting extra algebraic structure, as was done for lattice-based hash functions (and related primitives).",
11 | isbn="978-3-642-13190-5"
12 | }
13 |
14 | @InProceedings{10.1007/978-3-642-38348-9_3,
15 | author="Lyubashevsky, Vadim and Peikert, Chris and Regev, Oded",
16 | editor="Johansson, Thomas and Nguyen, Phong Q.",
17 | title="A Toolkit for Ring-LWE Cryptography",
18 | booktitle="Advances in Cryptology -- EUROCRYPT 2013",
19 | year="2013",
20 | publisher="Springer Berlin Heidelberg",
21 | address="Berlin, Heidelberg",
22 | pages="35--54",
23 | abstract="Recent advances in lattice cryptography, mainly stemming from the development of ring-based primitives such as ring-LWE, have made it possible to design cryptographic schemes whose efficiency is competitive with that of more traditional number-theoretic ones, along with entirely new applications like fully homomorphic encryption. Unfortunately, realizing the full potential of ring-based cryptography has so far been hindered by a lack of practical algorithms and analytical tools for working in this context. As a result, most previous works have focused on very special classes of rings such as power-of-two cyclotomics, which significantly restricts the possible applications.",
24 | isbn="978-3-642-38348-9"
25 | }
26 |
27 | @article{10.1145/1568318.1568324,
28 | author = {Regev, Oded},
29 | title = {On Lattices, Learning with Errors, Random Linear Codes, and Cryptography},
30 | year = {2009},
31 | issue_date = {September 2009},
32 | publisher = {Association for Computing Machinery},
33 | address = {New York, NY, USA},
34 | volume = {56},
35 | number = {6},
36 | issn = {0004-5411},
37 | url = {https://doi.org/10.1145/1568318.1568324},
38 | doi = {10.1145/1568318.1568324},
39 | abstract = {Our main result is a reduction from worst-case lattice problems such as GapSVP and SIVP to a certain learning problem. This learning problem is a natural extension of the “learning from parity with error” problem to higher moduli. It can also be viewed as the problem of decoding from a random linear code. This, we believe, gives a strong indication that these problems are hard. Our reduction, however, is quantum. Hence, an efficient solution to the learning problem implies a quantum algorithm for GapSVP and SIVP. A main open question is whether this reduction can be made classical (i.e., nonquantum).We also present a (classical) public-key cryptosystem whose security is based on the hardness of the learning problem. By the main result, its security is also based on the worst-case quantum hardness of GapSVP and SIVP. The new cryptosystem is much more efficient than previous lattice-based cryptosystems: the public key is of size \~{O}(n2) and encrypting a message increases its size by a factor of \~{O}(n) (in previous cryptosystems these values are \~{O}(n4) and \~{O}(n2), respectively). In fact, under the assumption that all parties share a random bit string of length \~{O}(n2), the size of the public key can be reduced to \~{O}(n).},
40 | journal = {J. ACM},
41 | month = {sep},
42 | articleno = {34},
43 | numpages = {40},
44 | keywords = {average-case hardness, Lattice, quantum computation, public key encryption, cryptography}
45 | }
46 |
47 | @InProceedings{10.1007/3-540-48329-2_24,
48 | author="Blum, Avrim and Furst, Merrick and Kearns, Michael and Lipton, Richard J.",
49 | editor="Stinson, Douglas R.",
50 | title="Cryptographic Primitives Based on Hard Learning Problems",
51 | booktitle="Advances in Cryptology --- CRYPTO' 93",
52 | year="1994",
53 | publisher="Springer Berlin Heidelberg",
54 | address="Berlin, Heidelberg",
55 | pages="278--291",
56 | abstract="Modern cryptography has had considerable impact on the development of computational learning theory. Virtually every intractability result in Valiant's model [13] (which is representation-independent in the sense that it does not rely on an artificial syntactic restriction on the learning algorithm's hypotheses) has at its heart a cryptographic construction [4, 9, 1, 10]. In this paper, we give results in the reverse direction by showing how to construct several cryptographic primitives based on certain assumptions on the difficulty of learning. In doing so, we develop further a line of thought introduced by Impagliazzo and Levin [6].",
57 | isbn="978-3-540-48329-8"
58 | }
59 |
60 | @inproceedings{10.1145/1536414.1536461,
61 | author = {Peikert, Chris},
62 | title = {Public-Key Cryptosystems from the Worst-Case Shortest Vector Problem: Extended Abstract},
63 | year = {2009},
64 | isbn = {9781605585062},
65 | publisher = {Association for Computing Machinery},
66 | address = {New York, NY, USA},
67 | url = {https://doi.org/10.1145/1536414.1536461},
68 | doi = {10.1145/1536414.1536461},
69 | abstract = {We construct public-key cryptosystems that are secure assuming theworst-case hardness of approximating the minimum distance on n-dimensional lattices to within small Poly(n) factors. Prior cryptosystems with worst-case connections were based either on the shortest vector problem for a special class of lattices (Ajtai and Dwork, STOC 1997; Regev, J. ACM 2004), or on the conjectured hardness of lattice problems for quantum algorithms (Regev, STOC 2005). Our main technical innovation is a reduction from variants of the shortest vector problem to corresponding versions of the "learning with errors" (LWE) problem; previously, only a quantum reduction of this kind was known. As an additional contribution, we construct a natural chosen ciphertext-secure cryptosystem having a much simpler description and tighter underlying worst-case approximation factor than prior schemes.},
70 | booktitle = {Proceedings of the Forty-First Annual ACM Symposium on Theory of Computing},
71 | pages = {333–342},
72 | numpages = {10},
73 | keywords = {cryptography, lattices},
74 | location = {Bethesda, MD, USA},
75 | series = {STOC '09}
76 | }
77 |
78 | @inproceedings{10.1145/2488608.2488680,
79 | author = {Brakerski, Zvika and Langlois, Adeline and Peikert, Chris and Regev, Oded and Stehl\'{e}, Damien},
80 | title = {Classical Hardness of Learning with Errors},
81 | year = {2013},
82 | isbn = {9781450320290},
83 | publisher = {Association for Computing Machinery},
84 | address = {New York, NY, USA},
85 | url = {https://doi.org/10.1145/2488608.2488680},
86 | doi = {10.1145/2488608.2488680},
87 | abstract = {We show that the Learning with Errors (LWE) problem is classically at least as hard as standard worst-case lattice problems. Previously this was only known under quantum reductions.Our techniques capture the tradeoff between the dimension and the modulus of LWE instances, leading to a much better understanding of the landscape of the problem. The proof is inspired by techniques from several recent cryptographic constructions, most notably fully homomorphic encryption schemes.},
88 | booktitle = {Proceedings of the Forty-Fifth Annual ACM Symposium on Theory of Computing},
89 | pages = {575–584},
90 | numpages = {10},
91 | keywords = {learning with errors, lattices},
92 | location = {Palo Alto, California, USA},
93 | series = {STOC '13}
94 | }
95 |
--------------------------------------------------------------------------------
/policies.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: default
3 | title: The lattice club
4 | description: How do we choose our resources?
5 | ---
6 |
7 | ## Welcome to the lattice club!
8 |
9 | Thank you for visiting us!
10 |
11 | We strive to create a community that is interested in lattice-based cryptography but
12 | that is also respectful with each other! Due to this, we follow in our events,
13 | repo and website the [Rust Code of Conduct](https://www.rust-lang.org/policies/code-of-conduct).
14 |
15 | ### What kind of resources do we include in the website?
16 |
17 | We strive to provide resources that:
18 |
19 | * Have the explicit permission from the authors of thesis to be posted here.
20 | * Cover specific topics: rather than providing all resources covering a topic, we
21 | try to provide one that seems to balance them all.
22 | * Emphasise diversity: we will prioritise including resources which authors are
23 | from under-represented communities.
24 |
25 | [Back to main](./)
26 |
--------------------------------------------------------------------------------
/script/bootstrap:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | set -e
4 |
5 | gem install bundler
6 | bundle install
7 |
--------------------------------------------------------------------------------
/script/cibuild:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | set -e
4 |
5 | bundle exec jekyll build
6 | bundle exec htmlproofer ./_site --check-html --check-sri --url-ignore '/fonts.gstatic.com/'
7 | bundle exec rubocop -D --config .rubocop.yml
8 | bundle exec script/validate-html
9 | gem build jekyll-theme-cayman.gemspec
10 |
--------------------------------------------------------------------------------
/script/release:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | # Tag and push a release.
3 |
4 | set -e
5 |
6 | # Make sure we're in the project root.
7 |
8 | cd $(dirname "$0")/..
9 |
10 | # Make sure the darn thing works
11 |
12 | bundle update
13 |
14 | # Build a new gem archive.
15 |
16 | rm -rf jekyll-theme-cayman-*.gem
17 | gem build -q jekyll-theme-cayman.gemspec
18 |
19 | # Make sure we're on the master branch.
20 |
21 | (git branch | grep -q 'master') || {
22 | echo "Only release from the master branch."
23 | exit 1
24 | }
25 |
26 | # Figure out what version we're releasing.
27 |
28 | tag=v`ls jekyll-theme-cayman-*.gem | sed 's/^jekyll-theme-cayman-\(.*\)\.gem$/\1/'`
29 |
30 | # Make sure we haven't released this version before.
31 |
32 | git fetch -t origin
33 |
34 | (git tag -l | grep -q "$tag") && {
35 | echo "Whoops, there's already a '${tag}' tag."
36 | exit 1
37 | }
38 |
39 | # Tag it and bag it.
40 |
41 | gem push jekyll-theme-cayman-*.gem && git tag "$tag" &&
42 | git push origin master && git push origin "$tag"
43 |
--------------------------------------------------------------------------------
/script/server:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | bundle exec jekyll serve
4 |
--------------------------------------------------------------------------------
/script/validate-html:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env ruby
2 | # frozen_string_literal: true
3 |
4 | require "w3c_validators"
5 |
6 | def validator(file)
7 | extension = File.extname(file)
8 | if extension == ".html"
9 | W3CValidators::NuValidator.new
10 | elsif extension == ".css"
11 | W3CValidators::CSSValidator.new
12 | end
13 | end
14 |
15 | def validate(file)
16 | puts "Checking #{file}..."
17 |
18 | path = File.expand_path "../_site/#{file}", __dir__
19 | results = validator(file).validate_file(path)
20 |
21 | return puts "Valid!" if results.errors.empty?
22 |
23 | results.errors.each { |err| puts err.to_s }
24 | exit 1
25 | end
26 |
27 | validate "index.html"
28 | validate File.join "assets", "css", "style.css"
29 |
--------------------------------------------------------------------------------
/thumbnail.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/octaviopk9/lattice-based-cryptography/3036db0069c4da175901d11dc66f22631e15a5cc/thumbnail.png
--------------------------------------------------------------------------------