Вы должны быть в состоянии сделать это довольно легко. Сервисный контракт, вероятно, будет выглядеть так:
[ServiceContract]
public interface IFileService
{
[OperationContract]
byte[] ProcessFile(byte[] FileData);
}
Часть шифрования может быть обработана WCF с использованием безопасности на транспортном уровне. Я не верю, что WCF поддерживает сжатие напрямую, но вы можете добавить это с помощью класса GZipStream.
Я не создал службу обработки файлов, как вы описываете, но я создал службу, которая обрабатывает данные байтового массива, которые передаются между клиентом WCF и службой и обратно. Работает просто отлично.