Как надежно сохранить PrivateKey в коде [дубликат]

8
задан Jason Nichols 12 January 2010 в 16:19
поделиться

5 ответов

Невозможно закрепить ключ в ненадежной среде. Вы можете запустить свой код, вы можете создать ключ от произвольных переменных, что угодно. В конечном итоге, предполагая, что вы используете стандарт library javax.crypto , вы должны позвонить MAC.GetInstance () , и когда-нибудь позже вы позвоните init () на этом случае. Кто-то, кто хочет, ваш ключ получит его.

Однако, я думаю, что решение заключается в том, что вы связываете ключ к среде , а не программу. Подпись подразумевается, что данные возникли из известного источника и не были подданы с тех пор, как этот источник предусматривает его. В настоящее время вы пытаетесь сказать «Гарантия, что моя программа произвела данные». Вместо этого измените ваше требование «гарантировать, что конкретный пользователь моей программы произвел данные». Затем он переместился на этот пользователь, чтобы позаботиться о своем ключ.

5
ответ дан 5 December 2019 в 22:18
поделиться

Во-первых - молодец, что задумался об этой проблеме!

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

В качестве альтернативы, если он будет работать под Windows, вы можете использовать Crypto API для безопасного хранения закрытого ключа, который помечен как не экспортируемый. Однако, то, как вы будете безопасно распространять этот ключ, может стать еще одной проблемой.

0
ответ дан 5 December 2019 в 22:18
поделиться

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

0
ответ дан 5 December 2019 в 22:18
поделиться

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

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

Если вы находитесь в среде * NIX, хранение ключа на диске с корневым / корнем 400 разрешений может быть «достаточно хорош».

В Windows вы можете использовать DPAPI для хранения данных в безопасной памяти Microsofts.

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

1
ответ дан 5 December 2019 в 22:18
поделиться

Чей личный ключ? Частный ключ должен быть частным, поэтому неправильно распределить его.

0
ответ дан 5 December 2019 в 22:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: