у самого пользователя должны быть установлены специальные программы
Ну разумеется.Подписывает кто - пользователь!
Поэтому у пользователя должен стоять софт который достанет ключ из хранилища, обеспечит интерфейс для подписывания файла.
Нет софта - нет подписи.
Обычную подпись пользователь ставит с помощью шариковой ручки - для этого ему нужна шариковая ручка.
Электронную подпись пользователь ставит с помощью софта - для этого ему нужен софт.
На сайте госуслуг кажется есть возможность подписать документ(при подаче 3-ндфл, вроде) без установки сторонних программ, может кто в курсе как это реализовано?
Нет такой возможности. В смысле подписать без софта. А подать документ без электронной подписи это возможно.