{"id":13641658,"url":"https://github.com/cBioLab/BiORAM-SGX","last_synced_at":"2025-04-20T11:31:39.454Z","repository":{"id":152256414,"uuid":"247643975","full_name":"cBioLab/BiORAM-SGX","owner":"cBioLab","description":"A Practical Privacy-Preserving Data Analysis for Personal Genome by Intel SGX.","archived":false,"fork":false,"pushed_at":"2020-05-29T11:57:01.000Z","size":47209,"stargazers_count":9,"open_issues_count":4,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-08-03T01:24:08.122Z","etag":null,"topics":["bioinformatics","oram","ppdm","sgx"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cBioLab.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2020-03-16T08:03:24.000Z","updated_at":"2023-05-17T11:34:11.000Z","dependencies_parsed_at":null,"dependency_job_id":"2c3e6c36-8c19-4516-a750-074e90602aae","html_url":"https://github.com/cBioLab/BiORAM-SGX","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cBioLab%2FBiORAM-SGX","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cBioLab%2FBiORAM-SGX/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cBioLab%2FBiORAM-SGX/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cBioLab%2FBiORAM-SGX/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cBioLab","download_url":"https://codeload.github.com/cBioLab/BiORAM-SGX/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223827521,"owners_count":17209799,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bioinformatics","oram","ppdm","sgx"],"created_at":"2024-08-02T01:01:22.755Z","updated_at":"2024-11-09T12:30:43.165Z","avatar_url":"https://github.com/cBioLab.png","language":"C++","funding_links":[],"categories":["Data Analytics"],"sub_categories":["Library OSes and SDKs"],"readme":"# BiORAM-SGX\r\nA Practical Privacy-Preserving Data Analysis for Personal Genome by Intel SGX.\r\n\r\n\r\n# Abstract\r\nIntel SGX is a technology that can executes programs securely using Enclave, secure region on DRAM created by Intel's CPU. But, it is difficult to implement programs using Intel SGX. BiORAM-SGX enable to implement statistical analysis for personal genome data easily and flexibly using Intel SGX. \r\n\r\nIn this system, when client request to analyze personal genome data, they get only result. During analysis, data do not leak to client and server, and the analysis procedures do not leak to the server. BiORAM-SGX deploys JavaScript interpreter on Enclave to analyze data flexibly and protect personal genome data. \r\nInterpreter has functions of statisical analysis for bioinformatics. Therefore, it is easy for client to imprement various kind of statistical programs. BiORAM-SGX stores personal genome data with encryption, and decrypt it only on Enclave. BiORAM-SGX uses [Path ORAM](https://dl.acm.org/doi/abs/10.1145/2508859.2516660) to get encrypted personal genome data quickly and securely.\r\n\r\n+ Client: people who analyze personal genome data.\r\n+ Data Owner: people who provide SGX Server with personal genome data.\r\n+ SGX Server: server that has environment using Intel SGX. We assume that SGX Server is malicious.\r\n\r\n\u003cimg src=\"https://github.com/cBioLab/BiORAM-SGX/blob/master/figure/overview.png\" width=800/\u003e\r\n\r\n\r\n\r\n# Demo\r\n[![BiORAM-SGX](https://github.com/cBioLab/BiORAM-SGX/blob/master/figure/BiORAM-SGX_demo_top.png)](http://www.youtube.com/watch?v=SUXBFdLGHHA \"BiORAM-SGX\")\r\n※ This demo movie is older than latest version of BiORAM-SGX. Therefore, some of implementation on this movie are a little different from latest specification.\r\n\r\n\r\n\r\n# Installation Requirements\r\n+ BiORAM-SGX needs \"linux-sgx\" and \"linux-sgx-driver\". Install them from following site.\r\n    + [linux-sgx](https://github.com/intel/linux-sgx): ver. 2.5\r\n    + [linux-sgx-driver](https://github.com/intel/linux-sgx-driver)\r\n\r\n\r\n+ BiORAM-SGX also needs following libraries.\r\n```\r\napt install sqlite3\r\napt install libsqlite3-dev\r\napt-get install libcurl4-openssl-dev\r\n```\r\n\r\n\r\n+ Run the following command to get your system's OpenSSL version. It must be at least 1.1.0:\r\n```\r\nopenssl version\r\n```\r\n\r\n+ If necessary, download the source for the latest release of OpenSSL 1.1.0, then build and install it into a _non-system directory_ such as /opt (note that both `--prefix` and `--openssldir` should be set when building OpenSSL 1.1.0). For example:\r\n```\r\nwget https://www.openssl.org/source/openssl-1.1.0i.tar.gz\r\ntar xf openssl-1.1.0i.tar.gz\r\ncd openssl-1.1.0i\r\n./config --prefix=/opt/openssl/1.1.0i --openssldir=/opt/openssl/1.1.0i\r\nmake\r\nsudo make install\r\n```\r\n\r\n\r\n\r\n# Installation\r\n```\r\ncd ~\r\ngit clone git@github.com:cBioLab/BiORAM-SGX.git\r\ncd BiORAM-SGX\r\nexport LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/BiORAM-SGX/sample_libcrypto\r\n./bootstrap\r\n./configure --with-openssldir=/opt/openssl/1.1.0i\r\nmake\r\nmkdir SGXserver_data\r\ncd SGXserver_data\r\nmkdir upload_data\r\nmkdir ORAM_table\r\n```\r\n\r\n+ You should get your service provider id(SPID) and Attestation Report Root CA Certificate(Intel_SGX_Attestation_RootCA.pem).\r\n  + If you get SPID, write it on setting. Check [HERE](https://github.com/intel/sgx-ra-sample#building-the-sample) for detail.\r\n  + Intel_SGX_Attestation_RootCA.pem can get following way.\r\n  ```\r\n  cd ~/BiORAM-SGX/\r\n  wget https://certificates.trustedservices.intel.com/Intel_SGX_Attestation_RootCA.pem\r\n  ```\r\n  \r\n+ If you have any problem, you should check [sgx-ra-sample](https://github.com/intel/sgx-ra-sample).\r\n\r\n\r\n\r\n# Sample Running\r\n## Create database for user verification\r\nAt first, create table on `~/BiORAM-SGX/`.\r\n```\r\ncd ~/BiORAM-SGX/\r\nsqlite3 testdb\r\n$ SQLite version x.xx.x 20xx-xx-xx xx:xx:xx\r\n$ Enter \".help\" for usage hints.\r\n$ sqlite\u003e create table users(id text, pwhash text);\r\n$ sqlite\u003e .exit\r\n```\r\n\r\nThen, register your id and pwhash.\r\n```\r\ncd ~/BiORAM-SGX/\r\npython3 CreateID_pass.py\r\n$ Input userID:   DataOwner\r\n$ Input password: DataOwner\r\n$ Are you sure to register this userID and password[y/n]?: y\r\npython3 CreateID_pass.py\r\n$ Input userID:   Client\r\n$ Input password: Client\r\n$ Are you sure to register this userID and password[y/n]?: y\r\n```\r\n\r\n## [Data Owner] Download genome data (1000 genome project)\r\n```\r\ncd ~/BiORAM-SGX/dataowner_data/\r\nwget ftp://ftp-trace.ncbi.nih.gov/1000genomes/ftp/release/20130502/ALL.chr22.phase3_shapeit2_mvncall_integrated_v5a.20130502.genotypes.vcf.gz\r\ngunzip ALL.chr22.phase3_shapeit2_mvncall_integrated_v5a.20130502.genotypes.vcf.gz\r\n```\r\n\r\n## [Data Owner] Split and Encrypt genome data\r\n```\r\ncd ~/BiORAM-SGX/dataowner_data/\r\n# Split genome data by nation. Use \"xlrd\" library.\r\npython SplitVCFData_nation.py 22\r\n# Split nation genome data by each size(102000[byte]: about 100000 byte + padding).\r\npython3 SplitVCFData_size.py ~/BiORAM-SGX/dataowner_data/ ~/BiORAM-SGX/dataowner_data/chr22_GWD/ 22 GWD 100000 2000\r\npython3 SplitVCFData_size.py ~/BiORAM-SGX/dataowner_data/ ~/BiORAM-SGX/dataowner_data/chr22_JPT/ 22 JPT 100000 2000\r\n# Encrypt splitted nation genome data. We use Intel SGX for encryption, but it is not necessary for Data Owner to use Intel SGX in case Data Onwer encrypt them using AES-GCM.\r\ncd EncryptAES_SGX\r\nmake\r\n# GWD: Gambian in Western Division, The Gambia\r\n# JPT: Japanese in Tokyo, Japan\r\n./app ~/BiORAM-SGX/dataowner_data/chr22_GWD/ 22 GWD 102000\r\n./app ~/BiORAM-SGX/dataowner_data/chr22_JPT/ 22 JPT 102000\r\ncd ../\r\ncp -r chr22_GWD chr22_JPT ../SGXserver_data/upload_data/\r\nrm ../SGXserver_data/upload_data/chr22_GWD/AES_SK.key\r\nrm ../SGXserver_data/upload_data/chr22_JPT/AES_SK.key\r\n```\r\n\r\n\r\n## ※ Shortcut for download, split and encrypt genome data.\r\nAbove commands take about 10 minutes because genome data of chromosome 22 is huge. If you use following commands, reduce time.\r\n```\r\ncd ~/BiORAM-SGX/dataowner_data/\r\n# short size of genome data.\r\ngunzip *.gz\r\npython3 SplitVCFData_size.py ~/BiORAM-SGX/dataowner_data/ ~/BiORAM-SGX/dataowner_data/chr22_GWD/ 22 GWD 100000 2000\r\npython3 SplitVCFData_size.py ~/BiORAM-SGX/dataowner_data/ ~/BiORAM-SGX/dataowner_data/chr22_JPT/ 22 JPT 100000 2000\r\ncd EncryptAES_SGX\r\nmake\r\n./app ~/BiORAM-SGX/dataowner_data/chr22_GWD/ 22 GWD 102000\r\n./app ~/BiORAM-SGX/dataowner_data/chr22_JPT/ 22 JPT 102000\r\ncd ../\r\ncp -r chr22_GWD chr22_JPT ../SGXserver_data/upload_data/\r\nrm ../SGXserver_data/upload_data/chr22_GWD/AES_SK.key\r\nrm ../SGXserver_data/upload_data/chr22_JPT/AES_SK.key\r\n```\r\n\r\n\r\n## [Data Owner] Create ORAM structure\r\n+ SGX Server side\r\n```\r\n./run-SGXserver\r\n```\r\n\r\n+ Data Owner side\r\n```\r\n./run-client\r\n$ Input your user ID: DataOwner\r\n$ Input your ID's password: DataOwner\r\n$ (If you do not have key, push ENTER only.)\r\n$ Input your SK filename: ./dataowner_data/chr22_GWD/AES_SK.key\r\n$ Input your JavaScript code: ./dataowner_data/ORAMinit_GWD.js\r\n---\r\n./run-client\r\n$ Input your user ID: DataOwner\r\n$ Input your ID's password: DataOwner\r\n$ (If you do not have key, push ENTER only.)\r\n$ Input your SK filename: ./dataowner_data/chr22_JPT/AES_SK.key\r\n$ Input your JavaScript code: ./dataowner_data/ORAMinit_JPT.js\r\n```\r\n\r\n## [Client] Analyze genome data\r\n+ SGX Server side\r\n```\r\n./run-SGXserver\r\n```\r\n\r\n+ Client side\r\n```\r\n./run-client\r\n$ Input your user ID: Client\r\n$ Input your ID's password: Client\r\n$ (If you do not have key, push ENTER only.)\r\n$ Input your SK filename: [ENTER]\r\n$ Input your JavaScript code: ./client_data/fisher.js\r\n```\r\n\r\nClient sample .js codes are as follows.\r\n+ fisher.js: sample code to execute fisher's exact test.\r\n+ LR.js:     sample code to execute logistic regression(100 positions).\r\n+ PCA.js:    sample code to execute PCA(100 positions -\u003e 2 dimension).\r\n+ LR_PCA.js: execute LR(10 positions) -\u003e select 5 positions that have high relation between GWD and JPT -\u003e PCA(5 positions -\u003e 2 dimension) -\u003e save result as file.  \r\nIt can visualize as follows. Because sample positions are quite a few, classification is not proper.(If you check proper classification, see [demo](https://github.com/cBioLab/BiORAM-SGX#demo).) \r\n  ```\r\n  cd ~/BiORAM-SGX/client_data/\r\n  python Visualize_data.py\r\n  ```\r\n\r\n\r\n\r\n# Benchmark(2020/02/20)\r\n## Machine Spec\r\n+ OS: Ubuntu 18.04.3 LTS\r\n+ CPU: Intel Core i7-7700K CPU @ 4.20GHz\r\n+ memory: 16GB\r\n+ [Intel SGX for Linux*](https://github.com/intel/linux-sgx/) 2.5, [Intel SGX Linux* Driver](https://github.com/intel/linux-sgx-driver/) 2.5\r\n\r\n## Parameters\r\n+ Z(see detail on [Path ORAM](https://dl.acm.org/doi/abs/10.1145/2508859.2516660) paper.): 6\r\n+ StackMaxSize: 4[MB] (4,000,000 byte)\r\n+ HeapMaxSize: 96[MB] (96,000,000 byte)\r\n+ Data: 1000 Genome Project data, espwcially 2 nations.\r\n  + GWD: Gambian in Western Division, The Gambia\r\n  + JPT: Japanese in Tokyo, Japan\r\n\r\nGenome data size are as follows.\r\n\r\n|                      | AllGenome(JPT) | AllGenome(GWD) | chr1(JPT) | chr1(GWD) | chr22(JPT) | chr22(GWD) |\r\n|:--------------------:|:--------------:|:--------------:|:---------:|:---------:|:----------:|:----------:|\r\n|    Data size [GB]    |      35.8      |      38.6      |    2.76   |    2.97   |    0.471   |    0.508   |\r\n| num of splitted data |     384758     |     415536     |   29658   |   32006   |    5062    |    5463    |\r\n\r\n\r\n## Case1: AllGenome\r\nWe create ORAM Trees using all human chromosome, each nation(JPT, GWD).\r\n+ Fisher\r\n\r\n|   process   | time [sec] |\r\n|:-----------:|:----------:|\r\n| File Search |  4.372849  |\r\n|   Analyze   |  0.0273248 |\r\n|    Total    |  4.401838  |\r\n\r\n+ LR  \r\nUsing gradient descent, regularization.\r\n\r\n\u003ctable class=\"tg\"\u003e\r\n  \u003ctr\u003e\r\n    \u003cth class=\"tg-c3ow\" rowspan=\"2\"\u003e\u003c/th\u003e\r\n    \u003cth class=\"tg-c3ow\" colspan=\"3\"\u003enumber of positions\u003c/th\u003e\r\n  \u003c/tr\u003e\r\n  \u003ctr\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003e10\u003c/td\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003e50\u003c/td\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003e100\u003c/td\u003e\r\n  \u003c/tr\u003e\r\n  \u003ctr\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003eFille Search [sec]\u003c/td\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003e47.97443\u003c/td\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003e216.4722\u003c/td\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003e406.3569\u003c/td\u003e\r\n  \u003c/tr\u003e\r\n  \u003ctr\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003eAnalyze [sec]\u003c/td\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003e0.0052505\u003c/td\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003e0.022678\u003c/td\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003e0.04415015\u003c/td\u003e\r\n  \u003c/tr\u003e\r\n  \u003ctr\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003eTotal [sec]\u003c/td\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003e47.98099\u003c/td\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003e216.4971\u003c/td\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003e406.40365\u003c/td\u003e\r\n  \u003c/tr\u003e\r\n\u003c/table\u003e\r\n\r\n+ PCA  \r\nIn PCA, we use only JPT data, using power method.\r\n\u003ctable class=\"tg\"\u003e\r\n  \u003ctr\u003e\r\n    \u003cth class=\"tg-c3ow\" rowspan=\"2\"\u003e\u003c/th\u003e\r\n    \u003cth class=\"tg-c3ow\" colspan=\"3\"\u003enumber of positions\u003c/th\u003e\r\n  \u003c/tr\u003e\r\n  \u003ctr\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003e10\u003c/td\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003e50\u003c/td\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003e100\u003c/td\u003e\r\n  \u003c/tr\u003e\r\n  \u003ctr\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003eFille Search [sec]\u003c/td\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003e19.74556\u003c/td\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003e101.20553\u003c/td\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003e237.0048\u003c/td\u003e\r\n  \u003c/tr\u003e\r\n  \u003ctr\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003eAnalyze [sec]\u003c/td\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003e0.0002727\u003c/td\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003e0.0028131\u003c/td\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003e0.0117333\u003c/td\u003e\r\n  \u003c/tr\u003e\r\n  \u003ctr\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003eTotal [sec]\u003c/td\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003e19.74735\u003c/td\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003e101.21001\u003c/td\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003e237.0183\u003c/td\u003e\r\n  \u003c/tr\u003e\r\n\u003c/table\u003e\r\n\r\n## Case2: chromosome 1\r\nWe create ORAM Trees using chromosome 1, each nation(JPT, GWD).\r\n+ Fisher\r\n\r\n|   process   | time [sec] |\r\n|:-----------:|:----------:|\r\n| File Search |  1.4665754 |\r\n|   Analyze   |  0.0001375 |\r\n|    Total    |  1.4682056 |\r\n\r\n+ LR  \r\nUsing gradient descent, regularization.\r\n\u003ctable class=\"tg\"\u003e\r\n  \u003ctr\u003e\r\n    \u003cth class=\"tg-c3ow\" rowspan=\"2\"\u003e\u003c/th\u003e\r\n    \u003cth class=\"tg-c3ow\" colspan=\"3\"\u003enumber of positions\u003c/th\u003e\r\n  \u003c/tr\u003e\r\n  \u003ctr\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003e10\u003c/td\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003e50\u003c/td\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003e100\u003c/td\u003e\r\n  \u003c/tr\u003e\r\n  \u003ctr\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003eFille Search [sec]\u003c/td\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003e5.742125\u003c/td\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003e28.30003\u003c/td\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003e64.83146\u003c/td\u003e\r\n  \u003c/tr\u003e\r\n  \u003ctr\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003eAnalyze [sec]\u003c/td\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003e0.0055113\u003c/td\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003e0.022171\u003c/td\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003e0.0434385\u003c/td\u003e\r\n  \u003c/tr\u003e\r\n  \u003ctr\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003eTotal [sec]\u003c/td\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003e5.748933\u003c/td\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003e28.32372\u003c/td\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003e64.87664\u003c/td\u003e\r\n  \u003c/tr\u003e\r\n\u003c/table\u003e\r\n\r\n+ PCA  \r\nIn PCA, we use only JPT data, using power method.\r\n\u003ctable class=\"tg\"\u003e\r\n  \u003ctr\u003e\r\n    \u003cth class=\"tg-c3ow\" rowspan=\"2\"\u003e\u003c/th\u003e\r\n    \u003cth class=\"tg-c3ow\" colspan=\"3\"\u003enumber of positions\u003c/th\u003e\r\n  \u003c/tr\u003e\r\n  \u003ctr\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003e10\u003c/td\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003e50\u003c/td\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003e100\u003c/td\u003e\r\n  \u003c/tr\u003e\r\n  \u003ctr\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003eFille Search [sec]\u003c/td\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003e2.47331\u003c/td\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003e13.19456\u003c/td\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003e27.24546\u003c/td\u003e\r\n  \u003c/tr\u003e\r\n  \u003ctr\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003eAnalyze [sec]\u003c/td\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003e0.006414\u003c/td\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003e0.0059026\u003c/td\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003e0.0153582\u003c/td\u003e\r\n  \u003c/tr\u003e\r\n  \u003ctr\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003eTotal [sec]\u003c/td\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003e2.475577\u003c/td\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003e13.20257\u003c/td\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003e27.26291\u003c/td\u003e\r\n  \u003c/tr\u003e\r\n\u003c/table\u003e\r\n\r\n## Case3: chromosome 22\r\nWe create ORAM Trees using chromosome 22, each nation(JPT, GWD).\r\n+ Fisher\r\n\r\n|   process   | time [sec] |\r\n|:-----------:|:----------:|\r\n| File Search |  0.2158026 |\r\n|   Analyze   |  0.0274049 |\r\n|    Total    |  0.244528  |\r\n\r\n+ LR  \r\nUsing gradient descent, regularization.\r\n\u003ctable class=\"tg\"\u003e\r\n  \u003ctr\u003e\r\n    \u003cth class=\"tg-c3ow\" rowspan=\"2\"\u003e\u003c/th\u003e\r\n    \u003cth class=\"tg-c3ow\" colspan=\"3\"\u003enumber of positions\u003c/th\u003e\r\n  \u003c/tr\u003e\r\n  \u003ctr\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003e10\u003c/td\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003e50\u003c/td\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003e100\u003c/td\u003e\r\n  \u003c/tr\u003e\r\n  \u003ctr\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003eFille Search [sec]\u003c/td\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003e3.184544\u003c/td\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003e22.78428\u003c/td\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003e39.85593\u003c/td\u003e\r\n  \u003c/tr\u003e\r\n  \u003ctr\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003eAnalyze [sec]\u003c/td\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003e0.0060702\u003c/td\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003e0.0235689\u003c/td\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003e0.0479591\u003c/td\u003e\r\n  \u003c/tr\u003e\r\n  \u003ctr\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003eTotal [sec]\u003c/td\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003e3.191978\u003c/td\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003e22.80935\u003c/td\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003e39.90606\u003c/td\u003e\r\n  \u003c/tr\u003e\r\n\u003c/table\u003e\r\n\r\n+ PCA  \r\nIn PCA, we use only JPT data, using power method.\r\n\u003ctable class=\"tg\"\u003e\r\n  \u003ctr\u003e\r\n    \u003cth class=\"tg-c3ow\" rowspan=\"2\"\u003e\u003c/th\u003e\r\n    \u003cth class=\"tg-c3ow\" colspan=\"3\"\u003enumber of positions\u003c/th\u003e\r\n  \u003c/tr\u003e\r\n  \u003ctr\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003e10\u003c/td\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003e50\u003c/td\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003e100\u003c/td\u003e\r\n  \u003c/tr\u003e\r\n  \u003ctr\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003eFille Search [sec]\u003c/td\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003e1.470165\u003c/td\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003e9.026763\u003c/td\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003e15.40194\u003c/td\u003e\r\n  \u003c/tr\u003e\r\n  \u003ctr\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003eAnalyze [sec]\u003c/td\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003e0.0006192\u003c/td\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003e0.0039763\u003c/td\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003e0.0133208\u003c/td\u003e\r\n  \u003c/tr\u003e\r\n  \u003ctr\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003eTotal [sec]\u003c/td\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003e1.472607\u003c/td\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003e9.032648\u003c/td\u003e\r\n    \u003ctd class=\"tg-c3ow\"\u003e15.41728\u003c/td\u003e\r\n  \u003c/tr\u003e\r\n\u003c/table\u003e\r\n\r\n\r\n\r\n# License\r\nBiORAM-SGX is released under the [MIT License](https://opensource.org/licenses/mit-license). See [LICENSE](https://github.com/cBioLab/BiORAM-SGX/blob/master/LICENSE) for details.\r\n\r\nLicenses of external libraries are listed as follows.\r\n+ [linux-sgx](https://github.com/intel/linux-sgx/blob/master/License.txt)\r\n+ [linux-sgx-driver](https://github.com/intel/linux-sgx-driver/blob/master/License.txt)\r\n+ [OpenSSL](https://www.openssl.org/source/license.html)\r\n+ [SQLite](https://www.sqlite.org/copyright.html)\r\n+ [tiny-js](https://github.com/gfwilliams/tiny-js/blob/master/LICENSE)\r\n\r\n\r\n\r\n# Acknowledgement\r\nWe thank Mr.Ao Sakurai for fruitful discussions.\r\n\r\n\r\n\r\n# Contact\r\nDaiki Iwata(d_iwata@ruri.waseda.jp)\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FcBioLab%2FBiORAM-SGX","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FcBioLab%2FBiORAM-SGX","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FcBioLab%2FBiORAM-SGX/lists"}