Можно, например, так:<div><br></div><div>my $private_key = 'qwertyuiop';</div>for my $file (@files) {<br><div> my $key = hash($file);</div><div> my $encrypted = crypt($key, $file);</div><div> my $remote = hash($encrypted);</div>
<div> $index{$remote} = $key;</div> upload($remote, $encrypted);<div>}<br><div>upload("$username.index", crypt($private_key, serialize(\%index)));<br><br>Т.е. ключ для каждого $file - хеш его содержимого. Если имеешь хеш, то имеешь и содержимое, приблизительно как у P2P. При этом каждый пользователь хранит там же словарь-список своих файлов, зашифрованный личным ключем.</div>
<div>Таким образом, даже если кто-то завладеет шифром от одного файла, не сумеет установить принадлежность тому или иному пользователю (разве что по IP, но это другой разговор).<br><br>вторник, 10 июня 2014 г. пользователь Анатолий Гришаев <<a href="mailto:0body0@rambler.ru">0body0@rambler.ru</a>> написал:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div text="#000000" bgcolor="#FFFFFF">
<div>Получается нужно два ключа: один для
передачи по сети, а второй для хранения и дедупликации.<br>
Минуса этого дела два:<br>
1) Нужно шифровать и дешифровать на сервере --- лишняя нагрузка на
процессор<br>
2) В случае взлома сервера возможно поиметь весь контент всех
пользователей.<br>
<br>
Или недалеко с шифрованным файлом хранить его ключ. Тогда при
получении файла дешифруем его считаем хэш и решаем дубль или нет.<br>
<br>
<br>
08.06.2014 15:40, Alexander Lourier пишет:<br>
</div>
<blockquote type="cite">
<div dir="ltr">1. А хранить тогда файл, зашифрованный чьим ключом?
<div>2. Что будет, если клиент соврёт, что он прислал
зашифрованный файл с контентом A, а на самом деле - там
контент B? Сервер потом попытается дедуплицировать данные
другого пользователя, который пытается сохранить контент A, а
сервер уже имеет такой файл (как он думает), и не сохранит
его. Потом второй пользователь запросит свой файл обратно, и
получит B.</div>
<div><br>
</div>
<div>По поводу п. 2 можно подумать в сторону алгоритмов
доказательства с нулевым разглашением. Клиент, сохраняя файл,
должен доказать, что зашифрованный файл, который он присылает,
имеет указанную контрольную сумму. Не уверен, что даже если
это получится, будет хоть сколь-либо быстро работать.</div>
</div>
<div class="gmail_extra"><br>
<br>
<div class="gmail_quote">8 июня 2014 г., 13:07 пользователь
Walery Studennikov <span dir="ltr"><<a href="javascript:_e(%7B%7D,'cvml','despairr@gmail.com');" target="_blank">despairr@gmail.com</a>></span> написал:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<p dir="ltr">Считать хеш на клиенте, перед отправкой
шифрованного контента, пока он ещё не зашифрован.</p>
<br>
--<br>
Moscow.pm mailing list<br>
<a href="javascript:_e(%7B%7D,'cvml','moscow-pm@pm.org');" target="_blank">moscow-pm@pm.org</a>
| <a href="http://moscow.pm.org" target="_blank">http://moscow.pm.org</a><br>
<br>
</blockquote>
</div>
<br>
</div>
<br>
<fieldset></fieldset>
<br>
</blockquote>
<br>
</div>
</blockquote></div></div>