Size: a a a

BY Microsoft .NET User Group

2019 August 20

MS

Maxim Sergienya in BY Microsoft .NET User Group
Alex Fomin
Привет, подскажите, куда копать, в интренете все рабегается. Нужно банально хранить приватные ключи, но:
1) Это не .core, а asp.net mvc
2) У "рядовых" девелоперов не должно быть доступа к этим ключам
3) У этих деелоперов есть админские права к продашн серверу, где собственно используются эти ключи.
Для меня звучит как: "1) Есть дом, но он не двухэтажный. 2) Необходимо спрятать сервиз. 3) У вора есть ключ от дома (и разрешение бить стёкла)"
источник

Dv

Dr. Friedrich von Never in BY Microsoft .NET User Group
Maxim Sergienya
Для меня звучит как: "1) Есть дом, но он не двухэтажный. 2) Необходимо спрятать сервиз. 3) У вора есть ключ от дома (и разрешение бить стёкла)"
Ну вот про аппаратные токены товарищ дело говорит
источник

AF

Alex Fomin in BY Microsoft .NET User Group
Приблизительно так и есть :(
источник

E

Ed in BY Microsoft .NET User Group
Alex Fomin
Приблизительно так и есть :(
источник

A

Artyom in BY Microsoft .NET User Group
Ну по идее хранение приватных ключей (или способа его получения) и есть одна из причин почему софт ломают. Поэтому и защищают ч-з аппаратные ключи и онлайн сервисы.

В тоже время очевидно, что способ есть, ведь условный телеграм же хранит переписку в зашифрованной базе (или тип того). Для этого есть класс .net ProtectedData и встроенное в винду хранилище ключей. И тогда достаточно зайти под своим пользователем чтобы получить возможность расшифровывать. Очевидно, что данные в это хранилище вносятся тоже с этим пользователем.

На принципиальном уровне авторизация пользователя в системе и начинает выступать как «первичный ключ №0» для расшифровки вашего ключа.
Таким образом внеся ключ для конкретного пользователя системы вы разрешаете ему им расшифровывать, но сам ключ пользователь не увидит.
источник

AF

Alex Fomin in BY Microsoft .NET User Group
Спасибо, посмотрим
источник

E

Ed in BY Microsoft .NET User Group
В тоже время очевидно, что способ есть, ведь условный телеграм же хранит переписку в зашифрованной базе

ну такое)
|https://www.bleepingcomputer.com/news/security/telegram-desktop-saves-conversations-locally-in-plain-text/
источник

A

Artyom in BY Microsoft .NET User Group
хех плохой пример)
помоему скайп хранит в sqlite базе под поролем
значит нужен пароль
источник

A

Artyom in BY Microsoft .NET User Group
вот он его так и получает
источник

E

EgorBo in BY Microsoft .NET User Group
обычное десктоп приложение вряд ли может секурно хранить переписку локально
источник

A

Artyom in BY Microsoft .NET User Group
EgorBo
обычное десктоп приложение вряд ли может секурно хранить переписку локально
Если проводить аналогию дальше, вопрос получается, как бы не в переписке. Теоретические я смогу написать простенький апп и запустить его под нужным пользователем и получу переписку. Грубо говоря смогу повторить то же, что делает приложение пользователя. Но ключ и останется нерасшифрованным.

В случае с хранением некого приватного ключа: мы сможем расшифровывать, но не сможем перенести/распространить тот же ключ.

Т.е. ProtectedData сваливает ответственность на винду.
источник

E

Ed in BY Microsoft .NET User Group
Artyom
Если проводить аналогию дальше, вопрос получается, как бы не в переписке. Теоретические я смогу написать простенький апп и запустить его под нужным пользователем и получу переписку. Грубо говоря смогу повторить то же, что делает приложение пользователя. Но ключ и останется нерасшифрованным.

В случае с хранением некого приватного ключа: мы сможем расшифровывать, но не сможем перенести/распространить тот же ключ.

Т.е. ProtectedData сваливает ответственность на винду.
Или за денюжку в любой сотовой компании (наверняка) админа попросить показать текст смс сообшений)
источник

A

Artyom in BY Microsoft .NET User Group
Ed
Или за денюжку в любой сотовой компании (наверняка) админа попросить показать текст смс сообшений)
ну тогда это нужно делать сразу)
иначе если у вас есть хоть одно подключённо устройство то смс вам не нужно, вы уже можете получите сообщение типа безопастным путём
источник
2019 August 21

ES

Eugene Sergueev in BY Microsoft .NET User Group
источник

A

Artyom_K in BY Microsoft .NET User Group
прив. в tutorial напиасанном еще для  core1 и automapper 6 все mappings были загнаны в startup.cs, для amapper 9 нужно создавать класс наследующий от profile а дальше? из документации ничего не понял. что імеется ввіду под assembly здесь http://docs.automapper.org/en/stable/Dependency-injection.html#asp-net-core
источник

AB

Anton Burkin in BY Microsoft .NET User Group
Artyom_K
прив. в tutorial напиасанном еще для  core1 и automapper 6 все mappings были загнаны в startup.cs, для amapper 9 нужно создавать класс наследующий от profile а дальше? из документации ничего не понял. что імеется ввіду под assembly здесь http://docs.automapper.org/en/stable/Dependency-injection.html#asp-net-core
имеется в виду, что тебе нужно в пайплайн добавить автомапперские профайлы
источник

SO

Sergey Olshanskiy in BY Microsoft .NET User Group
Artyom_K
прив. в tutorial напиасанном еще для  core1 и automapper 6 все mappings были загнаны в startup.cs, для amapper 9 нужно создавать класс наследующий от profile а дальше? из документации ничего не понял. что імеется ввіду под assembly здесь http://docs.automapper.org/en/stable/Dependency-injection.html#asp-net-core
Видимо автомэпер сам будет искать наследников от Profile в сборках (assembly) которые вы укажете. Вы можете сами задать assembly или передать любой тип из нужной сборки.
источник

A

Artyom_K in BY Microsoft .NET User Group
в случае если на проект одна сборка или точнее явно не задавал сборку. как изменится это:
define the configuration using profiles. And then you let AutoMapper know in what assemblies are those profiles defined by calling the IServiceCollection extension method AddAutoMapper at startup:

services.AddAutoMapper(profileAssembly1, profileAssembly2 /*, ...*/);
источник

A

Artyom_K in BY Microsoft .NET User Group
services.AddAutoMapper(typeof(Startup));
источник

A

Anatoly in BY Microsoft .NET User Group
Artyom_K
прив. в tutorial напиасанном еще для  core1 и automapper 6 все mappings были загнаны в startup.cs, для amapper 9 нужно создавать класс наследующий от profile а дальше? из документации ничего не понял. что імеется ввіду под assembly здесь http://docs.automapper.org/en/stable/Dependency-injection.html#asp-net-core
Под assembly там имеется ввиду ровно то же самое, что и везде в .net
источник