Я не знаю способа добавить байт в начало файла без перезаписывания всего файла. В любой файловой системе добавление байта в начало файла будет перезаписывать файл целиком.
тот же rsync работает с truecrypt контейнерами.
Попробуйте записать в контейнер файл размером в 2Гб, передать на другой узел, приписать 1 байт в начало 2Гб-файла и запустить rsync. Будете приятно удивлены тем, что rsync исправно передаст около 2Гб. Всё из-за того, что все блоки файла будут перезаписаны, у данных изменится смещение (а смещение является параметром шифрования в режиме XTS). Шифротекст блоков изменится. Кольцевой хеш (weak-хеш, в терминологии rsync) тоже полностью изменится. Все блоки изменённого файла будут переданы заново. Из-за одного байта, да.
Блоки контейнера, на которых лежат другие файлы переданы не будут (данные не изменятся, их смещение не изменится, а значит, шифротекст тоже не изменится)
Кольцевой хеш тут использовать не получится по ряду причин. Основная причина — вычислять кольцевой хеш нужно до шифрования, потому что после шифрования в режиме XTS при добавлении байта в начало блоки сдвинутся, шифротекст блоков поменяется и кольцевой хеш не совпадёт.
С криптоконтейнерами, кстати, наоборот сложнее, так как при добавлении символа в начало файла внутри контейнера перезапишутся все блоки изменяемого файла, так как для добавления байта в начало файла, файл нужно перезаписать полностью (по определению).
Вообще, задача с дельта-кодированием, шифрованием и добавлением байта в начало файла — очень интересная. Мне приходилось решать её недавно, скорее всего, скоро напишу статью на хабре.
Это у вас не совсем дельта-кодирование получается. Если хотя бы один байт в начало файла, то перезапишется файл целиком и дельта-кодирование работать не будет.
Насколько я понимаю, тут используется режим XTS. Шифруется весь контейнер целиком (то есть, не пофайлово). Контейнер разбивается на блоки размером в 16 байт (= размер блока AES). При изменении этого блока меняется только он.
CygWin — совместимость на уровне POSIX API, а это — совместимость на бинарном уровне (можно без пересборки запускать Linux-приложения на винде, аля Wine наоборот)
Со статическими можно, да. При условии, что вы предоставляете свою программу в виде объектных файлов, которые можно будет самостоятельно слинковать с LGPL-библиотекой.
Как вы определяете количество заходов с IPv6 адресов, если у вас нет поддержки IPv6?
Поддержку IPv6 можно прикрутить и средствами CloudFlare, на который у вас домен делегирован. Забесплатно. Займёт один вечер времени, один XHR-запрос на странице и один Page Rule на CloudFlare.
В браузере тоже можно, но нужно, чтобы для части, которая работает с незашифрованными данными можно было
закрепить версию (отключить автообновление, то есть, чтобы она хранилась в кеше/local storage), и контроль за этой версией осуществляло бы отдельное дополнение в браузере.
провести полный аудит кода (данные можно доверять только опенсорсу, а вы как думали?)
В таком случае, это будет полноценное приложение, а расширение, которое я описываю будет своеобразным пакетным менеджером.
А ещё аудит можно сделать публичным через crowdsourcing, но это совсем другая история.
Оффлайн-приложения в Хроме работают похожим образом, кстати.
Настроить один рабочий стол на две видеокарты — это тот ещё геморрой, особенно, если это две карты разных производителей (я даже не уверен, что это возможно). В винде же это из коробки.
А ещё в иксах тиринг на двух мониторах… но это совсем другая история.
Попробуйте записать в контейнер файл размером в 2Гб, передать на другой узел, приписать 1 байт в начало 2Гб-файла и запустить rsync. Будете приятно удивлены тем, что rsync исправно передаст около 2Гб. Всё из-за того, что все блоки файла будут перезаписаны, у данных изменится смещение (а смещение является параметром шифрования в режиме XTS). Шифротекст блоков изменится. Кольцевой хеш (weak-хеш, в терминологии rsync) тоже полностью изменится. Все блоки изменённого файла будут переданы заново. Из-за одного байта, да.
Блоки контейнера, на которых лежат другие файлы переданы не будут (данные не изменятся, их смещение не изменится, а значит, шифротекст тоже не изменится)
С криптоконтейнерами, кстати, наоборот сложнее, так как при добавлении символа в начало файла внутри контейнера перезапишутся все блоки изменяемого файла, так как для добавления байта в начало файла, файл нужно перезаписать полностью (по определению).
Вообще, задача с дельта-кодированием, шифрованием и добавлением байта в начало файла — очень интересная. Мне приходилось решать её недавно, скорее всего, скоро напишу статью на хабре.
Поддержку IPv6 можно прикрутить и средствами CloudFlare, на который у вас домен делегирован. Забесплатно. Займёт один вечер времени, один XHR-запрос на странице и один Page Rule на CloudFlare.
В таком случае, это будет полноценное приложение, а расширение, которое я описываю будет своеобразным пакетным менеджером.
А ещё аудит можно сделать публичным через crowdsourcing, но это совсем другая история.
Оффлайн-приложения в Хроме работают похожим образом, кстати.
А ещё в иксах тиринг на двух мониторах… но это совсем другая история.