Вначале расскажу о то, как электронная подпись работает.
При помощи генератора случайных чисел и пары математических преобразований создаются два числа, которые называются закрытым и открытым ключом.
Открытый ключ посылается на очень-очень-очень надёжный сервер и закрепляется за вашим именем. Каждый, кто знает ваше имя, теперь может через Интернет получить это число.
А закрытый ключ вы храните у себя и ник-к-кому не показываете.
Затем, предположим, вы хотите подписать долговую расписку:
"Я, Вася Пупкин, обязуюсь вернуть Фёдору Сумкину полтора медных фартинга к обеду 20.ноября.2085 , чтоб он ими подавился."
Вы берёте этот текст и при помощи хитрого алгоритма находите специальное число, соответствующее этому тексту. Затем это число комбинируется с вашим секретным ключом и результат называется "подписью".
Каждый, кто знает текст расписки, может скачать ваш открытый ключ (в тексте же есть ваше имя) и проверить им, что:
1) Это действительно ваша подпись.
2) Подписали вы именно эту расписку.
Но при этом, ваш секретный ключ он узнать никак не сможет. А поэтому никто, кроме вас, не может подписаться вашим именем.
( о степени надёжности электронной подписи.. )Только вот проблемка: где хранить секретный ключ так, чтоб его не выкрали? С жесткого обычного компьютера выкрасть ключ элементарно.
Значит, требуется некое устройство, которое хранит ключ внутри, никому его не показывает. Подписывать оно должно само - ведь для подписывания нужно знать секретный ключ. Генерировать ключи устройство также должно само внутри (иначе, ключ будет известен тому, кто его в устройство записывал). Кроме того, генерировать ключ нужно не из псевдослучайных чисел, а из случайных чисел, которые генерируются аппаратным способом. Такие чипы сейчас есть и активно применяются в смарт-картах. Чип аппаратен и совершенно надёжен. Никакие вирусы и никакие дистанционные манипуляции ему не страшны. Пока его у вас не украдут, никто за вас не подпишится.
Такие штуки делают не только в форме смарт-карты, но и в форме маленького, элегантного и удобного USB-ключа. См. Cryptoidentity.

(
http://www.cryptoidentity.eutron.it)
( дальше.. )