|
0 / 0 / 0
Регистрация: 26.08.2016
Сообщений: 22
|
|
Работа с конфиденциальными данными в памяти26.08.2016, 12:05. Показов 2213. Ответов 28
Здравствуйте. Есть некие данные которые хранятся на диски в зашифрованном виде. Мне нужна как-то с ними работать (чтение, запись и т. п.). Если я расшифрую и загружу эти данные в string, то они будут висеть какое-то в памяти в открытом виде, что нехорошо. Как быть в такой ситуации?
0
|
|
| 26.08.2016, 12:05 | |
|
Ответы с готовыми решениями:
28
Обмен данными блоков памяти Как работает компьютер с данными в памяти? Инициализация TImage данными из оперативной памяти |
|
|
|
| 26.08.2016, 12:13 | |
|
Вынести обработку в обычную C/C++ библиотеку, где время жизни данных будет известно.
Как работать с SecureString?
1
|
|
|
Master of Orion
|
|
| 26.08.2016, 12:14 | |
|
CoderSharp, посмотрите в сторону класса SecureString.
1
|
|
|
0 / 0 / 0
Регистрация: 26.08.2016
Сообщений: 22
|
|
| 26.08.2016, 12:35 [ТС] | |
|
Rius, Psilon, Спасибо. Значит все-таки без C++ не обойтись.
0
|
|
| 26.08.2016, 12:37 | |
|
Не по теме: p.s. в конце упомянутой мной темы есть ссылка на новую тему того же автора, и там пример этого.
0
|
|
|
0 / 0 / 0
Регистрация: 26.08.2016
Сообщений: 22
|
|
| 26.08.2016, 12:49 [ТС] | |
|
Psilon, про C++ это я не Вам, а Rius. Он советует вынести обработку в C/C++ библиотеку. К тому же с SecureString тоже нужно работать в небезопасном коде или опять же в C/C++.
0
|
|
|
Master of Orion
|
||||||
| 26.08.2016, 13:09 | ||||||
|
Rius, а зачем тут С++?
0
|
||||||
|
Почетный модератор
|
||
| 26.08.2016, 13:22 | ||
|
Добавлено через 3 минуты CoderSharp, что мешает работать не со строкой а с массивом байт? Создайте класс обёртку в которой данные (массив байт) хранятся в зашифрованному виде и расшифровываются только временно при обращении к определенному байту данных, при этом важно чтобы сами данные не уходили наружу, т.е. если нужно какое-то сравнение, то оно должно выполняться внутри обёртки.
1
|
||
|
Master of Orion
|
||
| 26.08.2016, 13:24 | ||
|
NickoTin, В том, что этот пароль можно задиспозить после работы, а строку/массив удалит GC когда ему вздумается (возможно - никогда). Когда данные появляются кратковременно для рассчета хэша и после этого детерменированно удаляются - это не компрометирует пароль.
Добавлено через 1 минуту
0
|
||
|
Почетный модератор
|
||
| 26.08.2016, 13:29 | ||
|
Внутри своей обёртки можно без проблем использовать хоть байтовый массив, хоть SecureString, хоть что угодно, это зависит от внутренней реализации, главное чтобы данные не уходили наружу целиком в открытом виде.
0
|
||
|
Master of Orion
|
|||
| 26.08.2016, 13:32 | |||
|
Правда там нельзя обращаться к определенному байту, но как я уже говорил, основная проблема стринги в том, что она висит в памяти неизвестно сколько, а не в том, что она вообще там есть.
Добавлено через 2 минуты
Собственно, я и иду по первому сценарию: преобразую в BSTR, работаю, затем диспозю как можно раньше. Все, как описано в документации.
0
|
|||
|
Почетный модератор
|
|
| 26.08.2016, 13:43 | |
|
Psilon, ты не понял, ты расшифровываешь данные на весь промежуток жизни экземпляра SecureStringStream, в этом главная проблема. Да SecureString тоже расшифровывает полностью данные, но только на момент изменения этих данных, и после изменения сразу же зашифровывает их обратно, тем самым значительно уменьшая возможность доступа к данным сторонним лицам.
0
|
|
|
Master of Orion
|
|
| 26.08.2016, 13:50 | |
|
NickoTin, если я буду расшифровывать всю строку для доступа к 1 символу, имхо это будет хуже, чем просто 1 раз расшифровать.
Любой современный шифр является шифром с гаммированием и требует расшифровки всей части строки, предшествующей некоторому символу чтобы получить его.
0
|
|
|
|
|
| 26.08.2016, 14:00 | |
|
Код устройства SecureString можно посмотреть здесь: https://github.com/dotnet/core... Windows.cs
Авось пригодится. AppendCharCore, InsertAtCore, RemoveAtCore.
1
|
|
|
0 / 0 / 0
Регистрация: 26.08.2016
Сообщений: 22
|
|
| 26.08.2016, 14:10 [ТС] | |
|
NickoTin, Если я Вас правильно понял эту обертку нужно реализовать как небезопасный код?
Например. Мне нужно изменить пароль у Ивана Иванова. Я расшифровываю данные из файла в SecureString, на время получаю string из SecureString, меняю хеш пароля и опять обратно в SecureString. А переменную string сразу уничтожаю.
0
|
|
|
484 / 397 / 68
Регистрация: 14.02.2014
Сообщений: 1,930
|
|
| 26.08.2016, 14:17 | |
|
Почему-бы не воспользоваться
ProtectedData из неймспейса System.Security.Cryptography?
0
|
|
|
Master of Orion
|
||
| 26.08.2016, 14:18 | ||
|
0
|
||
| 26.08.2016, 14:18 | |
|
Помогаю со студенческими работами здесь
20
Работа с файлами(Запись,чтение,работа с данными) Работа с битами И Работа с символьными данными Указатели, функции и динамическое выделение памяти: вывести строки с неповторяющимися данными Работа с данными Работа с данными Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: при создании документов установить период списания автоматически. . .
|
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2.
Задача: вывести данные из ТЧ нетипового документа. . .
|
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению.
На форме документа создается. . .
|
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
|
|
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
|
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
|
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию.
2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
|
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
|