内容简介:By Lane Wagner –Lattice-based cryptography has been coming into the spotlight recently. In January 2019, Many of the semifinalists in theA Lattice
By Lane Wagner – @wagslane on Twitter
Lattice-based cryptography has been coming into the spotlight recently. In January 2019, Many of the semifinalists in the NIST post-quantum-cryptography competition were based on lattices. Let’s explore the basics of lattices and how they apply to cryptosystems.
What is a Lattice?
A Lattice
According to Wikipedia , a lattice is the set of all integer linear combinations of basis vectors:
i.e.
More simply put, a lattice is defined by basis vectors, which are only able to be scaled by integers… yay no fractions!
For example, let’s create a lattice of all the integers in a two-dimensional plane:
The definition of our lattice contains only 2 basis vectors,
v1 = (0,1)
v2 = (1,0)
Our lattice is the set of all values that can be reached by any combination and scale of our basis vectors. For example, the point (2,0) is in our lattice because it can be reached by 2*v1
Similarly, we could create an entirely new lattice by changing our basis vectors to
v1 = (0,3)
v2 = (3,0)
As you can see, now the intermediary points (0,1) and (0,1) no longer exist in our lattice. There is no way to scale v1 (0,3) and v2 (3,0) to reach those points without using fractional scalars. With lattices, we can only scale by whole integers.
How Does This Help With Crypto?
Cryptographic algorithms are typically based on mathematical problems that are easy to verify the answer of, but hard to calculate.
For example, RSA is based on prime factorization. If I told you to find prime factors of 27,919,645,564,169,759, that would be hard. However, if I told you that 48,554,491 and 575,016,749 are prime factors, all you have to do is multiply them together in order to verify my answer.
RSA works great with classical computers. There are no known solutions to find prime factors of a number reliably in less than exponential time.
Shortest Vector Problem
In this introductory article, we will take a brief look at one of the more well-known lattice problems that are of use in cryptosystems, the shortest vector problem (SVP) .
Simply put, the goal of SVP is for the attacker to find the shortest vector from the origin (above in red) when given the basis of a lattice (above in blue). A zero vector doesn’t work as an answer, we consider it trivial.
How is it solved?
Like RSA with classical computers, it is hard to find the shortest vector of a large lattice, especially if it exists in many dimensions. One such slow solution for approximating the shortest vector is Babai ‘s algorithm, or Nearest Plane Algorithm , which you can read about in the links provided.
Thanks For Reading!
Lane on Twitter: @wagslane
Lane on Dev.to: wagslane
Download Qvault: https://qvault.io
( Disclaimer : The Author is the Founder of QVault )
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Android 源码设计模式解析与实战
何红辉、关爱民 / 人民邮电出版社 / 2015-11 / 79.00元
本书专门介绍Android源代码的设计模式,共26章,主要讲解面向对象的六大原则、主流的设计模式以及MVC和MVP模式。主要内容为:优化代码的首步、开闭原则、里氏替换原则、依赖倒置原则、接口隔离原则、迪米特原则、单例模式、Builder模式、原型模式、工厂方法模式、抽象工厂模式、策略模式、状态模式、责任链模式、解释器模式、命令模式、观察者模式、备忘录模式、迭代器模式、模板方法模式、访问者模式、中介......一起来看看 《Android 源码设计模式解析与实战》 这本书的介绍吧!