Aziz Guebsi February 2023
Aziz Guebsi February 2023
Aziz Guebsi February 2023
Aziz Guebsi
February 2023
Contents
1
CONTENTS
2
CONTENTS
3
CONTENTS
7.7 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
A Appendix 66
4
CONTENTS
General Introduction
Computer science is a dynamic branch of study that focuses on computer
system design, development, and application. Algorithms, data structures,
programming languages, software engineering, computer architecture, and
artificial intelligence are among the subjects covered.
Electronic signatures have become a vital aspect of our lives in the digital
era, allowing us to sign papers and perform commercial transactions remotely.
Electronic signatures are pieces of data connected to electronic documents
that signify the signer’s intent to sign them. However, as electronic signa-
tures grow more common, so do the security threats and problems.
Identity theft, hacking, and fraud pose major financial and reputational
risks to firms that employ electronic signatures. As a result, the significance
of security in the realm of electronic signatures cannot be understated. To
safeguard sensitive data and maintain the integrity and validity of electronic
signatures, robust security mechanisms such as encryption, authentication,
access control, and intrusion detection are required.
5
Chapter 1
1.1 introduction
In this chapter, we will provide a comprehensive overview of the project.
First, we will introduce the host company, followed by an exploration of the
problem at hand and the proposed solution. To conclude, we will detail the
methodology that we will employ for this project.
6
CHAPTER 1. PROJECT BACKGROUND AND SCOPE
7
CHAPTER 1. PROJECT BACKGROUND AND SCOPE
8
CHAPTER 1. PROJECT BACKGROUND AND SCOPE
about the dashboard. The design feels outdated, and in today’s world, users
expect a more visually appealing design to attract them. However, this is
not the case with ngSign, as the UI/UX falls short in the following areas:
9
CHAPTER 1. PROJECT BACKGROUND AND SCOPE
10
CHAPTER 1. PROJECT BACKGROUND AND SCOPE
11
CHAPTER 1. PROJECT BACKGROUND AND SCOPE
12
CHAPTER 1. PROJECT BACKGROUND AND SCOPE
rative and iterative approach, which results in the quicker and more effective
delivery of high-quality goods or services.
13
CHAPTER 1. PROJECT BACKGROUND AND SCOPE
14
CHAPTER 1. PROJECT BACKGROUND AND SCOPE
into more manageable tasks, which are completed in short iterations through-
out the project life cycle.” The Scrum framework relies on constant collab-
oration, so teams can easily complete a task within an allotted time before
moving on to the next project phase.
The group mindset and teamwork involved when players from a rugby
Scrum inspired the word’s use in the modern workforce. As a framework,
Scrum has its roots in the 1986 Harvard Business Review article “The New
New Product Development Game” by Hirotaka Takeuchi and Ikujiro Nonaka,
which advanced the idea that companies can achieve more by adopting “a
holistic method – as in rugby, the ball gets passed within the team as it
moves as a unit up the field.”
Scrum was further popularized in the early 1990s by Jeff Sutherland and
Ken Schwaber, who sought to expand and apply the concept to software
development. The pair have continued to update and publish their framework
and ideas in the Official Scrum Guide, which can be downloaded online.
In order to employ Scrum successfully, Sutherland and Schwaber argue,
those involved must adhere to five values: commitment, focus, openness,
respect, and courage.
“These values give direction to the Scrum team with regard to their work,
actions, and behavior,” the authors explain. “The decisions that are made,
the steps taken, and the way Scrum is used should reinforce these values, not
diminish or undermine them.”
When these values are embodied by the team, Sutherland and Schwaber
add, the pillars, or principles of Scrum “come to life building trust.”
The Six Principles of Scrum
• Control over the empirical process
In Scrum, the empirical process is based on observation of hard evidence
and experimentation rather than theory. There are three main ideas to
empirical process control: transparency, inspection, and adaptation.
• Self-organization
As the Scrum process relies on many individuals, self-organization is
essential. Everyone involved is empowered to work independently, and
the self-organization principle allows for greater buy-in among all par-
ties, while making it easier to assess individual contributions.
• Collaboration
Scrum is a collaborative process, as evidenced by the many roles in-
volved (more on that below). This principle also focuses on three di-
mensions of collaboration: awareness, articulation, and appropriation.
15
CHAPTER 1. PROJECT BACKGROUND AND SCOPE
• Value-based prioritization
This principle involves organizing and prioritizing tasks based on their
value and how they need to be completed.
• Time-boxing
In Scrum, tasks are completed in “sprints,” with specific lengths of time
assigned to each one. Other elements, including “sprint planning” and
daily meetings, are also given specific start and stop times. This time-
boxing ensures that all involved know how much time is allocated to
each step, with the goal of eliminating wasted time and delays.
• Iterative development
This final principle speaks to the understanding that a project may need
to be refined multiple times during the development process. Iterative
development allows the team to make adjustments and manage change
easier..[1]
1.5 Conclusion
This chapter introduced Digitalberry’s project to develop a digital signa-
ture solution for Tunisia. Existing solutions were found lacking in privacy,
security, and user experience. To address these issues, our project focuses
on adaptability, design, performance, scalability, and business functionality
optimization.
Scrum methodology was chosen for effective project management, empha-
sizing collaboration, adaptability, and transparency. The principles of Scrum
will guide our project’s execution.
This chapter sets the stage for the following chapters that will delve into
project implementation details.
16
Chapter 2
2.1 Introduction
The purpose of this chapter is to present the basic concepts and principles of
cryptography and public key infrastructure (PKI). It lets project personnel
and stakeholders to efficiently follow major occurrences by gathering, com-
piling, analyzing, and distributing theoretical knowledge.
2.2 Cryptography
2.2.1 overview
Cryptography is the art of keeping information secure by transforming it
into form that unintended recipients cannot understand. In cryptography,
an original human readable message, referred to as plaintext, is changed by
means of an algorithm, or series of mathematical operations, into something
that to an uninformed observer would look like gibberish; this gibberish is
called ciphertext [2].
17
CHAPTER 2. DIGITAL TRUST AND SECURITY FUNDAMENTALS
18
CHAPTER 2. DIGITAL TRUST AND SECURITY FUNDAMENTALS
• Registration authority (RA): The interface between the user and the
certification authority. It is responsible for identifying applicants or
certificate holders and ensuring that the certificate usage constraints
are met.
source: https://www.techtarget.com/searchsecurity/definition/asymmetric-
cryptography
19
CHAPTER 2. DIGITAL TRUST AND SECURITY FUNDAMENTALS
20
CHAPTER 2. DIGITAL TRUST AND SECURITY FUNDAMENTALS
21
CHAPTER 2. DIGITAL TRUST AND SECURITY FUNDAMENTALS
encrypt and decrypt a message. It requires two parts: a data section and a
signature section as listed below:
source: https://sectigo.com/resource-library/what-is-x509-certificate
a) Data section
b) Signature section
22
CHAPTER 2. DIGITAL TRUST AND SECURITY FUNDAMENTALS
• Country: The two-factor letter ISO code for the country where your
organization is located.
• Public key: The public key that will go into the certificate.
a) Alice selects the file to be digitally signed or clicks on ’sign’ in her email
application
23
CHAPTER 2. DIGITAL TRUST AND SECURITY FUNDAMENTALS
b) The hash value of the file content or the message is calculated by Alice’s
computer
c) This hash value is encrypted with Alice’s Signing Key (which is a Pri-
vate Key) to create the Digital Signature.
d) Now, the original file or email message along with its Digital Signature
are sent to Bob.
e) After Bob receives the signed message, the associated application (such
as email application) identifies that the message has been signed. Bob’s
computer then proceeds to:
f) Any difference in the hash values would reveal tampering of the mes-
sage.
source: https://easy-software.com/en/newsroom/the-digital-signature-your-
electronic-signature/
24
CHAPTER 2. DIGITAL TRUST AND SECURITY FUNDAMENTALS
2.7 Conclusion
In this chapter, I did a thorough theoretical examination of the project’s
digital trust domain. The purpose of this paper is to provide a clear and full
overview of the work that will be done.
25
Chapter 3
3.1 Introduction
On the technological features of our project, this chapter will concentrate.
Its major goal is to direct us in comprehending the project’s architecture,
functional and non-functional needs, and identifying primary and secondary
actors. We will have developed a product backlog that will assist us in
breaking the project down into sprints at the end of this chapter.
3.2.1
26
CHAPTER 3. SPRINT 0 : PLANNING AND ARCHITECTURE
our application.
Main actor
User: Users can submit requests for document signatures through our
platform, and such requests are subsequently routed to an administrator for
approval. Users can keep track of the status of their requests, including doc-
uments that have been accepted, denied, or signed. The website also allows
users to interact with administrators and receive notifications of any updates
or modifications to their requests.
Admin functionalities:
Manage CSR
Notifications
Manage Documents
27
CHAPTER 3. SPRINT 0 : PLANNING AND ARCHITECTURE
User functionalities:
Notifications
28
CHAPTER 3. SPRINT 0 : PLANNING AND ARCHITECTURE
Security
For our platform, the security and privacy of user data are of the highest
significance. It is our duty as developers to make sure that user data is stored
securely. We will put encryption techniques in place for user data kept in the
database to do this. By doing this, we hope to preserve our users’ confidence
in our services while also offering a safe and secure environment for them to
connect with our platform.
Availability
Compatibility
The application is native, it’s compatible with any browser at any OS.
Ergonomy
29
CHAPTER 3. SPRINT 0 : PLANNING AND ARCHITECTURE
Product Backlog items that can be Done by the Scrum Team within one
Sprint are deemed ready for selection in a Sprint Planning event. They usu-
ally acquire this degree of transparency after refining activities. Product
Backlog refinement is the act of breaking down and further defining Product
Backlog items into smaller more precise items. This is an ongoing activity
to add details, such as a description, order, and size. Attributes often vary
with the domain of work.
The Developers who will be doing the work are responsible for the sizing.
The Product Owner may influence the Developers by helping them under-
stand and select trade-offs. Multiple Scrum Teams often work together on
the same product. One Product Backlog is used to describe the upcoming
work on the product.[9]
30
CHAPTER 3. SPRINT 0 : PLANNING AND ARCHITECTURE
31
CHAPTER 3. SPRINT 0 : PLANNING AND ARCHITECTURE
32
CHAPTER 3. SPRINT 0 : PLANNING AND ARCHITECTURE
33
CHAPTER 3. SPRINT 0 : PLANNING AND ARCHITECTURE
The models component represents the data and business logic of the
application. It defines the structure and behavior of the data, allowing for
easy manipulation and storage.
The views component handles user interactions and requests. It pro-
cesses the incoming requests, interacts with the models to retrieve or manip-
ulate data, and renders the appropriate response.
The templates component defines the presentation layer of the applica-
tion. It determines how the data is displayed to the user and provides the
necessary structure and formatting.
34
CHAPTER 3. SPRINT 0 : PLANNING AND ARCHITECTURE
The MTV pattern within the context of Django ensures a clear separation
of concerns and promotes code reusability, making the development process
more organized and efficient.
• RAM: 12.00 GB
• Git: Git is a free and open source distributed version control system
designed to handle everything from small to very large projects with
speed and efficiency. [15].
35
CHAPTER 3. SPRINT 0 : PLANNING AND ARCHITECTURE
• Pip: pip is the package installer for Python. You can use it to install
packages from the Python Package Index and other indexes. [22].
• NPM: npm is the world’s largest software registry. Open source devel-
opers from every continent use npm to share and borrow packages, and
many organizations use npm to manage private development as well.
[23].
36
CHAPTER 3. SPRINT 0 : PLANNING AND ARCHITECTURE
3.9 Conclusion
This chapter has given us a comprehensive overview of our project. We were
able to identify the essential actors, evaluate the system’s functional and non-
functional needs, improve our product backlog, generate global diagrams, and
eventually choose the best architecture for the project.
37
Chapter 4
4.1 Introduction
In this chapter, we’ll look at our project’s first sprint. Our primary focus
will be on evaluating the use case and creating a detailed class diagram that
is specific to our authentication needs. We will present a final view of the
sprint release before the conclusion of this chapter, highlighting our efforts
and successes throughout this period of development. Therefore, be ready
for an amazing travel as we delve into the details of our first sprint!
38
CHAPTER 4. SPRINT 1 : AUTHENTICATION AND REGISTRATION
39
CHAPTER 4. SPRINT 1 : AUTHENTICATION AND REGISTRATION
40
CHAPTER 4. SPRINT 1 : AUTHENTICATION AND REGISTRATION
Authentication
User JWT Service
Views Database
3 User information
6 Authentication Response
{"access": "token1", "refresh": "token2"}
9 User authentication
14 Token expired
15 HTTP 401 {"error.jwt.expired"}
16 Refresh token:
{"refresh": "token2"}
17 Validate the Refresh Token
19 User information
21 new Token
22 New Token
{"token": "token1"}
4.4 Implementation
In this section we are going to discuss the implementation of the Authenti-
cation with all its interfaces
41
CHAPTER 4. SPRINT 1 : AUTHENTICATION AND REGISTRATION
42
CHAPTER 4. SPRINT 1 : AUTHENTICATION AND REGISTRATION
4.5 Conclusion
In this chapter, we focused on the first sprint of our project, implementing au-
thentication and registration functionalities. We created diagrams, analyzed
the sprint, and discussed the implementation of authentication.
Overall, this chapter provided an overview of the sprint’s goals and ac-
complishments, setting the stage for further development.
43
Chapter 5
Sprint : Communication
between microservices
5.1 Introduction
In today’s interconnected world, web applications often rely on a microser-
vices architecture to enable scalability, flexibility, and efficient development.
Communication between microservices is a crucial aspect of such architec-
tures, and RabbitMQ, a popular message broker, plays a significant role in
facilitating this communication. This chapter explores the implementation
of RabbitMQ for inter-service communication during a Scrum sprint in a web
application.
44
CHAPTER 5. SPRINT : COMMUNICATION BETWEEN
MICROSERVICES
Producer, Exchange, Queue, and Consumer are the four main components
of RabbitMQ.
• Producer: Messages are pushed to exchanges by a producer. Messages
should not be sent at a rate that exceeds the Consumers’ ability to
process them. It’s also in charge of generating routing keys.
• Exchange: It is essentially a message routing rule. Binding is now
required for a message to travel to a queue or a different exchange from
the producers.
• Queue: It’s a storage buffer for messages. Queues are given names to
make it easier for applications to find them. Applications can choose
their queue names or ask the broker to do so. Because such names are
reserved by the broker for internal use, queue names can be up to 255
bytes of UTF-8 characters and cannot begin with ‘amq.’
• Consumer: It takes messages from the queues and reads them. A
pre-fetch limit is something that each customer can set (Otherwise
known as QoS limit). This value represents the maximum number
of unacknowledged messages the Consumer can handle at any given
time.[13]
45
CHAPTER 5. SPRINT : COMMUNICATION BETWEEN
MICROSERVICES
and ensuring efficient message delivery. User stories related to RabbitMQ in-
tegration were prioritized and selected for the sprint.
46
CHAPTER 5. SPRINT : COMMUNICATION BETWEEN
MICROSERVICES
and fault tolerance, convinced the team to embrace this change. The sub-
sequent sections will delve into the implementation details and the positive
impact it had on the project.
5.8 Conclusion
In conclusion, the successful implementation of RabbitMQ for communica-
tion between microservices during the Scrum sprint greatly enhanced the
web application’s performance and reliability. By leveraging RabbitMQ’s ro-
bust messaging capabilities, the team achieved their communication goals,
enabling efficient and decoupled interaction between services. The experi-
ence gained from this sprint will serve as a foundation for future iterations,
ensuring continuous improvement and seamless communication within the
web application.
47
Chapter 6
6.1 Introduction
In this chapter, we’ll look at our project’s second sprint. Our primary focus
will be on evaluating the use case and creating a detailed class diagram that
is specific to our authentication needs. We will present a final view of the
sprint release before the conclusion of this chapter, highlighting our efforts
and successes throughout this period of development. Therefore, be ready
for an amazing travel as we delve into the details of our second sprint!
48
CHAPTER 6. SPRINT 2: REQUESTS AND SIGNATURE
49
CHAPTER 6. SPRINT 2: REQUESTS AND SIGNATURE
50
CHAPTER 6. SPRINT 2: REQUESTS AND SIGNATURE
51
CHAPTER 6. SPRINT 2: REQUESTS AND SIGNATURE
6.4 Implementation
6.4.1 Request and signature interfaces
Before we delve into the implementation details, let’s take a look at the inter-
faces involved in the request and signature processes. Figure 1 illustrates the
Requests interface, which facilitates the submission and management of vari-
ous requests. Figure 2 presents the Certificate requests interface, where users
can make specific requests for certificates. Finally, Figure 3 showcases the
Certifying document interface, which allows users to verify and certify docu-
ments. These interfaces play crucial roles in the overall system functionality
and workflow.
52
CHAPTER 6. SPRINT 2: REQUESTS AND SIGNATURE
53
CHAPTER 6. SPRINT 2: REQUESTS AND SIGNATURE
54
CHAPTER 6. SPRINT 2: REQUESTS AND SIGNATURE
6.5 Conclusion
This chapter focused on the second sprint of our project, which involved
implementing the functionality for requests and signatures. We presented the
sprint backlog, analyzed the use case, and provided a textual description of
the ”requests and signature” functionality. We also included a class diagram
to visualize the system’s structure and sequence diagrams to illustrate the
flow of actions during the implementation. Additionally, we discussed the
interfaces associated with the request and signature processes. Overall, this
chapter laid the groundwork for successful development and progress in our
project’s second sprint.
55
Chapter 7
7.1 Introduction
In this chapter, we will be discussing the sprint 3 of my project. This sprint
focused on two main tasks: realizing the notification system and dockerizing
the application. Both of these tasks were crucial steps towards improving
the reliability and scalability of my application. Join me as we dive into the
details of how we achieved these goals and the lessons we learned along the
way.
56
CHAPTER 7. SPRINT 3:NOTIFICATION AND DOCKERIZING
57
CHAPTER 7. SPRINT 3:NOTIFICATION AND DOCKERIZING
58
CHAPTER 7. SPRINT 3:NOTIFICATION AND DOCKERIZING
59
CHAPTER 7. SPRINT 3:NOTIFICATION AND DOCKERIZING
60
CHAPTER 7. SPRINT 3:NOTIFICATION AND DOCKERIZING
7.6 Dockerization
In addition to implementing the notification system, dockerization was a
key focus of Sprint 3. Dockerizing the application provided several benefits,
including improved portability, scalability, and consistency across different
environments. This section will outline the plan for dockerizing our applica-
tion.
61
CHAPTER 7. SPRINT 3:NOTIFICATION AND DOCKERIZING
Next, we will create a Dockerfile, which is a text file that contains instruc-
tions for building a Docker image. The Dockerfile will specify the base image,
define necessary dependencies, and set up the environment for running the
application.
62
CHAPTER 7. SPRINT 3:NOTIFICATION AND DOCKERIZING
7.7 Conclusion
In Sprint 3, we focused on implementing the notification system and docker-
izing the application. These tasks were crucial for improving reliability and
scalability.
We created a sprint backlog outlining specific tasks, analyzed the notifi-
cation use case, and developed a class diagram. During implementation, we
used sequence diagrams and provided screenshots of user interfaces.
In conclusion, Sprint 3 significantly enhanced our project’s reliability and
scalability through the implementation of the notification system and dock-
erization
63
Bibliography
[1] https://www.uagc.edu/blog/what-is-scrum.
[2] https://www.csoonline.com/article/3583976/what-is-cryptography-how-
algorithms-keep-information-secret-and-safe.html.
[3] https://textbook.cs161.org/crypto/hashes.html
[4] https://www.exabeam.com/explainers/information-
security/information-security-goals-types-and-applications/
[5] https://freemanlaw.com/pki-cryptography
[6] https://freemanlaw.com/pki-cryptography/
[7] https://cryptobook.nakov.com/asymmetric-key-ciphers
[8] https://www.mindinventory.com/blog/mobile-app-design-fundamentals-
ui-vs-ux/
[9] https://www.scrum.org/resources/what-is-a-product-backlog
[10] https://aws.amazon.com/microservices/
[11] https://www.finereport.com/en/product-functions/3-tier-
architecture.html
[12] https://www.finereport.com/en/product-functions/3-tier-
architecture.html
[13] https://hevodata.com/learn/rabbitmq-durable/
[14] https://opensource.google/projects/angular
[15] https://git-scm.com/
[16] https://www.rabbitmq.com/
64
BIBLIOGRAPHY
[17] https://www.productplan.com/glossary/jira/
[18] https://www.app.diagrams.net/
[19] https://snapcraft.io/pycharm-professional
[20] https://lp.jetbrains.com/webstorm-ide/
[21] https://www.djangoproject.com/
[22] https://pip.pypa.io/en/stable/
[23] https://docs.npmjs.com/about-npm
[24] https://www.postgresql.org/about/
[25] https://www.adminer.org/
[26] https://swagger.io/tools/swagger-ui/
[27] https://www.docker.com/
[28] https://en.wikipedia.org/wiki/Overleaf
65
Appendix A
Appendix
66
APPENDIX A. APPENDIX
67
68
APPENDIX A. APPENDIX
Abstract
Resumé
69
APPENDIX A. APPENDIX
g
éC
©J¯ñ ZAJK ñë @ Yë h Qj JË@ ¨ðQåÖÏ úæJKQË@
ø
YË@
JË@ ÐA¢ ú
Gð QºË@
PAêk . . .
¬YêË@
ñÖ
Ï @ HAg
é . Ê¢JÓ èA«@QÓ PAJ.J«B@ ú¯ Y g
AK
I.K
ð J
J.¢ áÓ
. AJ
Jk@ð HAJ JK
àñº
©J¯ñ Ê£ ©JKð èP@XAK á Ëð ñÒÊË
®ÊÓð
HA
JË@ HAJ . . .
®J
J.¢JË@ iÒ ZBñë
HA
. é®J
Ö Ï @
àðQK
á ÓYj JÖÏ @ð , ÑêªK PAÓð
J Ó
ÑîE@Y
YK
AÖÏ A£ Õæ
AK. HAJ . ʣ ZA B
Ñê¯Q¯ ©J.JË
QK ñ¢ Õç' È@ . éªK
Ð@Yj JAK. J
J.¢JË@ @ Yë
Qå
ð éÊîD
70