powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Цифровая подпись. Хнык хнык :(
79 сообщений из 79, показаны все 4 страниц
Цифровая подпись. Хнык хнык :(
    #38773335
Ростигай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет.
Помогите плиз. Я совсем на нуле по знаниям, насчет различных методов хэширования и цифровой подписи. А стоит задача написать прогу, которая сможет подписать файл по заданному сертификату.

Но первичная задача - это проверить подпись !
Для этого мне предоставили файл с текстом и файл с цифровой подписью.
В системе установлен сертификат, которым создавалась подпись. Имеется файл, который нужно подписать (важна ли кодировка файла ?).

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

Код: c#
1.
2.
3.
4.
RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();
RSAParameters RSAKeyInfo = new RSAParameters();
RSAKeyInfo.Modulus = m_public.Modulus;
RSAKeyInfo.Exponent = m_public.Exponent;



Просто взрыв мозга ! Подскажите пожалуйста, как же нужно ?

После двух дней гуглинга, написал такой код, который не работает (ну надо же...):

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
X509Store certStore = new X509Store(StoreLocation.CurrentUser);
certStore.Open(OpenFlags.ReadOnly);

var signature = File.ReadAllBytes("Test.ecp"); 
var data = File.ReadAllBytes("Test.txt");

var x509 = certStore.Certificates[4];  // Нужный мне сертификат 4ый
         
// Вот тут огромные сомнения... не знаю точно, как нужно !!
var rsa = x509.PublicKey.Key as RSACryptoServiceProvider;     
string sha1Oid = CryptoConfig.MapNameToOID("SHA1");
string md5Oid = CryptoConfig.MapNameToOID("MD5");            

    try
    {
        bool sha1Valid = rsa.VerifyData(data, md5Oid, signature);    // false
    }
    catch (Exception )
    {}

    try
    {
        bool md5Valid = rsa.VerifyHash(data, md5Oid, signature);   // false
    }
    catch (Exception)       
    { }



На очереди попытка написать код, с использованием RSAPKCS1SignatureFormatter...Скорее всего тоже ничего не выйдет (сложно собирать ядерный реактор не зная ядерной физики и не имея схем/инструкций).

Друзья. Помогите плиз.
Наверняка существуют простые функции, которые просто берут набор байтов (или файл на диске), сертификат из хранилища - и на выходе создают подпись (и проверяют ее)...
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38773364
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
РостигайДля этого мне предоставили файл с текстом и файл с цифровой подписью.
А вам сообщили, с помощью какого алгоритма была создана ЭЦП? И вы уверены, что сертификат, который у вас в системе, точно подходит для проверки подписи?
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38773398
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38773404
Ростигай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arm79,

Я видел как эта строка кодируется сторонней утилитой, так, что знаю каким алгоритмом.

Использовалось:
Криптопровайдер: "Microsoft base Cryptographic Provider v1.0"
Алгоритм: "CALG_SHA (322772)"
Хранилище сертификатов: "My = Личные".

Только не понял, как мне тоже передавать "Microsoft base Cryptographic Provider v1.0".


Я вроде тоже использую SHA:

Код: c#
1.
bool sha1Valid = rsa.VerifyData(data, sha1Oid, signature);    // false



ps. В коде выше оказывается опечатка... Там написано
Код: c#
1.
bool sha1Valid = rsa.VerifyData(data, md5Oid, signature);    // false



Но сейчас заменил на правильную.... Результа все равно false.
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38773407
Ростигай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arm79,

Извиняюсь. Ваш вопрос поставил меня в тупик.
Что означает "вы уверены, что сертификат, который у вас в системе, точно подходит для проверки подписи" ?

Разве операция проверки подписи по сертификату не с каждым сертификатом работает ?
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38773412
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
РостигайArm79,

Извиняюсь. Ваш вопрос поставил меня в тупик.
Что означает "вы уверены, что сертификат, который у вас в системе, точно подходит для проверки подписи" ?

Разве операция проверки подписи по сертификату не с каждым сертификатом работает ?
Разумеется, не с каждым. Всегда есть пара ключ/сертификат (грубо). И сертификат от чужого ключа никак не подойдет.
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38773424
Ростигай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arm79,

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

Код: c#
1.
var x509 = certStore.Certificates[4];


Я просто под отладчиком в списке его нашел по имени. Над юзабельностью буду думать потом, сейчас нужно чтобы хотя бы основа заработала.
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38773435
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хорошо, понятно, сертификат тот же. Теперь какой точно алгоритм ЭЦП - SHA?
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38773453
Ростигай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arm79,

Я тут написал код уже, по приведенной Вами ссылке (спасибо).

Столкнулся с проблемой. Подписал хэш и сохранил полученные байты в файл. Выяснилась проблема - файл с подписью, который выдала сторонняя утилита - он размером 1,7 Кб. А моя полученная подпись лишь 20 байт.


Сейчас проверю метод, проверяющий подпись по приведенной Вами ссылке.


Отвечая на последний вопрос - ну да, SHA, код 322772. Я находил ссылку с кодами шифров, код 322772 - соотвестветствует SHA_1
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38773455
Ростигай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Т.е. очевидно, что утилита записывает в файл ЭЦП и зашифрованные данные сразу. Поэтому просто похоже проблематично сравнить, что C# код выдал ту же ЭЦП, что и та утилита...

Сейчас Протестирую проверку ЭЦП. Может подтвердит - и то хорошо бы было.
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38773460
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
РостигайА моя полученная подпись лишь 20 байт
20 нереально. у sha-1 длина подписи 160 байт.

а 1,7 кб, ну не знаю. Если исходный файл = длина подписанного - (160-260) байт, значит добавлена только подпись. Если размер отличается больше, вероятно, в подпись добавлен еще и проверочный сертификат
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38773467
Ростигай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не вышло.

Проверка подписи не прошла:

valid = csp.VerifyHash(hash, CryptoConfig.MapNameToOID("SHA1"), signature);

Очевидно, потому, что я передаю туда:
var signature = File.ReadAllBytes("Test.ecp");

А файл Test.ecp размером 1,7 Кб. Метод VerifyHash скорее всего ожидает только подпись.

Как бы отделить подпись от зашифрованного текста из файла ?
Либо - какими методами нужно мне пользоваться, чтобы тоже получить склеееный текст с подписью ? Сори, нет знаний по этой теме - а запутатся очень легко в куче разных классов и их методах.

Может RSAPKCS1SignatureFormatter как-то поможет ?
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38773468
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
РостигайVerifyHashVerifyData
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38773475
Ростигай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arm7920 нереально. у sha-1 длина подписи 160 байт.



Код:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
 RSACryptoServiceProvider csp = (RSACryptoServiceProvider)x509.PrivateKey;            
 // Hash the data
 SHA1Managed sha1 = new SHA1Managed();
 //UnicodeEncoding encoding = new UnicodeEncoding();
 //byte[] data1 = encoding.GetBytes(text);
 byte[] hash = sha1.ComputeHash(data);

 var signedHash = csp.SignHash(hash, CryptoConfig.MapNameToOID("SHA1"));




signedHash - размер массива (и файла на диске, после сохранения) - 128 байт....
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38773480
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
РостигайArm7920 нереально. у sha-1 длина подписи 160 байт.



Код:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
 RSACryptoServiceProvider csp = (RSACryptoServiceProvider)x509.PrivateKey;            
 // Hash the data
 SHA1Managed sha1 = new SHA1Managed();
 //UnicodeEncoding encoding = new UnicodeEncoding();
 //byte[] data1 = encoding.GetBytes(text);
 byte[] hash = sha1.ComputeHash(data);

 var signedHash = csp.SignHash(hash, CryptoConfig.MapNameToOID("SHA1"));





signedHash - размер массива (и файла на диске, после сохранения) - 128 байт....

Сорри, это я ошибся. Не 160 байт, а 160 бит, то есть 20 байт.
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38773486
Ростигай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arm79РостигайVerifyHashVerifyData



Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
    // Get public key
    RSACryptoServiceProvider csp = (RSACryptoServiceProvider)x509.PublicKey.Key;

    // Hash the text, the text is the expected command by the client application.
    // Remember hased data cannot be unhash. It is irreversable
    SHA1Managed sha1 = new SHA1Managed();
    byte[] hash = sha1.ComputeHash(data);

    // Verify the signature with the hash
    valid =  csp.VerifyData(hash, CryptoConfig.MapNameToOID("SHA1"), signature);   // false



Вот жеж блин :(



PS !!! Есть сомнения в сторонней утилите !!
Подскажите - есть ли сторонняя известная программа, которая подписывает цифровой подписью ? Я бы ее лучше скачал и ей бы рассчитал подпись...
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38773496
Ростигай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Моя задача написать библиотечку, которая будет подписывать файлы (ну и проверять подпись).

Выдали какую-то левую прогу (тоже самописную !), объявив ее эталоном.... Возможно я зря сверяюсь с ней !

Есть ли публичная программа, с которой можно сверится ?
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38773499
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть возможность выложить сюда сертификат и подписанный файл? Тестовый какой-нибудь?
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38773534
Ростигай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arm79,

Спасибо большое !
Я отправил на почту, указанную в Вашем профиле. Просто файл с рабочими данными.
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38773616
Ростигай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arm79,

Дошло ли письмо ? )
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38773622
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, дошло. Что-то вы ересь какую то гоните, простите уж. Ваш 3.ecp отнюдь не содержит подпись. Там какая то корявая base64 строка, которую стандартный convert.frombase64string не опознал, но онлайн декодер выдал маловразумительное. но в этом маловразумительном были куски текста типа: Created by http://www.fiddler2.com1, mail.google.com, и так далее. Это 100% не подпись.

вот код:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
            X509Certificate2 certificate = new X509Certificate2("рабочий сертификат.pfx", "ваш пароль");
            RSACryptoServiceProvider provider = certificate.PrivateKey as RSACryptoServiceProvider;

            byte[] signData;

            using (var fs = new FileStream("3.FLD", FileMode.Open, FileAccess.Read))
            {
                signData = provider.SignData(fs, new SHA1CryptoServiceProvider());
                //File.WriteAllBytes("SignedData.bin", signData);
            }


            RSACryptoServiceProvider provider2 = certificate.PublicKey.Key as RSACryptoServiceProvider;
            using (var fs = new FileStream("3.FLD", FileMode.Open, FileAccess.Read))
            {
                bool verifyData = provider2.VerifyData(File.ReadAllBytes("3.FLD"), new SHA1CryptoServiceProvider(), signData);
                Console.WriteLine(verifyData);
            }

            Console.ReadKey();
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38773633
Ростигай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arm79,

Я в шоке вообще :) Прога получается вообще не работает. Не понятно, что она вообще вычисляет.

Огромное спасибо за код ! Огромное :)
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38773716
Ростигай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arm79,

Тот файл, что я таки выслал - подписан ВЕРНО !
Сам удивлен.

Проверил в бесплатной программе "КриптоАРМ" (поставил в триальном варианте полнофункционал).
Прога сообщила, что "Подписи математически корректны, но нет полного доверия к одному или нескольким сертификатам подписи"

Ну да. Сертификат конечно левый. Но вот подписалось все ок :)
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38773729
Ростигай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arm79,

Блин... КриптоАРМ выругался, что подпись, полученная по Вашему коду:

Код: c#
1.
2.
3.
4.
5.
6.
7.
    using (var fs = new FileStream("3.FLD", FileMode.Open, FileAccess.Read))
    {
        signData = provider.SignData(fs, new SHA1CryptoServiceProvider());
        //File.WriteAllBytes("SignedData.bin", signData);
    }

    File.WriteAllBytes("realSign.result", signData);



не является подписью.... Сами можете проверить...
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38773736
Ростигай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ох и хороша же прожка - КриптоАрм. Тут тебе и удобнейший выбор сертификата, которым подписывать, и ввод какой то доп инфы.

Вот, по сути, мне нужно сделать то, что умеет делать она
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38773884
sql2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ростигай,

Загляни в примеры из SDK
Там более чем достаточно...

Examples\simple\CMS\cs\SingleSigner.cs
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38775143
Ростигай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arm79,

И все же.
У Вас подтвержается ? Что, КриптоАРМ (или любой сайт по онлайн-проверке подписи) ругаются на подпись ?
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38775147
Ростигай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sql2012,

Прошу прощения. Там примеры приведенные чисто для КриптоПРО ?
Дело в том, что в моем решении не должно быть КриптоПРО. Покупать мы его не планируем, и поэтому решение должно быть завязано чисто на WIN API.
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38775162
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
РостигайArm79,

И все же.
У Вас подтвержается ? Что, КриптоАРМ (или любой сайт по онлайн-проверке подписи) ругаются на подпись ?

А я что, проверял, что ли? :-) Думал, что уже все решено.
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38775179
sql2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ростигайsql2012,

Прошу прощения. Там примеры приведенные чисто для КриптоПРО ?
Дело в том, что в моем решении не должно быть КриптоПРО. Покупать мы его не планируем, и поэтому решение должно быть завязано чисто на WIN API.

Нет.
Код: vbnet
1.
2.
3.
4.
5.
using System;
using System.Security.Cryptography.Pkcs;
using System.Security.Cryptography.X509Certificates;
using System.Text;
using System.IO;



Можете также найти примеры в MSDN по ключевым словам: SignedCms, CmsSigner, SignedCms.ComputeSignature
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38775182
Ростигай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arm79,

Спасибо Вам за решение конечно. Просто бесплатная програмулина КриптоАрм (в бесплатном варианте она как раз, вроде позволяет подписывать и проверять подписи) - говорит, что подпись, полученная C# - не подпись. А как раз тот файлик, что я дал - нормальная подпись :)

Я сейчас в тупике. Не знаю, что делать... Сам ищу дальше решения в гугле, но пока не нашел. Куча ссылок уже.



Может, все же, на форуме уже кто-то делал такое ?
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38775187
Ростигай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sql2012Можете также найти примеры в MSDN по ключевым словам: SignedCms, CmsSigner, SignedCms.ComputeSignature

Большое спасибо. Таких ключевых слов я даже не встречал, и, соответственно, не искал !
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38775195
sql2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ростигай,

Намекну: есть профильные форумы, по криптографии... с поддержкой и SDK ...

Я чисто случайно увидел про ЦП тему из выборки тем за 3 дня.
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38775209
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
РостигайArm79,

Спасибо Вам за решение конечно

Вообще то это была практически копи-паста из MSDN. Я лично работал с MessagePro, а не .net приблудой в виде RSA

Далее, еще раз посмотрел на 3.ecp. Честно, не знаю, как там криптоарм работает, но base64 из указаного файла не читается. Хотя тот же криптоарм подписывает вашим ключом файлы, и файл подписи в base64 отображается прекрасно.

Кстати, разобрался, почему видны fiddler и прочее. Просто ключи и сертификат от него.И эти строки добавлены в файл с подписью в качестве незначащего комментария.
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38775220
Ростигай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sql2012,

Не знаю о каких форумах Вы говорите. Честно.
Я к сожалению вообще не в теме, а сделать нужно :(

Дайте плиз ссылочку, я погляжу и уже пойму что дальше искать.. Или там вопрос задам - раз специализированный, то наверное легко ответят.
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38775222
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
посмотрите здесь еще: http://msdn.microsoft.com/ru-ru/magazine/cc163454.aspx
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38775247
Ростигай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сделал по совету sql2012.
Examples\simple\CMS\cs\SingleSigner.cs

Сработало с моим сертификатом отлично !
Причем есть выбор - встраивать подпись в сообщение и делать его отдельно.
Скормил подпись КриптоАрм - прошло отлично ! Правда КриптоАрм выругался, что нет доверия к сертифкату - ну это ок, я левый сертификат взял для тестов.

Ура !

Сейчас поищу по словам SignedCms, CmsSigner, SignedCms.ComputeSignature, чтобы найти более полные примеры, с различной обработкой ошибок и т.д.
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38775250
Ростигай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arm79посмотрите здесь еще: http://msdn.microsoft.com/ru-ru/magazine/cc163454.aspx

Спасибо за ссылку. Это мне тоже очень нужно !
Т.к. задача стоит не только подписывать, но и сделать более-менее удобный интерфейс со списком сертификатов и прочим... В принципе в криптоАрм хороший интерфейс, нужно будет сделать что-то подобное.
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38775268
sql2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38775279
Ростигай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sql2012Ростигай,

http://www.cryptopro.ru/forum2/default.aspx?g=topics&f=14

Я очень сильно сомневаюсь, что там дадут ответ на просьбу "Подскажите код на .net, который подписывает собщения, и проверяет подпись" - ведь их программа ровно этим и занимается... Я скорее ожидаю советов в стиле "КриптоПРо это умеет, покупайте, и вот вам ссылочка на справку, где описано как это сделать с помощью КРиптоПРО".

Спасибо за ссылку. По изучаю, вдруг подобный вопрос там уже есть... Просто не лазил раньше, т.к. были сомнения.
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38775284
sql2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79,
Я работаю со всеми сертифицированными на текущий момент СКЗИ и по "копипастам" - да, все верно замечено, многое есть в MSDN...
"хотя" в файлах из SDK есть указание, что информация из файлов - собственность организации-разработчика (этого SDK).

p.s.
А что такое ".net" приблуда в виде RSA?
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38775290
sql2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ростигай,

В решаемой задаче - нет привязки к конкретному СКЗИ.
За владельца форума не отвечу, но Я предоставляю ссылки на SDK и CDPN для начинающих и не очень в свободное время.
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38775296
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sql2012А что такое ".net" приблуда в виде RSA?
я имею ввиду rsacryptoserviceprovider. какой то он бестолковый, по ощущениям.

А из сертифицированных - MessagePro + Verba.
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38775303
sql2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79,

rsacryptoserviceprovider ...
"не пользуюсь" за ненадобностью...
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38775348
Ростигай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sql2012Ростигай,

В решаемой задаче - нет привязки к конкретному СКЗИ.
За владельца форума не отвечу, но Я предоставляю ссылки на SDK и CDPN для начинающих и не очень в свободное время.

Спасибо большое за помощь. прямо таки огромное, за наводку.

В общем вот ссылка на доку КпритоПро:
http://cpdn.cryptopro.ru/?url=/content/cpnet/html/638e5f29-1235-4f58-a028-eb79bbe02121.htm

Там, вроде как, все стандартные/типичные решения приведены. Пока не уверен, но похоже это все, что мне нужно. Грызут, правда, немного сомнения, что подписи, которые по нашему ГОСТу - они могут не сработать на чистых классах C#...

Не сталкивались с таким ? Чтобы проверить подписанное сообщение, подписанное ГОСТом.

И еще есть вопросы по всяким там Рутокен'ам и прочим USB сертификатам. Подозреваю, что мое решение должно бы и с ними уметь работать (ибо в Росии живем, и приложение должно уметь работать с российскими спецификациями).

Пока даже и не знаю на чем застряну дальше :)

PS. Нашел интересную ссылку:
Delphi CryptoApi. Как реализовать шифрование по ГОСТу?

Сказанно, что имеется некий бесплатный КриптоПровайдер, обеспечивающий работу с ГОСТ подписью.
Не знаю правда или нет. Но нужно еще узнать как с ним работать - получится ли, с использованием стандартных .NET классов SignedCms, CmsSigner, или нужно использовать библиотеки этого КриптоПровайдера - что потребует его обязательно установки (неудобно же!).

Кто нибудь знает про это ?
Не может же быть, что для работы с ГОСТовской подписью обязательно покупать какой-то программный продукт. Ну монопольщиной на гос-уровне же попахивает.
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38775351
Ростигай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sql2012Arm79,

rsacryptoserviceprovider ...
"не пользуюсь" за ненадобностью...

Т.е. получается работать с ГОСТ подписями и рутокенами вообще без сторонних продуктов ? Т.е. это реально ?
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38775371
sql2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ростигай,

ViPNet CSP
http://infotecs.ru/
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38775384
Ростигай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sql2012,

Так я же дал ссылку именно на них же :)

Нужен ли он, чтобы работать с сообщениями, подписанными всякими там ГОСТ сертификатами (я не спец, поэтому просто фантазирую) ?
Просто та тема, что я указал, вызвала сомнение, что ГОСТ подписи будут корректно расшифровыватся... И до кучи, всяческие рутокены.

Мне просто интересно, возможно ли работать с использованием только классов .NET, или нужно устанавливать другое программное обеспечение (явно это будет ВипНет, раз он бесплатен :) )
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38775401
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ростигайполучается работать с ГОСТ подписями и рутокенами вообще без сторонних продуктов ? Т.е. это реально ?
без установленных в системе продуктов? нет, конечно, откуда мелкомягкие знают про госты
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38775446
Ростигай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите пожалуйста. Еще один тупик.

У меня имеется подписанное сообщение, сделанное сторонней програмкой (самописная на Дельфи).

1. КриптоАрм говорит, что сообщение подписано ок.
2. Но мой наивный код,

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
        static bool VerifyMsg(byte[] encodedSignedCms)
        {
            // Создаем SignedCms для декодирования и проверки.
            SignedCms signedCms = new SignedCms();

            try
            {

                // Декодируем сообщение
                signedCms.Decode(encodedSignedCms);
            }
            catch (Exception Ex)
            { 
                
            }



при попытке декодировать, вылетает исключение "ASN1 bad tag value met"

3. Гуглинг вывел меня на интересную прожку ASN.1 Editor
http://www.codeproject.com/Articles/4910/ASN-Editor

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

4. Сертификат использовался один и тот же, при подписывании и при попытке распарсить.


Собственно сейчас я в глубокой думе.... Почему КриптоАрм спокойно проверил подписанный файл, но ни C# классы, ни сторонний редактор не могут распознать формат.
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38775559
Ростигай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Чудеса в общем.

Это не Base64, хотя выглядит очень очень похоже.
Однако при вызове System.Convert.FromBase64String(decryptedString) вылетела ошибка, что "Входные данные не являются действительной строкой Base-64, поскольку содержат символ в кодировке, отличной от Base 64, больше двух символов заполнения или непробельный символ наряду с символами заполнения."

Что же это такое может быть ? Чты выглядит как Base64, но не является им, и что КриптоАрм спокойно расшифровывает как корректно подписанное сообщение? (слово из 5 букв Хотя может и из 6-10, хз)

Вот бы найти програмулину, которая по подписи - все о ней расскажет. Что за формат, что за алгоритм и т.д.
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38775565
sql2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ростигай,

Где файл с ЭП?
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38775568
sql2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ростигай

3. Гуглинг вывел меня на интересную прожку ASN.1 Editor
http://www.codeproject.com/Articles/4910/ASN-Editor

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

Так зашифрованное или подписанное?

Если первое - не покажет "исходные данные", если второе - покажет подписанные данные, если ЭП присоединенная.
В случае же с отсоединенной ЭП - будет только информация по алгоритмам\сертификатам\атрибутам ЭП.
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38775569
Ростигай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sql2012,

Файл считывается в проге.
Разрешите я Вам его вышлю на почту. Просто глянете на нее, может Вам опытным взглядом виднее будет.

Или скиньте почту мне на bnr3j4afhsbdfg23@yandex.ru (моя одноразовая почта от спамеров :) )
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38775570
Ростигай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sql2012Так зашифрованное или подписанное?

Если первое - не покажет "исходные данные", если второе - покажет подписанные данные, если ЭП присоединенная.
В случае же с отсоединенной ЭП - будет только информация по алгоритмам\сертификатам\атрибутам ЭП.

Файл с присоединенной подписью.
КриптоАрм подпись проверил и сказал, что она ок - но сертификату не доверяет.
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38775573
Ростигай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Там просто в файле рабочие данные - дали файл для тренировок. Не могу на форум выложить...
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38775576
sql2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ростигай,

Я написал на указанный email.
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38775586
Ростигай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sql2012,

Да, увидел :)) Спасибо )
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38775590
Ростигай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот, что дословно говорит КриптоАрм:

"Подписи математически корректны, но нет полного доверия к одному или нескольким сертификатам подписи."
Текст ошибки, мягко говоря не понятен. Не факт, что КриптоАрм подтверждает, что подпись верна... Толи он ее все таки проверил, толи "нет доверия и я не буду марать руки об этот сертификат"...

Подпись может быть не верной. Она сделана самописной утилитой год назад, написанной в стенах компании, но никогда не использовавшейся. Утилита использует стандартные WInApi функции.
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38775592
sql2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ростигай,

1. Жду письмо с архивом
2. Давно бы уже установил корневой сертификат в доверенные корневые + CRL в промежуточные, если есть.
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38775593
sql2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ростигай,


"Подписи математически корректны" - это и есть: Подпись верная, данные после подписания не изменялись.

А далее, дело "доверия к цепочке сертификации".
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38775595
Ростигай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sql2012Ростигай,

1. Жду письмо с архивом
2. Давно бы уже установил корневой сертификат в доверенные корневые + CRL в промежуточные, если есть.

1. Выслал. Извините, не приложил архив.
2. Поток слов - для меня темный лес вообще :D Буду читать и разбираться как это делать. Я вообще к крипто-технологиям вот буквально в четверг в первые прикоснулся :)
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38775602
sql2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ростигай,

realSign.result - корректная, присоединенная ЭП.
Извлеченные данные записаны в файл - размером 1 283 байт = совпадает с 3.FLD (и по хешу)

3.ecp - корректная, присоединенная ЭП.
Извлеченные данные: 20 байт, в текстовом виде: N¬кўB1Яљџыц„уА`В
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38775608
Ростигай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sql2012,

Но как Вам удалось проверить подпись из файла "3.ecp" ? :)

Я использовал код:

Код: c#
1.
2.
3.
byte[] encodedSignedCms
SignedCms signedCms = new SignedCms();
signedCms.Decode(encodedSignedCms);



И второй метод вылетает !
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38775610
Ростигай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вообще, меня радует, что

realSign.result - корректная, присоединенная ЭП.
Извлеченные данные записаны в файл - размером 1 283 байт = совпадает с 3.FLD (и по хешу)

Глобально - мне это и нужно... Подписывать сообщения. Я подписал, а вы проверили подпись и извлекли данные... Это классно )



Меня смущает, что не удается извлечь из 3.ecp.... Просто в программу же может прийти подпись в таком формате.
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38775611
sql2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ростигайsql2012,

Но как Вам удалось проверить подпись из файла "3.ecp" ? :)

Я использовал код:

Код: c#
1.
2.
3.
byte[] encodedSignedCms
SignedCms signedCms = new SignedCms();
signedCms.Decode(encodedSignedCms);



И второй метод вылетает !

Так декодировать же нужно из base64 предварительно.
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38775616
Ростигай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sql2012,

Код: c#
1.
2.
3.
4.
    var signature = File.ReadAllText("3.ecp", Encoding.GetEncoding(1252)); 
    byte[] decriptedData = System.Convert.FromBase64String(signature);
    SignedCms signedCms = new SignedCms();
    signedCms.Decode(decriptedData);



Какие только кодировки не перебирал, но на строчке FromBase64String вылетает ошибка "Входные данные не являются действительной строкой Base-64, поскольку содержат символ в кодировке, отличной от Base 64, больше двух символов заполнения или непробельный символ наряду с символами заполнения."

Что я не так сделал ? Пробовал кодировки Unicode, UTF8, ANSI, win-1252.....
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38775618
Ростигай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо Вам за помощь. Завтра буду дальше думать.... Идиотизм конечно выходит, не могу уже строчку перекодировть :(
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38775644
sql2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ростигай

Меня смущает, что не удается извлечь из 3.ecp.... Просто в программу же может прийти подпись в таком формате.

Как это не удается?
Там все нормально извлекается и проверяется.

Да, с поправкой, данные - "мусор" (hex: 4E1DAC7FEAA242173111DF9A9FFBF684F3C060C2), а не ожидаемый ini-файл (это, кстати, видно и по размерам файлов)

Подпись под этими данными - корректная.
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38775661
sql2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ростигай
Какие только кодировки не перебирал, но на строчке FromBase64String вылетает ошибка "Входные данные не являются действительной строкой Base-64, поскольку содержат символ в кодировке, отличной от Base 64, больше двух символов заполнения или непробельный символ наряду с символами заполнения."

Что я не так сделал ? Пробовал кодировки Unicode, UTF8, ANSI, win-1252.....

Windows-1251, ANSI.
Декодированный из base64 файл отправил на почту.
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38776199
Ростигай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо большое за помощь.
Но откройте тайну. Как вам удалось декодировать этот base64 ?

Я пробовал двумя вариантами:

Код: c#
1.
2.
var signature = File.ReadAllText("3.ecp", Encoding.GetEncoding(1252)); 
byte[] decriptedData = System.Convert.FromBase64String(signature);



Код: c#
1.
2.
3.
    var signature1 = File.ReadAllBytes("3.ecp"); //Convert.FromBase64String(base64Signature);
    string decryptedString = System.Text.Encoding.GetEncoding(1252).GetString(signature1);
    byte[] decriptedData = System.Convert.FromBase64String(decryptedString);



В обоих случаях, на вызове метода FromBase64String вылетает ошибка
"Входные данные не являются действительной строкой Base-64, поскольку содержат символ в кодировке, отличной от Base 64, больше двух символов заполнения или непробельный символ наряду с символами заполнения."

Подскажите пожалуйтста:
1. Как программно можно выяснить тип кодировки (вот, что тут win-1252).
2. И как же, все таки, правильно декодировать ? Где моя ошибка ?
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38776278
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
13.10.2014 21:31, Ростигай пишет:

> Что я не так сделал ?

Полез в задачу, которая находится далеко за пределами твоих возможностей.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38776283
Ростигай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dim2000,

Ее на меня скинули :) Больше не кому :)

Скажите лучше - почему просто энкодинг не проходит )
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38776339
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
РостигайСкажите лучше - почему просто энкодинг не проходит )
потому что последний символ в файле имеет код 0. Убери его, и base64 распарсится
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38776348
Ростигай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arm79,

Спасибо ! Помогло.
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38776533
Ростигай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Друзья, спасибо большое. Все прошло хорошо !!!
В итоге удалось подписывать файлы с помощью Рутокен по ГОСТ. Спасибо !


Интересует такой вопросик (просто ради интереса).
Судя по всему, ViPNet CSP является бесплатным полным аналогом КриптоПРО (в плане подписывания ЭЦП).
Я правильно это понимаю ?

Думаю, ViPNet CSP можно рекомендовать клиентам, чтобы они могли сэкономить свои деньги.
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38776704
sql2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ростигай,

Все верно, уже 5 год как предоставляется бесплатно.
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38777443
Ростигай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sql2012,

Круто )
У нас то есть купленный КриптоПро, а вот клиентам можно будет рекомендовать.
...
Рейтинг: 0 / 0
Цифровая подпись. Хнык хнык :(
    #38780459
sql2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ростигай,

Если готовы разгребать проблемы\есть квалифицированные специалисты - рекомендуйте.
...
Рейтинг: 0 / 0
79 сообщений из 79, показаны все 4 страниц
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Цифровая подпись. Хнык хнык :(
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]