Здравствуйте, Michaels1, Вы писали:
M>Вот как бы сделать это правильно с usb dongle?
Сначала надо максимально уточнить что именно (файлы, видео) и от кого защищаться планируется и какая цена вопроса. Потому что например устройства видеозахвата — это не очень уже даже экзотика и есть недорогие модели, игроки, например, их вполне покупают записывать свои прохождения. Довольно странно при этом защищаться от матерых хакеров, не давая им дешифровать файлы, отслеживая действия пользователя на сервере и т.д.
Как я уже сказал, защищать сами файлы в оригинальном виде смысл есть. Защищать видео — таким образом не очень, поэтому если задача защитить видео — годится практически любое решение, которое придумается, лишь бы оно не позволило просто так что-то скопировать. Но надо понимать, что при желании записать видео цена вопроса тут максимум $200 за качественную запись. Это если устройство не возьмут у кого-то на пару дней попользоваться.
Кстати, если что-то контролируется сервером, может есть смысл видео с него транслировать по защищенному rtp-протоколу.
Здравствуйте, Michaels1, Вы писали:
M>Как бы вы подобное реализовали? M>Подскажите существующие решения?
Для начала надо ознакомиться с существующими решениями по записи видео. Например, такими: http://www.epiphan.ru/
Epiphan Systems – мировой лидер в производстве устройств захвата, кодирования, записи и трансляции аудио и видео (VGA, DVI и прочих) сигналов в высоком разрешении. Наша продукция позволяет захватывать, кодировать, записывать и транслировать практически любой видеосигнал высокого разрешения и обеспечивается надежной технической поддержкой.
В принципе это околопрофессиональные и довольно дорогие устройства, но есть и существенно подешевле, к примеру, об одном из таких здесь http://pctuner.ru/page-al-alias3544.html — где-то за примерно $160 можно найти.
Факт установки такой штуки между монитором и видеокартой вы отследить не сумеете. Также как и просто видеокамеру в монитор.
Можно, конечно, взять деньги за разработку, но ничего не говорить об этих вещах заказчику
В принципе, можно попробовать использовать шифрование HDCP у hdmi-выхода, хотя вообще-то оно давно взломано, но тем не менее, не очень доступно. Однако, может что-то изменилось, но мне показалось, что задействовать hdcp обычному разработчику сложно по организационным причинам.
В принципе, мне кажется, максимум что разумно гарантируется — это большая сложность копирования оригинальных файлов и некоторая возня при попытке скопировать видео с экрана или по кабелю: приобретать устройства видеозахвата (если их еще нет) и прочее. Если же заказчик хочет, чтобы его видео совсем никто не смог скопировать, то вариант только один: давать его смотреть исключительно у себя в офисе, предварительно отобрав смартфоны с видеокамерами.
Здравствуйте, Michaels1, Вы писали:
M>Здравствуйте, VTT, Вы писали:
VTT>>В комплекте с USB-донглом будет идти пара амбалов, не дающих снимать с экрана?
M>Здесь такая идея — сообщать о подобных действиях на сервер и блокирование этого пользователя с сервера — тогда он больше не будет получать вторую половину ключа и не посмотрит новых видео файлов.
M>С этим бороться тоже придется, но это ОС-зависимо, поэтому пока хочется найти ответы на изначальные вопросы.
M>Съемку экрана видеокамерой не рассматриваю, тут уже ничего не поделаешь
Зачем камерой, если можно в лоб записывать содержимое экранного буфера, или вместо монитора воткнуть кабель в записывающую коробочку?
M>Вот какое оптимальное решение?
Предложить им первыми выкладывать видео в свободный доступ...
А если уж хочется затягивать гайки, то имхо единственный вариант — это некоторый персонифицированный watermark, вклеиваемый в видео на стороне сервера.
M>И вообще насколько бредовы с точки зрения безопасности эти мои решения?
Ну можно вспомнить как консорциум многомиллиардных корпораций пилил многомиллионный защищенный тракт для воспроизведения BluRay и чем это закончилось.
Так что единственной защитой вашей системы в любом случае будет ее малая распространенность.
Говорить дальше не было нужды. Как и все космонавты, капитан Нортон не испытывал особого доверия к явлениям, внешне слишком заманчивым.
Здравствуйте, Michaels1, Вы писали:
M> Третья идея — вторая идея, но каждый зашифрованный видеофайл содержит в заголовке "соль", какой-то уникальный идентификатор, который объединяется с ключем из донгла и ключем полученным с сервера, и получается полный ключ, которым можно расшифровать видео. Здесь даже имея полный ключ, удастся расшифровать только одно видео, потому что каждое видео шифруется своим личным ключем, а не общим, как в предыдущих двух пунктах.
Немного доработать и сгодится. Каждому клиенту генерируется ключ, его копия файла симметрично шифруется этим ключем. Сам ключ шифруется асимметрично и добавляется в видеофайл. Ключ для расшифровки ключа хранится в USB токене и расшифровывается им же. Далее плеер расшифровывает видеопоток.
Уязвимости: отладчик, софт-грабберы, аппаратные грабберы, шаринг USB токена по сети. От первых двух можно попытатья защититься, но лучше плюнуть.
Здравствуйте, Michaels1, Вы писали:
M> W>Здравствуйте, Michaels1, Вы писали:
M> M>> Третья идея — вторая идея, но каждый зашифрованный видеофайл содержит в заголовке "соль", какой-то уникальный идентификатор, который объединяется с ключем из донгла и ключем полученным с сервера, и получается полный ключ, которым можно расшифровать видео. Здесь даже имея полный ключ, удастся расшифровать только одно видео, потому что каждое видео шифруется своим личным ключем, а не общим, как в предыдущих двух пунктах.
M> W>Немного доработать и сгодится. Каждому клиенту генерируется ключ, его копия файла симметрично шифруется этим ключем. Сам ключ шифруется асимметрично и добавляется в видеофайл. Ключ для расшифровки ключа хранится в USB токене и расшифровывается им же. Далее плеер расшифровывает видеопоток.
M> W>Уязвимости: отладчик, софт-грабберы, аппаратные грабберы, шаринг USB токена по сети. От первых двух можно попытатья защититься, но лучше плюнуть.
M> Спасибо за ответ! M> Но шифровать отдельно под каждого пользователя у сервера нет возможности, я собирался заранее зашифровать каждый видеофайл своим разным ключом, который складывается из 3-х: ключ пользователя на сервере+ключ польз. usb + соль видеофайла
Противоречие же, нет?
M> объединенная пара (ключ пользователя на сервере+ключ пользователя на usb) одна и та же для всех, хотя сами ключи пользователя и ключ на usb разные для разных пользователей).
Это как?
Если ключ одинаковый для всех пользователей, то несколько [потенциальных] пользователей могут скинуться, заплатить хакеру, получить ключ и выложить его для всех.
M> А что за шаринг usb по сети?
Трафик, которым приложение общается с токеном, перенаправляется на другой комп, где и находится токен. Так уже давно поступают с кодированными спутниковыми телеканалами, Google('cardsharing').
Самопальное шифрование — usb-устройство, на котором надо вводить пин-код (на самом устройстве). После ввода пинкода оно принимает в себя поток и расшифровывает его. Примитивно обходится записью видеосигнала.
Нормальное решение — DRM. Сигнал дешифруется в сертифицированном мониторе. Сертифицированный видеодрайвер в сертифицированной ОС не позволяет программно записывать участок экрана с видеопотоком. Вроде тоже сломано, правда. Но в теории это единственный хороший вариант. Конечно обходится видеокамерой, но качество будет уже не то.
Как вариант — для каждого клиента свой ключ. Дешифратор оставляет незаметные метки в видеопотоке. Если потом этот поток кто-нибудь сдампит и выложит, можно узнать, какой клиент это сделал для дальнейшего юридического преследования.
Здравствуйте, Michaels1, Вы писали:
M>Случилось так, что пришлось писать приложение для безопасного проигрывания видеофайлов. M>Заказчик очень сильно переживает что его драгоценные видео выложат в свободный доступ.
То что клиент увидел у себя на дисплее уже тобой не контролируется.
usb устройства видеозахвата для сигнала VGA или HDMI стоят $20.
включается между системным блоком и монитором. не требуют вообще никаких специальных навыков. сделал три соединения проводов. установил с прилагаемого ЦД диска программу, нажал кнопку "запись". включил твой проигрыватель "воспроизведение". получил запись.
Единственная защита от выкладывания такого видео в паблик — персонализированная watremark.
Случилось так, что пришлось писать приложение для безопасного проигрывания видеофайлов.
Заказчик очень сильно переживает что его драгоценные видео выложат в свободный доступ.
И вот у меня такая задача — придумать как зашифровать эти файлы, да так, чтоб зритель, даже если захочет, то не сможет расшифровать, а только просмотреть,
с помощью специального плеера-расшифровщика. Еще заказчик настаивает на использовании USB-dongle, чтоб без него нельзя было посмотреть видео. Потоковое воспроизведение не нужно (может в перспективе), пока достаточно простого обмена шифрованными видеофайлами.
И вот думаю сейчас как такое реализовать, причем с безопасностью знаком в теории (вот появилась возможность попрактиковаться ).
Нижеописанные идеи основаны на том, что USB-донгл — просто хранилище для ключа (типа флешки), которое имеет API для доступа к этому ключу. Знаю, что это топорное представление — пока все еще разбираюсь с этой темой .
Идея которая возникла сразу — зашифровать видеофайл каким-то ключем, а плеер расшифрует его, используя ключ, хранящийся на dongle. Слишком просто. Нет. Кто-то из зрителей потеряет юсб-ключ, и любой, кто найдет этот девайс, сможет расшифровать все остальные видео.
Вторая идея — разбить приватный ключ на 2 части. Часть ключа хранится на донгле, а часть — отдается сервером по https, когда клиент вводит правильные логин и пароль. Таким образом, имея юсб-ключ, но не зная логина-пароля, видео не расшифруешь. Уже лучше. Но если кто-нибудь как-нибудь узнает полный приватный ключ, то сможет расшифровать все видео. А узнать ключ можно, запустив мой безопасный видеоплеер в отладчике.
Третья идея — вторая идея, но каждый зашифрованный видеофайл содержит в заголовке "соль", какой-то уникальный идентификатор, который объединяется с ключем из донгла и ключем полученным с сервера, и получается полный ключ, которым можно расшифровать видео. Здесь даже имея полный ключ, удастся расшифровать только одно видео, потому что каждое видео шифруется своим личным ключем, а не общим, как в предыдущих двух пунктах.
А еще можно зашифровать открытым ключем, а расшифровать закрытым. Только вряд-ли здесь это поможет сделать систему более безопасной.
Не хочется перемудрить и нагородить лишнего. И усложнять без необходимости не хочется. Чем проще — тем надежней.
Как бы вы подобное реализовали?
Подскажите существующие решения?
Очень хотелось бы услышать мнение Владимира Кочеткова, и других людей работающих с безопасностью .
Спасибо
Здравствуйте, VTT, Вы писали:
VTT>В комплекте с USB-донглом будет идти пара амбалов, не дающих снимать с экрана?
Здесь такая идея — сообщать о подобных действиях на сервер и блокирование этого пользователя с сервера — тогда он больше не будет получать вторую половину ключа и не посмотрит новых видео файлов.
С этим бороться тоже придется, но это ОС-зависимо, поэтому пока хочется найти ответы на изначальные вопросы.
Съемку экрана видеокамерой не рассматриваю, тут уже ничего не поделаешь
Вот какое оптимальное решение?
И вообще насколько бредовы с точки зрения безопасности эти мои решения?
Здравствуйте, Michael7, Вы писали:
M>Для начала надо ознакомиться с существующими решениями по записи видео. Например, такими: http://www.epiphan.ru/
M>
M>Epiphan Systems – мировой лидер в производстве устройств захвата, кодирования, записи и трансляции аудио и видео (VGA, DVI и прочих) сигналов в высоком разрешении. Наша продукция позволяет захватывать, кодировать, записывать и транслировать практически любой видеосигнал высокого разрешения и обеспечивается надежной технической поддержкой.
M>В принципе это околопрофессиональные и довольно дорогие устройства, но есть и существенно подешевле, к примеру, об одном из таких здесь http://pctuner.ru/page-al-alias3544.html — где-то за примерно $160 можно найти.
M>Факт установки такой штуки между монитором и видеокартой вы отследить не сумеете. Также как и просто видеокамеру в монитор.
M>Можно, конечно, взять деньги за разработку, но ничего не говорить об этих вещах заказчику
M>В принципе, можно попробовать использовать шифрование HDCP у hdmi-выхода, хотя вообще-то оно давно взломано, но тем не менее, не очень доступно. Однако, может что-то изменилось, но мне показалось, что задействовать hdcp обычному разработчику сложно по организационным причинам.
M>В принципе, мне кажется, максимум что разумно гарантируется — это большая сложность копирования оригинальных файлов и некоторая возня при попытке скопировать видео с экрана или по кабелю: приобретать устройства видеозахвата (если их еще нет) и прочее. Если же заказчик хочет, чтобы его видео совсем никто не смог скопировать, то вариант только один: давать его смотреть исключительно у себя в офисе, предварительно отобрав смартфоны с видеокамерами.
Спасибо за ответ. Да, я в курсе, если захотеть, то все можно сломать, вопрос времени, желания и настойчивости Самое простое решение — камера перед монитором. Такие аппаратные вещи обойти я не смогу. Поэтому ищу оптимальное программное решение, чтоб не городить лишних бессмысленных защит, но и дать копировать и распространять видео любопытным. Захотят сломать аппаратно — сломают (и заказчик в курсе ).
Здравствуйте, Michael7, Вы писали:
M>Здравствуйте, Michaels1, Вы писали:
M>>Вот как бы сделать это правильно с usb dongle?
M>Сначала надо максимально уточнить что именно (файлы, видео) и от кого защищаться планируется и какая цена вопроса. Потому что например устройства видеозахвата — это не очень уже даже экзотика и есть недорогие модели, игроки, например, их вполне покупают записывать свои прохождения. Довольно странно при этом защищаться от матерых хакеров, не давая им дешифровать файлы, отслеживая действия пользователя на сервере и т.д.
Защита в основном от тех, у кого нету usb ключа. У кого он есть — те, по характеру видео, не настолько квалифицированы чтоб устанавливать еще какое то оборудование, пусть и недорогое (ну а установят — можно узнать кто, есть некоторые идеи насчет этого ). Нужна защита видеофайлов, — чтоб их непросто было на ютуб выложить.
Здравствуйте, Michaels1, Вы писали:
M>Подскажите существующие решения?
Гугли "системы условного доступа" и рядом с ними.
Стоит понимать что в этой теме нужно бежать все время чтобы оставаться на месте.
M>Как бы вы подобное реализовали?
Если бы меня таки принудили вот это разрабатывать, то определил бы наиболее вероятные атаки и работал бы в этом направлении.
Насколько я вижу по текущей ситуации, то не столько страшны атаки на софт, сколько всякие HDMI-грабберы.
Здравствуйте, Michaels1, Вы писали:
M>Привет!
M>Случилось так, что пришлось писать приложение для безопасного проигрывания видеофайлов. M>Заказчик очень сильно переживает что его драгоценные видео выложат в свободный доступ. M>И вот у меня такая задача — придумать как зашифровать эти файлы, да так, чтоб зритель, даже если захочет, то не сможет расшифровать, а только просмотреть, M>с помощью специального плеера-расшифровщика. Еще заказчик настаивает на использовании USB-dongle, чтоб без него нельзя было посмотреть видео. Потоковое воспроизведение не нужно (может в перспективе), пока достаточно простого обмена шифрованными видеофайлами.
M>И вот думаю сейчас как такое реализовать, причем с безопасностью знаком в теории (вот появилась возможность попрактиковаться ). M>Нижеописанные идеи основаны на том, что USB-донгл — просто хранилище для ключа (типа флешки), которое имеет API для доступа к этому ключу. Знаю, что это топорное представление — пока все еще разбираюсь с этой темой .
M>Идея которая возникла сразу — зашифровать видеофайл каким-то ключем, а плеер расшифрует его, используя ключ, хранящийся на dongle. Слишком просто. Нет. Кто-то из зрителей потеряет юсб-ключ, и любой, кто найдет этот девайс, сможет расшифровать все остальные видео.
M>Вторая идея — разбить приватный ключ на 2 части. Часть ключа хранится на донгле, а часть — отдается сервером по https, когда клиент вводит правильные логин и пароль. Таким образом, имея юсб-ключ, но не зная логина-пароля, видео не расшифруешь. Уже лучше. Но если кто-нибудь как-нибудь узнает полный приватный ключ, то сможет расшифровать все видео. А узнать ключ можно, запустив мой безопасный видеоплеер в отладчике.
M>Третья идея — вторая идея, но каждый зашифрованный видеофайл содержит в заголовке "соль", какой-то уникальный идентификатор, который объединяется с ключем из донгла и ключем полученным с сервера, и получается полный ключ, которым можно расшифровать видео. Здесь даже имея полный ключ, удастся расшифровать только одно видео, потому что каждое видео шифруется своим личным ключем, а не общим, как в предыдущих двух пунктах.
M>А еще можно зашифровать открытым ключем, а расшифровать закрытым. Только вряд-ли здесь это поможет сделать систему более безопасной. M>Не хочется перемудрить и нагородить лишнего. И усложнять без необходимости не хочется. Чем проще — тем надежней.
M>Как бы вы подобное реализовали? M>Подскажите существующие решения?
M>Очень хотелось бы услышать мнение Владимира Кочеткова, и других людей работающих с безопасностью . M>Спасибо
Вы хотите не много странного: зашифровать файл так, что бы в случае потери ключа шифрования, им нельзя было расшифровать файл. Тут можно только улучшить защиту создав несколько "перегородок": разбить ключ на несколько частей и хранить в разных местах, использовать привязку к конкретному пк, задействовать сервер через логин и парооль и т.д. Компромисом по простоте и надежности, мне кажется будет способ привязки к пк и ключу шифрования на флешке, т.к. в случае потери флешки на другом пк файл невозможно будет посмотреть.
Здравствуйте, Michaels1, Вы писали:
M>Привет!
M>Случилось так, что пришлось писать приложение для безопасного проигрывания видеофайлов. M>Заказчик очень сильно переживает что его драгоценные видео выложат в свободный доступ.
Мне очень интересно, а что ж это за видео такое будет? Не ЦП ли?
Здравствуйте, wildwind, Вы писали:
W>Здравствуйте, Michaels1, Вы писали:
M>> Третья идея — вторая идея, но каждый зашифрованный видеофайл содержит в заголовке "соль", какой-то уникальный идентификатор, который объединяется с ключем из донгла и ключем полученным с сервера, и получается полный ключ, которым можно расшифровать видео. Здесь даже имея полный ключ, удастся расшифровать только одно видео, потому что каждое видео шифруется своим личным ключем, а не общим, как в предыдущих двух пунктах.
W>Немного доработать и сгодится. Каждому клиенту генерируется ключ, его копия файла симметрично шифруется этим ключем. Сам ключ шифруется асимметрично и добавляется в видеофайл. Ключ для расшифровки ключа хранится в USB токене и расшифровывается им же. Далее плеер расшифровывает видеопоток.
W>Уязвимости: отладчик, софт-грабберы, аппаратные грабберы, шаринг USB токена по сети. От первых двух можно попытатья защититься, но лучше плюнуть.
Спасибо за ответ!
Но шифровать отдельно под каждого пользователя у сервера нет возможности, я собирался заранее зашифровать каждый видеофайл своим разным ключом, который складывается из 3-х: ключ пользователя на сервере+ключ польз. usb + соль видеофайла (этот ключ разный потому что разная соль у каждого видеофайла, а объединенная пара (ключ пользователя на сервере+ключ пользователя на usb) одна и та же для всех, хотя сами ключи пользователя и ключ на usb разные для разных пользователей). Может есть решение получше для такого случая?
Здравствуйте, wildwind, Вы писали:
M>> Спасибо за ответ! M>> Но шифровать отдельно под каждого пользователя у сервера нет возможности, я собирался заранее зашифровать каждый видеофайл своим разным ключом, который складывается из 3-х: ключ пользователя на сервере+ключ польз. usb + соль видеофайла
W>Противоречие же, нет?
M>> объединенная пара (ключ пользователя на сервере+ключ пользователя на usb) одна и та же для всех, хотя сами ключи пользователя и ключ на usb разные для разных пользователей).
W>Это как?
Еще раз попробую описать что имелось ввиду.
Вот есть глобальный ключ masterkey. Он один и очень секретный .
У каждого пользователя есть 2 ключа serverkey_user и usbkey_user. Вместе они секретные, и дают masterkey для этого пользователя (Например masterkey=(serverkey_user xor usbkey_user), где server_key — слкчайная строка, генерируется когда пользователь регистрируется; зная только один комопонент (serverkey_user ИЛИ userkey_user) невозможно узнать masterkey.
Когда надо зашифровать видео, гененируется случайное число video_salt, и шифруется ключем (masterkey xor video_salt). Тогда получается что каждое видео зашифровано своим ключем, а не одним и тем же, хотя эта video_salt возвращается клиенту сервером вместе с самим видеофайлом (может глупо?, но хотя бы видео не одним и тем же ключем зашифрованы).
Пользователю после авторизации возвращается его serverkey_user, а на флешке у него usbkey_user, так что он может расшифровать любое видео, получив video_salt этого конкретного видеофайла.
Вот чего я нагородил .
Да, заполучив master_key, хакер вскроет все видео...
Что в такой схеме избыточное?
W>Если ключ одинаковый для всех пользователей, то несколько [потенциальных] пользователей могут скинуться, заплатить хакеру, получить ключ и выложить его для всех.
Да, могут, но защита в основном от тех, кто не клиент компании. Для тех, кто легальный пользователь, попробую watermark какой-нибудь дополнительно встроить в видео.
M>> А что за шаринг usb по сети?
W>Трафик, которым приложение общается с токеном, перенаправляется на другой комп, где и находится токен. Так уже давно поступают с кодированными спутниковыми телеканалами, Google('cardsharing').
M> Вот есть глобальный ключ masterkey. Он один и очень секретный . M> У каждого пользователя есть 2 ключа serverkey_user и usbkey_user. Вместе они секретные, и дают masterkey для этого пользователя (Например masterkey=(serverkey_user xor usbkey_user), где server_key — слкчайная строка, генерируется когда пользователь регистрируется;
В смысле просто masterkey, а не "для этого пользователя", верно?
M> Пользователю после авторизации возвращается его serverkey_user, а на флешке у него usbkey_user, так что он может расшифровать любое видео, получив video_salt этого конкретного видеофайла.
Еще раз уточни, под "флешкой" ты все же подразумеваешь криптотокен, а не обычную флешку? И usbkey_user с него отдается приложению, а masterkey получается уже в приложении?
M> Вот чего я нагородил . M> Да, заполучив master_key, хакер вскроет все видео... M> Что в такой схеме избыточное?
Если я все понял правильно, разделение masterkey на части избыточно. Оно ничего не добавляет к стойкости, раз masterkey все равно оказывается у пользователя. video_salt тоже избыточна, непонятно какую функцию выполняет.
Здравствуйте, wildwind, Вы писали:
W>Здравствуйте, Michaels1, Вы писали:
M>> Вот есть глобальный ключ masterkey. Он один и очень секретный . M>> У каждого пользователя есть 2 ключа serverkey_user и usbkey_user. Вместе они секретные, и дают masterkey для этого пользователя (Например masterkey=(serverkey_user xor usbkey_user), где server_key — слкчайная строка, генерируется когда пользователь регистрируется;
W>В смысле просто masterkey, а не "для этого пользователя", верно?
Да
M>> Пользователю после авторизации возвращается его serverkey_user, а на флешке у него usbkey_user, так что он может расшифровать любое видео, получив video_salt этого конкретного видеофайла.
W>Еще раз уточни, под "флешкой" ты все же подразумеваешь криптотокен, а не обычную флешку? И usbkey_user с него отдается приложению, а masterkey получается уже в приложении?
Да, хочу использовать какой-нибудь Guardant Code или аналог, пока думаю как это все правильно организовать.
M>> Вот чего я нагородил . M>> Да, заполучив master_key, хакер вскроет все видео... M>> Что в такой схеме избыточное?
W>Если я все понял правильно, разделение masterkey на части избыточно. Оно ничего не добавляет к стойкости, раз masterkey все равно оказывается у пользователя. video_salt тоже избыточна, непонятно какую функцию выполняет.
Разделение для того, чтоб если usb-ключ кто то взял, он бесполезен без логина на сервере.
Ну да, согласен, вообще эта защита избыточна, ведь теоретически можно посмотреть master_key в отладчике. Но и делать очень просто наверное глупо, это повышает шансы даже непрофессионалам взломать?
Хотя, если вынести часть алгоритма на usb-ключ, это могло бы помочь? например ключ для дешифровки видео (masterkey+videosalt) считается внутри usb-донгла, а как именно — взломщик не узнает, он только может узнать videosalt и user_server_key поотдельности, и результирующий ключ для этого конкретного видео (назовем его video_key) может узнать посмотрев в отладчике или просниффив USB (хотя передачу usb ведь можно зашифровать). Таким образом, если раньше можно было получить masterkey и расшифровывать любые видео без usb донгла, то теперь без донгла он никак не расшифрует другие видеофайлы.
Здравствуйте, Michaels1, Вы писали:
M> Разделение для того, чтоб если usb-ключ кто то взял, он бесполезен без логина на сервере.
То есть защита от кражи usb-ключа? Такую цель ты не озвучивал.
M> Ну да, согласен, вообще эта защита избыточна, ведь теоретически можно посмотреть master_key в отладчике. Но и делать очень просто наверное глупо, это повышает шансы даже непрофессионалам взломать?
Повышает, конечно, чем проще, тем выше. Весь вопрос в том, какого уровня защита будет для вас достаточна. Нужно составить уравнение с тремя переменными: стоимость контента, стоимость защиты и стоимости взлома. Да, еще время взлома, если оно имеет значение (например, контент устаревает).
M> Хотя, если вынести часть алгоритма на usb-ключ, это могло бы помочь? M> [...]
Собственно это я и предложил.
Здравствуйте, wildwind, Вы писали:
M>> Разделение для того, чтоб если usb-ключ кто то взял, он бесполезен без логина на сервере.
W>То есть защита от кражи usb-ключа? Такую цель ты не озвучивал.
Нет, скорее нужна защита от использования usb-ключа разными пользователями, а разделение masterkey на 2 части помогает привязать пользователя к его usb-донглу(сервер может не отдавать user_server_key ключ, если S/N компьютера поменялся, к примеру). Как считаете?
Здравствуйте, Michaels1, Вы писали:
M>Как считаете?
Офлайн версия контента будет? Если нет, то возьмите образец у существующих CAS типа IRDETO и реализуйте свое.
Там вам и токен и уже отработанная метода. Хотя, как уже упомянули выше, кардшаринг рулит.
Здравствуйте, Michaels1, Вы писали:
M>>> Разделение для того, чтоб если usb-ключ кто то взял, он бесполезен без логина на сервере. W>>То есть защита от кражи usb-ключа? Такую цель ты не озвучивал. M>Нет, скорее нужна защита от использования usb-ключа разными пользователями,
Если это использование добровольное, то разделение ключа ничего не дает. Обе части будут переданы добровольно.
M>а разделение masterkey на 2 части помогает привязать пользователя к его usb-донглу(сервер может не отдавать user_server_key ключ, если S/N компьютера поменялся, к примеру). Как считаете?
Так все-таки к usb-донглу или к компьютеру? Ты сам-то свою схему хорошо представляешь или на ходу выдумываешь? Если привязать к компьютеру, то пользователи пошлют вас подальше, я считаю.