Alexander Kuklev (akuklev) wrote,
Alexander Kuklev
akuklev

Future park - Электронная подпись.

Вначале расскажу о то, как электронная подпись работает.

При помощи генератора случайных чисел и пары математических преобразований создаются два числа, которые называются закрытым и открытым ключом.

Открытый ключ посылается на очень-очень-очень надёжный сервер и закрепляется за вашим именем. Каждый, кто знает ваше имя, теперь может через Интернет получить это число.

А закрытый ключ вы храните у себя и ник-к-кому не показываете.
Затем, предположим, вы хотите подписать долговую расписку:
"Я, Вася Пупкин, обязуюсь вернуть Фёдору Сумкину полтора медных фартинга к обеду 20.ноября.2085 , чтоб он ими подавился."

Вы берёте этот текст и при помощи хитрого алгоритма находите специальное число, соответствующее этому тексту. Затем это число комбинируется с вашим секретным ключом и результат называется "подписью".

Каждый, кто знает текст расписки, может скачать ваш открытый ключ (в тексте же есть ваше имя) и проверить им, что:
1) Это действительно ваша подпись.
2) Подписали вы именно эту расписку.

Но при этом, ваш секретный ключ он узнать никак не сможет. А поэтому никто, кроме вас, не может подписаться вашим именем.


Если говорить совсем точно, то узнать ваш секретный ключ, имея на руках вашу подпись и текст расписки теоретически возможно. Но только для этого понадобится лет 150 работы. Хотя, конечно, это смотря кому работать. Может быть, у какого-нибудь Пентагона или ФБР есть такие мощные компы, что они и за год справятся. Но только это будет стоить тогда сумму порядка десятков миллионов долларов. Так что, я лично как-то не особо беспокоюсь на эту тему.



Другим слабым звеном является "надёжный-надёжный сервер", на котором хранится ваш открытый ключ. Некий злоумышленник может поместить свой открытый ключ под вашим именем и злодейски красть у вас деньги и очернять ваше имя.
На самом деле, при правильной организации "надёжного-надёжного сервера" сделать это для злоумышленника совершенно нереально. Более того, даже для ФБР, ЦРУ, МИ6, Моссада и КГБ вместе взятых это будет очень нетривиальной задачей. (Однако, правильной организации, обычно, как-раз не делают. Есть сильные подозрения, что именно потому и не делают, что спецслубы хотят иметь возможность для контроля. - прим. неизвестного, за слова которого я не несу никакой ответственности :) )

Казалось бы, рай земной...


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

Значит, требуется некое устройство, которое хранит ключ внутри, никому его не показывает. Подписывать оно должно само - ведь для подписывания нужно знать секретный ключ. Генерировать ключи устройство также должно само внутри (иначе, ключ будет известен тому, кто его в устройство записывал). Кроме того, генерировать ключ нужно не из псевдослучайных чисел, а из случайных чисел, которые генерируются аппаратным способом. Такие чипы сейчас есть и активно применяются в смарт-картах. Чип аппаратен и совершенно надёжен. Никакие вирусы и никакие дистанционные манипуляции ему не страшны. Пока его у вас не украдут, никто за вас не подпишится.
Такие штуки делают не только в форме смарт-карты, но и в форме маленького, элегантного и удобного USB-ключа. См. Cryptoidentity.
(http://www.cryptoidentity.eutron.it)


А как сделать так, чтобы не смогли воспользоваться, даже если украдут?
А вот так: нужно поместить на USB-ключ (или смарт-карту) сканер отпечатка пальца. Прижал палец - подписал документ.
Такие аппараты сейчас тоже делают. Например, фирма Sony производит такие аппараты под маркой Puppy. Мне они как-то не очень, если честно. Большеваты и страшноваты. :)

А чтобы укравший злоумышленник не смог вытянуть секретный ключ аппаратным способом, необходимо предусмотреть, чтобы ключ самоуничтожался при попытке вскрытия устройства. Именно такое устройство (да ещё и, впридачу, электромагнитно-, ударо- и водозащищённое) представляла некая фирма на CeBIT 2003. Впрочем, на рынок оно, похоже, не вышло: сколько я ни искал - нигде не нашел в Интернете, чтобы оно продавалось.

Однако, есть и ещё одно тонкое место. Предположим, вы хотите подписать расписку, что должны Васе Пупкину 50 долларов. Он показывает вам текст расписки на своём компьютере, вы вставляете свой USB-ключ и вуаля - вы подписали расписку. А откуда вы знаете, что вы подписали именно то, что видели на экране? Вася Пупкин мог специально перед вашим приходом изменить системный шрифт и поменять местами значки 5 и 8. Таким образом, вы подписались, что должны ему 80 долларов вместо 50ти. Он мог быть хитрее и не просто изменить системный шрифт, но вообще подсунуть на подписание совершенно другой текст.

Значит, нам бы надо иметь на ключе маленький экранчик, чтобы иметь возможность прочитать текст на "своём", надёжном, устройстве.

И тут на помощь приходит другой форм-фактор! Наручные часы, о которых я говорил. На них приходит через радио текст для подписания, они его отображают, человек нажимает на сканер отпечатков пальца на ремешке и вуаля - текст подписан. Шрифт для отображения символов и сам механизм отображения должны быть неизменяемо вшиты в часы, и тогда лазеек подсунуть человеку не тот текст уже не остаётся.

Есть ещё одна проблема: человека могут заставить подписать что-то силой.

И против этого тоже можно придумать противоядие. Помните, я говорил, что на часах хотелось бы иметь восемь кнопок - по четыре с каждой стороны - и электрошокер вместо звонка.

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

Такое устройство:
1) Всегда с вами и позволяет всегда провести платёж, открыть двери или подписать документ.
2) Никто, кроме вас, не может подписать документ - требуется ваш отпечаток пальца.
3) Даже если устройство будет украдено, злоумышленник не сможет им воспользоваться. Даже для того, чтобы просто его включить, нужен ваш отпечаток пальца. А при механическом вскрытии секретный ключ будет уничтожен.
4) Если на вас оказывается физическое давление, вы можете незаметно для злоумышленников сделать вид, что подписали документ, сгенерировав на самом деле фальшивую подпись. Злоумышленники не смогут достаточно быстро отличить её от настоящей.
5) Устройство может заменить все пароли, ключи для дверных замков и автосигнализаций и кредитную карту.


Кроме того, было бы очень удобно сделать поддержку short distance identification. То есть: как только вы отходите от компьютера более, чем на метр, монитор вырубается. Снова входите в радиус - часы пищат. Касаетесь датчика отпечатков, и монитор снова врубается. Тоже самое можно сделать с автоматическим закрыванием автомобиля: отходите от машины более, чем на полтора метра - она закрывается. Подходите, подносите часы в радиус 20ти сантиметров от замка, касаетесь пальцем датчика - дверь открыта.
Subscribe

  • (no subject)

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

  • Прогресс

    Десять дней назад, вторая ступень SpaceX'овского корабля Starship своим ходом слетала своим ходом на десять километров вверх, и усмепшно приземлилась…

  • О водосбережении

    Как известно, питьевая вода во многих странах дефицитный ресурс. И даже в дождливой Германии летом иногда случаются засухи, в результате которых она…

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 3 comments