1import{r as m,j as e}from"./react-vendor-BxUrAMDo.js";import{B as h}from"./BreadcrumbNav-wRmyJNpr.js";import u from"./Footer-BMMUZUCt.js";import{G as p,C as t,b as a,c as i,d as r}from"./index-CQAF4vvG.js";import{t as l,h as d,u as o,v as j,i as x,w as y}from"./icons-B2ApzMU8.js";import"./app-links-Cz0qg7Te.js";import"./query-vendor-C8OxFoLA.js";import"./ui-vendor-BRGvjLlB.js";(function(){try{var c=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{};c.SENTRY_RELEASE={id:"76af7de9158b89afec09e7e9dfdae5ea3e5aff85"};var n=new c.Error().stack;n&&(c._sentryDebugIds=c._sentryDebugIds||{},c._sentryDebugIds[n]="cc393de5-76f8-4dba-8500-a9f8f5dcf8b4",c._sentryDebugIdIdentifier="sentry-dbid-cc393de5-76f8-4dba-8500-a9f8f5dcf8b4")}catch{}})();const s={background:"bg-white",text:"text-gray-900",textSecondary:"text-gray-600",textMuted:"text-gray-500",accent:"text-blue-600",card:"bg-gray-50"};function C(){return m.useEffect(()=>{document.title="Security & Privacy | WhisperAI";const c=document.querySelector('meta[name="description"]');c&&c.setAttribute("content","How WhisperAI protects your data: TLS 1.3, AES-256 at rest, secure object storage, documented subprocessors, and Google Cloud infrastructure. Last updated August 2026.")},[]),e.jsxs("div",{className:`min-h-screen ${s.background}`,children:[e.jsx(p,{onSignInClick:()=>window.location.href="/signin",onSignUpClick:()=>window.location.href="/signup"}),e.jsx(h,{items:[{label:"Home",href:"/"},{label:"Security"}]}),e.jsxs("div",{className:"max-w-4xl mx-auto px-4 py-16",children:[e.jsxs("div",{className:"text-center mb-12",children:[e.jsx(l,{className:`h-16 w-16 ${s.accent} mx-auto mb-6`}),e.jsx("h1",{className:`text-4xl font-bold ${s.text} mb-4`,children:"Security & Privacy"}),e.jsx("p",{className:`text-xl ${s.textSecondary} max-w-2xl mx-auto`,children:"Your trust is paramount. We implement enterprise-grade security measures to protect your data and privacy."}),e.jsx("p",{className:`text-sm ${s.textMuted} mt-4`,children:"Last updated: August 25, 2026"})]}),e.jsxs("div",{className:"grid md:grid-cols-2 gap-8 mb-12",children:[e.jsxs(t,{className:`${s.card} border-0`,children:[e.jsx(a,{children:e.jsxs(i,{className:`flex items-center ${s.text}`,children:[e.jsx(d,{className:`h-5 w-5 ${s.accent} mr-2`}),"Data Encryption"]})}),e.jsx(r,{children:e.jsx("p",{className:s.textSecondary,children:"All data is encrypted in transit using TLS 1.3 and at rest using AES-256 encryption. Your audio files and transcriptions are protected with industry-standard encryption protocols."})})]}),e.jsxs(t,{className:`${s.card} border-0`,children:[e.jsx(a,{children:e.jsxs(i,{className:`flex items-center ${s.text}`,children:[e.jsx(o,{className:`h-5 w-5 ${s.accent} mr-2`}),"Secure Infrastructure"]})}),e.jsx(r,{children:e.jsx("p",{className:s.textSecondary,children:"Production audio storage uses Google Cloud Storage, and persisted application data uses a managed PostgreSQL database. Access to both is controlled by server-side credentials and application authorization."})})]}),e.jsxs(t,{className:`${s.card} border-0`,children:[e.jsx(a,{children:e.jsxs(i,{className:`flex items-center ${s.text}`,children:[e.jsx(j,{className:`h-5 w-5 ${s.accent} mr-2`}),"Data Retention"]})}),e.jsx(r,{children:e.jsx("p",{className:s.textSecondary,children:"We only retain your data as long as necessary. You can delete your recordings and transcriptions at any time through your account settings."})})]}),e.jsxs(t,{className:`${s.card} border-0`,children:[e.jsx(a,{children:e.jsxs(i,{className:`flex items-center ${s.text}`,children:[e.jsx(x,{className:`h-5 w-5 ${s.accent} mr-2`}),"Privacy by Design"]})}),e.jsx(r,{children:e.jsx("p",{className:s.textSecondary,children:"We follow privacy-by-design principles. We collect only the minimum information necessary to provide our services. We disclose the third-party providers used for transcription, AI features, storage, payments, email, and analytics in our Privacy Policy."})})]})]}),e.jsxs(t,{className:"mb-12",children:[e.jsx(a,{children:e.jsx(i,{className:`${s.text} text-center`,children:"Data Protection & Privacy"})}),e.jsx(r,{children:e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:`font-semibold ${s.text} mb-2`,children:"GDPR Features"}),e.jsx("p",{className:`text-sm ${s.textSecondary} mb-2`,children:"We've implemented key GDPR features including:"}),e.jsxs("ul",{className:`text-sm ${s.textSecondary} space-y-1 list-disc list-inside`,children:[e.jsx("li",{children:"Right to access your data (data export)"}),e.jsx("li",{children:"Right to delete your data"}),e.jsx("li",{children:"Clear data retention policies"}),e.jsx("li",{children:"Transparent privacy practices"})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:`font-semibold ${s.text} mb-2`,children:"Platform Security"}),e.jsx("p",{className:`text-sm ${s.textSecondary}`,children:"Production file storage runs on Google Cloud infrastru
1cture. Managed services are combined with application-level access controls, secure headers, and encrypted connections."})]})]})})]}),e.jsxs(t,{className:"mb-12",children:[e.jsx(a,{children:e.jsx(i,{className:`${s.text} text-center`,children:"Enterprise & Institutional Security"})}),e.jsx(r,{children:e.jsxs("div",{className:"grid md:grid-cols-2 gap-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:`font-semibold ${s.text} mb-2`,children:"Authentication & Access"}),e.jsxs("ul",{className:`text-sm ${s.textSecondary} space-y-1 list-disc list-inside`,children:[e.jsx("li",{children:"Password, Google, and Microsoft sign-in options"}),e.jsx("li",{children:"Session-based authentication with secure cookies"}),e.jsx("li",{children:"Automatic session expiration for inactive users"}),e.jsx("li",{children:"User-specific data isolation"})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:`font-semibold ${s.text} mb-2`,children:"Infrastructure Security"}),e.jsxs("ul",{className:`text-sm ${s.textSecondary} space-y-1 list-disc list-inside`,children:[e.jsx("li",{children:"Automatic HTTPS/TLS for all connections"}),e.jsx("li",{children:"Managed Google Cloud Storage for production audio files"}),e.jsx("li",{children:"Managed PostgreSQL database hosting"}
1),e.jsx("li",{children:"Server-side credentials for infrastructure access"})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:`font-semibold ${s.text} mb-2`,children:"Data Security"}),e.jsxs("ul",{className:`text-sm ${s.textSecondary} space-y-1 list-disc list-inside`,children:[e.jsx("li",{children:"Encrypted database connections"}),e.jsx("li",{children:"Secure environment variable storage"}),e.jsx("li",{children:"Regular automated backups"}),e.jsx("li",{children:"Application authorization checks for user data"})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:`font-semibold ${s.text} mb-2`,children:"Operational Security"}),e.jsxs("ul",{className:`text-sm ${s.textSecondary} space-y-1 list-disc list-inside`,children:[e.jsx("li",{children:"Content Security Policy (CSP) headers"}),e.jsx("li",{children:"XSS and clickjacking protection"}),e.jsx("li",{children:"Secure HTTP headers enforcement"}),e.jsx("li",{children:"Regular dependency updates"})]})]})]})})]}),e.jsxs(t,{className:"mb-12",children:[e.jsx(a,{children:e.jsxs(i,{className:`${s.text}`,children:[e.jsx(y,{className:`h-5 w-5 ${s.accent} inline mr-2`}),"How We Process Your Data"]})}),e.jsx(r,{children:e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("h4",{className:`font-semibold ${s.text} mb-2`,children:"Audio Processing"}),e.jsx("p",{className:`${s.textSecondary} text-sm`,children:"Uploaded files are transcribed through AssemblyAI. OpenAI is used for real-time transcription and AI-powered transcript features. Files remain available for playback alongside their transcriptions until you choose to delete them."})]}),e.jsxs("div",{children:[e.jsx("h4",{className:`font-semibold ${s.text} mb-2`,children:"Data Storage"}),e.jsx("p",{className:`${s.textSecondary} text-sm`,children:"Production audio files are stored in Google Cloud Storage. Legacy recordings may remain in Replit Object Storage. Transcriptions are saved in PostgreSQL databases with access controls and encrypted connections."})]}),e.jsxs("div",{children:[e.jsx("h4",{className:`font-semibold ${s.text} mb-2`,children:"Access Controls"}),e.jsx("p",{className:`${s.textSecondary} text-sm`,children:"Only you can access your data. Our engineering team follows strict access protocols and can only access your data for technical support with your explicit consent."})]})]})})]}),e.jsxs(t,{className:"mb-12",children:[e.jsx(a,{children:e.jsx(i,{className:`${s.text} text-center`,children:"Institutional & Compliance Features"})}),e.jsx(r,{children:e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:`font-semibold ${s.text} mb-2`,children:"Data Portability & User Control"}),e.jsxs("ul",{className:`text-sm ${s.textSecondary} space-y-1 list-disc list-inside`,children:[e.jsx("li",{children:"Export all your data in standard formats (JSON, TXT)"}),e.jsx("li",{children:"Bulk download your recordings and transcriptions"}),e.jsx("li",{children:"Delete your data anytime through account settings"}),e.jsx("li",{children:"No vendor lock-in - take your data whenever you need"})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:`font-semibold ${s.text} mb-2`,children:"Transparency & Accountability"}),e.jsxs("ul",{className:`text-sm ${s.textSecondary} space-y-1 list-disc list-inside`,children:[e.jsx("li",{children:"Data Processing Agreement available for download"}),e.jsx("li",{children:"Transparent third-party processor list, including AssemblyAI and OpenAI"}),e.jsx("li",{children:"Regular security updates and notifications"}),e.jsx("li",{children:"Detailed privacy policy and terms of service"})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:`font-semibold ${s.text} mb-2`,children:"Best Practices Compliance"}),e.jsx("p",{className:`text-sm ${s.textSecondary}`,children:"WhisperAI aligns its security program with SOC 2 standards and guidelines. This is an alignment statement, not a claim that WhisperAI is SOC 2 certified. We also follow OWASP security guidance and NIST cybersecurity framework principles."})]})]})})]}),e.jsxs(t,{className:"mb-12",children:[e.jsx(a,{children:e.jsx(i,{className:`${s.text} text-center`,children:"Contracts & Documentation"})}),e.jsx(r,{children:e.jsxs("div",{className:"space-y-4 text-sm",children:[e.jsxs("div",{children:[e.jsx("h3",{className:`font-semibold ${s.text} mb-2`,children:"Data Processing Agreement"}),e.jsx("p",{className:s.textSecondary,children:"WhisperAI's Data Processing Agreement documents the terms governing our processing of customer personal data."}),e.jsx("a",{href:"/WhisperAI-DPA-v2-2026-04-30.pdf",download:!0,className:`${s.accent} mt-2 inline-block font-medium hover:underline`,children:"Download the Data Processing Agreement (PDF)"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:`font-semibold ${s.text} mb-2`,children:"Independent CASA validation report"}),e.jsx("p",{className:s.textSecondary,children:"TAC Security, an App Defense Alliance-authorized lab, completed a CASA AL1 assessment of WhisperAI Cloud Sync. The report was issued August 13, 2026, and expires August 14, 2027."}),e.jsx("a",{href:"/WhisperAI-TAC-CASA-AL1-Validation-Report-2026.pdf",download:!0,className:`${s.accent} mt-2 inline-block font-medium hover:underline`,children:"Download the TAC Security CASA report (PDF)"})]}),e.jsxs("div",{children:[e.jsx("h3",{className:`font-semibold ${s.text} mb-2`,children:"Subprocessor list"}),e.jsx("p",{className:s.textSecondary,children:"Our Privacy Policy contains the canonical list of subprocessors, the purpose of each service, the data shared, region, and legal basis."}),e.jsx("a",{href:"/privacy",className:`${s.accent} mt-2 inline-block font-medium hover:underline`,children:"Review the subprocessor list"})]})]})})]}),e.jsxs(t,{className:"mb-12",children:[e.jsx(a,{children:e.jsx(i,{className:`${s.text} text-center`,children:"Our Security Commitments"})}),e.jsx(r,{children:e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-start",children:[e.jsx(l,{className:`h-5 w-5 ${s.accent} mr-3 mt-0.5 flex-shrink-0`}),e.jsxs("div",{children:[e.jsx("h4",{className:`font-semibold ${s.text} mb-1`,children:"Continuous Improvement"}),e.jsx("p",{className:`text-sm ${s.textSecondary}`,children:"We continuously update our security measures and stay current with the latest security best practices and threats."})]})]}),e.jsxs("div",{className:"flex items-start",children:[e.jsx(d,{className:`h-5 w-5 ${s.accent} mr-3 mt-0.5 flex-shrink-0`}),e.jsxs("div",{children:[e.jsx("h4",{className:`font-semibold ${s.text} mb-1`,children:"No Unauthorized Access"}),e.jsx("p",{className:`text-sm ${s.textSecondary}`,children:"Your data is yours alone. We never access your recordings or transcriptions unless you explicitly request support."})]})]}),e.jsxs("div",{className:"flex items-start",children:[e.jsx(x,{className:`h-5 w-5 ${s.accent} mr-3 mt-0.5 flex-shrink-0`}),e.jsxs("div",{children:[e.jsx("h4",{className:`font-semibold ${s.text} mb-1`,children:"Transparent Operations"}),e.jsx("p",{className:`text-sm ${s.textSecondary}`,children:"We're transparent about our security practices, data handling, and any third-party services we use."})]})]}),e.jsxs("div",{className:"flex items-start",children:[e.jsx(o,{className:`h-5 w-5 ${s.accent} mr-3 mt-0.5 flex-shrink-0`}),e.jsxs("div",{children:[e.jsx("h4",{className:`font-semibold ${s.text}
1 mb-1`,children:"Reliable Infrastructure"}),e.jsx("p",{className:`text-sm ${s.textSecondary}`,children:"Built on Google Cloud's secure infrastructure, ensuring enterprise-grade reliability."})]})]})]})})]}),e.jsxs(t,{children:[e.jsx(a,{children:e.jsx(i,{className:`${s.text} text-center`,children:"Security Questions or Concerns?"})}),e.jsxs(r,{className:"text-center",children:[e.jsx("p",{className:`${s.textSecondary} mb-4`,children:"We take security seriously. If you have questions about our security practices, need security documentation for your institution, or want to report a vulnerability, please contact us."}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("a",{href:"mailto:[email protected]",className:`${s.accent} hover:underline font-medium block`,children:"[email protected]"}),e.jsx("p",{className:`text-sm ${s.textMuted}`,children:"We typically respond within 24 business hours"})]})]})]})]}),e.jsx(u,{})]})}export{C as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.