]> Sergey Matveev's repositories - stargrave-blog.git/commit
Очень нравится Noise protocol
authorSergey Matveev <stargrave@stargrave.org>
Thu, 29 Dec 2016 21:32:00 +0000 (00:32 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Thu, 29 Dec 2016 21:32:00 +0000 (00:32 +0300)
commit75602bef8d50e9f327ff4e1e6565aab107c78cf8
tree4b825dc642cb6eb9a060e54bf8d69288fbee4904
parentbe99014c7cb9a999fac6fad20ab6a0cfdca8255f
Очень нравится Noise protocol

http://noiseprotocol.org/
Для своего проекта решил получше посмотреть на использование протокола
Noise. И проникся им ещё больше! Однозначно это прекрасно продуманная,
простая для реализации и криптографически превосходная штука!

Точнее это не протокол как таковой, а framework для построения
протоколов. Он регламентирует как используются выходы функций
Диффи-Хельмана, как и что дальше хэшируется, как ротируются ключи, как
они вырабатываются, как происходит шифрование и аутентификация, итд.
Noise описывает всю эту "обвязку" вокруг строго заданных примитивов
шифрования, аутентификация, хэширования и прочего.

Как framework, он предоставляет готовые различные варианты алгоритмов и
вариантов проведения рукопожатия. Вы прикидываете какие у вас требования
и начальные условия и выбираете соответствующий подходящий вариант
рукопожатия и набора криптоалгоритмов.

Как всё это сериализовывать, передавать -- на вашей совести. Noise
описывает состояние рукопожатия и состояния AEAD шифров. Передача данных
-- ваша забота. Зато про криптографию вы не думаете вообще. А она в нём
задана очень грамотно -- не придраться.

Ещё мне понравился раздел про неотличимость noise трафика от остальных.
И всё что там предлагается сделать -- мой GoVPN как-раз и применяет. Это
padding, trial-ы на разную обработку пакетов и Elligator кодирование для
точек публичных кривых. То бишь действительно ничего нового или
незнакомого мне не придумали.