New features in Sharemind 2.0
Here is the list of new features in Sharemind 2.0. You can check some of them out in the latest SDK build.
General
- A new build system based on autotools. Detects libraries installed in the system, allows the developer to specify locations of libraries and customize the resulting build. Deprecated Code::Blocks project files and the old make-based system as a result.
- The network layer now supports secure channels between all parties. The RakNet 4.0 secure channels infrastructure is used. A keypair generator is provided for creating the necessary keys.
- Refactored the whole project to remove singletons.
- Refactored the logging and execution profiling system so it can be compiled out of release builds of Sharemind.
- A new message processing interface allows applications using Sharemind libraries to better target the logging output.
- The developer can specify timeouts more flexibly in the application now.
- Stability improvements everywhere.
The virtual machine and controller library
- Significantly reduced memory requirements of the virtual machine.
- New and significantly faster protocols for private atomic operations:
- share conversion
- multiplication
- greater-than comparison
- equality comparison
- bit extraction
- division by public value
- division by private value
- database shuffling.
- Tests for atomic operations have been updated, DivisionTest and ComplexOperationTest have been added. Old protocols were archived so they can be compared in the future.
- New assembly script invocation interface. The controller library can now pass parameters to scripts and get results tool. Added ScriptingTest to test this feature.
- New script debugging interface. Enables the debugging features of SecreCIDE - watch register contents, have breakpoints in the assembly interpreter, step code and so on. Assembly code can be uploaded to the miners in developer mode. Added DebuggingTest to test this feature.
- Added two modes of operation to the miners. In secure mode, only data model manipulation, data entry, data deletion and script invocation is allowed. In developer mode, everything is allowed. Tests and debugging require developer mode.
- Each miner now has its own data folder for its logs, profiles, scripts and databases.
- The miners don't time out anymore when they don't find each other. They keep on reconnecting.
- Removed the high-level flow control option as it did not help.
- The database layer now supports column names. DatabaseOperationsTest has been updated.
- Deprecated the option to run Sharemind assembly in controller applications.
Sharemind languages
- Added more vector and matrix operations to SecreC. The SecreC compiler supports one- and two-dimensional arrays and elementwise operations on them.
- Added the publish command to assembly and SecreC - it is used to return values to the ControllerInterface that invoked the script.
- Added the boolToInt method to convert booleans to integers in SecreC.
Developer tools
- A new developer tool SecreCIDE has been created that allows developers to create, build, run and debug SecreC and Sharemind assembly code directly on the Sharemind miners.
- We put three Miners in one application and create DevMiner - an easy-to-use Miner server for the software developer. The DevMiner uses an in-memory message passing system to improve efficiency and reduce the stress on the network stack for local installations. It is not yet as stable as the standard miners, but it is getting better.
- Totally reworked the OperationBenchmark application to allow for a more customizable benchmarking process.
- Totally reworked the TransactionDataImporter to be more efficient and configurable.
- Totally reworked the ProfileLogAnalyst to be significantly faster. It also supports a new data format more suitable for result analysis.
- Removed BenchmarkDataGenerator, because benchmark data is generated randomly now.
Applications
- Added the new histogram computation application written in SecreC.
- Improved the SecreC implementations of the Apriori and Eclat frequent itemset mining algorithms. Created the new Hybrid-Apriori in SecreC.
- Implemented some sorting algorithms in SecreC.
- Added a proxy application for synchronizing data entry from the web into the miners. Currently works with MySQL-based buffer databases. This enables web-based data entry.
- Added a demonstration of a desktop application using Sharemind. It shows how a Qt application can use privacy-preserving computations.
- Updated all application with regard to the changes to libraries.
- Update most assembly and SecreC scripts to the changes.
Known issues
- Contributed examples applications may be broken. They will remain so unless a maintainer updates them.
- Documentation is not up-to-date everywhere.
- The language references in SecreCIDE are incomplete. Please refer to the master's thesis of Roman Jagomägis for SecreC language reference. You can find the thesis on our research page. This situation will be improved in future releases of the Sharemind SDK.

