Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход. Новые регистрации запрещены.

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline tsval@yandex.ru  
#1 Оставлено : 25 августа 2009 г. 22:29:24(UTC)
tsval@yandex.ru

Статус: Участник

Группы: Участники
Зарегистрирован: 30.06.2009(UTC)
Сообщений: 21

Уже почти неделю мучаюсь с проблемой подписания писем, сразу уточню что формировать и подписывать хочется из кода и стандартными средствами Аутлука
все подписать удается без проблем (спасибо ссылке http://www.cryptopro.ru/...documentation/smime.htm) но это не очень интересно. Так вот для формирования подписи использую Capicom и получаю следующее SMIME сообщение:

Subject: example signed message
MIME-Version: 1.0
Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg=gostr3411-94;
boundary="----=_Part_2_5383406.1251201326049"

------=_Part_2_5383406.1251201326049
Content-Type: multipart/mixed;
boundary="----=_Part_0_31321027.1251201326018"

------=_Part_0_31321027.1251201326018
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

Hello part 1!
------=_Part_0_31321027.1251201326018
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

Hello part 2!
------=_Part_0_31321027.1251201326018--

------=_Part_2_5383406.1251201326049
Content-Type: application/pkcs7-signature; name=smime.p7s; smime-type=signed-data
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="smime.p7s"
Content-Description: S/MIME Cryptographic Signature

MIIHIQYJKoZIhvcNAQcCoIIHEjCCBw4CAQExDDAKBgYqhQMCAgkFADALBgkqhkiG9w0BBwGgggWn
MIICQzCCAfCgAwIBAgIQaYQDKGqmWbpGNWItSd5f0zAKBgYqhQMCAgMFADBlMSAwHgYJKoZIhvcN
AQkBFhFpbmZvQGNyeXB0b3Byby5ydTELMAkGA1UEBhMCUlUxEzARBgNVBAoTCkNSWVBUTy1QUk8x
HzAdBgNVBAMTFlRlc3QgQ2VudGVyIENSWVBUTy1QUk8wHhcNMDkwNDA3MTIwMjE1WhcNMTQxMDA0
MDcwOTQxWjBlMSAwHgYJKoZIhvcNAQkBFhFpbmZvQGNyeXB0b3Byby5ydTELMAkGA1UEBhMCUlUx
EzARBgNVBAoTCkNSWVBUTy1QUk8xHzAdBgNVBAMTFlRlc3QgQ2VudGVyIENSWVBUTy1QUk8wYzAc
BgYqhQMCAhMwEgYHKoUDAgIjAQYHKoUDAgIeAQNDAARAAuT/0ab2nICa2ux/SnjBzC3T5Zbqy+0i
MnmyAuLGfDXmdGQbCXcRjGc/D9DoI6Z+bTt/xMQo/SscaAEgoFzYeaN4MHYwCwYDVR0PBAQDAgHG
MA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFG2PXgXZX6yRF5QelZoFMDg3ehAqMBIGCSsGAQQB
gjcVAQQFAgMCAAIwIwYJKwYBBAGCNxUCBBYEFHrJxwnbIByWlC/8Rq1tk9BeaRIOMAoGBiqFAwIC
AwUAA0EAWHPSk7xjIbEOc3Lu8XK1G4u7yTsIu0xa8uGlNU+ZxNVSUnAm3a7QqSfptlt9b0T9Jk39
oWN0XHTYSXMKd3djTTCCA1wwggMJoAMCAQICCjR29MQAAgAAKG4wCgYGKoUDAgIDBQAwZTEgMB4G
CSqGSIb3DQEJARYRaW5mb0BjcnlwdG9wcm8ucnUxCzAJBgNVBAYTAlJVMRMwEQYDVQQKEwpDUllQ
VE8tUFJPMR8wHQYDVQQDExZUZXN0IENlbnRlciBDUllQVE8tUFJPMB4XDTA5MDgxNDA5MDIxOFoX
DTEwMDgxNDA5MTIxOFowfjEjMCEGCSqGSIb3DQEJARYUdmN2ZXRrb3ZAZm9ycy1zcGIucnUxCzAJ
BgNVBAYTAlJVMQ0wCwYDVQQIEwQzMzMzMQ0wCwYDVQQHEwQyMjIyMQwwCgYDVQQKEwMyMjIxDjAM
BgNVBAsTBTExMjEyMQ4wDAYDVQQDEwVmZmZmZjBjMBwGBiqFAwICEzASBgcqhQMCAiQABgcqhQMC
Ah4BA0MABEDgx+hlcEDHEH9YANeo3EUoDeyjLsjek0f4fhLCDOBk+/9XEj7NKW2bEb/cmq+3U2fK
+UkzNBGtgwBH2Yym41DJo4IBfDCCAXgwDgYDVR0PAQH/BAQDAgTwMBkGCSqGSIb3DQEJDwQMMAow
CAYGKoUDAgIVMB0GA1UdDgQWBBSCiE/7TXeqxtTjLEoS4XLNoc5p1jATBgNVHSUEDDAKBggrBgEF
BQcDBDAfBgNVHSMEGDAWgBRtj14F2V+skReUHpWaBTA4N3oQKjBVBgNVHR8ETjBMMEqgSKBGhkRo
dHRwOi8vd3d3LmNyeXB0b3Byby5ydS9jZXJ0ZW5yb2xsL1Rlc3QlMjBDZW50ZXIlMjBDUllQVE8t
UFJPKDIpLmNybDCBngYIKwYBBQUHAQEEgZEwgY4wMwYIKwYBBQUHMAGGJ2h0dHA6Ly93d3cuY3J5
cHRvcHJvLnJ1L29jc3BuYy9vY3NwLnNyZjBXBggrBgEFBQcwAoZLaHR0cDovL3d3dy5jcnlwdG9w
cm8ucnUvQ2VydEVucm9sbC9DcnlwdG9fVGVzdCUyMENlbnRlciUyMENSWVBUTy1QUk8oMikuY3J0
MAoGBiqFAwICAwUAA0EA9dPFEBXBLCopt6jnY1NhxPLcCW5yDyeXYme+hPzzodDAjkV7OtF7ZikQ
7c6FiF3QZF4SbAN0sQMpY+/5/z42dDGCAUEwggE9AgEBMHMwZTEgMB4GCSqGSIb3DQEJARYRaW5m
b0BjcnlwdG9wcm8ucnUxCzAJBgNVBAYTAlJVMRMwEQYDVQQKEwpDUllQVE8tUFJPMR8wHQYDVQQD
ExZUZXN0IENlbnRlciBDUllQVE8tUFJPAgo0dvTEAAIAAChuMAoGBiqFAwICCQUAoGkwGAYJKoZI
hvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUxDxcNMDkwODI1MTU1NTMwWjAvBgkqhkiG
9w0BCQQxIgQgp7I5qzsPhUkT2nAQzsUOZyKgTrnRgcrw/vIXfQqc3DkwCgYGKoUDAgITBQAEQMN6
dJXQTxXkikUTTLfcJG1RKdrWSHqOplr2M76hCIOjfhy+zYjMud/pCbbmXaokU9nt+4hIUq3bNiE+
wlhJqn8=
------=_Part_2_5383406.1251201326049--


Однако OutLook выдает следующее сообщение
Ошибка:
Содержание сообщения могло быть изменено.
Подписано еее@еее.ru с помощью ГОСТ Р 34.10-2001/ГОСТ Р 34.11-94 в 19:21:28 25.08.2009.

Хотя проверяю подпись вручную тем же Capicom-ом получаю что для сообщения
Content-Type: multipart/mixed;
boundary="----=_Part_0_31321027.1251201326018"

------=_Part_0_31321027.1251201326018
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

Hello part 1!
------=_Part_0_31321027.1251201326018
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

Hello part 2!
------=_Part_0_31321027.1251201326018--

Подпись верна.
Offline tsval@yandex.ru  
#2 Оставлено : 25 августа 2009 г. 22:31:30(UTC)
tsval@yandex.ru

Статус: Участник

Группы: Участники
Зарегистрирован: 30.06.2009(UTC)
Сообщений: 21

Да кстати с помощью BouncyCastle сформировать правильное сообщение получилось без проблем (благо у них есть экзампл). Непонятно в чем проблема просто в тупике каком-то.

Отредактировано пользователем 25 августа 2009 г. 22:32:04(UTC)  | Причина: Не указана

Offline tsval@yandex.ru  
#3 Оставлено : 26 августа 2009 г. 17:51:26(UTC)
tsval@yandex.ru

Статус: Участник

Группы: Участники
Зарегистрирован: 30.06.2009(UTC)
Сообщений: 21

Задам вопрос по другому. Есть ли у криптопро средства для программного формирования подписанных писем и если есть то можно ссылки на описание и примеры.
Offline Kirill Sobolev  
#4 Оставлено : 26 августа 2009 г. 19:12:56(UTC)
Кирилл Соболев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 25.12.2007(UTC)
Сообщений: 1,733
Мужчина
Откуда: КРИПТО-ПРО

Поблагодарили: 177 раз в 168 постах
Проблема в том что Вы проверяете не тот текст, который проверяет аутлук.
А если еще CAPICOM использовать - то могут возникнуть проблемы с преобразованием из/в юникод.
Для начала попробуйте сделать непрозрачную подпись.
Техническую поддержку оказываем тут
Наша база знаний
Offline tsval@yandex.ru  
#5 Оставлено : 26 августа 2009 г. 19:30:28(UTC)
tsval@yandex.ru

Статус: Участник

Группы: Участники
Зарегистрирован: 30.06.2009(UTC)
Сообщений: 21

Влияние Юникода я вроде как учитываю. А можно поподробнее по поводу нетого текста.
Offline Kirill Sobolev  
#6 Оставлено : 26 августа 2009 г. 20:12:44(UTC)
Кирилл Соболев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 25.12.2007(UTC)
Сообщений: 1,733
Мужчина
Откуда: КРИПТО-ПРО

Поблагодарили: 177 раз в 168 постах
Подробнее в RFC 2633.
Еще есть пример от MS - http://support.microsoft.com/kb/280391
Техническую поддержку оказываем тут
Наша база знаний
Offline tsval@yandex.ru  
#7 Оставлено : 26 августа 2009 г. 21:16:23(UTC)
tsval@yandex.ru

Статус: Участник

Группы: Участники
Зарегистрирован: 30.06.2009(UTC)
Сообщений: 21

Спасибо за ответы. Так вроде и делаю так как советет майкрософт http://support.microsoft.com/kb/318215
Соттветственно для моего сообщения подписываемой частью будет

"Content-Type: multipart/mixed;
boundary="----=_Part_0_31321027.1251201326018"

------=_Part_0_31321027.1251201326018
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

Hello part 1!
------=_Part_0_31321027.1251201326018
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

Hello part 2!
------=_Part_0_31321027.1251201326018--"

Эту же строку подписывает BouncyCastle однако в их исполнении OutLook все понимает нормально.
Возможно проблема именно в самом подписывании делаю его так
.............
String dataToSign = new String(data.getBytes(), "UTF-16");
Dispatch.put(signedData,"Content",dataToSign);
Variant signVal = Dispatch.call(signedData, "Sign", signer, true, CAPICOM_ENCODE_BASE64);
.............
Проверяя вручную подпись получаю что она валидна. Возможно где то я путаюсь с кодировками?
Offline Kirill Sobolev  
#8 Оставлено : 26 августа 2009 г. 21:40:55(UTC)
Кирилл Соболев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 25.12.2007(UTC)
Сообщений: 1,733
Мужчина
Откуда: КРИПТО-ПРО

Поблагодарили: 177 раз в 168 постах
Пожалуйста.
Аутлук не преобразовывает текст к юникоду перед проверкой подписи. А в примере делают присоединенную подпись - с ней проще, кодировка не
влияет.
Попробуйте результат работы BouncyCastle проверить Вашим кодом.
Техническую поддержку оказываем тут
Наша база знаний
Offline tsval@yandex.ru  
#9 Оставлено : 27 августа 2009 г. 15:23:52(UTC)
tsval@yandex.ru

Статус: Участник

Группы: Участники
Зарегистрирован: 30.06.2009(UTC)
Сообщений: 21

Проблема стала проясняться, вы оказались правы проблемы из-за Capicom. Я немного упаростил задачу теперь подписываю простенькое однопартовое сообщение. Пропробовал проверить формируемые подписи средствами bountycastl и получил следующий результат подпись формируемая самим баунти нормально валидируется а для того чтобы валидировалась подпись capicom необходимо произвести следующее преобразование входящий данных:
byte[] baSignedText = signedText.getBytes("UnicodeLittleUnmarked");
Получается что Capicom всегда преобразует входящую строку к Юникоду =((, а OutLook нет......
Наверное я не первый сталкиваюсь с такой проблемой подскажите что можно сделать с этим .
Offline tsval@yandex.ru  
#10 Оставлено : 27 августа 2009 г. 15:41:09(UTC)
tsval@yandex.ru

Статус: Участник

Группы: Участники
Зарегистрирован: 30.06.2009(UTC)
Сообщений: 21

Да еще средствами капиком подпись bouncycastl не верифицируется а те же данные подписанные capicom верефицируются без проблем. Проверяю ее так

ComThread.InitSTA();
// инициализируем ActiveX
ActiveXComponent SignedDataAX = new ActiveXComponent("CAPICOM.SignedData");
Dispatch SignData = SignedDataAX.getObject();
// если подпись и данные отдельно, то включаем их в объект
Dispatch.put(SignData,"Content",sourceText);
try{
// проверка подписи
Dispatch.call(SignData,"Verify",Signature,true,new Integer(0));
return true;
} catch(Exception e) {
System.out.println("Подпись не валидна");
//e.printStackTrace();
return false;
} finally {
ComThread.Release();
}
Данные и подписи приложены.

Отредактировано пользователем 27 августа 2009 г. 15:48:42(UTC)  | Причина: Не указана

Вложение(я):
data.txt (1kb) загружен 17 раз(а).
signatureBouncy.txt (3kb) загружен 16 раз(а).
signatureCapicom.txt (3kb) загружен 12 раз(а).

У Вас нет прав для просмотра или загрузки вложений. Попробуйте зарегистрироваться.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest (2)
2 Страницы12>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.