Имя: Пароль:
1C
 
Программно зашифровать файл шифром с открытым ключом из 1C
0 ИС-2
 
naïve
12.12.15
14:17
На веб сервис выкладывается файл с данными для другого лица. Надо зашифровать файл перед его отправкой открытым ключом (храниться в базе).
С попощью какой бибилотеки можно это сделать программно?
1 Asmody
 
12.12.15
14:19
(0) так есть же криптография в платформе
2 zak555
 
12.12.15
14:24
3 XLife
 
12.12.15
14:32
(2) уёвая ссылка...
4 zak555
 
12.12.15
14:40
(3) почему ?

процедура ШифрованиеФайла на клиенте вызывает процедуру ЗашифроватьНаСервере по шифрованию файла на сервере
5 XLife
 
12.12.15
14:43
(4) авторизацию требует
6 zak555
 
12.12.15
14:46
(5) так зарегистрируйся
7 zak555
 
12.12.15
14:46
&НаСервере
Функция ЗашифроватьНаСервере(АдресДанных, ДанныеСертификатов)
    // Создадим сертификаты на основании двоичных данных сертификатов с клиента
    Сертификаты = Новый Массив();
    Для Каждого ДанныеСертификата Из ДанныеСертификатов Цикл
        Сертификаты.Добавить(Новый СертификатКриптографии(ДанныеСертификата));
    КонецЦикла;
    МенеджерКриптографии = Новый МенеджерКриптографии("", "", 75);
    // Получим файл для шифрования из временного хранилища
    Данные = ПолучитьИзВременногоХранилища(АдресДанных);
    Если ТипЗнч(Данные) <> Тип("ДвоичныеДанные") Тогда
        Возврат Ложь;
    КонецЕсли;
    // Шифруем двоичные данные
    ЗашифрованныеДвоичныеДанные = МенеджерКриптографии.Зашифровать(Данные, Сертификаты);
    // Сохраняем во временное хранилище
    АдресДанных = ПоместитьВоВременноеХранилище(ЗашифрованныеДвоичныеДанные);
    Возврат Истина;
КонецФункции
&НаКлиенте
Процедура ШифрованиеФайла()
    Адрес = "";
    Результат = ПоместитьФайл(Адрес, , , Истина);
    Если Не Результат Тогда
        Возврат;
    КонецЕсли;
    ТипыСертификатов = Новый Массив;
    ТипыСертификатов.Добавить(ТипХранилищаСертификатовКриптографии.ПерсональныеСертификаты);
    Список = ПолучитьСписокСертификатов(75, ТипыСертификатов, Истина);
    // В примере всегда шифруем с помощью первого по порядку сертификата
    Сертификаты = Новый Массив;
    Сертификаты.Добавить(Список[0].Выгрузить());
    // Шифруем файл
    Результат = ЗашифроватьНаСервере(Адрес, Сертификаты);
    Если Не Результат Тогда
        Возврат;
    КонецЕсли;
    // Интерактивно сохраняем зашифрованный файл на диск
    ПолучитьФайл(Адрес, , Истина);
КонецПроцедуры
8 XLife
 
12.12.15
14:48
(6) мне не надо))
9 Jump
 
12.12.15
15:11
(0) Так не делают.
Никто не шифрует файлы открытым ключом.
Файлы всегда шифруют симметричным алгоритмом например AES.
10 Jump
 
12.12.15
15:13
Ассиметричные алгоритмы для шифрования данных нигде не применяются.
11 Смотрящий
 
12.12.15
15:17
(10) ЭЭэээээ.... а как же PGP ?
12 Jump
 
12.12.15
15:25
(11)Точно так же. Данные в  PGP  шифруются симметричным алгоритмом.
13 oleg_km
 
12.12.15
15:43
(9) Ну это само делает CryptoAPI. На вход ты подаешь данные и открытый ключ, а уже само криптоапи формирует сеансовый симметричный ключ, шифрует его открытым и сеансовым шифрует сами данные.
14 Jump
 
12.12.15
15:54
(13) Ну данные то шифруются случайным симметричным ключом.
Ассиметричное применяется только для шифрования этого самого случайного  ключа.
15 ИС-2
 
naïve
14.12.15
07:02
22) спс, посмотрю
(9) почему? Ситуация - до сервера добрался враг, зашел в конфигуратор, открыл обработку по шифрованию и получил к ключу шифрованию. В итоге получив файл он сможет его открыть.

Поэтому надо шифровать одним ключом, а расшифровывать другим. При этом желательно, чтобы ключ расшифровки был неизменным.
16 StupidTeddy
 
14.12.15
08:02
(15) Насколько я понимаю, симметричный ключ каждый раз генерируется новый, и злоумышленник может его получить только во время процесса шифрования,  а если он сможет получить ключ в процессе шифрования, то с тем же успехом он сможет получить и исходные данные.
Не являюсь специалистом по криптографии и СЗИ, высказываю ИМХО.
17 Serginio1
 
14.12.15
08:10
18 vde69
 
14.12.15
09:10
(0) для ответа на твой вопрос, для начала опиши как и какими средствами получатель файла должен его расшифровывать ???

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

а поскольку файл шлется на веб предположу, что получатели - довольно разношерстная банда.... и софт у них разношерстный...
19 ИС-2
 
naïve
14.12.15
11:59
(18) хороший вопрос. Значит нужна прога и с возможностью зашифровать из кода и с клиентской частью.

Жаль, что WinRar не поддерживает асиммитричное шифрование.
20 Jump
 
14.12.15
12:25
(15) Ассимметричное шифрование очень ресурсоемкий процесс.
Поэтому им и пользуются очень редко, и шифруют только ключи.

Например тот же самый https - шифрование всегда идет симметричным алгоритмом, а чтобы передать ключи шифрования по открытому каналу используют ассимметричный.


Нет никакого смысла использовать ассимметричный алгоритм там где можно использовать симметричный.
21 Jump
 
14.12.15
12:26
(15) Ситуацию с тем что до сервера добрался враг, я вообще не понял.

Если на сервере хранится ключ - он получит доступ к данным, неважно какой именно алгоритм используется.
22 Garikk
 
14.12.15
12:30
(21) если сервер шифрует данные открытым ключем, а пользователь ходит за своими данными со своим закрытым (который хранится во внешнем хранилище), то ничего с данными враг сделать не сможет

(12) а какже я на прошлой работе чтобы письмо комуто отправить, всегда ему сначала свой открытый ключ отсылал? Это не то?
23 Jump
 
14.12.15
12:42
(22)
1)Какая разница каким ключом шифрует сервер? О каких данных идет речь?

2)Это то, только вот текст письма шифровался обычным симметричным алгоритмом.
А ассиметричным шифровался ключ шифрования симметричного алгоритма.
24 oleg_km
 
14.12.15
12:54
(22) Открытый ключ ты отсылал, чтобы могли проверить твою электронную подпись, или могли зашифровать письмо, которое можешь расшифровать только ты.
25 Jump
 
14.12.15
13:10
(24) Не совсем так.
Твой собеседник шифрует письмо симметричным ключом X
Ты отправляешь ему открытый ключ Y, он этим ключом шифрует ключ шифрования X.
После чего отсылает тебе письмо зашифрованное ключом X
И ключ шифрования письма зашифрованный ключом Y

После чего ты расшифровываешь ключ X c помощью своего секретного ключа.
И уже ключом X расшифровываешь само письмо.
26 oleg_km
 
14.12.15
13:19
(25) Ну вот приведите, в каком АПИ разработчик должен так делать? МенеджерКриптографии все это сам делает, CryptoAPI тоже, .NET тоже. Просто блеснуть ерундицией?
27 Jump
 
14.12.15
14:10
(26)Разумеется если вы используете готовый инструмент, то все уже сделано за вас. Ничего шифровать вообще не нужно, и не нужно знать какие алгоритмы используются и как это работает.
Пользуйся и все.
28 DES
 
14.12.15
14:29
можно ли в 1с8 встроенной криптографией заменить PGP ?
который https://www.gpg4win.org/
29 oleg_km
 
14.12.15
15:20
(28) Ну если он ГОСТ поддерживает, почему бы и нет
30 Stim
 
14.12.15
15:22
(15) все правильно.
шифруется открытым ключом ЭП, расшифровывается - закрытой частью.
31 DES
 
14.12.15
19:19
Новый МенеджерКриптографии("", "", 75);
а где узнать какой номер - какой криптопровайдер ?
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан