База данных и файлы шифруются в состоянии покоя поставщиком инфраструктуры. Сверх этого Heltio самостоятельно шифрует четыре наиболее чувствительных поля, чтобы одного лишь чтения базы не хватило для их восстановления.
Что получает дополнительный слой
| Что | Где |
|---|---|
| PESEL пациента | карта пациента |
| Содержимое клинической заметки | клиническая заметка |
| Транскрипция записи визита | сессия ИИ-ассистента |
| Черновик заметки, созданный из записи | сессия ИИ-ассистента |
Помимо этого перечня шифруются также сертификаты учреждения для интеграции с P1 — они хранятся в отдельных столбцах, а отпечаток и дата истечения видны в мастере настройки.
Не охвачены этим дополнительным слоем: номера документов иностранцев, номера банковских счетов, метаданные вложений, адреса пациентов. Предыдущая версия этой страницы перечисляла их как охваченные.
Как это работает
Каждое значение получает собственный одноразовый ключ. Этим ключом содержимое шифруется алгоритмом AES-256-GCM, который заодно обнаруживает подмену данных. Одноразовый ключ затем шифруется главным ключом и путешествует вместе с шифротекстом в одной строке — отдельной таблицы ключей нет.
В той же строке записан отпечаток главного ключа, которым он закрыт. Благодаря этому замена главного ключа обнаружима, а старый ключ может некоторое время обслуживать только чтение, пока новые записи уже идут новым.
Шифрование и расшифровка происходят в слое доступа к базе, а не в отдельных местах кода. Следствие двойное: ни один новый экран не забудет зашифровать, но любой скрипт, написанный в обход этого слоя, запишет данные открытым текстом. Скрипты, которые пишут в эти поля, перечислены в коде поимённо и контролируются отдельным тестом.
Зашифрованный PESEL нельзя искать сравнением. Поэтому рядом хранится его односторонний отпечаток, вычисленный с дополнительным секретом приложения — этого достаточно для поиска и сопоставления карт и недостаточно, чтобы восстановить сам номер.
Где лежат данные
База данных и файлы: Франкфурт. Ключи: переменная среды приложения, работающего в ЕС. Почта: поставщик в ЕС. SMS: поставщик в Польше. Офлайн-работа в мобильном приложении: поставщик в ЕС. Переводы: Германия. Полный перечень вместе с расхождениями: Обработчики и договоры поручения обработки.
Трафик к серверу приложения идёт по HTTPS. Сервер отвечает заголовками, которые на два года требуют шифрованного соединения, запрещают встраивание во фрейм и угадывание типа содержимого.
Как разделены учреждения
Разделение данных учреждений обеспечивается на уровне приложения, а не базы: в миграциях нет правил безопасности на уровне строки. Вместо этого каждый запрос о данных пациента обязан содержать идентификатор учреждения, членство проверяется перед процедурой, а над всем этим стоит правило линтера и набор храповиков, запускаемых при каждом изменении кода — количество мест без фильтра может только уменьшаться.
Резервные копии
Резервные копии делает отдельная независимая служба. За её состоянием следит страж, работающий в главном процессе приложения — намеренно вне службы копирования, потому что мёртвая служба не сообщит о собственной смерти. Тревога срабатывает, когда копии никогда не было, когда последний запуск завершился ошибкой или когда последняя исправная копия старше тридцати часов.
Чего нет
- Внешнего теста на проникновение с опубликованным резюме. Предыдущая версия этой страницы ссылалась на такой отчёт и на исполнителя; документа не существует.
- PDF-вложений к этой странице. Все ссылки на файлы в каталоге
/legal/вели в никуда — ни один из этих файлов никогда не был добавлен.