Skip to content

ilyaotinov/keeper-pass

Repository files navigation

pass-keeper

Сервис для безопасного хранения данных.

Запуск сервера

Для корректной работы сервера ему необходим ssl сертификат и мастер ключ.

Конфигурационный файл

Для корректной работы серверу нужно передать конфигурационный файл. Пример можно найти по пути: config/config.yaml. Его же можно использовать для локального тестирования

Пример команды для сборки сервера с переданным файлом конфигурации: go build -ldflags '-X main.configFilePath=config/config.yaml -o server cmd/server/main.cmd

SSL

Для генерации ssl сертификата на локальном окружении можно запустить команду make cert. Она создаст необходимые ключи шифрования и сертефикат в папке cert. После чего в файле конфигурации нужно будет указать путь до сгенерированных файлов. В файле конфигурации по пути config/config.yaml уже указаны все пути для этого способа.

Мастер ключ

Необходим для работы сервера и передается через ldflags приложению. Должен иметь длину в 16 символов. Если длина будет отличаться, приложение не соберется. Пример сборки сервера с переданным мастер ключом: go build -ldflags '-X main.configFilePath=config/config.yaml -X main.masterKey=1323434385868384 -o server cmd/server/main.go'

Пример итоговой команды для сборки сервера

go build -ldflags '-X main.configFilePath=config/config.yaml -X main.masterKey=1323434385868384 -o server cmd/server/main.go'

Запуск клиента

Конфигурация

Клиент поддерживает конфигурацию на машине пользователя. По большей части она нужна для локального тестирования или в случае когда на сервере установлен самоподписанный сертификат шифрования

Клиент будет искать файл конфигурации по пути ~/.passkeper.yaml Пример можно найти в репозитории по пути config/.passkeper.yaml

SSL

Если на сервере используется не самоподписанный сертификат, то дополнительная настройка клиента не требуется

Но если на сервере сертификат самоподписанный то в файле конфигурации клиента в поле grpc.tls_cert надо указать путь до ca-cert.pem

Сборка клиента

Команда для сборки: go build -o build/passkeep cmd/client/main.go

Процесс шифрования данных на сервере

  1. При запуске сервера через ldflags передается master-key
  2. С помощью master-key шифруется general-key, который создается и сохраняется в базе данных в зашифрованном виде
  3. general-key расшифровывается с помощью master-key и помещается в открытом виде в keyring
  4. При сохранении данных генерируется data-key с помощью которого шифруется конкретный элемент данных. После чего data-key шифруется с помощью general-key и сохраняется рядом с данными
  5. При извлечении данных data-key дешифруется с помощью general-key и с помощью расшифрованного data-key расшифровывается конкретный элемент данных

Более подробное описание в диаграмме crypt.drawio в этом репозитории

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages