Если это электронный кошелек, который поддерживает автоматическую withdrawl то хакеры могут делать все, что приложение обычно делает обработку withdrawls. Может быть, веб-приложение делает RPC вызов какой-либо другой сервер для обработки второй подписи .. хорошо, вы просто делаете это. легко. Если вы можете сделать автоматическое / мгновенное withdrawls то так можно хакер - нет никакого пути вокруг этого фундаментального вопроса.
Правда, вы не хотели бы, чтобы просто выставить "вывести X биткойны для решения Y" как вызов RPC. Вы должны связать снятие с конкретными счетами и проверить сумму от остатка на счете, так что ни один вызов один RPC не может уничтожить весь кошелек.
В идеале, вы должны иметь один или более дешевые, системы с низким уровнем безопасности для обработки переднего конца движения. Эти системы не будут проводить никаких закрытые ключи или конфиденциальные базы данных клиентов. Отдельная, безопасная, система с низким трафиком будет иметь дело с аутентификацией пользователей и снятия монет (или вы можете использовать два отдельные сервер). Аутентификация должна включать в себя некоторую форму протокола запроса-ответа (например, сертификат открытого ключа) или одноразовый пароль, чтобы не подвергать учетные данные пользователя для любого нарушения в сервере переднего плана.
Когда кто-то входит в их полномочия будут переданы на сервер аутентификации, который затем выдать маркер аутентификации одноразового ограниченного по времени. Когда они хотят, чтобы снять деньги со своего счета, передний конец сервер будет посылать этот маркер, количество и адрес получателя на безопасный сервер бумажника, который будет проверять достоверность фишки и сумму, а затем подписать сделку, чтобы отправить монеты по адресу назначения. Компромисс из интерфейсных систем подвергнут, в лучшем случае, остатки этих счетов, которые были активны в то время.
Для еще большей безопасности, вы можете потребовать учетные данные для входа, которые будут введены заново для каждого вывода (ограничивающего воздействия этих счетов делает снятие), и / или разрешить только снятие предварительно зарегистрированных адресов. Этот последний вариант является более громоздким, но и практически полностью устраняет стимулы ворваться в интерфейсных систем, оставляя только более закаленные безопасные серверы в качестве достойной цели.