Безопасность и опора на каталог
Доверие — это механизм,
а не значок.
Эта страница — доказательства: что система обеспечивает, что хранит, кто имеет доступ и что мы ещё не построили.
Контакт по безопасности
support@salewise.co.ukПриложите шаги воспроизведения. Пожалуйста, не обращайтесь к данным другого продавца и не нарушайте работу сервиса.
Текущее состояние
- Нет сертификации SOC 2 или ISO 27001.
- Независимый тест на проникновение пока не проводился.
- Карточные данные не хранятся.
Коротко
Четыре утверждения и места, где лежат доказательства.
Не маркетинговые прилагательные. Проектные решения, за которыми стоит код.
01
Модель не может установить цену.
Поиск по каталогу выполняется до генерации. Модель выбирает из идентификаторов-кандидатов; сервер проверяет их и сам формирует цену, остаток и варианты.
Прочитать о механизме02
Секреты провайдеров зашифрованы при хранении.
AES-256-GCM, случайный IV для каждой записи и дополнительные аутентифицированные данные, привязывающие каждый шифротекст к провайдеру, аккаунту и записи интеграции.
Прочитать о механизме03
Карточные данные не попадают в Salewise.
Здесь нет кассы и хранения PAN. Покупатель решает в телефоне и платит на существующей кассе продавца.
Прочитать о механизме04
Доступ ограничен, а не общий.
Право владения магазином проверяется на каждом маршруте магазина. Токены доступа действуют 15 минут; токены обновления хешируются и ротируются при использовании.
Прочитать о механизмеОпора на каталог заложена в архитектуру
Модель выбирает. Сервер отображает.
Поиск по каталогу выполняется до генерации. Модель выбирает из кандидатов; сервер выполняет арифметику и отображение.
01
Сначала поиск по каталогу
Сервер извлекает подходящие товары из каталога продавца до того, как модель получает запрос. Модель никогда не ищет в открытом интернете.
02
Модель выбирает. Сервер отображает.
Цены, остатки, варианты и предложения формируются на сервере из записей каталога. Число в тексте модели никогда не является источником истины.
03
Идентификаторы проверяются
Каждый выбранный моделью товар должен присутствовать в извлечённом наборе кандидатов. Недействительные идентификаторы отбрасываются до того, как ответ увидит покупатель.
04
Честный отказ
Если в каталоге нет ответа, ассистент говорит об этом и предлагает передать вопрос сотруднику. Если модель недоступна, ассистент сообщает, что не может ответить, а покупатель может попробовать ещё раз или обратиться к сотруднику.
Что передаётся модели
- Вопрос покупателя.
- Набор извлечённых кандидатов из каталога.
- Настройки магазина и соответствующий текст правил.
Что никогда не передаётся модели
- Карточные данные или платёжные учётные данные.
- Пароли, API-ключи или мастер-ключ Salewise.
- Инструмент, который может писать в POS.
Реестр контролей
Реестр контролей, а не значок доверия.
Каждая строка называет контроль, механизм за ним и место, где проходит граница. Если опроснику нужно больше деталей, спросите.
Ответы с опорой на каталог
Каталог — источник истины.
- Сервер извлекает товары-кандидаты до запуска модели. Модель может выбирать только идентификаторы из этого набора. Недействительные идентификаторы отбрасываются, а цена, остатки, варианты и предложения формируются на сервере. Если в каталоге нет ответа, ассистент говорит об этом и предлагает передачу сотруднику.
Учётные данные при хранении
Секреты зашифрованы, привязаны и версионированы.
- Учётные данные провайдеров используют AES-256-GCM со случайным 96-битным IV для каждой записи. Дополнительные аутентифицированные данные привязывают шифротекст к provider:{providerId}:account:{accountId}:credentials, поэтому запись, скопированная другому арендатору, не расшифровывается. keyVersion поддерживает ротацию ключей; неудачная расшифровка завершается отказом, а не возвратом секрета.
Запросы Salewise
Подписаны, а не только предъявительский токен.
- Запросы к мастер-API Salewise несут подпись HMAC-SHA256 по методу, пути, временной метке, nonce и SHA-256 тела. Подпись сравнивается за постоянное время и ограничена окном защиты от повторов. Мастер-ключ хранится на сервере, настраивается один раз, шифруется при хранении и никогда не возвращается в браузер.
Аккаунты и роли
Аккаунт продавца — не администратор сервера.
- В Sage есть роли продавца и администратора сервера. Пароли используют scrypt с солью для каждого аккаунта. Токены доступа истекают через 15 минут; токены обновления хранятся в виде хешей, ротируются при использовании и истекают через 30 дней. Приглашения действуют 7 дней и привязаны к приглашённому адресу электронной почты.
Изоляция арендаторов
Поиск магазина — это проверка права владения.
- Каждый маршрут магазина определяет магазин и проверяет, что он принадлежит аутентифицированному аккаунту, прежде чем вернуть данные. Методы репозитория ограничены аккаунтом и магазином, а SQL находится за слоем репозитория, а не в обработчиках маршрутов.
Карточные данные
Без платежей и PAN.
- Salewise не принимает платежи и не хранит карточные данные. В PWA покупателя нет кассы, а транзакция остаётся в POS продавца. Мы не заявляем о применимости PCI DSS к карточным платежам, потому что не обрабатываем карточные платежи.
Хранение
Настроено, а не бессрочно.
- В эталонном развёртывании настроено 180 дней для расшифровок сеансов и 365 дней для записей событий; сроки задаются окружением и соглашением об обработке данных. Срок хранения для конкретного продавца согласуется в соглашении об обработке данных, а удаление выполняется по запросу. Плановая очистка сегодня не заявлена.
Журнал аудита
События, значимые для безопасности, оставляют запись.
- Регистрация, вход, неудачный вход, приглашения, настройка и изменения учётных данных интеграций записываются в журнал аудита. Адреса электронной почты в деталях аудита хешируются, а не хранятся в открытом виде. Журнал сегодня внутренний; экрана аудита для продавца пока нет.
Граница модели
Модель получает минимум необходимого.
- Модель получает вопрос покупателя, извлечённых кандидатов из каталога, настройки магазина и соответствующий текст правил. Она не получает пароли, API-учётные данные или карточные данные, и у неё нет инструмента, который может писать в POS.
«Реализовано» означает, что контроль существует в продукте сегодня. Это не означает, что каждый контроль прошёл независимый аудит. Пробелы перечислены внизу этой страницы.
Учётные данные и запросы
Зашифрованы при хранении. Подписаны при передаче.
Два механизма, о которых специалист по безопасности обычно спрашивает первыми.
Учётные данные при хранении
- Алгоритм
- AES-256-GCM, аутентифицированное шифрование.
- IV
- 12 случайных байт на запись, никогда не повторяются.
- Привязка
- AAD provider:{providerId}:account:{accountId}:credentials. Скопированная запись не расшифровывается.
- Ротация
- keyVersion в каждой записи; предыдущий ключ принимается во время ротации.
- Сбой
- Неудачная расшифровка завершается отказом. Повтор с устаревшим секретом не выполняется.
Запросы Salewise
Мастер-ключ настраивается один раз при настройке сервера. Каждый запрос подписывается им; подпись не является предъявительским токеном.
canonical = method + "\n" + path + "\n" + timestamp + "\n" + nonce + "\n" + sha256(body); signature = HMAC-SHA256(masterKey, canonical);
- Передаётся как X-Sage-Signature с заголовками временной метки и nonce.
- Сравнивается за постоянное время, с окном защиты от повторов.
- Мастер-ключ хранится на сервере и шифруется при хранении.
- Никогда не возвращается в браузер и не записывается в журнал.
Данные, роли и хранение
Узкие данные. Ограниченный доступ. Запись.
Ассистенту не нужно знать, кто покупатель, чтобы ответить на вопрос о товаре.
Сеанс записывает
- Идентификатор сеанса, QR-код и зону, где он начался.
- Вопросы, ответы и рекомендации.
- События передачи и временные метки.
Без имени, аккаунта и карточных данных. Демо не связывает сеанс с именованным покупателем.
Кто имеет доступ
- Аккаунт продавца, ограниченный привязанными к нему магазинами.
- Администратор сервера для настройки и конфигурации провайдеров.
- Никакого доступа к магазинам других продавцов через маршруты магазина.
Приглашения привязаны к адресу электронной почты и действуют 7 дней.
Сколько хранится
- Расшифровки сеансов: настроено 180 дней.
- Записи событий: настроено 365 дней.
- Условия для конкретного продавца: определяются в соглашении об обработке данных.
Удаление выполняется по запросу. Плановая очистка сегодня не заявлена.
События аудита
Регистрация, вход, неудачный вход, приглашения, настройка и изменения учётных данных интеграций записываются в журнал аудита. Адреса электронной почты в деталях аудита хешируются, а не хранятся в открытом виде. Журнал сегодня внутренний; мы не представляем его как экран аудита для продавца.
Атрибуция
Запись должна выдерживать аудит.
Сопоставленная продажа либо точная, либо модельная. Продавец видит, какая именно и почему.
Детерминированная
Код погашения, перенесённый из сеанса в продажу. Уверенность 1.0. Модельное совпадение: нет. Продажа атрибутируется напрямую.
Модельная
Продажа в том же магазине в двухчасовом окне, содержащая рекомендованные товары. Оценка уверенности сохраняется, ограничена 0.92, и совпадение помечается как модельное везде, где отображается.
Точные совпадения точны. Модельные помечены как модельные везде, где отображаются. Подписка — единственная плата, и атрибуция не представляется как выручка.
Честные ограничения
О чём мы не заявляем.
Доверие легче проверить, когда пробелы названы.
Если опросник требует что-то из этого списка, скажите об этом.
Мы предпочтём потерять сделку, чем отвечать в обход.
- 01
Сегодня у нас нет сертификации SOC 2 или ISO 27001.
- 02
Мы пока не завершили независимый тест на проникновение или аудит безопасности.
- 03
Мы не заявляем о применимости PCI DSS к карточным платежам, потому что не обрабатываем карточные платежи.
- 04
В текущем продукте мы не обучаем общую модель на каталоге или разговорах одного продавца.
- 05
Ни одна ИИ-система не свободна от рисков. Опора на каталог снижает риск выдумок, но не отменяет необходимость проверки продавцом и правил передачи.
- 06
Сегодня мы не выполняем плановую очистку по срокам хранения; удаление — операционная процедура по соглашению об обработке данных.
- 07
Наш журнал аудита внутренний и не предоставляется как экран аудита для продавца.
- 08
Мы не обещаем уровень обслуживания на этой странице; любое обязательство по доступности определяется в форме заказа.
Ответственное раскрытие
Если вы считаете, что нашли уязвимость, напишите на support@salewise.co.uk с достаточными деталями для воспроизведения. Пожалуйста, не обращайтесь к данным другого продавца, не нарушайте работу сервиса и не раскрывайте информацию публично, пока у нас не будет возможности ответить.
Вопросы о безопасности
Задайте неудобный вопрос.
Опросники по безопасности, условия обработки данных и вопросы об архитектуре приветствуются. Мы ответим тем, что у нас есть, и скажем, чего нет.