Есть ли способ удаленно проверить, зашифрован ли файл?
У меня очень сложная проблема, но вот упрощенный сценарий, который иллюстрирует суть:
У меня есть сервер, который генерирует очень большие видеофайлы. Я хочу, чтобы они были зашифрованы на уровне файлов перед загрузкой. (Это могло быть небезопасное соединение.) Я знаю ключ к этим файлам, и я смогу расшифровать любой из файлов.
Есть ли способ проверить, действительно ли файлы зашифрованы, прежде чем передавать их по незащищенной сети?
Как вы их шифруете? Например, если вы используете gpg
, команда file распознает формат шифрования (и даже может различать защищенный ASCII и незащищенный вывод):
[madhatta@risby tmp]$ ls -la > foo
[madhatta@risby tmp]$ gpg -e -r fred foo
[madhatta@risby tmp]$ gpg -e -r fred --no-armor foo
[madhatta@risby tmp]$ file foo foo.asc foo.gpg
foo: ASCII text
foo.asc: PGP message
foo.gpg: GPG encrypted data
редактировать: Думаю, я понимаю, о чем вы просите, но не вижу в этом смысла. Если предположить, что вы могли бы каким-то образом создать центр сертификации, который распознавал бы каждый файл и выдавал какой-то сертификат «зашифрованности», как бы вы его использовали? Чтобы идентифицировать файл, который он сертифицировал с какой-либо надежностью, он должен включать какую-то контрольную сумму, а для оценки этой контрольной суммы вам нужно будет получить исходный файл. Лучше просто получить исходный файл и оценить его.
Конечно, вы можете встраивать имена путей в сертификаты, но тогда каждый сертификат нужно будет проверять по списку отзыва сертификатов в реальном времени, чтобы люди не расшифровывали файл. на месте и оставив старый сертификат на месте; и какая-то другая система должна будет постоянно контролировать изменения файлов и обновлять этот CRL. Нет, если вы хотите сделать это удаленно, могу я предложить:
ssh server file foo.asc
Большинство (всех) режимов цепочки для симметричного шифрования будут правильно работать с усеченной версией файла.
Так что, в принципе, вы можете загрузить начало файла, расшифровать его локально и убедиться, что оно соответствует усеченному открытому тексту. Тогда у вас будет доказательство того, что по крайней мере начало файла было правильно зашифровано; а если нет, то утечка только небольшой части данных.
Детали зависят от того, какой именно зашифрованный формат вы используете. По крайней мере, сделайте усечение, которое соответствует размеру используемого блочного шифра, и вам может потребоваться принять во внимание некоторые заголовки.