shifr / app-stream-encryption
PSR-7 stream decorators
v1.0.5
2026-03-26 10:00 UTC
Requires
- php: ^8.0
- guzzlehttp/psr7: ^2.9
- psr/http-message: ^1.0 || ^2.0
Requires (Dev)
- phpunit/phpunit: ^13.0
README
В данной библиотеке представлено сквозное шифрование (End-to-End Encryption) как в мессенджерах вроде WhatsApp или Signal. Вот конкретные причины, зачем нужны такие сложности:
- Защита серверов (Zero Knowledge) Когда ты отправляешь фото в WhatsApp, оно летит через их сервера. Благодаря этой схеме: Сервер видит только «мусор»: Поскольку ключ (mediaKey) генерируется на твоем устройстве и передается получателю напрямую (в зашифрованном сообщении), сервер WhatsApp не может подсмотреть твое фото. Хранение: Даже если базу данных сервера взломают, хакеры получат миллионы зашифрованных файлов без ключей.
- Целостность данных (HMAC) Это «цифровая печать». Если злоумышленник изменит хотя бы один бит в зашифрованном файле, HMAC не совпадет. Приложение поймет это до того, как начнет расшифровку, и выдаст ошибку «Файл поврежден», вместо того чтобы пытаться скормить процессору битый код.
- Экономия памяти (Streaming) Декораторы потоков (Streams) позволяют расшифровывать видео «на лету» (кусочками по 8 КБ). Ты смотришь начало видео, пока середина еще качается и расшифровывается.
- Sidecar (Мгновенная перемотка) В обычном режиме AES-CBC, чтобы расшифровать данные на 10-й минуте видео, тебе теоретически нужно расшифровать всё, что было до этого. Sidecar (те самые подписи каждые 64 КБ) позволяет плееру прыгнуть в любую точку файла, проверить подлинность этого конкретного куска и сразу начать показ.