Цифровая подпись файлов MS Office (Word, Excel и т. Д.) И PDF на сервере - PullRequest
2 голосов
/ 08 июня 2010

Мне нужно поставить цифровую подпись в файлах MS Office и PDF, которые хранятся на сервере. Я действительно имею в виду цифровую подпись, которая интегрирована в документ в соответствии с каждым конкретным форматом файла.

Это процесс, который я имел в виду:

  1. Создать хэш содержимого файла
  2. Отправка хеша в пользовательский написанный Java-апплет в браузере
  3. Пользователь шифрует хеш своим закрытым ключом (например, на токене usb через PKCS # 11), таким образом, эффективно подписывая файл.
  4. Затем апплет отправляет подпись на сервер
  5. На сервере я бы включил подпись в файл (файлы MS Office и PDF могут сделать это без изменения содержимого файла, возможно, просто установив поле метаданных)

Круто то, что вам больше никогда не придется загружать и загружать файл целиком на сервер. Что еще круче, клиенту не нужны Office или PDF Writer для подписи файлов.

Части 2, 3 и 4 в порядке, моя компания купила всю технологию JAVA, которая мне нужна для предыдущего проекта, над которым я работал.

Проблема : Кажется, я не могу найти какую-либо документацию / примеры для выполнения частей 1 и 5 для файлов Office. На этот раз мои навыки Google не подведут?

Есть ли у вас какие-либо ссылки на документацию или примеры для этого для файлов MS Office? Базовая технология не так важна для меня: я могу использовать Java, .Net, COM, любая рабочая технология в порядке!

Примечание. Я на 95% уверен, что могу использовать точки 1 и 5 для файлов PDF с помощью iText

Спасибо

** Редактировать: Если я не могу сделать это с помощью хэшей и должен загрузить полный файл на клиент, это также возможно. Но тогда мне все еще нужна документация, чтобы подписать файл Office ... на этот раз в java (из апплета)

Ответы [ 3 ]

1 голос
/ 08 июня 2010

В общем, вы можете использовать наш продукт SecureBlackbox для подписи файлов Office и PDF.Однако распределенная подпись, подобная подписи в вашем сценарии, не тривиальна (хотя возможна).В настоящее время мы работаем над дополнением к SecureBlackbox, чтобы упростить такие распределенные операции.

Обновление: функциональность распределенной подписи теперь доступна и подробно описана в этом ответе .

0 голосов
/ 08 июня 2010

Вы не должны изобретать подпись самостоятельно.Вы можете конвертировать файлы в XML и использовать XMLDSIG (JSR 105), который включен в Java 6.

http://java.sun.com/javase/7/docs/technotes/guides/security/xmldsig/overview.html

Если вы можете использовать форматы файлов Open Office, такие как docx, это уже XMLтак что вам просто нужно добавить подпись.

0 голосов
/ 08 июня 2010

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

...