Как правило, электронная подпись документа делается в виде хэш-суммы контролируемого набора атрибутов документа (текст, название, автор и т.д.), зашифрованной закрытым ключом. Для проверки снова производится вычисление этой же хэш-суммы, подпись расшифровывается парным открытым ключом и расшифрованная хэш-сумма сравнивается с вычисленной. Если они совпадают - подпись действительна. Если какой-либо атрибут документа был изменён, то хэш-суммы не совпадут.
В первом варианте обе части ключа хранятся в системе, для подписи документа пользователь вводит пароль к закрытому ключу, подписание идёт непосредственно на сервере.
Во втором, более сильном, варианте закрытая часть ключа хранится у пользователя на криптоносителе. Сформированный документ передаётся с сервера клиенту, подписывается через криптопровайдер (например, КриптоПро ЭЦП Browser plug-in) и подпись отправляется обратно на сервер.
В обоих случаях открытая часть ключа хранится на сервере и служит для проверки подписи.