С каких токенов нельзя скопировать? У меня таких проблем не было. Даже неэкспортируемые подписи легко экспортируются, потому что они не привязаны к ID устройства.
Когда я выпускал подписи, в рекомендациях удостоверяющего центра прямым текстом было написано, что устанавливать пароли на контейнеры не рекомендуется. Причина в том, что пользователи часто забывают пароли и им приходится перевыпускать подписи.
Если контейнер установлен в реестр и он запаролен, вы можете его скопировать, но при установке на новое рабочее место он будет требовать пароль. В описанном мной примере контейнер копируется в реестр из токена, на этом этапе уже будет понятно установлен пароль или нет, по коду ошибки. Если пароль установлен, можно перейти в режим сканирования ввода с клавиатуры и каждый набор символов подгонять под паттерн (например 8-16 цифр) и после каждого совпадения снова пытаться скопировать его. Если подписей на съемных носителях нет, а они сразу установлены в реестр, то перед копированием можно делать проверку, которая должна вернуть код ошибки 0, если пароль не установлен, либо снова переходить в режим сканирования ввода.
Если контейнеры запаролены но пароль был запомнен при вводе, можно извлечь их таким образом csptest -passwd -showsaved -container "<имя контейнера>"
На моем опыте контейнеры либо не имели пароля, либо пароль был запомнен, что бы не вводить его при каждом подписании. Но всегда остаются механизмы, что бы его извлечь.
Я согласен, что есть множество механизмов защиты, но далеко не во всех компаниях они внедрены. Более того, их массовое внедрение и не планируется, особенно в компаниях, в которых нет штатного специалиста по ИБ. Поэтому угроза актуальна.
От проекта зависит. Если на вас давят сверху и подгоняют - вы будете использовать любые инструменты что бы уложиться в дедлайн. В таком случае лучше разработать что бы работало, чем быть уволенным и писать великолепно оптимизированные pet проекты дома. Большинству проектов не нужны уникальные стили, нужно просто получить данные из БД, обработать и записать обратно. Если проект супер уникальный, у вас много свободного времени и бюджета, то можно разработать свои CSS классы, но большинство заказчиков не готовы за это платить, особенно если вы берете с них $100 в час :D
Не всегда. Насколько я знаю, Сбербанк, ВТБ и Тинькофф позволяют корпоративным клиентам авторизовываться через ЭП и PIN, без sms или push. PIN почти наверняка лежит у каждого бухгалтера на рабочем столе в файле с расширением *.docx. Во всех компаниях где я работал так было, по крайней мере :D
Текущее законодательство вполне позволяет подписывать документы по передаче имущества. Вот примеры: 1. Подпись сотрудника c мчд (ограничено доверенностью) - можно заключить договор с подставной фирмой на космические суммы, подписать счет и закрывающие документы. В некоторых случаях возможно использование личного имущества сотрудников, если на это нет запрета. 2. Подпись руководителя - все то же самое, что и в первом пункте + назначить себя на должность с невероятной зарплатой, добавив необоснованную компенсацию при увольнении, выдать себе невозвратный кредит от компании, подписать мчд на свое имя, переписать на себя имущество компании, подписать указ о повышении зарплаты всем сотрудникам на 800%, задонатить средства на благотворительность, получить доступ в онлайн банкинг.
Есть огромное количество способов навести шорох, которые ограничиваются только фантазией злоумышленника.
Верно, вы не имеете прямого доступа к ключам на защищенном токене. Но вы можете экспортировать ключи через криптопровайдер, если они являются экспортируемыми. Либо использовать удаленное подписание, если ключи неэкспортируемые. Данный механизм и описан в данной статье, а csptest это утилита командной строки, которая идет в комплекте с криптопро и используется для того, что бы получить доступ к ключам на токене.
Антивирусы: да, все верно, антивирусы спокойно дают запускать подобные программы. Я работал в компании с миллиардными оборотами, 6000+ рабочих мест, где поднимал удостоверяющий центр и автоматизировал процессы связанные с СКЗИ, ЭП и ЭДО. Реализовал механизм удаленного извлечения ключей по данному алгоритму, сначала в тестовом режиме на PHP, потом в боевом на C++ (потому что дает сканировать ввод с клавиатуры, если контейнер запаролен + не требует наличие интерпретатора для запуска). Kaspersky и Bitdefender спокойно игнорируют подобные схемы. Так же тестировал удаленное подписание с неэскортируемыми ключами - на клиентские машины ставится агент, который выполняет удаленные команды. Сначала нужно запустить сканирование что бы найти машину на которой установлен токен, затем отправить задание на подписание файла. Я так машиночитаемые доверенности подписывал.
Юридические аспекты: в нашей компании бухгалтер подписала себе безвозвратный кредит подписью генерального и уехала в другую страну, в компании моего знакомого увели ключи генерального директора и подписали договор подряда и закрывающие документы - чем закончилось не знаю. В новостях был случай, когда сделку по недвижимости подписали, потом смогли опровергнуть через суд, но только потому, что подпись оказалась поддельная.
Что делать: каждая компания решает сама какие меры информационной безопасности применять, я просто протестировал уязвимость, написал автоматизацию и предоставил отчет. В моем случае компания не приняла никаких мер, хотя ее регулярно успешно атакуют через рассылки, получают доступ к чувствительным данным, шифруют рабочие столы, получают доступ к серверам. Можно получить доступ через рассылки с вложениями, но так же можно получить доступ через сотрудников. Многие бывшие сотрудники в компании, где я работал, до сих пор могут получить доступ ко всем рабочим местам через системы удаленного доступа, которые поддерживают работу с командной строкой и запущены от имени администратора, а инструкция, содержащая пароль подключения, гуляет по интернету в открытом доступе. В этом случае что бы обчистить 6000 рабочих мест уйдет примерно 20 минут.
Да, рекламы нет. Я обозначил проблему, а ее решение лежит на плечах руководителей ит департаментов и владельце ЭП.
Да, все верно. Вы можете проверить самостоятельно - сгенерируйте тестовую подпись на usb носитель, скопируйте ее в реестр, выделите ветку реестра с подписью и экспортируйте в виде *.reg файла. Перенесите этот файл на другой компьютер, замените SID на текущего пользователя и импортируйте в реестр. Этот метод широко практикуется в крупных компаниях, когда нужно на рабочее место установить пул подписей, например бухгалтеру.
Трамп занимался недвижимостью, у него была огромная империя, громкое имя и связи в высших кругах. Этот опыт не применим к стартаперам, которые пытаются заработать лишний доллар. У стартаперов нет громкого имени, нет связей, но есть огромная конкуренция на рынке. Пока Трамп получает инвестиции через связи, стартаперы обивают пороги инвесторов, получая очередной отказ.
Ты говоришь, что можно просто начать с нуля, но банкротство — это не просто бумажная процедура. Это испорченная репутация, проблемы с получением кредитов, невозможность привлечь инвесторов и в целом высокий риск попасть в чёрный список. Банки и инвесторы делают подробный аудит компаний и их руководителей, и любое упоминание о судебных разбирательствах или банкротствах в прошлом может стать серьёзным препятствием.
Пример 1: Фирма одного из моих знакомых потеряла потенциальный контракт на $150 000, потому что юрист нашел информацию, что владелец компании в родной стране был соучредителем другой компании (давно ликвидированной), где клиент судился с ними из-за некачественных услуг и написал об этом статью в местном издании, где обвинял руководство в мошенничестве.
Когда ты запускаешь бизнес, ты не просто продаёшь товар или услугу. Ты создаешь доверие у клиентов и партнёров. Ошибка в выборе инструментов или фатальный сбой в работе — и ты теряешь это доверие. Судебные разбирательства или просто негативный отклик в СМИ могут обернуться долгосрочными последствиями. Ты правильно заметил, что в любой сфере может "что-то пойти не так". И если твой проект с использованием AI сорвётся, последствия могут быть гораздо серьёзнее, чем если бы ты сделал ошибку в традиционном процессе. В случае с AI мы имеем дело с непредсказуемыми технологиями, и риски тут многократно возрастают. Если же при крупных сбоях или серьёзных ошибках в работе суд или регулятор решат, что твой выбор инструментов был халатным, последствия могут быть крайне тяжёлыми. Суды могут применить принцип "прокола корпоративной вуали" и заставить тебя покрывать ущерб личным имуществом. Я понимаю, что эксперименты и инновации — это важно для роста бизнеса, но они должны происходить в условиях, когда ты точно понимаешь, какие последствия могут быть, и имеешь возможность их контролировать. Иначе можно просто сгореть, потеряв всё, включая репутацию.
Пример 2: Бывшие коллеги создали стартап в Делавэре с "уникальным" продуктом в области no-code, активно заявляя о применении ИИ и будущем уходе разработчиков. Однако, не получив инвестиций, они вынуждены работать подрядчиками для малого бизнеса, поскольку крупные клиенты опасаются экспериментировать с инновациями и требуют проверенных решений.
В бизнесе важно не только быстро зарабатывать, но и обеспечивать устойчивость на долгосрочную перспективу. Если ты не умеешь мыслить стратегически и учитывать ущерб для бизнеса и партнёров, то ты, по сути, просто очередной халатный инноватор, с которым платежеспособные клиенты не захотят иметь дело.
Если это pet-проект, то ok. В коммерческих проектах я бы проявлял осторожность с AI, особенно если нет полного понимания как это работает и к каким ошибкам может привести. Не знаю как в России сейчас, но в США очень распространена практика судиться по любому поводу. Если вы внедрили AI и что-то пошло не так - вам мгновенно выкатят огромный судебный иск, который вы не сможете покрыть.
После переезда в США я учил английский по самой нелогичной методике - нашел словарь A1-C2, читал по 500 слов за раз, а потом пытался их вспомнить при чтении и аудировании. В принципе это сработало, сейчас словарный запас у меня около 6000. Теперь практикую через самописное приложение. Без разницы как вы учите слова, главное долго и терпеливо долбить.
Опытный php разработчик, знающий базовые паттерны, освоит основы C# за 5-6 часов - этого более чем достаточно, что бы вызывать методы крипто про api и скомпилировать проект. Не зная C# , я за 30 минут написал службу, которая берет лицензии крипто-про с удаленного сервера и зашивает в реестр. Работа с реестром, командной строкой, приложениями, системными api и внешними устройствами в C# просто божественна.
Обработка ошибок в C# такая же, как в php. Делаете try catch и выбрасываете либо Console.WriteLine($"[Error: 0x000000]"); для успешного завершения, либо Console.WriteLine($"[Error: {ex.Message}]"); Для вывода кода ошибки. Парсинг ошибок на php будет универсальным.
Для этого и нужен конструктор, он вызывает цепочку команд, как если бы аргументы передавались в командную строку csptest -keyset -enum_keys -veryficontext -fqcn. Это позволяет гибко контролировать запрос. Если не знаете какие методы поддерживает keyset, то можно запросить справку csptest -keyset -help. Никто не мешает обернуть цепочку вызовов в метод и вызывать его одной строкой, но если есть входные данные, их придется передавать в качестве аргументов, а этого я и хотел избежать. Представьте каждый запрос к базе в Laravel оборачивать и вместо текучего интерфейса вагон переменных высыпать в аргументы, при этом пытаться вспомнить в каком порядке они должны быть.
Вы правильно заметили основной посыл - не нужно собирать расширение КриптоПро, вы можете перенести проект на любую операционную систему, где это будет гарантировано работать и для этого не нужно изучать документацию по установке расширений. Но если проект изначально заточен на гибкую работу с подписями, например, вы пишите систему ЭДО как SaaS, то логичнее выбрать SDK или внешний сервис подписания на C#. С# просто имеет лучший набор стабильных инструментов для работы с документами. Например, если вам нужно XML документ конвертировать в читабельный PDF формат и нарисовать штамп что документ подписан электронной подписью, там это сделать проще и менее затратно по оперативной памяти. В общем, зависит от проекта и задач.
Консоль? Зависит от задач. Если разрабатывать специфический проект, то да. Если нужно добавить подписание, шифрование или проверку документов в существующий проект, то вполне нормальное решение, потому что используются оригинальные инструменты, хоть и консольные. Используя командную строку, вы запускаете официальную, скомпилированную c++ обертку для работы с КриптоПро API. Используя SDK, вы так же запускаете обертку на c++/c#, только через DLL и COM-интерфейс. Ни один из этих способов не является нативным. Если говорить об отдельном сервисе подписания на .NET, то это нормальная практика - тем более .NET и C# имеют лучшую экосистему для работы с документами и криптографией. В прошлом году я на заказ писал аналог платной утилиты КриптоПро PDF на C# с визуализацией подписи на документе и могу с уверенностью сказать, что там это реализовано лучше, чем на PHP. Но как я уже говорил - зависит от задач. Есть компания, которая за год 5млн документов прогоняет через консольную реализацию и все работает отлично. Я бы просто ориентировался на требования работодателя и исходя их этого принимал решения. Комбинировать методы тоже никто не мешает.
С каких токенов нельзя скопировать? У меня таких проблем не было. Даже неэкспортируемые подписи легко экспортируются, потому что они не привязаны к ID устройства.
Когда я выпускал подписи, в рекомендациях удостоверяющего центра прямым текстом было написано, что устанавливать пароли на контейнеры не рекомендуется. Причина в том, что пользователи часто забывают пароли и им приходится перевыпускать подписи.
Если контейнер установлен в реестр и он запаролен, вы можете его скопировать, но при установке на новое рабочее место он будет требовать пароль. В описанном мной примере контейнер копируется в реестр из токена, на этом этапе уже будет понятно установлен пароль или нет, по коду ошибки. Если пароль установлен, можно перейти в режим сканирования ввода с клавиатуры и каждый набор символов подгонять под паттерн (например 8-16 цифр) и после каждого совпадения снова пытаться скопировать его. Если подписей на съемных носителях нет, а они сразу установлены в реестр, то перед копированием можно делать проверку, которая должна вернуть код ошибки 0, если пароль не установлен, либо снова переходить в режим сканирования ввода.
Если контейнеры запаролены но пароль был запомнен при вводе, можно извлечь их таким образом
csptest -passwd -showsaved -container "<имя контейнера>"
На моем опыте контейнеры либо не имели пароля, либо пароль был запомнен, что бы не вводить его при каждом подписании. Но всегда остаются механизмы, что бы его извлечь.
Возможно. Но тогда можно просто подкинуть платежку в общую кучу. Кто будет проверять 1000 платежных поручений перед подписанием всей пачки.
Может быть кто-то так и делает. Я хотел бы посмотреть как бухгалтерия в крупной компании проводит 1000 платежей в час и судорожно вводит коды из смс)
Я согласен, что есть множество механизмов защиты, но далеко не во всех компаниях они внедрены. Более того, их массовое внедрение и не планируется, особенно в компаниях, в которых нет штатного специалиста по ИБ. Поэтому угроза актуальна.
От проекта зависит. Если на вас давят сверху и подгоняют - вы будете использовать любые инструменты что бы уложиться в дедлайн. В таком случае лучше разработать что бы работало, чем быть уволенным и писать великолепно оптимизированные pet проекты дома. Большинству проектов не нужны уникальные стили, нужно просто получить данные из БД, обработать и записать обратно. Если проект супер уникальный, у вас много свободного времени и бюджета, то можно разработать свои CSS классы, но большинство заказчиков не готовы за это платить, особенно если вы берете с них $100 в час :D
Не всегда. Насколько я знаю, Сбербанк, ВТБ и Тинькофф позволяют корпоративным клиентам авторизовываться через ЭП и PIN, без sms или push.
PIN почти наверняка лежит у каждого бухгалтера на рабочем столе в файле с расширением *.docx. Во всех компаниях где я работал так было, по крайней мере :D
Текущее законодательство вполне позволяет подписывать документы по передаче имущества. Вот примеры:
1. Подпись сотрудника c мчд (ограничено доверенностью) - можно заключить договор с подставной фирмой на космические суммы, подписать счет и закрывающие документы. В некоторых случаях возможно использование личного имущества сотрудников, если на это нет запрета.
2. Подпись руководителя - все то же самое, что и в первом пункте + назначить себя на должность с невероятной зарплатой, добавив необоснованную компенсацию при увольнении, выдать себе невозвратный кредит от компании, подписать мчд на свое имя, переписать на себя имущество компании, подписать указ о повышении зарплаты всем сотрудникам на 800%, задонатить средства на благотворительность, получить доступ в онлайн банкинг.
Есть огромное количество способов навести шорох, которые ограничиваются только фантазией злоумышленника.
Верно, вы не имеете прямого доступа к ключам на защищенном токене. Но вы можете экспортировать ключи через криптопровайдер, если они являются экспортируемыми. Либо использовать удаленное подписание, если ключи неэкспортируемые.
Данный механизм и описан в данной статье, а csptest это утилита командной строки, которая идет в комплекте с криптопро и используется для того, что бы получить доступ к ключам на токене.
Антивирусы: да, все верно, антивирусы спокойно дают запускать подобные программы. Я работал в компании с миллиардными оборотами, 6000+ рабочих мест, где поднимал удостоверяющий центр и автоматизировал процессы связанные с СКЗИ, ЭП и ЭДО. Реализовал механизм удаленного извлечения ключей по данному алгоритму, сначала в тестовом режиме на PHP, потом в боевом на C++ (потому что дает сканировать ввод с клавиатуры, если контейнер запаролен + не требует наличие интерпретатора для запуска). Kaspersky и Bitdefender спокойно игнорируют подобные схемы. Так же тестировал удаленное подписание с неэскортируемыми ключами - на клиентские машины ставится агент, который выполняет удаленные команды. Сначала нужно запустить сканирование что бы найти машину на которой установлен токен, затем отправить задание на подписание файла. Я так машиночитаемые доверенности подписывал.
Юридические аспекты: в нашей компании бухгалтер подписала себе безвозвратный кредит подписью генерального и уехала в другую страну, в компании моего знакомого увели ключи генерального директора и подписали договор подряда и закрывающие документы - чем закончилось не знаю. В новостях был случай, когда сделку по недвижимости подписали, потом смогли опровергнуть через суд, но только потому, что подпись оказалась поддельная.
Что делать: каждая компания решает сама какие меры информационной безопасности применять, я просто протестировал уязвимость, написал автоматизацию и предоставил отчет. В моем случае компания не приняла никаких мер, хотя ее регулярно успешно атакуют через рассылки, получают доступ к чувствительным данным, шифруют рабочие столы, получают доступ к серверам. Можно получить доступ через рассылки с вложениями, но так же можно получить доступ через сотрудников. Многие бывшие сотрудники в компании, где я работал, до сих пор могут получить доступ ко всем рабочим местам через системы удаленного доступа, которые поддерживают работу с командной строкой и запущены от имени администратора, а инструкция, содержащая пароль подключения, гуляет по интернету в открытом доступе. В этом случае что бы обчистить 6000 рабочих мест уйдет примерно 20 минут.
Да, рекламы нет. Я обозначил проблему, а ее решение лежит на плечах руководителей ит департаментов и владельце ЭП.
Пособие для C++ разрабов. Вдруг кто-то решит перейти в направление Malware-as-a-Service (MaaS) и навести шороху в индустрии. Шучу.
Да, все верно. Вы можете проверить самостоятельно - сгенерируйте тестовую подпись на usb носитель, скопируйте ее в реестр, выделите ветку реестра с подписью и экспортируйте в виде *.reg файла. Перенесите этот файл на другой компьютер, замените SID на текущего пользователя и импортируйте в реестр. Этот метод широко практикуется в крупных компаниях, когда нужно на рабочее место установить пул подписей, например бухгалтеру.
Трамп занимался недвижимостью, у него была огромная империя, громкое имя и связи в высших кругах. Этот опыт не применим к стартаперам, которые пытаются заработать лишний доллар. У стартаперов нет громкого имени, нет связей, но есть огромная конкуренция на рынке. Пока Трамп получает инвестиции через связи, стартаперы обивают пороги инвесторов, получая очередной отказ.
Ты говоришь, что можно просто начать с нуля, но банкротство — это не просто бумажная процедура. Это испорченная репутация, проблемы с получением кредитов, невозможность привлечь инвесторов и в целом высокий риск попасть в чёрный список. Банки и инвесторы делают подробный аудит компаний и их руководителей, и любое упоминание о судебных разбирательствах или банкротствах в прошлом может стать серьёзным препятствием.
Пример 1: Фирма одного из моих знакомых потеряла потенциальный контракт на $150 000, потому что юрист нашел информацию, что владелец компании в родной стране был соучредителем другой компании (давно ликвидированной), где клиент судился с ними из-за некачественных услуг и написал об этом статью в местном издании, где обвинял руководство в мошенничестве.
Когда ты запускаешь бизнес, ты не просто продаёшь товар или услугу. Ты создаешь доверие у клиентов и партнёров. Ошибка в выборе инструментов или фатальный сбой в работе — и ты теряешь это доверие. Судебные разбирательства или просто негативный отклик в СМИ могут обернуться долгосрочными последствиями.
Ты правильно заметил, что в любой сфере может "что-то пойти не так". И если твой проект с использованием AI сорвётся, последствия могут быть гораздо серьёзнее, чем если бы ты сделал ошибку в традиционном процессе. В случае с AI мы имеем дело с непредсказуемыми технологиями, и риски тут многократно возрастают.
Если же при крупных сбоях или серьёзных ошибках в работе суд или регулятор решат, что твой выбор инструментов был халатным, последствия могут быть крайне тяжёлыми. Суды могут применить принцип "прокола корпоративной вуали" и заставить тебя покрывать ущерб личным имуществом.
Я понимаю, что эксперименты и инновации — это важно для роста бизнеса, но они должны происходить в условиях, когда ты точно понимаешь, какие последствия могут быть, и имеешь возможность их контролировать. Иначе можно просто сгореть, потеряв всё, включая репутацию.
Пример 2: Бывшие коллеги создали стартап в Делавэре с "уникальным" продуктом в области no-code, активно заявляя о применении ИИ и будущем уходе разработчиков. Однако, не получив инвестиций, они вынуждены работать подрядчиками для малого бизнеса, поскольку крупные клиенты опасаются экспериментировать с инновациями и требуют проверенных решений.
В бизнесе важно не только быстро зарабатывать, но и обеспечивать устойчивость на долгосрочную перспективу. Если ты не умеешь мыслить стратегически и учитывать ущерб для бизнеса и партнёров, то ты, по сути, просто очередной халатный инноватор, с которым платежеспособные клиенты не захотят иметь дело.
Если это pet-проект, то ok. В коммерческих проектах я бы проявлял осторожность с AI, особенно если нет полного понимания как это работает и к каким ошибкам может привести. Не знаю как в России сейчас, но в США очень распространена практика судиться по любому поводу. Если вы внедрили AI и что-то пошло не так - вам мгновенно выкатят огромный судебный иск, который вы не сможете покрыть.
После переезда в США я учил английский по самой нелогичной методике - нашел словарь A1-C2, читал по 500 слов за раз, а потом пытался их вспомнить при чтении и аудировании. В принципе это сработало, сейчас словарный запас у меня около 6000. Теперь практикую через самописное приложение. Без разницы как вы учите слова, главное долго и терпеливо долбить.
Опытный php разработчик, знающий базовые паттерны, освоит основы C# за 5-6 часов - этого более чем достаточно, что бы вызывать методы крипто про api и скомпилировать проект. Не зная C# , я за 30 минут написал службу, которая берет лицензии крипто-про с удаленного сервера и зашивает в реестр. Работа с реестром, командной строкой, приложениями, системными api и внешними устройствами в C# просто божественна.
Обработка ошибок в C# такая же, как в php. Делаете try catch и выбрасываете либо Console.WriteLine($"[Error: 0x000000]"); для успешного завершения, либо Console.WriteLine($"[Error: {ex.Message}]"); Для вывода кода ошибки. Парсинг ошибок на php будет универсальным.
Для этого и нужен конструктор, он вызывает цепочку команд, как если бы аргументы передавались в командную строку
csptest -keyset -enum_keys -veryficontext -fqcn. Это позволяет гибко контролировать запрос. Если не знаете какие методы поддерживает keyset, то можно запросить справку csptest -keyset -help. Никто не мешает обернуть цепочку вызовов в метод и вызывать его одной строкой, но если есть входные данные, их придется передавать в качестве аргументов, а этого я и хотел избежать. Представьте каждый запрос к базе в Laravel оборачивать и вместо текучего интерфейса вагон переменных высыпать в аргументы, при этом пытаться вспомнить в каком порядке они должны быть.
Вы правильно заметили основной посыл - не нужно собирать расширение КриптоПро, вы можете перенести проект на любую операционную систему, где это будет гарантировано работать и для этого не нужно изучать документацию по установке расширений. Но если проект изначально заточен на гибкую работу с подписями, например, вы пишите систему ЭДО как SaaS, то логичнее выбрать SDK или внешний сервис подписания на C#. С# просто имеет лучший набор стабильных инструментов для работы с документами. Например, если вам нужно XML документ конвертировать в читабельный PDF формат и нарисовать штамп что документ подписан электронной подписью, там это сделать проще и менее затратно по оперативной памяти. В общем, зависит от проекта и задач.
Компьютерами и шпаргалками на экзамене пользоваться запрещено. GigaChat попадает под оба критерия. Дискриминация, но все же.
Можно я с помощью ChatGPT сдам экзамен и получу диплом врача?
Консоль? Зависит от задач. Если разрабатывать специфический проект, то да. Если нужно добавить подписание, шифрование или проверку документов в существующий проект, то вполне нормальное решение, потому что используются оригинальные инструменты, хоть и консольные.
Используя командную строку, вы запускаете официальную, скомпилированную c++ обертку для работы с КриптоПро API. Используя SDK, вы так же запускаете обертку на c++/c#, только через DLL и COM-интерфейс. Ни один из этих способов не является нативным.
Если говорить об отдельном сервисе подписания на .NET, то это нормальная практика - тем более .NET и C# имеют лучшую экосистему для работы с документами и криптографией. В прошлом году я на заказ писал аналог платной утилиты КриптоПро PDF на C# с визуализацией подписи на документе и могу с уверенностью сказать, что там это реализовано лучше, чем на PHP.
Но как я уже говорил - зависит от задач. Есть компания, которая за год 5млн документов прогоняет через консольную реализацию и все работает отлично.
Я бы просто ориентировался на требования работодателя и исходя их этого принимал решения. Комбинировать методы тоже никто не мешает.