You are on page 1of 26

Blokshare

A Capstone Report

presented to the

Faculty of CST 499 at

California State University, Monterey Bay

In Partial Fulfillment

of the Requirements for the Degree

Bachelor of Science

in

Computer Science

by

Jordan Bienz and Miguel Solis

Summer 2021
ii

Copyright © 2021

by

Jordan Bienz and Miguel Solis


iii

Executive Summary of Report

Blokshare

by

Jordan Bienz and Miguel Solis

Bachelor's of Science in Computer Science

California State University Monterey Bay, 2021

The purpose of this project is to develop a platform that creates an alternative method for

internet users to share files between them. The main goal of this project is to develop a reliable

method of sharing files that is trusted in maintaining the file’s authenticity and reliability for the

receiving user of the shared file. This will be achieved by designing and implementing

technology that can be used to create a decentralized system that is not owned or controlled by

one entity and is dispersed among many individuals and organizations.

The scope of this project has limited the use case of this platform to the sharing of college

transcripts and degree verifications between students, schools, and organizations. Transferring of

transcripts and sending degree verifications to potential employers has introduced challenges for

current and former students. Blokshare aims at making this process easier on all parties involved

all while maintaining, if not improving, the authenticity and reliability of the current processes

that are used.


v

Table of Contents
PAGE

Executive Summary of Report 3


Table of Contents 4
List of Figures and Tables 5
Part I 1
Introduction 1
Issue: 2
Solution: Blokshare - decentralized and private file storage 2
Goals 3
Objectives 3
Stakeholders and Community 4
Evidence of Need 5
Feasibility 6
Part II 7
Design Requirements 7
Functional Decomposition 7
Selection of Design Criterion 8
Final Deliverables 8
Approach and Methodology 8
Ethical Considerations 9
Legal Considerations 10
Part III 11
Timeline and Budget 11
Usability Testing and Evaluation 12
Final Implementation 13
Discussion 16
References 17
Appendix A 19
Usability Test Survey 19
v

List of Figures and Tables

PAGE

Table 1: Functional Requirements 7


Figure 1: Milestones 12
Figure 2: Home Page 13
Figure 3: Share File Component 14
Figure 4: Transaction 15
1

Part I
Introduction

In today's connected world, technology is at everyone’s fingertips. Taking pictures,

sending text messages, visiting social media sites, sending email, and browsing the web are tasks

that people take part in daily with their cell phones and computers. With the growth of

technology comes the increase of security risks and vulnerability for the users of this technology.

Emails, online accounts, and other services are at risk of becoming compromised. Due to recent

breaches of large and trusted institutions, it is becoming more complicated to trust who we think

is on the other side and validate the legitimacy of the different forms of electronic

communication we are receiving. We need a way that we can share forms of electronic

communication, have the ability to validate that what we have received originated from the

person that sent it to us, that we are the intended recipient, and that the data is in its original state

and has not been tampered with. These needs are paving the way for a more decentralized

approach to authentication and file-sharing.

Most file-sharing systems rely on a kind of cloud data storage. With the growth of

technology, cloud storage has become one of the most convenient methods to store data. Cloud

data is typically stored in a centralized manner. Centralized systems also pose a single point of

failure and, most of the time, lead to data unavailability and eventually to collapse the system.

Data is the basic building block for any technological system and should be handled in a

secure way. If this does not happen, then it will lead to insecurities and threats to existing

file-sharing systems. It is essential to provide users with a system that can overcome these

security loopholes in today’s systems.


2

Issue:

Due to recent events, we’ve seen the need to move more processes into the digital world.

The increase in cybercrime such as data breaches, ransomware, email phishing, and others has

eroded the trust we once had in large centralized institutions. We’ve seen data breaches from

Equifax and Experian, major credit reporting agencies that exposed the personal data of millions

of people. The Solarwinds hack exposed thousands of government agencies and corporations to

hackers with unknown consequences. Also, with centralized systems, there can be a concern

about availability. The user’s access to data that is stored in this method can easily be disrupted

with a distributed denial-of-service (DDoS) attack. This can lead to unavailability and reliability

of data.

For most people, it is common now to receive an email with an important document

attached. At times the process is more involved; we must print, sign, and return. But, with the

constant threat of phishing, can we trust that we know who is on the other side of electronic

communications? Can we trust that our critical private documents will be available to us at a

moment's notice?

Solution: Blokshare - decentralized and private file storage

Blokshare will help with the reliability and trust of the data being shared between users.

This system aims to create a web application that allows users to share files or information in a

secure and trusted way. This system will perform data validation, and transactions will be

completed against a distributed blockchain technology. Users will be able to share data with

other users. Only those authenticated users can access that particular data by successfully
3

decrypting the cryptographic hash key stored on the blockchain. With Blokshare, data will be

stored in a decentralized file storage system by replicating it across redundant nodes. This

method helps overcome the potential security risks associated with a traditional cloud data

storage solution.

Goals

The goals of this project were to:

● Develop an alternative and decentralized way to share private documents using

blockchain technology.

● Give users peace of mind that the files they are receiving have not been intercepted and

altered during the transfer.

● Remove the “middleman” that is present with the current centralized authentication

systems.

● Allow users to upload and share secure and encrypted documents with other users.

● Only originating users and designated users will have the ability to download and decrypt

the file being shared.

Objectives

● Create a custom distrusted decentralized blockchain.

● Create a simple decentralized file-sharing protocol to store and retrieve files from the

network.

● Develop a simple user interface using React to allow users to upload, review, and store

documents with ease.

● Allow users to grant and revoke permissions to access stored files.


4

● Allow users to embed digital signatures on documents that require a signature.

Stakeholders and Community

Several stakeholders will benefit from the completion of a product resembling the one

that is being developed in this project. The span of stakeholders that could benefit from a product

such as Blokshare is quite broad. In this project, the scope will be reduced and limited to one

targeted group of stakeholders that would benefit from a particular use case of this type of

technology. They are part of the process for transmission and sharing of college transcripts and

degrees needed by schools that students are trying to transfer their credits to, or for potential

employers that need verification of degrees as a condition of hire. Each of these stakeholders has

a different position, stance, and benefit from what they would gain by using this product directly

or indirectly. These stakeholders include the individuals that could be classified as students,

schools, and companies.

Today students have several ways that they can request the transfer of transcripts. One

way is by picking up officially sealed transcripts from one school and dropping them off at

another. The other method is an electronic request that is completed by accessing a centralized

service. Blokshare would take away any manual process that a student would have to complete

and migrate to a decentralized system that they could rely on. This method of transfer would

decrease the steps needed in the process and would speed up the time that a student normally

must wait for either the sending or receiving of transcripts between schools.

Schools today receive electronic, paper, and in-person requests for official transcript

prints in paper or electronic format that can be received by other schools. Blokshare would allow

for a more streamlined request for transcripts to be received by schools. It would alleviate the
5

need for paper and the questioning of the reliability of the transcripts that are received. It would

cut down on the cost of materials needed to print and send transcripts to the necessary parties.

The queue of paper transcripts to be entered would change to a new method of validation and

electronic processing of transcripts into the appropriate college systems. This is in replacement

of the task of a person completing data entry that can be prone to errors.

Companies that are potential employers for a student that needs verification of a degree

would also gain benefits from Blokshare and this reliable method of sharing data. The student or

company would not have to struggle with release forms such that the potential employer has the

right to request the verification of the degree. The student would have the ability to easily request

the proof that needs to be shared with the company. Students can be given on-demand access to

their degrees and authorize the automatic sending and transfer to the receiving individual without

the need to reach back to the originating school.

Evidence of Need

As the world’s paperwork becomes more digitized, the increased convenience comes at a

risk. The same advances in technology that give us the ability to digitize our world also give bad

actors the opportunity and tools to commit fraud. Scans of paper documents are easy to edit

using tools like Photoshop. Digital or electronic documents can also easily be altered without

anyone being the wiser. For this reason trusted third parties are required to authenticate the

integrity of digital documents. Our project is needed to facilitate the transition to our digitized

world without the cost or hassle of third parties when sharing documents. A great example is the

transcript and degree verification. For a student to transfer credits between schools they must

first get a transcript for the school they are transferring from and send it to the school they are

transferring to. Many times in order to guarantee the authenticity of transcripts schools use a
6

trusted third party. A similar process is used for credentials/ degree verification. This platform

would facilitate the sharing of transcripts, credentials, as well as provide authentication directly

to other universities, employers, or government agencies.

Feasibility

An environmental scan was conducted while developing ideas for blockchain-based

authentication and distributed storage solutions. One company using blockchain technology for

file storage purposes is Filecoin. Filecoin is a similar product to what is defined by this project.

Filecoin is a platform by Protocol Labs that is decentralized and used for data storage. The

purpose of Filecoin was to create an efficient solution for storing data based on the IPFS

decentralized network (“How Filecoin Works” 2021). Protocol Labs also developed the IPFS

product to substitute the existing HTTP protocol with a content-addressable peer-to-peer method

of storing and sharing hypermedia in a distributed file system. Unlike Filecoin, blokshare does

not have a cryptocurrency tied to file storage. Another significant difference is that Blokshare is

for securely sharing private files and not storing large files.

Another company using blockchain technology for secure record-keeping is the software

company Guardtime. However, instead of observing the traditional centralized system, the

company uses blockchain technology and distributes data to different nodes across the system.

They have various products, including cybersecurity, patient health care record auditing, and

supply chain solutions (“Guardtime: the world’s largest blockchain company” 2017). The main

difference between Blokshare and the Guardtime products is the target audience. Guardtime

products are enterprise-focused, while Blokshare is more directed at individual users.


7

The Blokshare platform leverages blockchain technology to provide a secure, transparent,

and decentralized file-sharing solution. The platform enables users to have more control over

their sensitive files and provides tools to quickly share and validate shared files. For example, it

will allow students to easily share degree verification and transcript without the need for

third-party intermediaries.

Part II
Design Requirements

Functional Decomposition

The design team developed the user stories because they fall into the target audience for

the Blokshare platform. From the user stories, the team determined the project's functional

requirements.

Table 1: Functional Requirements

Functional Requirements
Users will be able to create a file cube.
Users will be able to log in to their file cube.
Users will be able to select a local file and upload it to their file cube.
Users will be able to see a list of all the files in their file cube.
Users will be able to preview a file from their file cube in the browser.
User will share a file with another user using the user's cube address or public key.
Users will verify authenticity by viewing the hash of the current file and the hash
created in the storing transaction.
Files will be encrypted before being stored in the distributed database.
Transactions will be displayed after a file is stored, shared, or deleted.
A unique transaction will be created when a file is stored, shared, or deleted.
File validations will be performed to limit file size and type.
8

File cubes will have a unique identifying address.


File cubes will generate unique private and public encryption key pairs.

Selection of Design Criterion

Besides the functional requirements, other non-function-related decisions impacted

design criteria. The following requirements stem from those decisions:

● The team selected Python as the preferred backend programming language because of its

simple syntax and expansive libraries.

● Due to the project's time constraints, the team opted to use third-party services to handle

the messaging and distributed file storage.

● To facilitate distribution, the team decided to containerize the project in a Docker

container.

Final Deliverables

The final deliverables for this project are the source code for Blokshare. The deliverables

include the blockchain, file system, and web application. In addition, the development team has

included access to the working prototype of the Blokshare platform, sample accounts, and data

used for testing.

Approach and Methodology

The development team used the agile methodology to create Blokshare—small sprints

allowed for a more flexible method for software development. In addition, the smaller sprints
9

helped the development team focus on smaller milestones for the project and change priorities

during development as needed.

Blokshare is based on the decentralized concept of the blockchain that is typically used in

cryptocurrency. Therefore, with the development of Blokshare also comes the growth of

knowledge in blockchain concepts. This new and expanding knowledge of blockchain

technology along with the iterative agile process allowed the development team to enhance

Blokshare by quickly implementing new concepts as they learn.

There will be different technologies and concepts that were combined to achieve the

anticipated result of Blokshare. These include the data structure idea of a blockchain built using

the Python programming language. Python was the primary language of the backend. Python

libraries were used for different aspects of the project as needed. These include Flask as a

webserver to build a REST API, Pytest used to create automated tests in code, and cryptography

libraries to create public and private keys used by users to secure and access privileged

information. Blokshare uses a PubSub network for communication between the Blokshare nodes

to publish additions to the chain and sync the blockchain data at each node.

Ethical Considerations

In developing Blokshare, the development team considered several ethical concerns.

Blokshare was built as a product using blockchain as the underlying foundation. With the term

blockchain usually comes the thought of cryptocurrency. Cryptocurrencies are a decentralized

system that many individuals associate with the exchange of currency-related illegal activity.

Hackers use cryptocurrencies as a form of ransom payment against companies and individuals

because it is deemed untraceable and typically cannot be tracked back to the user. Individuals
10

need not be considered with any illegal activities being associated with Blokshare. Blokshare is

not a system that is designed for the exchange of currencies between individuals or companies.

Ethical concerns could also include how the implementation of this system would affect potential

users required to use it. The future users of the product could be currently underprivileged or

may be underprivileged in the future. These disadvantaged users can be categorized as

individuals that do not have easy access to computers and other electronic equipment or have a

disability that prevents them from using either. The scope of this project limits Blokshare to

current and former students at colleges. Limiting the use to college students raises concern about

how the implementation of Blokshare will affect these underprivileged college students.

Colleges, being the hosts of Blokshare, would develop solutions to help these disadvantaged

individuals. They would provide students a place to access the system on college campuses.

They would also set up a program that college faculty would have the ability to assist individuals

with using and accessing the system as needed.

Legal Considerations

The user privacy-oriented design of the Blokshare file sharing platform guarantees that

the service provider has no visibility of what users store on the network. This key feature of the

platform creates a major legal consideration for Blokshare. Not knowing what users store on the

network means that there is a possibility that users may share illegal content, such as copyrighted

materials, without the platform's knowledge. The intended use of Blokshare is mainly for sharing

documents. Document file sizes are generally small. To mitigate the risk of sharing copyrighted

content, Blokshare will impose a file size limitation. Another deterrent for sharing illegal content
11

on Blokshare is the blockchain's inherent transparency. It would be simple to determine what

users have access to specific files.

The electronic signature feature of Blokshare poses another legal consideration.

Blokshare must take proper steps before and after the signing process to adhere to the ESign Act

of 2000 (Electronic Signatures in Global and National Commerce Act, n.d.) and other such

electronic signature laws. Such actions include acquiring user consent to use electronic

signatures and providing all signers with copies of signed documents. These requirements are

crucial to guarantee the validity of the platform's electronic signatures under law.

Blokshare must also consider the handling of private information protected by law, such

as with the use case of sharing college transcripts. The FERPA (Family Educational Rights and

Privacy Act (FERPA), n.d.) act protects the privacy of educational information. The FERPA act

limits who can access academic records and for what reasons with and without the parent and

eligible student consent. The individual users of Blokshare grant and revoke access to shared

documents. Therefore, there may be a need to add the option to limit the number of times a user

can access a shared document.

Part III
Timeline and Budget

The project team developed Blokshare using the agile software development

methodology. The original timeline consisted of five seven-day sprints. As shown below (Figure

1), each sprint encompasses fundamental components of the platform. By using the iterative

agile process, there was a working prototype of Blokshare after each sprint. The project had no

budget but very limited time constraints. Unfortunately, the development team was unable to
12

meet the self-imposed deadline of July 29th. Development spanned into August, which caused

the team to backlog the electronic signature feature of the platform.

Figure 1: Milestones

Usability Testing and Evaluation

Usability testing was completed on Blokshare to assist with completing evaluations of the

product. For usability testing, focus groups and individual testing was completed. Focus group

and individual members were tasked with using Blokshare to upload a file to their cube, viewing

files in their cube, and sharing their file in their cubes to other member's cubes. Focus group tests

were completed in person and remotely using screen share platforms. Users were mostly able to

complete all usability tests that they were tasked with. These tasks were completed with limited

help mostly because of the users not fully understanding the product.

Suggestions for improvement of Blokshare were generated by the focus group usability

testing. Most users suggested improvements in the user interface and features. The user interface

was not as intuitive that the users found confusing. Another suggestion was for additional

features to be built into the web user interface that would interact with the Blokshare backend.

These features would include the user the ability to create their own new file cubes if needed.
13

Another recommendation from the focus group users was to create a mobile app that would be

able to interact with Blokshare. Most of the focus group users stated the increased use of their

mobile phone over their computer in their personal life. This is because of the ease of ability to

use on the go.

Final Implementation

The project consists of three major components, the React frontend, backend, and a

docker container that hosts the mongo database. To facilitate the deployment and scaling of the

application, Blokshare was designed to be containerized.

From the frontend, when a new user registers, the platform creates a unique personal file

cube. A user is limited to blockchain-related functionality without signing in, such as viewing the

transaction pool and mining new blocks. Upon signing in, the user will access the platform's full

functionality, such as viewing the files in their file cube and updating their user-specific address

book.

Figure 2: Home Page


14

Figure 3: Share File Component

All of the functionality of Blokshare resides in the backend. The team used the Python

micro web server Flask to create the platform's API. Due to the encryption size limitations of

asymmetric encryption, Blokshare uses both asymmetric RSA public/private key encryption and

symmetric Fernet encryption. Symmetric encryption is used to encrypt files before storing them

in the distributed mongo database and the file information stored in the blockchain. Then the key

generated for symmetric encryption is encrypted using the recipient's public key and stored on

the blockchain.

Blokshare uses a custom and straightforward blockchain implementation. When

connecting to the network, the node requests the current blockchain from a master node. The

blockchain uses transactions to store important file and sharing information. These transactions

are automatically generated when a user performs a file-related task, such as storing or sharing a

file. After a transaction is generated it is broadcasted throughout the network using PubNub.

Nodes connected to the network receive the transaction, validate it, and add it to their transaction

pool. Because file access information is stored on the blockchain, a file is not immediately
15

available to a user after it is stored or shared. Instead, the file becomes available after a block

containing the unique transaction is mined.

Blokshare authenticates files by utilizing the unique characteristics of the blockchain:

immutability, transaction validation, and block validation. When created, transactions are signed

using the sender's private key, which guarantees that malicious users cannot alter file information

stored on the transaction. In addition, the integrity of transactions is also protected by chain

validations which occur when a new block is mined. These protections of transaction integrity

allow Blokshare to use the information stored in the transactions to authenticate files. Whenever

a file is retrieved from the distributed storage, the file is automatically authenticated.

Figure 4: Transaction
16

Discussion

During the project, we encountered both technical and non-technical problems—the

technical problems revolved around the development team's lack of understanding of the

blockchain and how to implement the idea of blokshare. As for non-technical issues, those

involved work-related circumstances. Issues like having to work more hours meant less time to

work on the project.

In the planning phase, the primary issue was the lack of understanding of implementing a

blockchain. The plan appeared to be solid but left some gaps that needed to be addressed on the

fly during implementation. There was also more learning than expected to utilize technologies

like Docker, MongoDB, and React. Overall the team underestimated the difficulty of

implementing new technologies with little experience.

During implementation, the gaps in planning and unexpected work caused the project to

fall behind schedule. One example was the team's limited knowledge of implementing encoding

and encryption. The encryption library utilized in the project and the distributed storage had

specific requirements for the types of data they could handle. The team learned the limitations of

asymmetric encryption, which is required for the blockchain, and then also had to implement

symmetric encryption.

Although it had some unforeseen challenges, the project was a great learning experience.

The team was able to get hands-on experience working with blockchain technology and

encryption. However, in hindsight, it would have been better to use an existing blockchain such

as Ethereum or Hyperledger.
17

References

Conway, L. (2021, July 27). Blockchain explained. Investopedia.

http://www.investopedia.com/terms/b/blockchain.asp.

Electronic Signatures in Global and National Commerce Act. (n.d.).

https://www.govinfo.gov/content/pkg/PLAW-106publ229/pdf/PLAW-106publ229.pdf

Family Educational Rights and Privacy Act (FERPA). (n.d.).

https://studentprivacy.ed.gov/node/548/

Guardtime: The world's largest blockchain Company: Digital INSURANCE AGENDA:

Accelerate innovation in insurance. Digital Insurance Agenda. (2017, April 24).

http://www.digitalinsuranceagenda.com/featured-insurtechs/guardtime-the-worlds-largest

-blockchain-company/.

How Filecoin Works. Filecoin Docs. (2021, March 23).

https://docs.filecoin.io/about-filecoin/how-filecoin-works/.
18
19

Appendix A
Usability Test Survey
Link to google forms: https://forms.gle/bPDrnyEMRrgafAPa6
20
21

Appendix B
Division of Work

Jordan Bienz

● Setup collaboration spaces: Github, Jira, shared Google Drive.

● Project Proposal

● Project Report

● Capstone Presentation

● Blockchain implementation

● File cube implementation

● Frontend implementation

Miguel Solis

● Project Proposal

● Project Report

● Capstone Presentation

● Blockchain implementation

● File cube implementation

● Frontend implementation

You might also like