Что такое Keyproof

«Что такое Keyproof» — вопрос из категории Безопасность, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Keyproof — это концепция защиты ключей (например, криптографических) от утечки или компрометации. В Golang это часто связано с безопасным хранением и обработкой чувствительных данных, таких как API-ключи, пароли или приватные ключи.

Пример безопасного хранения ключа в памяти с использованием sync.Once для однократного чтения:

var (
    apiKey     string
    loadAPIKey sync.Once
)

func GetAPIKey() string {
    loadAPIKey.Do(func() {
        apiKey = os.Getenv("API_KEY") // Чтение из env-переменной
    })
    return apiKey
}

Также можно использовать crypto/sha256 для хеширования ключей перед сравнением, чтобы избежать хранения в открытом виде.

Нюансы:

  • Не логировать ключи.
  • Использовать environment variables или secret-менеджеры (Vault, AWS Secrets Manager).
  • Очищать буферы с ключами после использования (например, через memguard).