|
0 / 0 / 0
Регистрация: 26.08.2016
Сообщений: 22
|
|
Работа с конфиденциальными данными в памяти26.08.2016, 12:05. Показов 2316. Ответов 28
Здравствуйте. Есть некие данные которые хранятся на диски в зашифрованном виде. Мне нужна как-то с ними работать (чтение, запись и т. п.). Если я расшифрую и загружу эти данные в string, то они будут висеть какое-то в памяти в открытом виде, что нехорошо. Как быть в такой ситуации?
0
|
|
| 26.08.2016, 12:05 | |
|
Ответы с готовыми решениями:
28
Обмен данными блоков памяти Как работает компьютер с данными в памяти? Инициализация TImage данными из оперативной памяти |
|
Почетный модератор
|
|||
| 26.08.2016, 14:42 | |||
|
В твоём варианте сдампить строку можно в любой момент времени пока живет объект SecureStringStream. Сдампить строку с SecureString можно только тогда, когда происходит изменение строки. Разницу улавливаешь? Время жизни SecureStringStream может быть таким же как и время жизни SecureString, только из SecureString данные не вытащить, а из SecureStringStream можно вытащить в любой момент.
0
|
|||
|
Master of Orion
|
||||
| 26.08.2016, 14:53 | ||||
|
Единственный суровый способ это делать полностью свою имплементацию SecureString'и, из которой можно будет доставать по одному символу. Сделать это безошибочно не разбираясь досконально в криптографии, насколько мне известно - невозможно.
0
|
||||
|
4695 / 2702 / 735
Регистрация: 02.08.2011
Сообщений: 7,236
|
||
| 26.08.2016, 17:28 | ||
|
1. В неуправляемой памяти. 2. Зашифрованными. Psilon, ятп NickoTin прав, поскольку вы принимаете в конструкторе SecureStringStream безопасный SecureString, получаете ссылку на plain строку и сохраняете ее. По сути, вы сделали аналог самого SecureString, который также позволяет гарантированно уничтожать объект, но во время использования самого объекта он хранит данные в открытом виде, то есть это, скажем так, небезопасный аналог.
1
|
||
|
0 / 0 / 0
Регистрация: 26.08.2016
Сообщений: 22
|
|
| 26.08.2016, 17:50 [ТС] | |
|
IamRain, Вы извините меня если я туплю. Я новичок. Вы говорите, что нужно использовать SecureString, но время от времени придется передавать данные в string. А string неизвестно сколько будет висеть в памяти.
0
|
|
|
4695 / 2702 / 735
Регистрация: 02.08.2011
Сообщений: 7,236
|
||
| 26.08.2016, 17:54 | ||
|
CoderSharp, просто
0
|
||
|
0 / 0 / 0
Регистрация: 26.08.2016
Сообщений: 22
|
|
| 26.08.2016, 18:09 [ТС] | |
|
IamRain, вот. Но напрямую securestring редактировать нельзя. Если правильно понимаю. Тогда выход напрашивается только один. Писать библиотеку на C/C++ и там проводить все манипуляции. Ведь только там можно гарантированно уничтожить строку.
0
|
|
|
Master of Orion
|
||||||
| 26.08.2016, 18:12 | ||||||
|
IamRain, с этим классом всегда можно написать враппер, который гарантирует очистку памяти ASAP. Если вопрос только в обертке, то это не проблема самого подохода. И как я уже сказал, не вытащив строку полностью расшифровать её все равно невозможно. Можно вытаскивать по 1 символу и потом занулять память, но принципиальной безопасности это не дает. Я потому и написал стрим, хотя по идее мог просто сделать экстеншн для MD5, который добавил бы для MD5 перегрузку, принимающую SecureString. Что-то в духе
Изначально вопрос вообще касался, зачем передавать строку в С++, где она точно также хранится в памяти. Когда можно на месте всё сделать.
0
|
||||||
|
4695 / 2702 / 735
Регистрация: 02.08.2011
Сообщений: 7,236
|
|||||
| 26.08.2016, 18:17 | |||||
|
Отсюда:
0
|
|||||
| 26.08.2016, 18:17 | |
|
Работа с файлами(Запись,чтение,работа с данными) Работа с битами И Работа с символьными данными Указатели, функции и динамическое выделение памяти: вывести строки с неповторяющимися данными Работа с данными Работа с данными Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
|
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет:
1. Использовать системное время и дату,
2. Есть возможность вводить время и дату вручную.
3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
|
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber.
Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
|
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео:
https:/ / vkvideo. ru/ video-240781534_456239017
YouTube:
eY5-5PyI9NM
Текстовая версия
|
|
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать
Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
|
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства.
Родственных связей существует 8 ступеней, такие как:
p - отец
P - мать
q - муж
Q - жена
b - брат
B - сестра
s - сын
S - дочь
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|