Appearance
FedRAMP Development Roadmap
Document ID: PLCY-FED-004
Version: 1.0
Effective Date: December 30, 2025
Last Review: December 30, 2025
Owner: Hop And Haul Team
CONFIDENTIAL
This document is CONFIDENTIAL and for internal use only. Do not distribute outside the organization.
1. Purpose
This document provides a detailed development roadmap for achieving FedRAMP Moderate authorization and implementing the security controls required for "Federal Ready" status. It builds the system in three phases: Secure Core, Safety Operations, and Federal Hardening.
2. Roadmap Overview
| Phase | Focus | Key Deliverables |
|---|---|---|
| Phase 1 | Secure Core | Database isolation, authentication hardening, verification |
| Phase 2 | Safety Operations | SOS features, telematics security, admin controls |
| Phase 3 | Federal Hardening | FIPS compliance, PIV/CAC, continuous monitoring |
3. Phase 1: The Secure Core
Goal: A working rideshare platform where data leakage is mathematically impossible through architectural controls.
3.1 Database & Isolation Architecture
Current State
- PostgreSQL RDS with basic access controls
- Tenant isolation through application logic
Target State
- Row Level Security (RLS) enforced at database level
- Tenant ID on every table with RLS policies
- Separate schema/encryption keys for Mission Mode fleets
Implementation Tasks
| Task | Description | Priority |
|---|---|---|
| RLS Policy Implementation | Define tenant_id on all tables, write RLS policies that block cross-tenant queries | Critical |
| Middleware Enforcement | Application layer validates tenant ID on all requests | Critical |
| Query Auditing | Log all database queries with tenant context | High |
| Schema Isolation (Mission Mode) | Separate schemas for high-security tenants | Medium |
| Key Separation | Per-tenant encryption keys for sensitive data | Medium |
Technical Specifications
sql
-- Example RLS Policy
ALTER TABLE rides ENABLE ROW LEVEL SECURITY;
CREATE POLICY tenant_isolation ON rides
USING (org_id = current_setting('app.current_org_id')::uuid);
-- Middleware sets tenant context
SET app.current_org_id = 'org_uuid_here';Success Criteria
- [ ] RLS policies on all tables with tenant data
- [ ] No query can return data from another tenant
- [ ] Automated cross-tenant access tests in CI/CD
- [ ] Audit logs capture all data access with tenant context
3.2 Authentication System
Current State
- SSO integration with session management
- MFA for admin roles
Target State
- "Short Access / Long Refresh" token pattern
- Step-up authentication for critical actions
- Device binding for mobile sessions
Implementation Tasks
| Task | Description | Priority |
|---|---|---|
| Token Lifecycle | 15-minute access tokens, secure refresh rotation | Critical |
| Step-Up Auth | Biometric/PIN re-verification for sensitive actions | Critical |
| Device Binding | Session tied to device fingerprint | High |
| Secure Storage | iOS Keychain / Android Keystore for tokens | High |
| Session Monitoring | Real-time session tracking and revocation | Medium |
Token Specifications
| Token Type | Lifetime | Storage | Revocation |
|---|---|---|---|
| Access Token | 15 minutes | Memory | Automatic expiry |
| Refresh Token | 7 days | Keychain/Keystore | Rotation on use |
| Ride Token | Ride + 15 min | Memory | Auto-expire |
Step-Up Auth Triggers
| Action | Authentication Required |
|---|---|
/ride/accept | Biometric or PIN |
/ride/start | Biometric or PIN |
/sos | None (emergency) |
/admin/export | MFA |
/admin/user/modify | MFA |
Success Criteria
- [ ] Access tokens expire in 15 minutes
- [ ] Refresh tokens rotate on each use
- [ ] Step-up auth required for critical actions
- [ ] Session bound to specific device
3.3 The "Happy Path" with Verification
Current State
- Matching logic with location fuzzification
- Basic ride verification
Target State
- Mandatory identity verification handshake
- PIN/QR exchange before ride start
- Mismatch reporting with immediate response
Implementation Tasks
| Task | Description | Priority |
|---|---|---|
| QR/PIN Handshake | Generate unique code for each ride, verify before start | Critical |
| Mismatch Flow | One-tap report blocks ride, alerts safety ops | Critical |
| Photo Verification | Display driver photo to rider for visual confirmation | High |
| Coarse Location | Show "X mins away" not map dot until commitment | High |
| Anti-Triangulation | New random offset per offer | Implemented |
Verification Flow
1. Ride Accepted → Generate unique 6-digit PIN + QR
2. Rider shows PIN/QR to Driver
3. Driver scans/enters code
4. API validates: /ride/start fails without valid code
5. Mismatch? → One-tap "Report Mismatch" → Ride blockedSuccess Criteria
- [ ] Ride cannot start without PIN/QR verification
- [ ] Mismatch report blocks ride immediately
- [ ] Location hidden until acceptance
- [ ] Device binding prevents phone switching
4. Phase 2: Safety Operations & Abuse Prevention
Goal: Managing behavioral risks and the "human" element of the system.
4.1 The "Silent" Safety Suite
SOS Button Implementation
| Component | Functionality |
|---|---|
| UI Trigger | "Fake Cancel" button appears to end ride |
| Backend | Triggers safety ops alert silently |
| Data Capture | Snapshots last 5 mins GPS + metadata |
| Storage | Immutable Incident Bucket (S3 Object Lock) |
| Alert | PagerDuty/Twilio to Fleet Safety Manager |
Deviation Monitoring
| Trigger | Threshold | Response |
|---|---|---|
| Route deviation | >5 miles from planned | Check-in prompt |
| Time deviation | >10 mins unexpected | Check-in prompt |
| No response | 2 minutes | Escalate to supervisor |
| Still no response | 5 minutes | Escalate to emergency contacts |
| Emergency | 10 minutes no response | Law enforcement notification |
Duress Code
| Feature | Implementation |
|---|---|
| Code Type | Specific PIN pattern |
| Trigger | Enter duress PIN instead of normal PIN |
| Response | Silent alert to safety team |
| UI | Normal ride appears to continue |
Implementation Tasks
| Task | Description | Priority |
|---|---|---|
| SOS Backend Worker | Background service for SOS processing | Critical |
| GPS Snapshot | Capture and store last 5 mins on trigger | Critical |
| Immutable Storage | S3 Object Lock for incident data | Critical |
| Deviation Geofencing | Real-time route comparison | High |
| Check-In Prompts | In-app safety check-ins | High |
| Duress Code | Silent alerting mechanism | High |
| Escalation Tree | Automated escalation workflow | High |
Success Criteria
- [ ] SOS triggers within 2 seconds
- [ ] GPS data captured and immutably stored
- [ ] Safety ops alerted within 30 seconds
- [ ] Deviation alerts for >5 mile/min variance
- [ ] Escalation to authorities within 15 mins if no response
4.2 Telematics Integration (Samsara)
Security Requirements
| Requirement | Implementation |
|---|---|
| Key Storage | AWS Secrets Manager (never in code/DB) |
| Key Scope | Read-only, specific vehicle tags only |
| Envelope Encryption | Per-tenant key wrapping |
| Rate Limiting | Per-tenant API limits |
| Anomaly Detection | Usage spike alerting |
| Kill Switch | Auto-revoke on anomaly |
Implementation Tasks
| Task | Description | Priority |
|---|---|---|
| Secrets Manager Integration | Move all API keys to Secrets Manager | Critical |
| Envelope Encryption | Implement per-tenant key wrapping | High |
| Rate Limiting | Per-tenant Samsara API limits | High |
| Anomaly Detection | Monitor for usage spikes | High |
| Auto-Revocation | Kill switch on detected anomaly | High |
| Key Rotation | Automated quarterly rotation | Medium |
Success Criteria
- [ ] No API keys in code, config files, or database
- [ ] Per-tenant encryption with separate keys
- [ ] Rate limiting prevents abuse
- [ ] Anomaly detection triggers within 1 minute
- [ ] Kill switch revokes keys within 30 seconds
4.3 Admin & Support Portal
Just-In-Time (JIT) Access
| Principle | Implementation |
|---|---|
| No Browsing | Admins cannot search without justification |
| Ticket Required | Access requires valid ticket ID |
| Time-Boxed | Access expires after defined period |
| Logged | All access logged with justification |
Implementation Tasks
| Task | Description | Priority |
|---|---|---|
| JIT Access System | Ticket ID + time-box required for access | Critical |
| Break-Glass Alerts | Immediate alert on "view all" access | Critical |
| Default Redaction | Location/PII masked in admin views | High |
| Audit Logging | Comprehensive admin action logging | Implemented |
| Search Restrictions | Require specific criteria, no SELECT * | High |
Admin View Redaction
| Data Type | Default View | Break-Glass View |
|---|---|---|
| Location | Region only | Full GPS (logged) |
| Phone | Masked (--1234) | Full (logged) |
| Name | First + Last Initial | Full (logged) |
| Trip Details | Summary | Full (logged) |
Success Criteria
- [ ] No admin can access data without ticket ID
- [ ] Access automatically expires after time limit
- [ ] Break-glass usage triggers immediate alert
- [ ] All admin actions logged with full context
5. Phase 3: Federal Hardening
Goal: NIST 800-53 / FedRAMP Moderate readiness with "High Consequence" protections.
5.1 Continuous Monitoring & Logging
SIEM Integration
| Component | Implementation |
|---|---|
| Log Aggregation | CloudWatch → SIEM |
| Correlation Rules | Cross-system event correlation |
| Threat Detection | ML-based anomaly detection |
| Alert Automation | PagerDuty integration |
Alert Configuration
| Alert Type | Trigger | Response |
|---|---|---|
| Root/Jailbreak | Device check failure | Block access |
| Impossible Travel | Location teleportation | Force re-auth |
| Admin Break-Glass | Any usage | Immediate review |
| API Key Spike | Usage >200% baseline | Investigation |
| Cross-Tenant Attempt | Any occurrence | Block + investigate |
Implementation Tasks
| Task | Description | Priority |
|---|---|---|
| SIEM Integration | CloudWatch to security platform | High |
| Correlation Rules | Define detection rules | High |
| Automated Response | Block/alert on detection | High |
| Dashboard | Security metrics visualization | Medium |
| Reporting | Automated compliance reports | Medium |
5.2 Data Lifecycle Automation
Lifecycle Policies
| Data State | Retention | Storage | Action |
|---|---|---|---|
| Live GPS | <24 hours | Hot DB | Auto-delete |
| Billing Summary | Per policy | Cold Storage | No GPS |
| Incident Data | 7 years | Immutable S3 | Legal hold capable |
| Audit Logs | 24 months | Encrypted S3 | Lifecycle transition |
Automated Jobs
| Job | Schedule | Function |
|---|---|---|
| GPS Purge | Nightly | Delete GPS breadcrumbs >48 hours |
| Billing Archive | Weekly | Move summaries to cold storage |
| Log Transition | Weekly | Move logs to appropriate tier |
| Integrity Check | Daily | Verify audit log integrity |
| Key Rotation | Quarterly | Rotate encryption keys |
Implementation Tasks
| Task | Description | Priority |
|---|---|---|
| GPS Auto-Deletion | Lambda to purge old GPS data | High |
| Billing Archival | Move to cold storage | Medium |
| Log Lifecycle | S3 lifecycle policies | Medium |
| Integrity Verification | Checksum validation | High |
| Cryptographic Erasure | Key destruction for expired data | High |
5.3 "Mission Mode" Features
Mission Mode Capabilities
| Feature | Description |
|---|---|
| Allow-List Matching | Disable open matching, pre-approved drivers only |
| MDM Requirement | Device attestation required |
| No Voice Agent | App-only acceptance (no phone commands) |
| 2-Person Integrity | Admin overrides require dual approval |
| Enhanced Audit | Additional logging for all operations |
Implementation Tasks
| Task | Description | Priority |
|---|---|---|
| Mission Mode Toggle | Per-tenant/per-ride boolean | High |
| Allow-List Enforcement | Pre-approved driver matching | High |
| MDM Check | Device Attestation API integration | High |
| Voice Disable | Block voice agent for mission rides | Medium |
| Dual Control | 2-person approval workflow | Medium |
Mission Mode Activation
Tenant → Enable Mission Mode →
• Matching restricted to allow-list
• MDM check required for all devices
• Voice agent disabled
• Enhanced audit logging enabled
• Admin actions require dual approval5.4 FIPS and PIV/CAC Compliance
FIPS 140-2 Requirements
| Component | Current | Target |
|---|---|---|
| Encryption Library | Standard OpenSSL | FIPS-validated module |
| Key Management | AWS KMS | AWS KMS (FIPS endpoint) |
| TLS | TLS 1.3 | TLS 1.3 (FIPS ciphers) |
| Hashing | SHA-256 | SHA-256 (FIPS module) |
PIV/CAC Integration
| Capability | Implementation |
|---|---|
| Certificate Auth | Support for PIV certificates |
| Smart Card Reader | Mobile and desktop support |
| OCSP Validation | Certificate revocation checking |
| Fallback Auth | Standard MFA if PIV unavailable |
Implementation Tasks
| Task | Description | Priority |
|---|---|---|
| FIPS Module Integration | Replace crypto with FIPS-validated | High |
| FIPS KMS Endpoint | Use AWS KMS FIPS endpoints | High |
| PIV/CAC Support | Implement certificate authentication | Medium |
| Certificate Validation | OCSP/CRL integration | Medium |
6. Documentation & Evidence Collection
6.1 Required Documentation
| Document | Owner | Status |
|---|---|---|
| System Security Plan (SSP) | Security | In Progress |
| Control Implementation Summary | Security | In Progress |
| Risk Assessment | Security | Complete |
| Contingency Plan | Operations | Complete |
| Incident Response Plan | Security | Complete |
| Configuration Management Plan | DevOps | Complete |
| Privacy Impact Assessment | Legal | Planned |
6.2 Assessment Activities
| Activity | Timing | Owner |
|---|---|---|
| Internal Control Testing | Ongoing | Security |
| Penetration Test | Annual | 3PAO |
| Tabletop Exercises | Quarterly | Security |
| Readiness Assessment | Pre-authorization | 3PAO |
| Full Assessment | Authorization | 3PAO |
6.3 Tabletop Exercise Scenarios
| Scenario | Focus | Frequency |
|---|---|---|
| Kidnapping/Ransom | SOS/IR flow | Annual |
| Data Breach | Notification procedures | Quarterly |
| Ransomware | Recovery procedures | Quarterly |
| Insider Threat | Investigation procedures | Annual |
| API Compromise | Key rotation procedures | Quarterly |
7. Milestone Summary
Phase 1 Milestones
| Milestone | Deliverable |
|---|---|
| M1.1 | RLS implemented on all tables |
| M1.2 | Token lifecycle (15-min access) implemented |
| M1.3 | Step-up authentication for critical actions |
| M1.4 | PIN/QR verification handshake |
| M1.5 | Device binding implemented |
Phase 2 Milestones
| Milestone | Deliverable |
|---|---|
| M2.1 | SOS backend with immutable storage |
| M2.2 | Deviation monitoring active |
| M2.3 | Samsara keys in Secrets Manager |
| M2.4 | JIT access for admin portal |
| M2.5 | Anomaly detection operational |
Phase 3 Milestones
| Milestone | Deliverable |
|---|---|
| M3.1 | SIEM integration complete |
| M3.2 | Data lifecycle automation |
| M3.3 | Mission Mode available |
| M3.4 | FIPS-validated crypto |
| M3.5 | 3PAO readiness assessment |
8. Success Metrics
| Metric | Target |
|---|---|
| Cross-tenant query attempts blocked | 100% |
| Step-up auth bypass attempts | 0 |
| SOS response time | <2 minutes |
| Deviation detection time | <5 minutes |
| Admin break-glass alerts | <1 minute |
| NIST control coverage | >95% |
| FedRAMP assessment findings | <5 medium |
9. Related Documents
| Document | Relationship |
|---|---|
| PLCY-FED-001 | Federal compliance overview |
| PLCY-FED-003 | Risk mitigations |
| PLCY-FED-005 | Control mapping |
| PLCY-SEC-001 | Current security controls |
| PLCY-DRP-001 | Recovery procedures |
10. Document Control
| Version | Date | Author | Changes |
|---|---|---|---|
| 1.0 | December 30, 2025 | Hop And Haul Team | Initial release |