Форум КриптоПро
	 » 
	Устаревшие продукты
	 » 
	КриптоПро CSP 3.6
	 » 
	Проверка подписи не по данным а по хешу данных
	 
	
        
            
            
    
        
	Статус: Участник
  Группы: Участники
 Зарегистрирован: 12.01.2011(UTC) Сообщений: 17  Откуда: Москва  
	 
	
     | 
    
        
            
		      
                Добрый день. Подскажите пожалуйста, реализуема ли следующая задача средствами КриптоПро CSP 3.6:
  Имеем массив байт и электронную подпись этого массива байт в формате CMS. Необходимо написать сервис проверки этой электронной подписи. Но на вход сервису подаётся подпись в формате CMS и гостовый хеш от данных (т.е. не сами данные, а именно хеш).
  Задача связана с тем что сервис проверки централизованный, но не все его клиенты готовы отдавать наружу свои документы.
  Не нашёл в WinCryptoApi функции, позволяющей это сделать.  Есть ли способы? Как мне видится если CMS не содержит подписываемых атрибутов, это может быть реализуемо. А если подписываемые атрибуты есть, тут могут быть трудности.. Есть ли варианты в этом случае?
  Пролейте свет пожалуйста. 
            
	  
         
     | 
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
            
        
            
            
    
        
	Статус: Сотрудник
  Группы: Администраторы
 Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,417  Откуда: КРИПТО-ПРО Сказал «Спасибо»: 37 раз Поблагодарили: 729 раз в 630 постах
  
	 
	
     | 
    
        
            
		      
                Придется вручную разбирать CMS сообщение. Если в подписи есть подписанные аттрибуты - то хэш лежит прямо в подписи, если нет (что бывает редко) придется чуть сложнее разбираться.    | 
 | 
            
	 
        
    
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
    
        
            
            
    
        
	Статус: Участник
  Группы: Участники
 Зарегистрирован: 12.01.2011(UTC) Сообщений: 17  Откуда: Москва  
	 
	
     | 
    
        
            
		      
                Максим, спасибо за ответ. Но поясните пожалуйста ещё. Я не понял, почему если есть подписываемые атрибуты, будет проще.
  Да, в случае когда есть подписываемые атрибуты, то хеш содержится в одном их них, и проверить соответствие этого хеша значению хеша, которое прислали, просто. Но остаётся же ещё операция проверки значения подписи. И она требуется в обоих случаях - и когда есть подписываемые атрибуты и когда нет.
  Я внимательно прочитал rfc3852 (много узнал :-)), и насколько я понимаю, в моём случае (когда при проверке нет данных, а есть только хеш данных), алгоритм должен быть следующий: 1. Расшифровать значение подписи открытым ключом 2. Если подписываемых атрибутов нет, сравнить имеющийся хеш с результатом пункта 1, конец проверки. 3. Если подписываемые атрибуты есть, сравнить имеющийся хеш с хешом из подписываемых атрибутов, посчитать хеш от подписываемых атрибутов, сравнить с результатом пункта 1
  Т.е. схема вроде как понятна, но в случае когда есть подписываемые атрибуты, она немного сложней.
  Насколько правильный на ваш взгляд приведённый алгоритм проверки подписи?
  
            
	  
         
     | 
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
            
        
            
            
    
        
	Статус: Сотрудник
  Группы: Администраторы
 Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,417  Откуда: КРИПТО-ПРО Сказал «Спасибо»: 37 раз Поблагодарили: 729 раз в 630 постах
  
	 
	
     | 
    
        
            
		      
                В случае ГОСТ понятие шифрование к подписи неприменимо. Ее лишь можно проверять. Так что алгоритм неверен)    | 
 | 
            
	 
        
    
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
    
        
            
            
    
        
	Статус: Участник
  Группы: Участники
 Зарегистрирован: 12.01.2011(UTC) Сообщений: 17  Откуда: Москва  
	 
	
     | 
    
        
            
		      
                Максим, для подписей, содержащих подписываемые атрибуты всё получилось, спасибо.
  Прошу вас подсказать, как быть с подписями, не содержащими подписываемые атрибуты. Проблема в следующем: Для проверки подписи по хешу используется функция CryptVerifySignature. Первым параметром в неё передаётся объект функции хеширования HCRYPTHASH. Этот параметр создаётся (функцией CryptCreateHash) для вычисления хеша исходных подписанных данных. Я не нашёл в описании CryptoAPI способа создать HCRYPTHASH, имея не исходные данные, а готовый хеш. Таким образом мне неоткуда взять HCRYPTHASH, чтобы передать его в CryptVerifySignature, и не могу проверить подпись по хешу.  Посоветуйте, что можно сделать, в какую сторону копать? 
            
	  
         
     | 
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
            
        
            
            
    
        
	Статус: Сотрудник
  Группы: Администраторы
 Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,417  Откуда: КРИПТО-ПРО Сказал «Спасибо»: 37 раз Поблагодарили: 729 раз в 630 постах
  
	 
	
     | 
    
        
            
		      
                CryptSetHashParam HP_HASHVAL    | 
 | 
            
	 
        
    
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
    
        
            
            
    
        
	Статус: Участник
  Группы: Участники
 Зарегистрирован: 12.01.2011(UTC) Сообщений: 17  Откуда: Москва  
	 
	
     | 
    
        
     | 
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
            
        
            
            
    
        
	Статус: Активный участник
  Группы: Участники
 Зарегистрирован: 07.08.2012(UTC) Сообщений: 123
  Сказал(а) «Спасибо»: 4 раз Поблагодарили: 6 раз в 6 постах
  
	 
	
     | 
    
        
            
		      
                Кто-нибудь может поделиться полным примером кода на Java для проверки подписи по хешу? 
            
	  
         
     | 
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
    
        
            
            
    
        
	Статус: Активный участник
  Группы: Участники
 Зарегистрирован: 07.08.2012(UTC) Сообщений: 123
  Сказал(а) «Спасибо»: 4 раз Поблагодарили: 6 раз в 6 постах
  
	 
	
     | 
    
        
            
		      
                По документации не смог найти такую функциональность в Cryptopro JCP... 
            
	  
         
     | 
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
            
        
            
            
    
        
	Статус: Активный участник
  Группы: Участники
 Зарегистрирован: 22.01.2008(UTC) Сообщений: 675   Откуда: Йошкар-Ола Сказал «Спасибо»: 3 раз Поблагодарили: 95 раз в 68 постах
  
	 
	
     | 
    
        
            
		      
                Автор: dmishin  По документации не смог найти такую функциональность в Cryptopro JCP...  А что функции типа "CryptSignHash" в JCP нет?    | 
С уважением,  Юрий Строжевский  | 
            
	 
        
    
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
    
	                           
	Форум КриптоПро
	 » 
	Устаревшие продукты
	 » 
	КриптоПро CSP 3.6
	 » 
	Проверка подписи не по данным а по хешу данных
	 
	
    
        Быстрый переход
         
	
    
    Вы не можете создавать новые темы в этом форуме.
	
	Вы не можете отвечать в этом форуме.
	
	Вы не можете удалять Ваши сообщения в этом форуме.
	
	Вы не можете редактировать Ваши сообщения в этом форуме.
	
	Вы не можете создавать опросы в этом форуме.
	
	Вы не можете голосовать в этом форуме.
	
	
    
    
        Important Information:
        The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
        
        
More Details
        Close