Nano Hash - криптовалюты, майнинг, программирование

Проверьте, имеет ли почта Outlook (*.msg) цифровую подпись или шифрование

У меня есть веб-приложение, которое позволяет загружать почту Outlook (*.msg) с загрузкой файлов. Клиент хочет запретить магазину отправлять письма с цифровой подписью или шифрованием. Поэтому после загрузки почты я должен каким-то образом проверить почту, подписана она или зашифрована.

Если есть способ это проверить? Нравится шаблон в потоке файла?


  • Вам действительно нужно указать, что вы подразумеваете под цифровой подписью. Если вы имеете в виду сообщение электронной почты, управляемое правами (определено Microsoft), обязательно следуйте сообщению @Michael.J.Gray. 28.04.2012
  • Если вы имеете в виду безопасные/многоцелевые расширения электронной почты Интернета (SMIME), формат, который использует большая часть остального мира, то вам нужно следовать моему сообщению. 28.04.2012

Ответы:


1

Проверка английских слов не только действительна, но и фактически задокументирована.

Обратитесь в орган:

2.1.3.1.3 Распознавание объекта сообщения, представляющего сообщение с четкой подписью

Если объект сообщения имеет класс сообщения (свойство PidTagMessageClass ([MS-OXCMSG] раздел 2.2.1.3)) значение «IPM.Note.SMIME.MultipartSigned» и содержит только один объект вложения, его СЛЕДУЕТ рассматривать как объект с четкой подписью. сообщение. Можно выполнить дополнительные шаги проверки, чтобы убедиться, что объект вложения помечен соответствующим типом носителя (например, свойство PidTagAttachMimeTag (раздел 2.680 [MS-OXPROPS]) имеет значение «multipart/signed») и представляет допустимый составной объект. /signed объект MIME, как указано в [RFC1847]. Если значение класса сообщения не "IPM.Note.SMIME.MultipartSigned", а заканчивается суффиксом ".SMIME.MultipartSigned", объект сообщения МОЖЕТ‹7>‹8> рассматриваться как сообщение с четкой подписью.

Если объект Message со значением класса сообщения "IPM.Note.SMIME.MultipartSigned" не имеет структуры, указанной в разделе 2.1.3.1, поведение не определено.

2.1.3.2.3 Распознавание объекта сообщения, представляющего S/MIME с непрозрачной подписью или шифрованием

Если объект сообщения имеет класс сообщения (свойство PidTagMessageClass ([MS-OXCMSG] раздел 2.2.1.3)) значение «IPM.Note.SMIME» и содержит только один объект вложения, его СЛЕДУЕТ рассматривать как сообщение с непрозрачной подписью или зашифрованное сообщение. Можно выполнить дополнительные шаги проверки, чтобы убедиться, что объект вложения помечен соответствующим типом носителя (например, свойство PidTagAttachMimeTag (раздел 2.680 [MS-OXPROPS]) имеет значение «application/pkcs7-mime» или «application/x- pkcs7-mime", или это "application/octet-stream" и имя файла, как указано в свойстве PidTagAttachFilename (раздел 2.671 [MS-OXPROPS]), и имеет расширение файла ".p7m") и представляет допустимый зашифрованный или сообщение с непрозрачной подписью, как указано в [RFC3852]. Если значение класса сообщения не "IPM.Note.SMIME", а заканчивается суффиксом ".SMIME", то объект "Сообщение" МОЖЕТ‹11> рассматриваться как сообщение с непрозрачной подписью или зашифрованное сообщение.

Значение класса сообщения "IPM.Note.SMIME" может быть неоднозначным.‹12>

Если объект Message имеет значение класса сообщения "IPM.Note.SMIME" и не имеет соответствующей структуры или содержимого, как указано в разделе 2.1.3.2, то поведение не определено.

ИЗМЕНИТЬ:

Чтобы быть более конкретным, да, вы ДОЛЖНЫ искать «шаблон в потоке файла».

В частности, если MSG является юникодом, вы должны просмотреть поток «__substg1.0_001A001F» и проверить шаблоны, упомянутые выше.

Файл MSG представляет собой файл структурированного хранилища OLE, который содержит потоки и хранилища. Чтобы получить доступ к потокам, используйте библиотеку OLE Storage, например OpenMCDF, если вы работаете с C#. Есть аналогичные для java, python и т.д.

23.04.2012
  • Это не говорит о том, что нужно просто проверять английские слова, как описано в моем исходном посте... что, как я полагаю, вы имеете в виду. Даже если бы это было задокументировано, как я описал, это не было бы хорошей идеей; независимо от того, насколько авторитетным был тот, кто рекомендовал эту практику. 25.04.2012

  • 2

    Этот пост в блоге довольно хорошо описывает формат и еще одна запись того же автора описывает именно то, что вам нужно, а именно информацию о почтовых сообщениях, управляемых правами.

    По сути, если сообщение соответствует формату файла эти сообщения и спецификации должны предоставить вам все необходимое для проверки подписей и шифрования.

    Проверка английских слов — плохая идея. Что, если пользователи не пишут по-английски, и что, если псевдослучайный поток зашифрованных данных создаст такие слова, как «или» или «и» в той кодировке, которую они используют? Это просто не надежно.

    ИЗМЕНИТЬ:

    Чтобы пояснить, что я имею в виду, когда говорю, что проверка английских слов — плохая идея, я хочу сказать, что простое сканирование файла и проверка наличия определенного набора слов — плохая идея. Поскольку кто-то проголосовал за это решение, я чувствую, что они могли неправильно понять то, что я сказал, из-за этой двусмысленности.

    Как указал другой пользователь в своем ответе, анализ объекта и фактическая обработка условий в данных - это нормально. Из их поста видно, что это задокументированный метод и он отлично работает, поскольку основан на стандартах. Это похоже на информацию, которую я дал здесь с двумя сообщениями и спецификацией формата.

    20.04.2012
  • @MichaelJ.Gray Спасибо за ваш ответ. Я думаю, что это хорошо, и я также с вами о разборе английских слов. Однако я подожду еще немного, приняв ответ, чтобы посмотреть, появится ли что-то еще. 26.04.2012

  • 3

    Чтобы открыть сообщение и изучить его, я предлагаю вам использовать Outlook Redemption. Это то, что я использую, и оно работает без Outlook, установленного на сервере. Если метод GetMessageFromMsgFile возвращает RDOEncryptedMessage, это означает, что ваша почта зашифрована или подписана.

    23.04.2012
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..