FlashDesk 보안
FlashDesk는 원격 제어에 필요한 통신, 연결 승인, 장치 확인, 운영 관리를 안전하게 처리하도록 설계되었습니다. 화면 영상과 제어 데이터는 세션마다 암호화됩니다.
세션별 암호화
미디어 통신과 제어 데이터는 세션 시작 시 생성되는 키로 암호화됩니다. FlashDesk는 ECDH P-256, HKDF-SHA256, AES-256-GCM을 사용합니다.
순서 번호와 인증 태그로 변조 및 오래된 패킷 재전송을 감지할 수 있습니다.
P2P 우선, 필요 시 릴레이
가능하면 영상과 제어 데이터는 장치 간에 직접 전송됩니다. 직접 연결이 어려우면 릴레이를 사용하지만 페이로드는 계속 암호화됩니다.
대상 측의 명시적 허용
접근은 수동 승인 또는 비밀번호로 허용할 수 있습니다. 수동 승인은 1회만 또는 선택한 시간 동안 허용할 수 있으며, 시간 제한 세션은 자동 종료됩니다.
장치 지문 확인
FlashDesk는 설치마다 장치 ID 키를 만들고 공개 키에서 지문을 생성합니다. 신뢰한 대상의 지문이 바뀌면 확인할 수 있도록 경고합니다.
시그널링 및 라이선스 통신
FlashDesk는 연결 시작에 WebSocket over TLS(wss://), 라이선스 확인 등 API에 HTTPS를 사용합니다. 미디어 통신은 수립 후 암호화된 세션에서 처리됩니다.
외부 TLS 인증서
FlashDesk의 시그널링 통신은 HTTPS / TLS 위의 WebSocket을 사용합니다. 아래 공개 TLS 인증서 정보는 서버에서 가져오며, 인증서가 변경되면 자동으로 반영됩니다.
- 대상 도메인
- 인증서 정보를 불러오는 중...
- 발급자
- 인증서 정보를 불러오는 중...
- SHA-256 지문
- 인증서 정보를 불러오는 중...
- 유효 기간
- 인증서 정보를 불러오는 중...
인증서 정보를 일시적으로 가져올 수 없습니다.
외부 보안 진단
FlashDesk는 OWASP ZAP을 사용하여 공개 웹사이트와 관련 엔드포인트에 대한 보안 진단을 완료했습니다. 또한 Mozilla Observatory, SSL Labs, Security Headers에서 A 이상 등급을 확인했습니다.
OS 권한 및 로컬 보호
FlashDesk는 macOS, Linux Wayland 등 각 OS의 권한 흐름을 따릅니다. 저장된 연결 정보와 비밀번호는 평문 저장을 피하도록 처리됩니다.
FlashDesk 서버가 처리하는 데이터
FlashDesk 서버는 서비스 운영, 악용 방지, 지원, 결제, 팀 관리를 위해 필요한 범위에서 다음 정보를 처리할 수 있습니다.
| 데이터 | 목적 | 저장 또는 임시 | 비고 |
|---|---|---|---|
| FlashDesk ID / 장치 식별자 | 연결 시작, 장치 조회, 라이선스 연결 | 필요한 경우 저장 | 장치 식별과 요청 라우팅에 사용됩니다. |
| 장치 fingerprint 공개 정보 | 장치 검증과 ID 바인딩 | 해당되는 경우 hash로 저장 | 서버는 fingerprint 관련 hash를 저장하며 개인 identity key는 저장하지 않습니다. |
| 앱 버전 및 OS 종류 | 호환성, 지원, 운영 분석 | 클라이언트 상태와 함께 저장 또는 갱신 | 해당되는 admin 및 support 상황에서 표시됩니다. |
| 연결 상태 및 경로 상태 | 연결 유지, seat 제어, admin 가시성 | 세션 중 임시 처리; Pro는 일부 audit record 저장 | 보고된 경우 direct, relay, probing 상태를 포함합니다. |
| IP 주소 및 네트워크 메타데이터 | 서비스 운영, 악용 방지, 진단 | 필요 시 운영 기록에 저장 | last seen IP, 다운로드 추적, WebSocket 진단 메타데이터가 포함될 수 있습니다. |
| 라이선스 / 구독 상태 | 라이선스 확인, 결제, seat 관리 | 필요한 경우 저장 | 결제 카드 세부정보는 결제 제공자가 처리하며 FlashDesk가 저장하지 않습니다. |
| 오류 로그 또는 운영 로그 | 지원, 장애 조사, 악용 방지 | 운영 로그로 저장; 서버 로그는 30일 후 자동 삭제 | WebSocket 로그는 ssh_tunnel_data payload를 마스킹하며, 다른 메타데이터는 진단용으로 기록될 수 있습니다. |
| Pro 사용자의 admin console 활동 | 팀 관리, 라이선스 및 세션 검토 | admin 기록으로 저장 | 조직, 사용자, 라이선스, seat, 세션 audit 기록을 포함합니다. |
FlashDesk 서버에 저장되지 않는 데이터
일반적인 원격 연결 중 FlashDesk 서버는 다음 정보를 저장하지 않습니다:
- 원격 화면 영상 내용
- 키보드 입력 내용
- 마우스 조작 내용
- 파일 전송 내용
- ssh_tunnel_data로 처리되는 SSH tunnel payload 내용
- 녹화된 세션 영상 내용
네트워크 엔드포인트와 프로토콜
아래 표는 배포 전에 관리자가 검토할 수 있는 통신을 요약합니다.
| 목적 | 프로토콜 | 포트 | 주요 대상 | 비고 |
|---|---|---|---|---|
| 웹사이트 / 다운로드 | HTTPS | 443/TCP | FlashDesk 공식 서버 | 다운로드 페이지는 공식 릴리스 파일의 버전과 SHA-256 checksum을 표시합니다. |
| Signaling | WebSocket over TLS (wss://) | 443/TCP | flashdesk.io/ws | 세션 시작과 candidate 정보 교환에 사용됩니다. |
| API / 라이선스 확인 | HTTPS | 443/TCP | flashdesk.io/api/license/verify | 등록된 license key와 seat 상태 확인에 사용됩니다. |
| 업데이트 확인 | HTTPS | 443/TCP | flashdesk.io/data/latest.json 및 패키지 경로 | 앱은 HTTPS로 update manifest를 주기적으로 확인하고 공식 서버에서 패키지를 다운로드한 뒤 적용 전 예상 SHA-256 hash를 검증합니다. |
| STUN / P2P candidate 확인 | UDP | 3478/UDP | FlashDesk 공식 서버 | 직접 P2P 시도 전에 도달 가능한 network endpoint를 찾는 데 사용됩니다. |
| 직접 P2P 연결 | UDP media/control path | peer 장치의 동적 UDP 포트 | peer 장치 network endpoint | NAT/firewall 조건이 허용하면 직접 연결을 우선합니다. |
| Relay 연결 | relay 경로의 암호화된 media/control payload | 현재 desktop app에서는 40020/UDP | FlashDesk relay server | 장치 간 직접 경로가 없을 때 사용됩니다. SDK relayws 응답은 443/TCP를 사용합니다. |
Relay 서버 동작
FlashDesk는 먼저 장치 간 직접 경로를 시도합니다. NAT, firewall, VPN, 모바일 네트워크 조건으로 직접 UDP 통신이 불가능할 수 있어 필요한 경우 relay 경로로 세션을 계속할 수 있습니다.
relay routing 사용 시 relay 서버는 세션 packet을 전달합니다. media/control payload는 세션 키로 계속 암호화되며 packet에는 변조 또는 오래된 packet 재전송을 감지하기 위한 인증 데이터가 포함됩니다.
설치 및 백그라운드 동작
FlashDesk는 백그라운드에서 실행될 수 있으며 설정이 활성화되면 OS 시작 시 자동 실행될 수 있습니다. 현재 기본 설정은 OS 시작을 활성화합니다.
- Windows: startup is managed through a user logon scheduled task named FlashDesk_Autostart, with a legacy Run-key fallback check.
- macOS: startup is managed through a LaunchAgent plist.
- Linux: startup is managed through XDG Autostart.
OS 권한은 기능에 필요할 때만 요청됩니다. macOS는 화면 캡처에 Screen Recording, 원격 입력 제어에 Accessibility가 필요할 수 있습니다. Linux Wayland는 desktop portal / PipeWire 화면 공유 흐름을 사용합니다. FlashDesk는 HTTPS update manifest를 주기적으로 확인하고 공식 서버에서 업데이트 패키지를 다운로드한 뒤 적용 전 예상 SHA-256 hash를 검증합니다.
로컬 설정은 사용자 애플리케이션 데이터 폴더의 FlashDesk/flashdesk_settings.json에 저장됩니다. 로컬 앱 로그는 FlashDesk/logs에 기록되며 현재 앱 코드는 7일 보관 설정을 사용합니다. 사용자가 활성화한 로컬 화면 녹화는 FlashDesk/recording에 저장됩니다.
파일 진위성과 코드 서명
다운로드 페이지는 공식 릴리스 파일의 버전과 SHA-256 checksum을 표시합니다. 설치 전 다운로드한 파일의 SHA-256을 게시된 값과 비교할 수 있습니다.
- Windows: FlashDesk .exe 파일은 Authenticode로 서명되어 있습니다. 파일 속성 > 디지털 서명 또는 PowerShell의
Get-AuthenticodeSignature .\FlashDesk.exe로 확인할 수 있습니다. - macOS: FlashDesk .pkg 및 .app 배포본은 Apple Developer ID 인증서로 서명되고 Apple에서 notarized되었습니다.
- Linux: .deb, .rpm, AppImage 다운로드의 공개 SHA-256 checksum을 확인하세요.
운영 권장 사항
공유 PC에서는 비밀번호 저장을 피하고, 불필요한 대상을 삭제하며, 알 수 없는 지문 변경을 승인하지 않고, 긴 세션에는 시간 제한을 사용하는 것을 권장합니다.