Re[3]: Разные результаты в разных ОС
От: C3PO  
Дата: 08.12.14 16:29
Оценка: 35 (5)
Пришло время вернуться к проблеме.

К сожалению, все запросы в MS у меня исчерпаны, так что пришлось методом дедукции... Что я имею сказать по данному поводу.

1. Описываемое мной поведение является прямым следствием фактического запрета на использование RC4 в Windows 8+
2. Сбой расшифровки должен рассматриваться как супер-SetErrorResult со смыслом: "хватит пользоваться скомпрометированным способом шифрования".
3. Сходное поведение проявляется и когда RC4 используется в стандартной реализации TLS/SSL (есть масса ссылок на то, как IE11 в Windows 8+ ведёт себя при попытке соединиться с защищённым ресурсом). Первый вызов проваливается, второй успешно выполняется.
4. Тупейший workaround, даже неловко его озвучивать, но если нет возможности заменить поточное шифрование на блочное, — проверять версию и если это 8+, то делать одну попытку расшифровать входной буфер, чтобы "размочить" RC4 в Windows, а потом уже делать второй, осмысленный вызов.
5. Все описанные в TechNet манипуляции с реестром и ключами, которые решают проблему п.3 в Windows — не помогают в случае использования CryptoAPI напрямую.

В общем и целом, мой изящный, помещающийся в 30 кб скомпилированного кода стек TLS, летит коту под хвост с запретом RC4 в Windows. Жаль. Но, может так и лучше, "может так надо", "может, я выйду из пламени преобразившимся".

Спасибо всем, кто тратил время на этот прочтение этого тупняка.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.