Реализовал алгоритмы ЭЦП на эллиптических кривых - генерацию ЭЦП, верификацию.. написал тесты - работает ок: Код (Text): Test ECC DSA by curve P-192 Et d= 7891686032FD8057F636B44B1F47CCE564D2509923A7465B Et k= D06CB0A0EF2F708B0744F08AA06B6DEEDEA9C0F80A69D847 Et Qx= FBA2AAC647884B504EB8CD5A0A1287BABCC62163F606A9A2 Et Qy= DAE6D4CC05EF4F27D79EE38B71C9C8EF4865D98850D84AA5 Et r= F0ECBA72B88CDE399CC5A18E2A8B7DA54D81D04FB9802821 InitPrmBaseECC_DSA...Ok. [1]GeneratePrivatePublicKeysECC_DSA (d,k)->(Q,r)...Ok. Qx= FBA2AAC647884B504EB8CD5A0A1287BABCC62163F606A9A2 Qy= DAE6D4CC05EF4F27D79EE38B71C9C8EF4865D98850D84AA5 r= F0ECBA72B88CDE399CC5A18E2A8B7DA54D81D04FB9802821 Verify gene (Qx,Qy,r) with etalon...Ok. Et H= 000000001B376F0B735C615CEEEB31BAEE654B0A374825DB Et s= 1E6D3D4AE2B1FAB2BD2040F5DABF00F854FA140B6D21E8ED [2]GenerateSignECC_DSA (d,k,H)->(r,s)...Ok. r= F0ECBA72B88CDE399CC5A18E2A8B7DA54D81D04FB9802821 s= 1E6D3D4AE2B1FAB2BD2040F5DABF00F854FA140B6D21E8ED Verify gene (r,s) with etalon...Ok. [3]VerifySignECC_DSA (Qx,Qy,H,r,s)->(H i.e. r,s)...Ok. Signature is verifyed! Test - Ok. ECC DSA- test stop. НО время выполнения данного теста на Пне 4 (3 ГГц) - примерно 0,5-0,6 сек. ... Очень смущает такое время - скорее всего дело в алгоритме умножения по модулю двух длинных чисел ( x*y mod p ). Подскажите быстрый алгоритм(ы)... и какого времени выполнения алгоритмов генерации и верификации ЭЦП (на эллиптических кривых) можно добиться?
По идее величины порядка 1 мс. Попробуйте, что-то из вот этого реализовать (но там на мой взгляд даже слишком "глубоко" ушли) : http://eprint.iacr.org/2010/335.pdf http://eprint.iacr.org/2010/315.pdf страничка автора - http://patricklonga.bravehost.com/
gorodon на чем верстаете? Если java/C# то BouncyCastle, если C, то openSSL вам обязательно помогут с сорцами. Внутри Bouncy всё понятно человеку даже не знакомому с java
Scratch, на С, сорцы openSSL есть конечно... тут просто было желание самому с нуля написать... попробовать нестандартные алгоритмы и использовать нестандартнае длины ключей