уже несколько дней бьюсь над проблемой раздачи секретных ключей PGP по серверам кластера.
Представим, что у меня 2-3 сервера стоящих за балансировщиком, которые расшифровывают файлы переданные от клиентов.
На одном из серверов я сгенерировал свой RSA ключ. Открытый я переслал клиентам, а секретный надо передать на остальные сервера, потому как не знаю какой из серверов будет обслуживать клиента.
Все мануалы говорят, что секретный ключ никогда не покидает своего сервера и должен храниться в зашифрованном виде. Так как тогда решить мою проблему?
Если я експортирую секретный ключ из GPG, то он будет записан на диск в не зашифрованном виде (уже плохо). Потом копирую его по SSH на другие сервера (теперь они покинули свой родной сервер, и там не зашифрованы). Там импортирую их свой хранилища GPG. И так каждый раз когда ключ устаревает. Разве это правильные подход? Чего я не понимаю?
PS! Нашел статьи по использовании subkeys, но проблема с раздачей секретных sub-ключей в не зашифрованном виде никуда не девается?
Здравствуйте, KOLRH, Вы писали:
KOL>PS! Нашел статьи по использовании subkeys, но проблема с раздачей секретных sub-ключей в не зашифрованном виде никуда не девается?
Не понял, в чём именно проблема — в автоматизации раздачи или в том, что нужно обеспечить безопасность ключа при передаче?
Здравствуйте, KOLRH, Вы писали:
KOL>уже несколько дней бьюсь над проблемой раздачи секретных ключей PGP по серверам кластера.
KOL>Представим, что у меня 2-3 сервера стоящих за балансировщиком, которые расшифровывают файлы переданные от клиентов. KOL>На одном из серверов я сгенерировал свой RSA ключ. Открытый я переслал клиентам, а секретный надо передать на остальные сервера, потому как не знаю какой из серверов будет обслуживать клиента.
KOL>Все мануалы говорят, что секретный ключ никогда не покидает своего сервера и должен храниться в зашифрованном виде.
Против какого рода атаки это должно защищать?
Кто-то захватит себе выключенный сервер? Кто-то захватит себе включенный сервер? Кто-то запустит руткит через дырку, и будет воровать ключ?
Здравствуйте, AleksandrN, Вы писали:
AN>Здравствуйте, KOLRH, Вы писали:
KOL>>PS! Нашел статьи по использовании subkeys, но проблема с раздачей секретных sub-ключей в не зашифрованном виде никуда не девается?
AN>Не понял, в чём именно проблема — в автоматизации раздачи или в том, что нужно обеспечить безопасность ключа при передаче?
Наверно я просто слишком усложняю вещи и проблемы здесь никакой нет. После ехпорта субключ надо просто зашивровать и можно передавать спокоино.
А если еще проще, то ключи даже не нужно эксопртировать из GPG, а напрямую пересылать GPG контейнер со всеми ключами.
Здравствуйте, Sharowarsheg, Вы писали:
S>Здравствуйте, KOLRH, Вы писали:
KOL>>уже несколько дней бьюсь над проблемой раздачи секретных ключей PGP по серверам кластера.
KOL>>Представим, что у меня 2-3 сервера стоящих за балансировщиком, которые расшифровывают файлы переданные от клиентов. KOL>>На одном из серверов я сгенерировал свой RSA ключ. Открытый я переслал клиентам, а секретный надо передать на остальные сервера, потому как не знаю какой из серверов будет обслуживать клиента.
KOL>>Все мануалы говорят, что секретный ключ никогда не покидает своего сервера и должен храниться в зашифрованном виде.
S>Против какого рода атаки это должно защищать?
S>Кто-то захватит себе выключенный сервер? Кто-то захватит себе включенный сервер? Кто-то запустит руткит через дырку, и будет воровать ключ?
Считаете я слишком доверяю мануалам? Вот я и мучаюсь над этим вопросом, каких атак по-настоящему бояться. Но это же вроде как best practices.
Здравствуйте, KOLRH, Вы писали:
S>>Против какого рода атаки это должно защищать? S>>Кто-то захватит себе выключенный сервер? Кто-то захватит себе включенный сервер? Кто-то запустит руткит через дырку, и будет воровать ключ?
KOL>Считаете я слишком доверяю мануалам? Вот я и мучаюсь над этим вопросом, каких атак по-настоящему бояться. Но это же вроде как best practices.
За каждой Best Practice должен быть раздел Rationale, или что-то около того — обоснование, в той или иной форме.
Здравствуйте, KOLRH, Вы писали:
KOL>Наверно я просто слишком усложняю вещи и проблемы здесь никакой нет. После ехпорта субключ надо просто зашивровать и можно передавать спокоино. KOL>А если еще проще, то ключи даже не нужно эксопртировать из GPG, а напрямую пересылать GPG контейнер со всеми ключами.
Если я всё правильно понял, ключ передаётся через SSH внутри локальной сетки. Тогда можно не сильно заморачиваться и настроить SSH-авторизацию не по логину/паролю, а по сертификату. Тогда ключ для сервера будет передаваться по шифрованному каналу. Можно дополнительно шифровать ключ, передавать шифрованным и расшифровывать на другом сервере.
И написать скрипт, который всё это сделает автоматически.
#!/bin/bash
gpg --output secret.key.enc --encrypt --recipient user1@server1 secret.key
# авторизацию уже настроили и нужные файлы лежат в ~/.ssh
scp secret.key.enc user1@server1:/home/example/secret.key.enc
ssh user1@server1 gpg --decrypt --output /home/example/secret.key /home/example/secret.key.enc
# можно для передачи использовать одну учётку, а расшифровку запускать от имени другого пользователя на удалённом сервере по расписанию
# повторить строки выше в цикле для нескольких серверов
# хорошо бы ещё делать резервную копию текущих ключей, на случай сбоя при обновлении
# скрипт не тестировал
Здравствуйте, AleksandrN, Вы писали:
AN>Здравствуйте, KOLRH, Вы писали:
KOL>>Наверно я просто слишком усложняю вещи и проблемы здесь никакой нет. После ехпорта субключ надо просто зашивровать и можно передавать спокоино. KOL>>А если еще проще, то ключи даже не нужно эксопртировать из GPG, а напрямую пересылать GPG контейнер со всеми ключами.
AN>Если я всё правильно понял, ключ передаётся через SSH внутри локальной сетки. Тогда можно не сильно заморачиваться и настроить SSH-авторизацию не по логину/паролю, а по сертификату. Тогда ключ для сервера будет передаваться по шифрованному каналу. Можно дополнительно шифровать ключ, передавать шифрованным и расшифровывать на другом сервере.
AN>И написать скрипт, который всё это сделает автоматически.
AN>
AN>#!/bin/bash
AN>gpg --output secret.key.enc --encrypt --recipient user1@server1 secret.key
AN># авторизацию уже настроили и нужные файлы лежат в ~/.ssh
AN>scp secret.key.enc user1@server1:/home/example/secret.key.enc
AN>ssh user1@server1 gpg --decrypt --output /home/example/secret.key /home/example/secret.key.enc
AN># можно для передачи использовать одну учётку, а расшифровку запускать от имени другого пользователя на удалённом сервере по расписанию
AN># повторить строки выше в цикле для нескольких серверов
AN># хорошо бы ещё делать резервную копию текущих ключей, на случай сбоя при обновлении
AN># скрипт не тестировал
AN>