Bogdanov, DanRebane, ReimoTartu Ülikool. Matemaatika-informaatikateaduskondTartu Ülikool. Arvutiteaduse instituut2013-09-062013-09-062010http://hdl.handle.net/10062/32877Sharemind on raamistik, mis võimaldab teha privaatsust säilitavaid arvutusi. Sharemind koosneb kolmest andmekaevandaja rakendusest ja juhtimisteegist. Andmekaevandajad, moodustades Sharemindi virtuaalmasina, teevad olemasolevate andmete peal privaatseid arvutusi. Juhtimisteegi abil saavad teised rakendused andmekaevandajate tööd kontrollida ning nende andmebaasidesse uusi andmeid sisestada. Sharemindi raamistikule on loodud kaks programmeerimiskeelt: Sharemindi assemblerkeel ja SecreC keel. Sharemindi assemblerkeel on madala taseme keel, mida käivitatakse otse Sharemindi virtuaalmasinas. Kuigi ta lubab teha privaatsust säilitavaid arvutusi teostavaid rakendusi, on rakenduste tegmise protsess keeruline, sest madala taseme keeles programmeerimine on aeganõudev ning vigadele avatud. Selleks, et arendajad ei peaks assemblerkeeles programmeerima, loodi SecreC keel. SecreC on C-keele laadne programmeerimiskeel, mis võimaldab luua andmekaevandusalgoritme Sharemindi raamistiku rakendustele. SecreC kompileeritakse Sharemindi assemblerkeeleks, mis seejärel käivitatakse virtuaalmasinas. Klientrakendused kasutavad juhtimisteeki andmekaevandaja rakendustega suhtlemiseks. Praegune Sharemindi klientrakenduste loomise protsess koosneb kasutajaliidese loomisest ja andmekaeve algoritmide realiseerimisest. Kasutajaliideses peab olema võimalus andmeid lisada, esitada päringuid olemasolevate andmete peal arvutuste tegemiseks ja arvutustulemusi kuvada. Järgnevalt tuleb luua andmekaevandusalgoritmid, mis realiseeritakse SecreC keeles. Loodud algoritme tuleb testida ning kontrollida, et lekkivaid andmeid ei oleks. Kuigi Sharemindi raamistik garanteerib andmete privaatsuse instruktsiooni tasemel, võivad lekked siiski esineda algoritmi tasemel. Käesoleva töö eesmärgiks on lihtsustada rakendustele algormitmide realiseerimise protsessi SecreC programmeerimiskeeles. Meie panususena on loodud integreeritud arenduskeskkond, mis toetab programmeerijat, pakkudes talle mitmeid tööriistu, mis peaksid lihtsustama programmeerimist nii SecreC keeles kui ka Sharemindi assemblerkeeles. Samuti on arenduskeskonnas liides SecreC kompileerimiseks assemblerkeeleks, kasutades Sharemindi raamistiku SerceC kompilaatorit. Juhtimisteek lubab virtuaalmasinas assemblerkeelt käivitada ning siluda. Silumise töörežiimis saab uurida virtuaalmasina pinu ja registreid. Arenduskeskond on programmeeritud C++ keeles ning kasutab Qt raamistiku suure osa funktsioonide realiseerimiseks. Qt raamistik pakub laialdast funktsionaalsust ning on platvormist sõltumatu. Samuti on kasutatud QScintilla teeki keskse koodiredaktori loomiseks. QScintilla on Qt raamistikule kohandatud versioon Scintilla teegist, mis on laialdaselt tuntud lähtekoodi redaktori teek.The goal of the bachelor’s thesis is to design and develop an Integrated Development Environment (IDE) for a privacy-preserving framework called Sharemind. More precisely, the IDE will have to enable the developer to comfortably write and debug programs written in the languages designed for Sharemind which are the assembly language of the system and the SecreC language. Sharemind is a data processing system capable of performing computations on input data without compromising its privacy. The system is based on solid cryptographic foundations – secret sharing is used to preserve the privacy of the data during storage and secure multi-party computation allows the data to be securely processed. SecreC is a C-like programming language designed for developing privacy-preserving algorithms. Currently, the SecreC compiler generates assembly code that then can be run in the Sharemind virtual machine. It has been shown to be practical for a variety of data mining tasks. The aim of this thesis is to simplify the development of privacy-preserving software using the Sharemind framework. When Sharemind is easier to develop for, it may find more use in real-world applications and will lead us to information systems with significantly better privacy guarantees. The IDE will have all the basic functionality like project management, code highlighting and code-completion which have become standard features in modern code development environments. Debugging will be an essential part of the system and its functionality will be supported for the assembly language. The tool will be written in C++. The libraries that will be used are Qt for its wide range of functionality, Sharemind controller library which will be the central part for debugging and QScintilla (which is a Qt port for a component called Scintilla) for code editing.enbakalaureusetöödinformaatikainfotehnoloogiainformaticsinfotechnologyIntegreeritud arenduskeskkond SecreC programmeerimiskeeleleAn integrated development environment for the SecreC programming languageThesis