Если я дам кому-то только открытый ключ, сможет ли он писать сообщения для себя? - PullRequest
1 голос
/ 26 ноября 2010

Я хочу распространить лицензионные ключи, которые необходимо будет декодировать приложению в помещении клиента.

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

Теперь вопрос n00b: если я дам ему только закрытый ключ и сохраню открытый ключ очень, очень безопасно, сможет ли он создать файлы лицензий, которые могут быть расшифрованызакрытый ключ?

Я знаю, что мне кажется, что я стою здесь с ног на голову, но я надеюсь, что вы поймете, почему.

Ответы [ 3 ]

4 голосов
/ 26 ноября 2010

Нет, он не может.

Ключи сделаны парами;один называется «публичный», а другой - «частный», но это произвольный выбор.Я думаю, что вы используете термины странным образом (ключи являются «общедоступными» и «частными» с точки зрения клиента), но схема безопасна, насколько это возможно.

3 голосов
/ 26 ноября 2010

Закрытый ключ - это то, что вы храните в безопасности. Открытый ключ распространяется среди широкой публики ... отсюда и имена, private & public.

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

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

0 голосов
/ 03 ноября 2011

Этот ответ опоздал почти на год, но мне только что довелось столкнуться с этим вопросом.

Если вы не возражаете, что файл лицензионного ключа доступен для чтения (в конце концов, у клиента есть ключ для его расшифровки), вместо шифрования файла, почему бы вам просто не подписать его цифровой подписью?

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

...