IOT Unit 2
IOT Unit 2
Introduction:- A few conventional methods for data collection and storage are as
follows:
● Saving devices’ data at a local server for the device nodes
● Communicating and saving the devices’ data in the files locally on removable media,
such as micro SD cards and computer hard disks
● Communicating and saving the data and results of computations in a dedicated data
store or coordinating node locally
● Communicating and saving data at a local node, which is a part of a distributed DBMS
● Communicating and saving at a remote node in the distributed DBMS
● Communicating on the Internet and saving at a data store in a web or enterprise
server
● Communicating on the Internet and saving at data centre for an enterprise
DaaS means Data as a Service. Data at a data centre is made available to a user or
developer of application on demand. DaaS is a service model where the data store or
data warehouse is made available through the Internet on demand on rent (pay as per
use in multi tenancy model) to an enterprise. The data centre management, 24×7
power, control, network, maintenance, scale up, data replicating and mirror nodes and
systems as well as physical security are the responsibilities of the data centre service
provider.
Give examples of SaaS, PaaS, IaaS, DaaS service models for cloud computing. Solution
● SaaS Applications of Google Docs for online office, MS Windows Live for online office
applications, MS Exchange Labs, TCS iON (Integrated IT-as-a-Service), Salesforce.com for
extensible Customer Relations Management (CRM) system.
● PaaS SuiteFlex for business process development NetSuite tools, MS Azure for
Windows applications programming and execution environment, server platforms of
EC2 and GoGrid, application platforms of Force Com, Google App engine for scalable
execution environment for web applications, and TCS platform BPO solutions, Xively,
Nimbits, AWS IoT, IBM IoT Foundation, Cisco IoT, IOx and Fog, TCS CUP.
● IaaS infrastructure services—Amazon Virtual Servers, GoGrid virtual servers, Elastic
Computing Cloud (EC2), Cloud.com open source IaaS, TCS Transformation Solutions,
Cisco IaaS, and IBM BlueCloud shared infrastructure service that automate fluctuating
demands for the IT resources.
● DaaS Data storage platforms of Tata Communications 10 X, Apple and Cisco for the
DaaS.
Data Points :-A data point means a collected value of a sensor in a group of sensors.
Data points organise the data in a number of ways. For example, points can have child
points (child points mean subpoints; for example, if light level is a data point then light
on or off is a child point and light level above or below the threshold can be another
child point.) Points can be in the folders. The folders can go as deep as like in a tree
(Tree means a folder having several subfolders, a subfolder having several subfolders,
till the leaf subfolder.) Any type of document can upload and organise them with the
points. Files can be shared publicly or with the connections. A subscription data feed is a
special point for each user that logs system messages, events, alerts from other points
which are subscribed by a service and more.
Data Channels :-A user can create a data feed channel which shows the system events
and messages that also shows data alerts which are subscribed to show up in the feed.
The user can subscribe to the data point of other users also, and configure the
subscription(s) to send messages to the feed. The user can observe the idle, high or low
alerts here in real time. The user data feed is just another Nimbits data point.
Designing software for an IoT (Internet of Things) application involves several key
considerations to ensure the efficient operation and seamless integration of devices,
data, and services. Here's a structured approach to designing software for IoT
applications:
1. Identify Requirements:
Understand the specific use case and objectives of the IoT application.
Identify the types of devices involved, communication protocols, data formats,
and expected interactions.
Determine performance, scalability, security, and reliability requirements.
2. Select Suitable Platforms and Technologies:
Choose appropriate hardware platforms for sensors, actuators, gateways, and
other devices.
Select communication protocols such as MQTT, CoAP, or HTTP based on factors
like bandwidth, latency, and reliability.
Decide on cloud platforms, edge computing solutions, or hybrid approaches
based on data processing and storage requirements.
3. Design Data Architecture:
Plan data collection, storage, processing, and analytics pipelines.
Define data models and schema for efficient storage and retrieval.
Consider data encryption, compression, and optimization techniques to minimize
bandwidth and storage requirements.
4. Develop Device Firmware:
Write firmware for IoT devices to collect sensor data, control actuators, and
communicate with other devices and servers.
Implement error handling, power management, and firmware update
mechanisms.
Ensure compatibility with selected communication protocols and security
standards.
5. Implement Communication Layer:
Develop APIs and protocols for device-to-cloud, device-to-device, and cloud-to-
cloud communication.
Handle network connectivity issues, retries, and synchronization.
Incorporate security measures such as authentication, authorization, and
encryption.
6. Build Backend Infrastructure:
Set up servers, databases, and middleware components for data ingestion,
processing, and storage.
Develop microservices or serverless functions for specific tasks like data
transformation, analytics, or notifications.
Implement mechanisms for device management, monitoring, and
troubleshooting.
7. Design User Interfaces and Applications:
Develop web or mobile applications for users to interact with IoT devices and
access data and insights.
Design intuitive interfaces for device configuration, monitoring, and control.
Ensure cross-platform compatibility and responsiveness for various devices and
screen sizes.
8. Ensure Security and Privacy:
Employ encryption, authentication, and access control mechanisms to protect
data and devices from unauthorized access and tampering.
Follow best practices for secure coding, infrastructure hardening, and
vulnerability management.
Address privacy concerns related to data collection, processing, and sharing.
9. Test and Validate:
Conduct thorough testing of the entire system, including device functionality,
communication protocols, backend services, and user interfaces.
Perform integration testing, stress testing, and security audits to identify and
address potential issues.
Collect feedback from stakeholders and end-users to iterate and improve the
software.
10. Deploy and Maintain:
Deploy the software to production environments, considering scalability,
redundancy, and disaster recovery.
Establish monitoring and alerting systems to detect and respond to performance
issues, security threats, and anomalies.
Provide regular updates, patches, and enhancements to keep the software up-to-
date and secure over time.
EMBEDDED PLATFORMS FOR PROTOTYPING
Designing a product needs a prototype development first. A standard source board
enables prototyping, an easy task for number of IoT and M2M devices. This is because
of the open source availabilities of IDE, middleware and software components from
number of sources and forums for the board. Several standard popular boards, modules
and supporting circuits (shields) are available from a number of sources. Following
subsections describe the features and usages of Arduino, Intel® Galileo and Edison,
Raspberry Pi, BeagleBone and mBed boards. A board uses MCU as embedding platform
for creating the IoT, M2M and wearable devices.
1. Define Requirements: Clearly define the requirements for your embedded device
software. Understand what the device needs to do, its constraints (memory, processing
power, energy consumption, etc.), and any external interfaces it needs to support.
2. Select Development Tools: Choose the appropriate development tools for your
project. This might include an Integrated Development Environment (IDE) tailored for
embedded systems, compilers, debuggers, and simulation tools.
3. Choose a Development Platform: Select a development platform that matches your
target embedded hardware. This might be an evaluation board provided by the
hardware manufacturer or a development kit specifically designed for prototyping
embedded software.
4. Design the Software Architecture: Create a high-level design of your software
architecture. Identify the main components, their interactions, and the overall flow of the
system. Consider factors such as modularity, scalability, and maintainability.
5. Start with Basic Functionality: Begin by implementing the basic functionality of your
embedded device software. Focus on core features and functionalities that are essential
for the device to operate.
6. Use Simulation and Emulation: If possible, use simulation or emulation tools to test
your software before running it on the actual hardware. This can help identify and fix
issues early in the development process.
7. Iterate and Refine: Iterate on your design, implementing additional features and
refining existing ones based on feedback and testing results. Make sure to regularly test
your software on the target hardware to ensure compatibility and performance.
8. Optimize for Resource Constraints: Keep in mind the resource constraints of
embedded devices, such as limited memory and processing power. Optimize your code
to minimize resource usage while still meeting the required functionality.
9. Implement Error Handling and Edge Cases: Implement robust error handling
mechanisms and consider edge cases that might arise during operation. Ensure that
your software can gracefully handle unexpected situations and recover from errors.
10. Document Your Work: Document your software design, implementation details, and
any important decisions made throughout the development process. This
documentation will be valuable for future reference and maintenance.
11. Test Thoroughly: Thoroughly test your embedded device software to ensure its
reliability, performance, and security. This includes functional testing, integration testing,
and possibly even stress testing depending on the requirements of your application.
12. Gather Feedback: Gather feedback from stakeholders and end users to identify any
areas for improvement or additional features that may be needed.
Programming embedded devices using the Arduino platform is a popular choice due to
its simplicity and ease of use. Here's a step-by-step guide on how to program an
embedded device using the Arduino IDE:
1. Install the Arduino IDE: Download and install the Arduino IDE from the official website
(https://www.arduino.cc/en/software). The IDE is available for Windows, macOS, and
Linux.
2. Connect Your Arduino Board: Connect your Arduino board to your computer using a
USB cable. Ensure that the necessary drivers are installed if you're using Windows.
3. Launch the Arduino IDE: Open the Arduino IDE once it's installed on your computer.
4. Select Your Board: Go to the "Tools" menu, then select "Board" and choose the
appropriate board from the list. If you're unsure, select the board model you're using
(e.g., Arduino Uno, Arduino Nano, etc.).
5. Select the Port: Still in the "Tools" menu, navigate to "Port" and select the port to which
your Arduino board is connected. On Windows, it will usually be something like COM3,
COM4, etc. On macOS, it will typically appear as "/dev/cu.usbmodemXXXX".
6. Create a New Sketch: In the Arduino IDE, a sketch is a program. Click on "File" > "New"
to create a new sketch.
7. Write Your Code: Write your Arduino code in the sketch window. The code consists of
two main functions: setup() and loop(). The setup() function runs once when the
board starts, while the loop() function runs continuously.
8. Verify/Compile Your Sketch: Click on the checkmark icon (or go to "Sketch" >
"Verify/Compile") to verify your code. This step checks for any syntax errors in your
code.
9. Upload Your Sketch: Once your code compiles successfully, click on the right arrow
icon (or go to "Sketch" > "Upload") to upload your sketch to the Arduino board. The
Arduino IDE will compile your code again and then upload it to the board.
10. Monitor Serial Output (Optional): If your sketch includes Serial communication, you
can monitor the output using the Serial Monitor. Go to "Tools" > "Serial Monitor" to
open the Serial Monitor window.
11. Test Your Program: Once uploaded, your program will start running on the Arduino
board. Test it to ensure it behaves as expected.
12. Iterate and Refine: Make any necessary changes to your code based on testing results
or additional requirements. Repeat the process of verifying, uploading, and testing until
you're satisfied with the functionality of your program.
1. Identify the Sensor/Device: Determine the type of sensor or device you're working with
and its specifications. This will help you understand how to interface with it.
2. Prepare Hardware: Connect the sensor and device to your Arduino board according to
their specifications, ensuring proper power and data connections.
3. Install Libraries (if needed): If the sensor or device requires a specific library for
Arduino, install it using the Arduino Library Manager to simplify interfacing.
4. Include Libraries: At the start of your Arduino sketch, include the necessary libraries
using #include directives to access their functions and constants.
5. Initialize Serial Communication: Set up serial communication via Serial.begin() in
the setup() function for debugging and data transmission to the serial monitor.
6. Initialize Sensor/Device: In the setup() function, initialize the sensor or device by
configuring settings, calibration, or any required setup procedures.
7. Read Data: In the loop() function, use appropriate functions from the sensor/device
library to request and read data. This may involve sending commands or requests over
the communication protocol.
8. Check Data Availability: Verify data availability using methods provided by the
sensor/device library. Ensure data buffers are filled before attempting to read.
9. Read and Process Data: Read data from the sensor/device buffers and process it as
necessary for your application. This could include data conversion, scaling, or filtering.
10. Display or Transmit Data: Utilize the processed data as required by your project.
Display it on an LCD screen, transmit it wirelessly over Bluetooth or WiFi, or store it in
memory for later retrieval.
11. Error Handling: Implement error handling mechanisms to handle communication errors
or sensor failures gracefully. This may include timeout mechanisms, retry strategies, or
error codes.
12. Iterate and Test: Test your code thoroughly, iterating as needed to refine functionality
and ensure reliability. Check for edge cases and unexpected scenarios to make your
system robust.
Software, such as Eclipse IoT, enable the development of software for the first, second
and third levels. The software enables the device gateways connectivity to the Internet
and cloud server. Eclipse IoT enables open source implementations of IoT protocols. The
implementable protocols include MQTT CoAP, OMA-DM and OMA LWM2M and
Internet connectivity protocols.
IOT Security:-
IOT Privacy:-
Ensuring privacy in IoT (Internet of Things) environments is crucial to safeguarding
sensitive data and maintaining user trust. Here are key aspects to consider for IoT
privacy:
1. Data Minimization: Collect and retain only the minimum amount of data necessary for
the intended purpose. Limit data collection to what is required for device functionality
and avoid collecting unnecessary or sensitive information.
2. Anonymization and Pseudonymization: Anonymize or pseudonymize data where
possible to protect user privacy. Replace personally identifiable information (PII) with
anonymized identifiers or pseudonyms to prevent the identification of individuals.
3. User Consent and Control: Obtain informed consent from users before collecting,
processing, or sharing their data. Provide users with clear and transparent information
about data collection practices and allow them to exercise control over their data
through consent mechanisms.
4. Data Encryption: Encrypt sensitive data both in transit and at rest to prevent
unauthorized access. Use strong encryption algorithms and secure communication
protocols to protect data confidentiality and integrity.
5. Privacy by Design: Incorporate privacy considerations into the design and development
of IoT systems from the outset. Follow principles of Privacy by Design (PbD) to
proactively address privacy risks and embed privacy-enhancing features into IoT
architectures.
6. Secure Data Storage and Processing: Implement secure data storage and processing
practices to protect data from unauthorized access or disclosure. Store data in
encrypted formats and employ secure access controls to restrict access to authorized
users only.
7. Data Lifecycle Management: Establish clear policies and procedures for managing the
lifecycle of IoT data, including data collection, retention, and deletion. Regularly review
and purge unnecessary data to minimize privacy risks and compliance with data
protection regulations.
8. Transparency and Accountability: Be transparent about data processing practices and
accountable for how data is used within the IoT ecosystem. Provide users with visibility
into data collection activities and mechanisms for exercising their privacy rights.
9. Third-party Data Sharing: Exercise caution when sharing IoT data with third parties and
ensure that appropriate safeguards are in place to protect user privacy. Implement data
sharing agreements and conduct privacy assessments of third-party partners to mitigate
privacy risks.
10. IoT Device Privacy Settings: Provide users with privacy settings and controls to
customize their preferences for data collection and sharing. Allow users to opt-out of
certain data collection activities or adjust privacy settings according to their preferences.
11. Security and Privacy Training: Educate stakeholders, including device manufacturers,
developers, and end-users, about the importance of privacy in IoT environments.
Provide training on privacy best practices, security measures, and compliance
requirements to raise awareness and promote privacy-conscious behavior.
12. Regulatory Compliance: Ensure compliance with relevant privacy regulations and
standards, such as the General Data Protection Regulation (GDPR) or the California
Consumer Privacy Act (CCPA). Understand the legal requirements for data protection
and privacy in IoT deployments and take steps to comply with applicable laws and
regulations.
Vulnerabilities:-
The Internet of Things (IoT) introduces a wide range of vulnerabilities due to the
interconnected nature of devices, the diversity of communication protocols, and the
often limited resources of IoT devices. Here are some common vulnerabilities in IoT:
1. Insecure Communication: IoT devices may transmit data over unencrypted channels or
use weak encryption methods, making them susceptible to eavesdropping, data
interception, and man-in-the-middle attacks.
2. Weak Authentication: Many IoT devices use default or easily guessable credentials,
making them vulnerable to brute force attacks and unauthorized access. Weak
authentication mechanisms can allow attackers to gain control of devices and
compromise the entire IoT network.
3. Lack of Secure Updates: IoT devices often lack mechanisms for secure firmware
updates, leaving them vulnerable to known vulnerabilities that remain unpatched.
Without the ability to update firmware securely, devices may remain vulnerable to
exploits for extended periods.
4. Insecure Web Interfaces: Web interfaces used for device management and
configuration may have security weaknesses such as cross-site scripting (XSS), cross-site
request forgery (CSRF), or injection vulnerabilities. Attackers can exploit these
vulnerabilities to gain unauthorized access to devices or manipulate their settings.
5. Insufficient Encryption: IoT devices may store sensitive data locally or transmit it over
the network without adequate encryption. Weak encryption or the lack of encryption
can expose sensitive information to unauthorized access or tampering.
6. Physical Tampering: Physical access to IoT devices can pose a significant security risk.
Attackers may physically tamper with devices to extract sensitive information, modify
device behavior, or compromise their integrity.
7. Denial of Service (DoS) Attacks: IoT devices may be susceptible to DoS attacks, where
attackers overwhelm them with excessive traffic or requests, causing them to become
unresponsive or malfunction. DoS attacks can disrupt IoT services and affect the
availability of devices.
8. Privacy Concerns: Many IoT devices collect and transmit personal or sensitive data,
raising privacy concerns. Inadequate data protection measures can expose this data to
unauthorized access, leading to privacy breaches and violations of user privacy rights.
9. Supply Chain Vulnerabilities: IoT devices often rely on components and software from
third-party vendors, introducing supply chain vulnerabilities. Compromised or
counterfeit components can introduce backdoors, malware, or other security
vulnerabilities into IoT devices.
10. Network Vulnerabilities: IoT devices may be connected to insecure or poorly
configured networks, increasing the risk of network-based attacks. Vulnerabilities in
network infrastructure, such as insecure Wi-Fi routers or unpatched servers, can also
expose IoT devices to additional risks.
11. Resource Constraints: IoT devices typically have limited computational resources,
making it challenging to implement robust security measures. Constraints such as
limited memory, processing power, and energy consumption may lead to security
vulnerabilities and design trade-offs.
12. Lack of Security Awareness: Users and manufacturers may lack awareness of IoT
security best practices and the importance of securing IoT devices. Without proper
education and training, users may inadvertently expose devices to security risks or fail to
implement necessary security measures.
Addressing these vulnerabilities requires a holistic approach that involves secure design
practices, regular security assessments, timely software updates, and ongoing
monitoring and mitigation efforts. It's essential for IoT stakeholders, including
manufacturers, developers, and end-users, to collaborate and prioritize security
throughout the entire IoT ecosystem.
1. Identify Assets: Identify the assets within the IoT ecosystem, including devices,
networks, data, and services. Understand the value and criticality of each asset to
prioritize security efforts.
2. Define Security Requirements: Define security requirements based on the identified
assets, potential threats, and regulatory compliance requirements. Security requirements
should address confidentiality, integrity, availability, authentication, authorization, and
non-repudiation.
3. Threat Modeling: Conduct a threat modeling exercise to identify potential threats and
vulnerabilities that could impact the security of the IoT system. Consider threats such as
unauthorized access, data breaches, denial of service (DoS) attacks, physical tampering,
and insider threats.
4. Risk Assessment: Assess the likelihood and potential impact of each identified threat
on the IoT system. Use risk assessment methodologies such as risk matrices or
qualitative/quantitative risk analysis to prioritize threats based on their severity and
likelihood.
5. Security Controls: Identify and implement security controls to mitigate identified
threats and vulnerabilities. Security controls may include encryption, access control
mechanisms, secure authentication, network segmentation, intrusion detection systems,
and security monitoring.
6. Secure Design Principles: Apply secure design principles throughout the development
lifecycle of IoT systems. Consider principles such as least privilege, defense-in-depth,
fail-safe defaults, secure by default, and separation of concerns to build resilience
against security threats.
7. Secure Development Practices: Adopt secure development practices to minimize the
introduction of vulnerabilities during the development of IoT devices and applications.
Conduct secure code reviews, static and dynamic code analysis, and vulnerability
assessments to identify and remediate security issues.
8. Secure Configuration Management: Implement secure configuration management
practices to ensure that IoT devices and systems are configured securely. This includes
changing default passwords, disabling unnecessary services, and applying security
patches and updates regularly.
9. Continuous Monitoring: Establish continuous monitoring mechanisms to detect and
respond to security incidents in real-time. Monitor IoT devices, networks, and
applications for suspicious activity, anomalies, and security events, and implement
incident response procedures to mitigate risks.
10. Security Awareness Training: Provide security awareness training to IoT stakeholders,
including developers, administrators, and end-users. Educate stakeholders about
security best practices, common threats, and their roles and responsibilities in
maintaining the security of IoT systems.
11. Compliance and Auditing: Ensure compliance with relevant security standards,
regulations, and industry guidelines applicable to IoT deployments. Conduct periodic
security audits and assessments to verify compliance with security requirements and
identify areas for improvement.
12. Security Governance: Establish a security governance framework to oversee and
manage security activities within the IoT ecosystem. Define roles, responsibilities,
policies, and procedures for managing security risks effectively and ensuring
accountability across the organization.
By following this framework for security requirement threat analysis in IoT, organizations
can identify and mitigate security risks effectively, thereby enhancing the security
posture of IoT systems and protecting against potential threats and vulnerabilities.
"IoT security tomography" isn't a widely recognized term in the field of IoT security.
However, if we interpret it as a metaphorical concept, it could refer to gaining a
comprehensive understanding of the security posture of an IoT ecosystem through
thorough analysis and examination, similar to the way medical tomography (such as CT
scans) provides detailed images of the human body.
In the context of IoT security, achieving a holistic view of the security landscape involves
various aspects, including:
1. Device Security: Assessing the security of individual IoT devices, including their
hardware, firmware, and software. This includes evaluating authentication mechanisms,
encryption protocols, update mechanisms, and physical security features.
2. Network Security: Analyzing the security of the network infrastructure supporting IoT
devices, including wireless protocols, routers, gateways, and cloud services. This
involves assessing network segmentation, access control policies, encryption methods,
and intrusion detection systems.
3. Data Security: Ensuring the confidentiality, integrity, and availability of data generated
and transmitted by IoT devices. This includes implementing encryption, access control,
data anonymization, and data lifecycle management practices to protect sensitive
information.
4. Application Security: Evaluating the security of IoT applications and platforms used to
manage and interact with IoT devices. This involves assessing authentication
mechanisms, API security, session management, and input validation to prevent common
web application vulnerabilities.
5. Physical Security: Addressing physical security concerns related to IoT devices, such as
tamper resistance, anti-tampering mechanisms, and protection against theft or
unauthorized access to devices.
6. Regulatory Compliance: Ensuring compliance with relevant privacy regulations,
industry standards, and best practices governing IoT security. This includes adhering to
standards like ISO/IEC 27001, NIST Cybersecurity Framework, GDPR, CCPA, and
others applicable to IoT deployments.
7. Threat Intelligence: Leveraging threat intelligence sources to identify and mitigate
emerging threats targeting IoT devices and networks. This involves monitoring threat
actors, vulnerabilities, and attack vectors relevant to IoT ecosystems and proactively
implementing countermeasures.
8. Incident Response Preparedness: Developing incident response plans and procedures to
effectively detect, respond to, and recover from security incidents in IoT environments.
This includes establishing incident detection mechanisms, escalation procedures,
and communication protocols.
9. Security Awareness and Training: Educating stakeholders, including device
manufacturers, developers, administrators, and end-users, about IoT security risks and
best practices. This involves providing security awareness training, conducting security
drills, and fostering a culture of security awareness within organizations.
10. Continuous Improvement: Implementing a continuous improvement process to
regularly review and enhance the security posture of IoT systems. This includes
conducting security audits, penetration testing, vulnerability assessments, and applying
lessons learned from security incidents.
Following are the suggested solutions for mitigating the attacks on the layers (OSI
modified six layers IoT Architecture).
Programming the network switches to prevent internal node attacks during use of
DHCP or Spanning Tree Protocol (STP). Additional controls may include ARP inspection,
disabling unused ports and enforcing effective security on VLAN’s (Virtual LAN) to
prevent VLAN hopping. VLAN refers to a group of end stations with a common set of
requirements, independent of a physical location.14 VLANs have the same attributes as
a physical LAN but allow you to group end stations even if they are not located
physically on the same LAN segment.
LWM2M OMA specification for device gateway to the Internet has provisions for MAS
for security, root key data store, and devices and data authentication.
Use of temper resistant router, use of packet filtering and controlling routing messages
and packets data between layers 3 and 4 through a firewall reduces the risks.
Port scanning method is a solution which identifies the vulnerable port. A solution is the
opening of network ports and configuring effectively the firewall, and locking down
ports only to those required. A solution is DTLS between layers 5 and 4. The DTLS has
provisions for three types of security services, viz. integrity, authentication and
confidentiality. A solution is include SASL (Simple Authentication and Security Layer) for
security when using the XMPP protocol.
Above layer 4, we are looking primarily at application-level attacks which are results of
poor coding practices. Assume an attacker injects the SQL input to extract data from the
database (e.g. SELECT * from USERS). When the application fails to validate the
injection, the query extracts the data.
Web applications/services can use HTTPS communication link. The features of S-HTTP
(Secure HTTP) are as follows:
● Application-level security (HTTP specific)
● Server-client negotiations