Secure, Private and Ethical Mobile DevelopmentIntroductionMobile applications process highly sensitive information while operating on devices that are frequently lost, shared, rooted, jailbroken, connected to hostile networks, and integrated with sensors such as cameras, microphones, location services, contacts, and biometric systems. Security therefore cannot be treated as a final testing activity. Privacy and ethics are similarly not merely legal matters; they influence requirements, interface design, architecture, data management, deployment, and maintenance. A secure mobile application protects confidentiality, integrity, availability, authenticity, and accountability. A private application collects and uses personal information lawfully, transparently, proportionately, and in accordance with user expectations. An ethical application respects human autonomy, avoids manipulation, protects vulnerable users, and provides meaningful control over data and decisions. This chapter presents a practical and analytical approach to secure, private, and ethical mobile development. It combines threat modeling, secure storage, cryptography, transport security, identity and access management, code hardening, privacy-by-design, child safety, regulation, and responsible governance. Learning ObjectivesBy the end of this chapter, students should be able to: - Explain the security, privacy, and ethical risks of mobile applications.
- Construct a basic threat model using assets, actors, attack surfaces, threats, and mitigations.
- Select appropriate methods for secure storage, encryption, transport protection, and authentication.
- Apply secure coding and code-hardening practices.
- Design consent, data minimization, retention, and user-control mechanisms.
- Identify dark patterns, child-safety risks, and regulatory obligations.
- Evaluate a mobile application using a risk-based governance process.
1. The Mobile Security and Privacy ContextA mobile application normally consists of a client running on a device, backend services, identity providers, databases, analytics systems, notification services, and third-party software development kits (SDKs). The client should be considered a potentially compromised environment. An attacker may inspect the application package, modify its runtime behavior, extract local data, abuse exported components, intercept poorly protected traffic, or exploit weaknesses in backend APIs. The principal security objectives are: - Confidentiality: only authorized parties can access information.
- Integrity: information and operations are not altered improperly.
- Availability: legitimate users can access required services.
- Authenticity: users, devices, services, and messages are genuine.
- Accountability: significant actions can be traced to responsible identities without creating excessive surveillance.
Privacy extends beyond confidentiality. Information can be private even when it is securely stored. For example, an application may encrypt a user’s location data yet collect it continuously without a justified purpose or meaningful consent. Privacy concerns the collection, purpose, use, disclosure, retention, and deletion of personal information. Ethics addresses whether a design is fair, respectful, and socially responsible. A feature can be technically legal but ethically problematic, such as making cancellation difficult, using a child’s behavioral data for advertising, or presenting a biased automated decision without an explanation or appeal mechanism. Important terminology- Asset: something valuable that requires protection, such as credentials, payment data, or service availability.
- Threat: a potential cause of harm.
- Vulnerability: a weakness that can be exploited.
- Exploit: a technique or code that takes advantage of a vulnerability.
- Control: a safeguard that reduces likelihood or impact.
- Attack surface: the collection of interfaces through which an attacker may interact with a system.
- Personal data: information relating to an identified or identifiable person.
- Sensitive data: information requiring heightened protection because misuse could cause substantial harm.
- Data controller or equivalent organization: an entity determining why and how personal data is processed.
- Data processor or service provider: an entity processing data on behalf of another organization.
2. Threat Modeling as a Design ActivityThreat modeling is a structured method for anticipating misuse before implementation. It should be repeated when requirements, dependencies, APIs, or data flows change. A useful process is: - Define the system and its security objectives.
- Identify assets and trust boundaries.
- Draw data flows between the device, services, users, and third parties.
- Enumerate threats and abuse cases.
- Estimate risk.
- Select mitigations and assign owners.
- Validate the model through testing and review.
A simple risk model is: Risk = Likelihood × Impact Likelihood expresses how probable exploitation or occurrence is, and impact expresses the resulting harm. If a five-point scale is used, both values must be defined consistently—for example, 1 meaning very low and 5 meaning very high. The product is a prioritization aid, not a scientifically precise probability. It should not be compared across projects unless the scales and assumptions are equivalent. Threats may be organized using STRIDE: | Category | Meaning | Mobile example |
|---|
| Spoofing | Pretending to be another identity | Stolen session token | | Tampering | Unauthorized modification | Altered payment request | | Repudiation | Denying an action | No reliable audit record | | Information disclosure | Unauthorized exposure | Unencrypted database backup | | Denial of service | Preventing legitimate use | API flooding | | Elevation of privilege | Gaining excessive authority | Ordinary user invoking an administrator endpoint |
A data-flow diagram should identify where trust changes. For example, data received from a device should not be trusted merely because it came from the official application. The backend must authenticate the request, authorize the operation, validate input, and enforce business rules independently. Worked threat-model exampleConsider a mobile health application that records symptoms and sends them to a cloud service. Assets include health records, account credentials, access tokens, and service availability. Threat actors include a malicious application on the same device, a remote attacker, a dishonest user, and a compromised third-party SDK. One threat is unauthorized disclosure through screenshots or notification previews. A mitigation may include masking sensitive screens, disabling sensitive notification content, and allowing the user to control notifications. Another threat is an attacker changing a medication entry by calling the API directly. The mitigation is server-side authorization, input validation, immutable audit events, and testing that the client cannot bypass business rules. The analysis demonstrates an important principle: a mobile client is part of the attack surface, not a trusted enforcement point. Controls affecting money, health, access rights, or legal status must be enforced by trusted backend components. 3. Secure Storage and CryptographyData classification and minimizationThe safest sensitive data is data that is not collected or retained. Before storing a field, developers should ask: - Is it necessary for a defined function?
- Can the function operate with less precision or fewer identifiers?
- How long must it be retained?
- Who needs access?
- What happens if it is disclosed?
Data should be classified, for example, as public, internal, confidential, or highly sensitive. Classification determines storage, access, logging, retention, and deletion controls. Platform-protected storageMobile platforms provide protected storage mechanisms backed, where available, by hardware security facilities. Applications should use platform key stores or keychains for secrets such as encryption keys, refresh tokens, and private keys. Credentials should not be placed in source code, application resources, logs, preferences, or unencrypted local databases. A secure design distinguishes between data and keys. Encrypting a database with a key stored beside the database offers limited protection. Keys should be generated using a cryptographically secure random generator, stored in a platform-protected key store, restricted by purpose, and rotated or revoked when appropriate. Encryption conceptsSymmetric encryption uses the same secret key for encryption and decryption. Authenticated encryption modes, such as AES-GCM or ChaCha20-Poly1305, provide confidentiality and integrity together. Nonces or initialization vectors must be unique under a given key; they do not normally need to be secret, but accidental reuse can be catastrophic for some modes. Asymmetric cryptography uses a public/private key pair. It supports digital signatures, key agreement, and certificate-based authentication. Private keys must remain protected. Public-key operations are usually more computationally expensive than symmetric operations, so protocols commonly use asymmetric methods to establish or protect a symmetric session key. Hash functions map input to a fixed-size digest. A secure hash is one-way for practical purposes and resistant to collisions. Hashing is appropriate for integrity checks and, with a password-specific construction, for password verification. Ordinary fast hashing is not appropriate for storing passwords because attackers can test enormous numbers of guesses rapidly. Passwords should be processed with a memory- and computation-expensive password hashing function such as Argon2id, scrypt, or an appropriately configured platform-approved alternative, using a unique salt per password. Encryption does not solve every security problem. It does not prevent an authorized but malicious user from reading decrypted information, protect against incorrect authorization, or make excessive collection ethical. 4. Transport Security and API ProtectionAll sensitive communication should use modern authenticated transport security, normally HTTPS using current TLS configurations. Developers should not disable certificate validation to solve development errors. Trusting any certificate, accepting hostname mismatches, or silently falling back to plaintext creates interception opportunities. Transport security should be combined with application-layer controls: - Authenticate services and users.
- Authorize every sensitive operation on the server.
- Validate types, ranges, lengths, and business constraints.
- Use replay protection where repeated requests could cause harm.
- Apply rate limits and abuse detection.
- Avoid placing secrets in URLs, which may appear in logs and browser history.
- Return generic error messages to clients while retaining appropriate internal diagnostic detail.
- Keep dependencies and server libraries patched.
Certificate pinning can reduce reliance on public certificate authorities in selected threat models, but it increases operational risk. Incorrect pins can disable an application, and certificate rotation becomes more complex. It should be adopted only when the organization can manage backup pins, rotation, incident response, and platform constraints. It is not a substitute for correct TLS validation. 5. Identity, Authentication, and AuthorizationIdentification claims an identity; authentication verifies it; authorization determines what that identity may do. These must not be conflated. A valid login does not imply permission to access every record. Strong authentication may combine: - Something the user knows, such as a password or PIN.
- Something the user has, such as a registered device or security key.
- Something the user is, such as a biometric characteristic.
Biometric systems generally provide local user verification rather than a secret that the application can reproduce. Applications should use platform biometric APIs and avoid collecting raw biometric data. A fallback method is necessary because biometrics may be unavailable, changed, or unsuitable for some users. Session management should use short-lived access tokens, protected refresh tokens, secure logout and revocation, inactivity controls where appropriate, and device/session visibility. Tokens should be scoped to the minimum required permissions. The backend must verify token signature, issuer, audience, expiry, and relevant claims. Authorization should follow least privilege and deny by default. Role-based access control assigns permissions to roles; attribute-based access control evaluates attributes such as ownership, department, location, or transaction value. Regardless of model, authorization must be performed on the server for every relevant object and operation. Developers should test for insecure direct object references, where a user changes an identifier and obtains another user’s resource. 6. Secure Coding and Code HardeningSecure coding reduces defects before they become vulnerabilities. Practices include: - Validate input using allowlists and strict schemas.
- Encode output in the context where it will be interpreted.
- Use parameterized database queries.
- Avoid dynamic code evaluation and unsafe deserialization.
- Handle errors without exposing secrets or internal architecture.
- Avoid logging passwords, tokens, health information, or unnecessary identifiers.
- Check third-party SDK permissions and data practices.
- Keep dependencies current and monitor vulnerability advisories.
- Remove debug interfaces, test credentials, verbose logs, and development endpoints from release builds.
- Protect signing keys and build pipelines.
- Use static analysis, dependency scanning, secret scanning, peer review, and penetration testing.
Obfuscation can make reverse engineering more difficult, but it is not a security boundary. A determined attacker may still inspect behavior at runtime. The application must therefore assume that client code and embedded constants can eventually be discovered. Secrets that protect backend authority belong on the server or in a properly managed key system, not inside the package. A secure development lifecycle integrates security into requirements, design, coding, testing, release, monitoring, and retirement. Security testing should include both ordinary use and abuse cases, such as replaying requests, changing object identifiers, submitting malformed input, running on compromised devices, and attempting access after logout. 7. Privacy by Design and Data GovernancePrivacy by design means that privacy is built into architecture and defaults rather than added after deployment. Core principles include: - Purpose limitation: collect and use data for specified legitimate purposes.
- Data minimization: collect only what is necessary.
- Accuracy: allow correction of inaccurate information.
- Storage limitation: retain information only as long as justified.
- Security: protect data proportionately to risk.
- Transparency: explain processing in clear, accessible language.
- User control: support access, correction, deletion, portability, and withdrawal where applicable.
- Accountability: document decisions and demonstrate compliance.
Consent should be informed, specific, freely given, and revocable where consent is the legal basis. A preselected checkbox, confusing wording, or access that is conditional on unrelated tracking may undermine meaningful consent. Consent records should include what was presented, when, how, and what choice was made. A permission request should occur at the moment it is needed, after explaining the benefit in plain language. An application should degrade gracefully if a nonessential permission is refused. A weather application may need approximate location for a forecast, but it should not request contacts or microphone access without a clear functional reason. Privacy engineering techniques include pseudonymization, aggregation, local processing, access separation, differential precision, and deletion automation. Pseudonymization replaces direct identifiers but does not necessarily make data anonymous; linkage with other information may re-identify individuals. Developers must therefore avoid making unsupported claims such as “anonymous” when the risk of re-identification remains. Privacy impact assessments are useful for high-risk processing. They identify data flows, affected people, purposes, threats, mitigations, residual risks, and approval decisions. Privacy notices should be layered: a short explanation at the point of collection can link to fuller technical and legal details. 8. Ethics, Dark Patterns, and Human AutonomyEthical design asks not only “Can this be implemented?” but also “Should it be implemented, for whom, and with what consequences?” Relevant values include autonomy, beneficence, non-maleficence, justice, accessibility, explainability, and respect for human dignity. Dark patterns are interface choices that steer people toward outcomes benefiting the service at the expense of informed choice. Examples include: - Making “accept all tracking” prominent while hiding “reject.”
- Requiring several screens to cancel but one tap to subscribe.
- Using confusing language or guilt to discourage refusal.
- Adding unwanted items or subscriptions by default.
- Presenting a countdown or false urgency.
- Making privacy settings difficult to find.
Ethical alternatives provide symmetrical choices, clear labels, reversible decisions, visible costs, and no deceptive urgency. Accessibility is part of ethical security: users with disabilities must be able to understand notices, complete authentication, and exercise privacy choices. Automated systems introduce additional risks. A mobile application that evaluates creditworthiness, health risk, employment suitability, or educational progression should address data quality, bias, explainability, human review, contestability, and monitoring for disparate impacts. Machine learning does not remove organizational responsibility; developers and owners remain accountable for the system’s effects. 9. Child Safety and Vulnerable UsersChildren and vulnerable users may have less ability to understand data practices, resist persuasion, or recover from harm. Applications directed to children should minimize collection, avoid behavioral advertising where prohibited or inappropriate, use age-appropriate language, provide parental or guardian controls where legally required, and design safe defaults. Safety measures may include private-by-default profiles, restricted direct messaging, reporting and blocking functions, moderation, abuse detection, rate limits, and careful handling of location and images. Age assurance itself can create privacy risks; organizations should select proportionate methods and avoid collecting more identity information than necessary. Child safety is not achieved by a single age gate. It requires product design, policy, moderation, incident response, staff training, and continuous evaluation. The same principle applies to older adults, people with cognitive disabilities, people in abusive relationships, and users with limited digital literacy. 10. Regulation and Responsible GovernanceLegal requirements vary by jurisdiction, sector, age group, and processing activity. Common regulatory themes include lawful processing, transparency, data-subject rights, security safeguards, breach response, children’s protection, cross-border transfers, and limits on sensitive data use. Examples of influential frameworks and laws include the GDPR, the California Consumer Privacy Act and related state laws, sector-specific health and payment rules, children’s privacy laws, and platform app-store policies. Developers must obtain current legal advice rather than treating a textbook summary as legal counsel. Governance converts principles into accountable practice. A responsible organization should maintain: - A data inventory and records of processing.
- Data-flow and threat models.
- A classification and retention schedule.
- Access-control reviews.
- Secure development standards.
- Supplier and SDK assessments.
- Incident-response and breach-notification procedures.
- User complaint and rights-request processes.
- Security and privacy training.
- Independent review for high-risk features.
A breach response plan should define detection, containment, investigation, eradication, recovery, communication, evidence preservation, and lessons learned. Organizations should avoid concealing incidents or blaming users when design or governance failures contributed to harm. 11. Applied Case: Illustrative Campus Wellbeing ApplicationBackgroundA university proposes a mobile application called WellConnect. Students can record mood, request counseling appointments, receive reminders, and optionally share limited information with a designated support team. ProblemThe initial design stores detailed mood histories indefinitely, requests continuous location, displays appointment details in lock-screen notifications, and permits any support employee to view all student records. An analytics SDK sends event data to a third party. The product team argues that broad collection will support future research and personalization. AnalysisThe assets include sensitive health-related information, identity data, appointment details, and student safety. Threats include unauthorized employee access, compromised accounts, device loss, notification disclosure, SDK leakage, coercive access by another person, and misuse of data for disciplinary decisions. Ethical risks include function creep, unequal effects on vulnerable students, and a chilling effect that discourages help-seeking. The risk assessment prioritizes access control, notification privacy, retention, and third-party data sharing. The application should not rely on the client to enforce permissions. Every record request must be authorized by the backend according to student consent, staff role, case assignment, and purpose. Approach and solutionThe revised design: - Collects only information needed for a selected service.
- Makes location optional and uses approximate location only when necessary.
- Stores keys in platform-protected storage and encrypts sensitive local data.
- Uses TLS and server-side authorization for all API operations.
- Provides private notification text such as “You have a new message.”
- Uses role- and purpose-based access with audit logs.
- Sets a defined retention period and supports deletion where appropriate.
- Separates service delivery data from approved, de-identified research datasets.
- Presents a clear consent screen with independent choices.
- Reviews the analytics SDK and disables unnecessary event collection.
- Provides export, correction, withdrawal, reporting, and emergency-support pathways.
- Tests abuse scenarios, including an employee attempting to access an unrelated student.
OutcomeThe revised design reduces the quantity and exposure of sensitive information, improves student control, and creates evidence for accountability. It may provide less aggressive personalization, but that is an intentional trade-off in favor of safety, trust, and proportionality. Learning pointsSecurity controls, privacy choices, and ethical outcomes are interconnected. Encryption cannot justify excessive collection; consent cannot justify insecure storage; and a well-written policy cannot compensate for a manipulative interface. Effective design aligns technical controls with human rights, institutional responsibilities, and realistic threats. 12. Contemporary Developments and Professional PracticeMobile security is changing through passkeys, hardware-backed keys, confidential computing, privacy-preserving analytics, software supply-chain controls, and on-device artificial intelligence. Passkeys can reduce password theft by using public-key authentication and platform-protected credentials. On-device processing can reduce data transfer, but developers must still examine model leakage, inference risk, and device compromise. Generative AI used in development can introduce insecure code, licensing uncertainty, privacy leakage, and undocumented dependencies. AI-generated code must undergo human review, testing, threat modeling, and license and secret scanning. Developers should not paste confidential source code, personal data, credentials, or incident information into an external model without authorization. A professional engineer treats security and privacy as continuous quality attributes. Useful measures include unresolved high-risk findings, time to remediate, percentage of critical APIs covered by authorization tests, dependency age, incident frequency, rights-request completion time, and the proportion of collected fields with documented purposes. Metrics should inform improvement rather than encourage teams to hide problems or maximize superficial compliance. Best-Practice ChecklistBefore release, a team should be able to answer “yes” to the following: - Have important assets, trust boundaries, threats, and abuse cases been documented?
- Are secrets absent from source code and release packages?
- Are sensitive local data and keys protected using platform capabilities?
- Is modern authenticated transport used without disabled certificate validation?
- Are authentication and authorization independently enforced by the backend?
- Are inputs validated and outputs safely encoded?
- Are logs, analytics, SDKs, and permissions minimized?
- Are consent and privacy choices clear, reversible, and non-manipulative?
- Are retention, deletion, access, and incident procedures operational?
- Have children, vulnerable users, accessibility, bias, and foreseeable misuse been considered?
- Has the application been tested after dependencies, APIs, or data practices change?
Chapter SummarySecure, private, and ethical mobile development begins with the recognition that the mobile client is an exposed and potentially compromised environment. Threat modeling identifies assets, actors, trust boundaries, abuse cases, and proportionate controls. Secure storage requires platform-protected key management, authenticated encryption, careful password handling, and separation of keys from data. Transport security must be combined with server-side validation, authorization, rate limiting, and sound session management. Privacy-by-design emphasizes purpose limitation, data minimization, transparency, retention control, user rights, and accountability. Ethical development extends these principles by protecting autonomy, avoiding dark patterns, supporting accessibility, and addressing the special risks faced by children and vulnerable users. Regulation supplies important obligations, but responsible governance requires ongoing documentation, testing, supplier oversight, incident response, and independent review. The central professional lesson is that technical security, privacy, and ethical responsibility must be designed together throughout the application lifecycle. Key TermsThreat modeling: A structured process for identifying and mitigating threats before and during development. Attack surface: All interfaces through which an attacker may interact with a system. Trust boundary: A point where data or control moves between components with different trust assumptions. Asset: A valuable resource requiring protection. Vulnerability: A weakness that may be exploited. Least privilege: Giving a user, process, or component only the permissions necessary for its task. Authentication: Verification of an identity claim. Authorization: Determination of what an authenticated identity may do. Symmetric encryption: Encryption using the same secret key for encryption and decryption. Asymmetric cryptography: Cryptography using related public and private keys. Authenticated encryption: Encryption that provides confidentiality and tamper detection. Hash function: A function producing a fixed-length digest from input data. Key store: A protected platform facility for storing cryptographic keys and secrets. Data minimization: Collecting and retaining no more personal data than necessary. Purpose limitation: Using personal data only for specified and justified purposes. Pseudonymization: Replacing direct identifiers while recognizing that re-identification may remain possible. Dark pattern: A manipulative interface design that steers users against their interests. Privacy by design: Integrating privacy protections into system architecture and defaults. Security hardening: Reducing unnecessary features, exposure, permissions, and attack opportunities. Responsible governance: Processes that assign accountability and oversee security, privacy, ethics, and compliance. Review QuestionsShort Answer Questions- Why should a mobile client not be treated as a trusted enforcement point?
- Distinguish authentication from authorization.
- What is the purpose of a trust boundary in a threat model?
- Why is pseudonymization not necessarily anonymization?
- Give two examples of dark patterns in a mobile application.
Long Answer Questions- Explain the stages of threat modeling and show how STRIDE can support the analysis of a mobile application.
- Compare symmetric encryption, asymmetric cryptography, hashing, and password hashing in terms of purpose and security properties.
- Discuss how privacy-by-design principles influence data collection, storage, retention, consent, and deletion.
- Explain how secure coding, code hardening, dependency management, and security testing operate as parts of a secure development lifecycle.
- Analyze the responsibilities of an organization operating a mobile application that processes children’s or health-related data.
Analytical / Application Questions- A shopping application stores access tokens in ordinary preferences, accepts any TLS certificate, and checks whether a user may view an order only in the mobile interface. Identify the vulnerabilities, explain likely consequences, and propose prioritized mitigations.
- Design a threat model for a campus location-sharing application. Identify at least four assets, three threat actors, five threats, and suitable controls, including privacy and ethical controls.
- A fitness application requests continuous location, contacts, microphone, and photo-library access before allowing account creation. Evaluate the design using data minimization, consent, purpose limitation, accessibility, and dark-pattern principles, then propose a revised user flow.
Multiple Choice Questions with AnswersQuestion 1Which statement best describes authorization? A. Verifying that a person is who they claim to be B. Determining which actions an authenticated identity may perform C. Encrypting a user’s password before transmission D. Recording a user’s device type Correct Answer: B. Determining which actions an authenticated identity may perform Question 2Which control most directly protects a secret stored on a mobile device? A. Placing it in an application resource file B. Writing it to a public log for troubleshooting C. Storing it in the platform-protected key store D. Embedding it as a constant in compiled code Correct Answer: C. Storing it in the platform-protected key store Question 3What is the primary purpose of data minimization? A. To collect every potentially useful field for future analysis B. To collect and retain only data necessary for a defined purpose C. To make all collected data publicly available D. To replace encryption with a privacy notice Correct Answer: B. To collect and retain only data necessary for a defined purpose Question 4Which STRIDE category concerns an attacker pretending to be another user? A. Spoofing B. Tampering C. Repudiation D. Denial of service Correct Answer: A. Spoofing Question 5Why is ordinary fast hashing unsuitable for password storage? A. It cannot produce a fixed-length output B. It allows attackers to test guesses very quickly C. It always reveals the original password directly D. It requires a public key for verification Correct Answer: B. It allows attackers to test guesses very quickly Question 6Which practice is most appropriate for sensitive API authorization? A. Check permissions only in the mobile interface B. Allow access whenever the user knows an object identifier C. Enforce authorization on the backend for each relevant operation D. Disable authorization for requests from the official application Correct Answer: C. Enforce authorization on the backend for each relevant operation Question 7Which is an example of a dark pattern? A. Offering equally visible accept and reject choices B. Explaining why a permission is needed before requesting it C. Making cancellation difficult while making subscription immediate D. Allowing a user to withdraw an optional permission Correct Answer: C. Making cancellation difficult while making subscription immediate Question 8What is a limitation of certificate pinning? A. It makes encryption impossible B. Incorrect pins can interrupt service and complicate certificate rotation C. It removes the need for server authorization D. It guarantees that the mobile device is uncompromised Correct Answer: B. Incorrect pins can interrupt service and complicate certificate rotation Question 9Which design is most consistent with privacy by design? A. Continuous collection by default with no deletion process B. Optional, purpose-specific collection with clear retention limits C. Collecting contacts because they might be useful later D. Hiding privacy choices in a secondary menu Correct Answer: B. Optional, purpose-specific collection with clear retention limits Question 10Why should mobile applications avoid placing sensitive secrets in the application package? A. Application packages can never be signed B. The package may be inspected or reverse engineered by an attacker C. Secrets in packages cannot be encrypted in any circumstance D. The operating system automatically deletes all package contents Correct Answer: B. The package may be inspected or reverse engineered by an attacker
|