Кіріспе
Криптографиялық қолтаңба схемасы
Криптографияда Лампорт қолтаңбасы немесе Лампорт бір реттік қолтаңба схемасы – цифрлық қолтаңба құру әдісі. Лампорт қолтаңбаларын кез келген криптографиялық тұрғыдан қауіпсіз бір бағытты функциядан құрастыруға болады; көбінесе криптографиялық хэш-функция қолданылады. Кванттық компьютерлердің даму мүмкіндігі RSA сияқты көптеген криптографиялық жүйелердің қауіпсіздігіне қатер төндірсе де, үлкен хэш-функциялары бар Лампорт қолтаңбалары осы жағдайда да қауіпсіз болады деп саналады. Әрбір Лампорт кілті тек бір хабарламаға қол қою үшін ғана қолданылуы мүмкін. Дегенмен, көптеген Лампорт қолтаңбаларын бір Меркл хэш-ағашы арқылы өңдеуге болады, осылайша бір хэш-ағаш кілті көптеген хабарламалар үшін қолданылуы мүмкін, бұл оны тиімді цифрлық қолтаңба схемасы етеді. Лампорт қолтаңбасы криптожүйесі 1979 жылы ойлап табылды және оның авторы Лесли Лампорттың құрметіне аталды.
In cryptography, a Lamport signature or Lamport one time signature scheme is a method for constructing a digital signature. Lamport signatures can be built from any cryptographically secure one way function; usually a cryptographic hash function is used. Although the potential development of quantum computers threatens the security of many common forms of cryptography such as RSA, it is believed that Lamport signatures with large hash functions would still be secure in that event. Each Lamport key can only be used to sign a single message. However, many Lamport signatures can be handled by one Merkle hash tree, thus a single hash tree key can be used for many messages, making this a fairly efficient digital signature scheme. The Lamport signature cryptosystem was invented in 1979 and named after its inventor, Leslie Lamport.
Мысал
Алиса 256 биттік криптографиялық хэш функциясына және қандай да бір қауіпсіз кездейсоқ сан генераторына ие. Ол Лампорт кілт жұбын – жеке кілт пен оған сәйкес келетін ашық кілтті жасау және пайдалануды қалайды.
Кілттер жұбын жасау
Жеке кілтті жасау үшін Алиса кездейсоқ сан генераторын 256 жұп кездейсоқ сандарды (барлығы 2×256 сан) шығару үшін пайдаланады, әр санның мөлшері 256 бит, яғни барлығы 2×256×256 бит = 128 Кибит. Бұл оның жеке кілті, ол оны кейінірек пайдалану үшін қауіпсіз жерде сақтайды. Ашық кілтті жасау үшін ол жеке кілттегі 512 кездейсоқ санның әрқайсысын хэштейді, осылайша әрқайсысы 256 биттік 512 хэш құрайды. (Барлығы 128 Кбит.) Осы 512 хэш оның ашық кілтін құрайды, ол оны бүкіл әлеммен бөліседі.
Хабарламаға қол қою
Кейін Алиса хабарламаға қол қоюды қалайды. Біріншіден, ол хабарламаны 256 биттік хэш-қосындыға түрлендіреді. Содан кейін, хэштің әр биті үшін, биттің мәніне сәйкес, ол өзінің жеке кілтін құрайтын сандар жұбынан бір санды таңдайды (яғни, егер бит 0 болса, бірінші сан таңдалады, ал егер бит 1 болса, екіншісі таңдалады). Бұл 256 саннан тұратын тізбек түзеді. Әрбір санның өзі 256 биттен тұрғандықтан, оның қолтаңбасының жалпы көлемі 256×256 бит = 65536 бит = 64 Кибит болады. Бұл (бастапқыда кездейсоқ таңдалған) сандар оның қолтаңбасы болып табылады және ол оларды хабарламамен бірге жариялайды. Ескеріңіз, Алисаның жеке кілті қолданылғаннан кейін, оны ешқашан қайта қолдануға болмайды. Ол қолтаңба үшін пайдаланбаған қалған 256 санды жоюы керек. Әйтпесе, жеке кілтті қайта пайдаланатын әрбір қосымша қолтаңба, кейіннен жалған қолтаңбалар жасауға мүмкіндік беретін қарсыластарға қарсы қауіпсіздік деңгейін төмендетеді.
Қолтаңбаны тексеру
Содан кейін Боб Алисаның хабарламаға қойған қолтаңбасын тексергісі келеді. Ол сондай-ақ 256 биттік хэш-қосынды алу үшін хабарламаны хэштейді. Сосын ол хэш-қосындыдағы биттерді пайдаланып, Алисаның ашық кілтіндегі 256 хэшті таңдайды. Ол хэштерді Алиса қолтаңба үшін кездейсоқ сандарды таңдаған тәсілмен таңдайды. Яғни, егер хабарлама хэшінің бірінші биті 0 болса, ол бірінші жұптан бірінші хэшті таңдайды, және т.б. Содан кейін Боб Алисаның қолтаңбасындағы 256 кездейсоқ санның әрқайсысын хэштейді. Бұл оған 256 хэш береді. Егер осы 256 хэш, Алисаның ашық кілтінен таңдап алған 256 хэшпен дәл сәйкес келсе, онда қолтаңба жарамды. Әйтпесе, қолтаңба жарамсыз. Естеріңізге сала кетейік, Алиса хабарламаның қолтаңбасын жариялағанға дейін, жеке кілтіндегі 2 × 256 кездейсоқ санды ешкім білмейді. Сондықтан, ешкім қолтаңба үшін қажетті 256 кездейсоқ саннан тұратын тізімді құра алмайды. Ал Алиса қолтаңбаны жариялағаннан кейін де, басқалары қалған 256 кездейсоқ санды білмейді, демек, басқа хабарлама хэштеріне сәйкес келетін қолтаңбаларды жасауға мүмкіндік жоқ.
Ресми сипаттама
Төменде Лампорт қолтаңбаларының қалай жұмыс істейтіні математикалық нотациямен қысқаша сипатталған. Бұл сипаттамадағы "хабарлама" – кез келген ұзын хабардың хэш-нәтижесі болуы мүмкін (бірақ міндетті емес), сондай-ақ, нақты өлшемдегі белгіленген блок та болуы мүмкін.
Кілттер
Оң бүтін сан болсын және хабарлар жиыны болсын. Бір бағытты функция болсын. және үшін қол қоюшы кездейсоқ таңдап, келесіні есептейді. Жеке кілт , мәндерден тұрады. Ашық кілт , мәндерден тұрады.
The private key, , consists of values The public key consists of the values .
Қысқа жеке кілт
Жеке кілтінің барлық кездейсоқ сандарын жасау және сақтаудың орнына, жеткілікті өлшемдегі бір кілтті сақтауға болады. (Әдетте жеке кілттегі кездейсоқ сандардың бірімен бірдей өлшемде.) Осы бір кілтті криптографиялық тұрақты псевдокездейсоқ сан генераторының (CSPRNG) бастамасы ретінде пайдаланып, қажет болғанда жеке кілттегі барлық кездейсоқ сандарды жасауға болады. Назарда болсын, CSPRNG орнына криптографиялық тұрақты хэш функциясын (немесе оның нәтижесі бастамамен XOR операциясынан өтпегенін) қолдануға болмайды, себебі хабарламаға қол қою жеке кілттен қосымша кездейсоқ мәліметтерді ашады. Егер қарсылас мақсатты алушылардан бұрын қолтаңбаға қол жеткізе алса, ол жеке кілттен ашылған кездейсоқ мәліметтердің әр еселенгені үшін қауіпсіздік деңгейін екі есеге төмендететін қолтаңбаны жасауға мүмкіндік алады. Сол сияқты, бір кілтті CSPRNG-мен бірге көптеген Lamport кілттерін жасау үшін де пайдалануға болады. Көбінесе кванттық қауіпсіздікті қамтамасыз ететін кездейсоқ қолжетімді CSPRNG пайдалану ұсынылады. Атап айтқанда, BBS сияқты классикалық CSPRNG-лерді қолданбау керек.
Қысқа ашық кілт
Лампорт қолтаңбасын хэш тізімімен біріктіруге болады, бұл ашық кілттегі барлық хэштердің орнына тек бір жоғарғы хэшті жариялауға мүмкіндік береді. Яғни, тек жоғарғы хэшпен тексеруге болатын мәндердің орнына, қолтаңбаға кездейсоқ сандар мен ашық кілттің хэш тізімінен пайдаланылмаған хэштер де енгізілуі керек, нәтижесінде қолтаңбалар шамамен екі есе үлкен болады. Яғни, барлық мәндерді қосу қажет. Егер хэш тізімі орнына криптографиялық аккумулятор қолданылса, қолтаңбаға пайдаланылмаған хэштерді қосу қажет емес.
Қысқа кілттер мен қолтаңба
Винтерниц қолтаңбасын сығу жеке кілт пен ашық кілт өлшемін сәл кемдеген есеге дейін, ал қолтаңба үшін – сол есенің жартысына дейін азайтады. Есептеулер CSPRNG қажеттілігінің орнына криптографиялық тұрғыдан қауіпсіз хэш функциясын қолдану арқылы сәл артық көбейеді. Алдыңғы бөлімде түсіндірілгендей, қолтаңбаның көлемін екі есеге арттыру шартымен ашық кілтті бір мәнге дейін қысқарту үшін хэш тізімін де қолдануға болады.
Бірнеше хабарлама үшін ашық кілт
Әрбір Lamport ашық кілті тек бір хабарламаға қол қою үшін қолданылуы мүмкін, демек, көптеген хабарламаларға қол қою үшін көптеген кілттерді жариялау қажет. Бірақ, осы ашық кілттерге hash ағашын қолдануға болады, оның орнына hash ағашының түбірлік хэшін жариялауға болады. Бұл қолтаңбаның мөлшерін арттырады, себебі қолтаңбаға hash ағашының бір тармағын қосу қажет, бірақ бұл бір хэшті жариялауға және оны көптеген болашақ қолтаңбаларды тексеру үшін пайдалануға мүмкіндік береді.