Безопасное проигрывание зашифрованных видеофайлов
От: Michaels1  
Дата: 24.09.15 20:59
Оценка:
Привет!

Случилось так, что пришлось писать приложение для безопасного проигрывания видеофайлов.
Заказчик очень сильно переживает что его драгоценные видео выложат в свободный доступ.
И вот у меня такая задача — придумать как зашифровать эти файлы, да так, чтоб зритель, даже если захочет, то не сможет расшифровать, а только просмотреть,
с помощью специального плеера-расшифровщика. Еще заказчик настаивает на использовании USB-dongle, чтоб без него нельзя было посмотреть видео. Потоковое воспроизведение не нужно (может в перспективе), пока достаточно простого обмена шифрованными видеофайлами.

И вот думаю сейчас как такое реализовать, причем с безопасностью знаком в теории (вот появилась возможность попрактиковаться ).
Нижеописанные идеи основаны на том, что USB-донгл — просто хранилище для ключа (типа флешки), которое имеет API для доступа к этому ключу. Знаю, что это топорное представление — пока все еще разбираюсь с этой темой .

Идея которая возникла сразу — зашифровать видеофайл каким-то ключем, а плеер расшифрует его, используя ключ, хранящийся на dongle. Слишком просто. Нет. Кто-то из зрителей потеряет юсб-ключ, и любой, кто найдет этот девайс, сможет расшифровать все остальные видео.

Вторая идея — разбить приватный ключ на 2 части. Часть ключа хранится на донгле, а часть — отдается сервером по https, когда клиент вводит правильные логин и пароль. Таким образом, имея юсб-ключ, но не зная логина-пароля, видео не расшифруешь. Уже лучше. Но если кто-нибудь как-нибудь узнает полный приватный ключ, то сможет расшифровать все видео. А узнать ключ можно, запустив мой безопасный видеоплеер в отладчике.

Третья идея — вторая идея, но каждый зашифрованный видеофайл содержит в заголовке "соль", какой-то уникальный идентификатор, который объединяется с ключем из донгла и ключем полученным с сервера, и получается полный ключ, которым можно расшифровать видео. Здесь даже имея полный ключ, удастся расшифровать только одно видео, потому что каждое видео шифруется своим личным ключем, а не общим, как в предыдущих двух пунктах.

А еще можно зашифровать открытым ключем, а расшифровать закрытым. Только вряд-ли здесь это поможет сделать систему более безопасной.
Не хочется перемудрить и нагородить лишнего. И усложнять без необходимости не хочется. Чем проще — тем надежней.

Как бы вы подобное реализовали?
Подскажите существующие решения?

Очень хотелось бы услышать мнение Владимира Кочеткова, и других людей работающих с безопасностью .
Спасибо
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.