From 75602bef8d50e9f327ff4e1e6565aab107c78cf8 Mon Sep 17 00:00:00 2001 From: Sergey Matveev Date: Fri, 30 Dec 2016 00:32:00 +0300 Subject: [PATCH] =?utf8?q?=D0=9E=D1=87=D0=B5=D0=BD=D1=8C=20=D0=BD=D1=80?= =?utf8?q?=D0=B0=D0=B2=D0=B8=D1=82=D1=81=D1=8F=20Noise=20protocol?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit http://noiseprotocol.org/ Для своего проекта решил получше посмотреть на использование протокола Noise. И проникся им ещё больше! Однозначно это прекрасно продуманная, простая для реализации и криптографически превосходная штука! Точнее это не протокол как таковой, а framework для построения протоколов. Он регламентирует как используются выходы функций Диффи-Хельмана, как и что дальше хэшируется, как ротируются ключи, как они вырабатываются, как происходит шифрование и аутентификация, итд. Noise описывает всю эту "обвязку" вокруг строго заданных примитивов шифрования, аутентификация, хэширования и прочего. Как framework, он предоставляет готовые различные варианты алгоритмов и вариантов проведения рукопожатия. Вы прикидываете какие у вас требования и начальные условия и выбираете соответствующий подходящий вариант рукопожатия и набора криптоалгоритмов. Как всё это сериализовывать, передавать -- на вашей совести. Noise описывает состояние рукопожатия и состояния AEAD шифров. Передача данных -- ваша забота. Зато про криптографию вы не думаете вообще. А она в нём задана очень грамотно -- не придраться. Ещё мне понравился раздел про неотличимость noise трафика от остальных. И всё что там предлагается сделать -- мой GoVPN как-раз и применяет. Это padding, trial-ы на разную обработку пакетов и Elligator кодирование для точек публичных кривых. То бишь действительно ничего нового или незнакомого мне не придумали. -- 2.48.1