Добавляем электронную подпись запросов и документов в интерфейс CRM
Герберт Уэллс очень просто объяснил, что такое телеграф:
— Представьте себе гигантскую кошку, хвост которой в Лондоне, а голова в Ливерпуле. Если в Ливерпуле наступят кошке на хвост, в Лондоне замяукает.
— А что такое беспроволочный телеграф?
— Это то же самое, только без кошки.
Статья о том как внедрить ЭЦП в CRM и о разных вариантах решения этой задачи.
Соавторы статьи Денис Гуриков и Никита Калинин, я говорю им «спасибо» за материалы.
Зачем?
Иногда документы нужно подписать и отправить, а руководителя нет на месте. Вполне можно потом забыть или нарушить сроки. Документы скапливаются целыми горами. Руководитель сидит и тратит много времени на подписание бумаг.
Да и вообще «бумаги» в 21 веке — неэкологичный анахронизм. Лучше вообще без них. А подписывать надо.
В чем суть электронной подписи? Как и в «мире оффлайна», когда человек согласен, он ставит подпись. Только бумага и подпись физически не существуют.
Зачем нужна подпись? Коротко — для аутентификации (подтверждения) документа. То есть, чтобы убедиться, что подписант выразил согласие с положениями именно этой версии документа.
Зачем электронная подпись в CRM-системах и интранет-порталах?
В CRM есть 2 сценария использования цифровой подписи:
- Для внутренней переписки и доверия «нажатию кнопки». Часто в интерфейсе CRM-систем и интранет-порталах согласуются внутренние документы, а также скидки, договоры и дилерские соглашения.
- Для отправки официальных ответов клиентам и государственным органам.
Разные сценарии — разные требования. В первом случае подписываются:
- Заявление на отпуск
- Заявления на выплаты различного рода
- Прочие запросы (на технику, мебель и т.д.)
- Договоры, соглашения, счета на оплату.
Второй случай серьезнее — не обойтись без квалифицированной электронной подписи.
Техника: Что такое ЭЦП и ее виды
Различают три вида электронной подписи:
- Простая электронная цифровая подпись (ПЭП)
- Усиленная неквалифицированная цифровая подпись (НЭП)
- Усиленная квалифицированная цифровая подпись (КЭП)
В отличие от простой, усиленная подпись защищает ее автора от модификации документа после формирования подписи.
Чтобы сформировать любую цифровую подпись документа, нужно три вещи:
- Сам документ
- Публичный ключ
- Секретный ключ
Простая цифровая подпись
Коротко о работе ПЭП:
- Система берет метаданные документа (дата документа, номер документа, название, пароль подписанта и т. д.) и хэширует. Цифровая подпись готова. Пароль хранится и генерируется Вашей системой.
- Отправляем файл
- Получаем
- Используя пароль, расшифровываем подпись. Полученные метаданные и логин сравниваем. Если все верно — успех.
Отличный пример это использование логина и пароля для входа в свою социальную сеть, например Вконтакте. Чтобы подтвердить свою личность (подписать документ), нужно ввести логин и пароль (хэшируем метаданные).
Система проверяет наличие пользователя. Если такой есть в системе, то начинается сверка пароля. Если пароль, который Вы ввели, совпадает с тем, что есть в системе — поздравляем, Вы вошли к себе на страничку ВК (сравнили метаданные после расшифровки).
Из недостатков — та же болезнь. Если Ваш пароль каким то образом украли, то могут зайти на страницу и делать на ней все, что душе угодно. Изменить личные данные, фотографию и т.д. То же самое и с документом.
Усиленная цифровая подпись
Усиленная цифровая подпись позволяет защищаться от модификации документа. То есть, если после подписания внести изменения в документ, то усиленная подпись автоматически становится недействительной.
Для формирования подписей используют сертификаты (как SSL, в основе та же технология). А сертификат имеет ограниченный срок действия.
Усиленная подпись бывает неквалифицированной и квалифицированной. Разница в том, кто выпустил сертификат. Если сертификат выпущен аккредитованным Минкомсвязи удостоверяющим центром, имеющим дополнительный сертификат ФСБ, то такая подпись называется квалифицированной.
Если используется самоподписанный сертификат или выпущенный неаккредитованным УЦ (Удостоверяющий Центр), то такая подпись является неквалифицированной.
Как работает усиленная подпись
Вспомните пример алгоритма простой подписи. Результат этого алгоритма не зависит от текста документа. Если подать этот текст на вход хеш-функции, получится нечто похожее на усиленную подпись. То есть, в результате изменения текста документа старая подпись «не подойдет» к новой версии документа.
В реальности усиленная подпись — это хеш документа, зашифрованный секретным ключом сертификата.
Открытый ключ есть у всех участников документооборота. Он используется для проверки подлинности подписи. Закрытый — хранится у пользователя и используется для генерации подписи.
Как выглядит усиленная подпись
Технически, подпись — это отдельный файл (помните, в случае простой подписи это была некая строка?). То есть, чтобы передать подписанный документ другой стороне, нужно передать исходник и файл подписи. Однако, некоторые форматы документов позволяют встраивать цифровые подписи.
Например, PDF и почти все форматы Microsoft Office это поддерживают. А сами программные пакеты имеют функцию создания и проверки таких подписей. Таким образом, для технически неподготовленных пользователей процесс подписания выглядит как нажатие нескольких кнопок в Word, Excel или Adobe Reader.
Неквалифицированная цифровая подпись (НЭП)
Такая подпись имеет юридическую силу (с точки зрения суда), если стороны заключили соответствующее соглашение. Такое соглашение нельзя заключить с гос. структурами.
Пользователи получают сертификат с публичным и секретным ключом в том виде и таким способом, которому стороны доверяют. Например, в виде файла, присланного по электронной почте.
Для создания подписи может использоваться любое программное обеспечение, которому стороны доверяют. Хоть утилиты OpenSSL, хоть КриптоАРМ, хоть встроенные средства подписи Microsoft Office или Adobe Reader.
Квалифицированная цифровая подпись (КЭП)
Такая подпись имеет юридическую силу и признается государством. Например, можно отправлять документы в налоговую. Никаких дополнительных соглашений с участниками документооборота заключать не нужно — таким подписям все доверяют «по-умолчанию».
Секретный ключ для такой подписи передается пользователю на сертифицированном ФСБ защищенном носителе — USB-токене («флешка»), смарт-карте и др.
Для работы с носителем используется специальное программное обеспечение. Чаще всего, это ПО интегрируется с ОС таким образом, чтобы Microsoft Office, Adobe Reader и другие программные пакеты могли использовать носитель при создании подписей.
То есть, для пользователей процесс подписания документов почти не усложняется (нужно только «флешку» не забыть подключить).
С помощью такой подписи можно взаимодействовать с государственными системами, участвовать в торгах, работать с клиентами и партнерами.
Утверждение внутренних документов
Заявления на отпуск, служебные записки, отчеты, оформление командировок и т.д. — бумажных документов в компаниях хватает. Обычно, процедура оформления такого документа напоминает квест. Надо найти форму, заполнить, лично передать в руки утверждающему и т.д.
Если вы все в одном офисе, то это дело получаса. А если производство в одном месте, а отдел кадров в другом? Всё затягивается на несколько дней. Выходом становится внедрение систем документооборота. У нас даже есть отдельный модуль документооборота.
Один минус — сотрудники иногда недостаточно серьезно воспринимают «электронные документы». Исправить это может внедрение электронной подписи. Тут как раз хорошо подойдёт неквалифицированная электронная подпись.
По сценарию использования можно выделить две возможности:
- Подписать документ, загрузив его в специальной форме на отдельной странице CRM
- Автоматическое утверждение документа при прохождении через бизнес-процесс
Внешний документооборот
Для внешнего документооборота нужно применять квалифицированную электронную подпись. Тогда документы будут иметь полную юридическую силу. Вы сможете обмениваться ими с клиентами, партнерами и государственными структурами.
С точки зрения интерфейсов, всё выглядит похожим на внутренний документооборот — отдельная форма для утверждения или автоматической подтверждение в рамках бизнес-процесса.
Важный момент — нужно больше внимания уделить безопасности. Так как речь идет о документах, имеющих полную юридическую силу. Безопасность обеспечивается ограничением доступа, логированием и отдельными оповещениями.
Простой пример использования подписи в CRM — подписать в сделке договор. После подписи можно отправить клиенту. Нет необходимости отправлять документы почтой, ждать несколько дней, а то и недель (если клиент в другом городе), а потом столько же ждать возврата. Документ утвержден электронной подписью и считается юридически значимым.
Остался главный технический вопрос –, а как включить ЭЦП в логику работы CRM или внутреннего портала?
Архитектура решения
Есть несколько способов решения для работы с ЭЦП. Давайте рассмотрим их.
Один ключ — много станций
Предположим Вам нужно подписывать документ и отправлять его на сервер. Сервер должен проверить документ и прислать ответ, в виде такого же подписанного документа.
И там и там должна быть проверка на подлинность подписи. Предположим у Вас всего один ключ для подписи, а сотрудников работает много и каждому нужно что-то подписать и отправить. И все это должно происходить непосредственно в CRM.
Как это работает:
- Делаем отдельный сервер для ЭЦП с подключенным ключом для ЭЦП, на который будут приходить XML-запросы
- Сотрудник должен будет установить себе приложение для двухфакторной аутентификации, которое будет генерировать одноразовый пароль каждые N сек. (TOTP). В свою очередь наш сервер ЭЦП генерирует QR-код, который нужно отсканировать этим приложением, чтобы появился пароль. Этот пароль нужно вводить при каждой подписи, чтобы подтвердить допуск к USB-ключу.
- После подписи, запрос отправляется на сервер.
- После того, как ответ получен на сервере для ЭЦП, происходит конвертация XML-ответа в PDF-файл или любой другой.
- PDF-файл загружается в CRM.
В данном случае мы имеем возможность работать из дома (при наличии смартфона, который сейчас есть даже у бабушек). Нам нет необходимости на каждого сотрудника оформлять собственную ЭЦП, достаточно одной.
Это решение предполагает, что Вы полностью доверяете сотрудникам, получившим доступ к интерфейсу. Даже новички могут начать подписывать документы без каких-либо согласований.
Это плохое решение, если подписание документа имеет юридические последствия. Так можно делать только при интеграции с Бюро Кредитных историй или другими сервисами, предоставляющими ответы на запросы, подписанные ЭЦП.
Количество ключей = количество станций
Предположим у нас у каждого сотрудника, который имеет права подписывать документы, есть ключ для ЭЦП.
Как это работает:
- Разрабатываем приложение для рабочих станций, которое будет работать с криптопровайдером (самое популярное — криптоПРО)
- Сотрудник формирует и подписывает запрос на своей рабочей станции
- Запрос отправляется на сервер.
- Полученный ответ конвертируется в PDF-файл или любой другой
- PDF-файл загружается в CRM
В данном случае мы имеем повышенную безопасность, т.к. подписывать документы могут только доверенные сотрудники, и мы знаем кто конкретно подписал конкретный запрос.
Пример применения в реальном проекте для CEDIS (Энергосистема Черногории)
Бизнес задача: сотрудники должны подписывать документы и отправлять их клиентам.
Какие ресурсы?
Один сервер, один ключ ЭЦП, CRM.
Что нужно сделать?
Добавлять в сделку документ в формате PDF, подписывать его прямо из карточки сделки с помощью ЭЦП. Подписанный документ можно скачать и отправить клиенту.
Как реализовали
Было разработано специальное приложение, которое размещалось на отдельном сервере и занималось подписыванием документов.
В системе создано дополнительное поле, в которое загружался PDF документ. При загрузке документа, напротив него появлялась кнопка «Подписать». При нажатии на кнопку открывался интерфейс приложения.
Для того, чтобы подписать документ, пользователь должен был ввести одноразовый код, который приходил ему на смартфон и выбрать сертификат, с помощью которого происходит подпись документа.
Документ отправляется на сервер. Одноразовый пароль введен и выбран сертификат. Документ подписан и направлен обратно. В этот момент происходит замена загруженного в сделку документа, на подписанный документ на сервере.
Выводы
Внедрение подписи документов в CRM-системы (да и вообще куда угодно) — интересная техническая задача на стыке разработки, информационной безопасности и оптимизации процессов.
Эта задача может быть решена описанным нами способом. Интересно мнение о других решениях такой задачи.