Galaxus ମୁକ୍ତ ଭାବେ ଦେଖିହେଉଥିବା ବେବି-କ୍ୟାମେରା recording ବିଷୟରେ ଜଣାଇଥିଲା; The Verge କହିଥିଲା ଯେ ପ୍ରାୟ 1.1 ମିଲିୟନ୍ Meari device ପ୍ରଭାବିତ ହୋଇଥିଲା। ମୋ ପାଇଁ ଶିକ୍ଷାଟି ସରଳ: ପଛରେ ଥିବା ପ୍ଲାଟଫର୍ମ ପ୍ରତି device ପାଇଁ message, image କିମ୍ବା keyକୁ ସ୍ପଷ୍ଟ ଭାବେ ଅଲଗା ନ କଲେ, login ନର୍ସରୀକୁ ସୁରକ୍ଷା ଦେଇପାରେ ନାହିଁ। Timmy ଦୁନିଆର ପ୍ରତ୍ୟେକ ସୁରକ୍ଷା ସମସ୍ୟାର ସମାଧାନ କରେ ନାହିଁ। କିନ୍ତୁ Timmyର ଗୁରୁତ୍ୱପୂର୍ଣ୍ଣ media ଏବଂ pairing secret କୌଣସି cloud-camera platform ଭିତରେ ରହେ ନାହିଁ।
Meari ଘଟଣାରେ କଣ ବିଫଳ ହୋଇଥିବା ପ୍ରତୀତ ହୁଏ
ସାର୍ବଜନିକ ରିପୋର୍ଟଗୁଡ଼ିକ ଏକ white-label platform ବିଷୟରେ କହେ। ଅନେକ ଦୃଶ୍ୟମାନ brand ଏପରି camera ବିକ୍ରି କରିଥିଲେ ଯାହା ଏକେ Meari/CloudEdge infrastructure ଉପରେ ନିର୍ଭର କରୁଥିଲା। ତେଣୁ ଏହି ଘଟଣାଟି ଗୁରୁତ୍ୱପୂର୍ଣ୍ଣ: ଏକ ସାଧାରଣ platform authorization boundary ଭୁଲ ଭାବେ ଧାର୍ଯ୍ୟ କଲେ, କେବଳ ଗୋଟିଏ ଦୁର୍ବଳ camera ନୁହେଁ, ସମଗ୍ର fleetର data ଖୋଲା ହୋଇପାରେ।
ରିପୋର୍ଟ ହୋଇଥିବା ଢାଞ୍ଚାଟି ଦୁର୍ବଳ default passwordଠାରୁ ଆହୁରି ଗମ୍ଭୀର। ସୂତ୍ରଗୁଡ଼ିକ ପ୍ରତି-device subscription control ଯଥେଷ୍ଟ ନଥିବା MQTT message, ସାର୍ବଜନିକ ଭାବେ ପହଞ୍ଚିହେଉଥିବା image URL, ଦୁର୍ବଳ image obfuscation, ଏବଂ static କିମ୍ବା appରୁ ବାହାର କରିହେଉଥିବା key ବିଷୟରେ କହେ। ଏହା platformର ବିଫଳତା: infrastructure ଏପରି data ଦେଖାଇପାରୁଥିଲା ଯାହା କେବେ ବି ଅନ୍ୟ account ପାଇଁ ଉପଲବ୍ଧ ହେବା କଥା ନୁହେଁ।
| Cloud-cameraର ଝୁମ୍ପ | Timmyର ପ୍ରତିରକ୍ଷାମୂଳକ ଡିଜାଇନ୍ |
|---|---|
| Backend image event ସଞ୍ଚୟ କିମ୍ବା ବଣ୍ଟନ କରେ। | Timmyରେ ନର୍ସରୀ image ପାଇଁ କୌଣସି cloud archive ନାହିଁ; media live WebRTC ଅଟେ। |
| ଏକ broker କିମ୍ବା bucketକୁ ପ୍ରତ୍ୟେକ deviceକୁ ସଠିକ୍ ଭାବେ authorize କରିବାକୁ ପଡ଼େ। | Firestore କେବଳ pairing ଏବଂ signaling data ବହନ କରେ; SDP/ICE ଲେଖାଯିବା ପୂର୍ବରୁ encrypt ହୁଏ। |
| Static key ସମଗ୍ର fleetକୁ ପ୍ରଭାବିତ କରିପାରେ। | ପ୍ରତ୍ୟେକ pairing deviceଗୁଡ଼ିକରେ ନିଜସ୍ୱ P-256 ECDH-ଉତ୍ପନ୍ନ key ତିଆରି କରେ। |
| Relay pathକୁ media access ବୋଲି ଭୁଲ ବୁଝାଯାଇପାରେ। | TURN ଏନ୍କ୍ରିପ୍ଟ ହୋଇଥିବା SRTP ପ୍ୟାକେଟ୍ ଆଗକୁ ପଠାଏ, କିନ୍ତୁ ମିଡିଆ କୀ ପାଏ ନାହିଁ। |
Timmy କିପରି secret ତିଆରି କରେ
ଚାରି-ଅକ୍ଷରର Timmy code ଇଚ୍ଛାକୃତ ଭାବେ secret ନୁହେଁ। କୋଡ୍ରେ ଏହା କେବଳ ଏକ rendezvous point: app ଏଥିରୁ ଏକ meetingKey ଉତ୍ପନ୍ନ କରେ, ଯାହାଦ୍ୱାରା ଦୁଇଟି device ଏକେ Firestore public-key exchange ଖୋଜିପାରନ୍ତି। Private ECDH key କେବେ ବି device ଛାଡ଼େ ନାହିଁ।
ତାପରେ ଦୁଇଟି device ଏକେ P-256 ECDH shared secret ଗଣନା କରେ। Pairing key ସ୍ଥାନୀୟ ଭାବେ ଉତ୍ପନ୍ନ ହୁଏ। ଦୁଇ-ଅଙ୍କର SAS shared secret ସହିତ ଦୁଇଟି sorted public keyରୁ ଉତ୍ପନ୍ନ ହୁଏ। ସେହି key exchangeରେ ଛେଡ଼ଛାଡ଼ ହେଲେ device ଦୁଇଟି ଭିନ୍ନ ନମ୍ବର ଦେଖାଏ, ଯାହା userଙ୍କୁ pairing confirm ନ କରିବାକୁ କହେ।
sequenceDiagram
participant Baby as Baby device
participant Firestore as Firestore meeting point
participant Parent as Parent device
participant Turn as TURN relay
Baby->>Baby: Generate P-256 ECDH keypair
Parent->>Parent: Generate P-256 ECDH keypair
Baby->>Firestore: Write public key only under meetingKey
Parent->>Firestore: Write public key only under meetingKey
Firestore-->>Baby: Parent public key
Firestore-->>Parent: Baby public key
Baby->>Baby: Compute sharedSecret + SAS
Parent->>Parent: Compute sharedSecret + SAS
Baby-->>Parent: Humans compare SAS on both screens
Baby->>Firestore: Write SDP/ICE encrypted with AES-256-GCM
Parent->>Firestore: Write SDP/ICE encrypted with AES-256-GCM
Baby-)Turn: WebRTC media as DTLS/SRTP packets
Turn-)Parent: Relay forwards encrypted packets
Note over Turn: TURN sees network metadata, not media keys
ସରଳୀକୃତ Timmy ସୁରକ୍ଷା ଶୃଙ୍ଖଳା: Firestore rendezvous ଏବଂ signaling transport; TURN କେବଳ relay; media WebRTC-encrypted ହିଁ ରହେ।
WebRTC mediaକୁ ଚୁପଚାପ୍ କାହିଁକି ଦେଖିହେବ ନାହିଁ
WebRTC କେବଳ “video ପଠାନ୍ତୁ” ନୁହେଁ। Media ବହିବା ପୂର୍ବରୁ deviceଗୁଡ଼ିକ DTLS handshake କରନ୍ତି। Audio ଏବଂ video ପାଇଁ SRTP key ସେହି secure transportରୁ ଉତ୍ପନ୍ନ ହୁଏ। ପରେ media packetଗୁଡ଼ିକ SRTP ଭାବେ encrypt ହୁଏ। TURN server ସେହି packetଗୁଡ଼ିକୁ forward କରିପାରେ, କିନ୍ତୁ audio କିମ୍ବା video ଖୋଲିବା ପାଇଁ ଦରକାରୀ key ତାହା ପାଏ ନାହିଁ।
Timmy ତାହା ପୂର୍ବରୁ ଆଉ ଏକ layer ଯୋଡ଼େ: SDP offer, SDP answer ଏବଂ ICE candidate ପରି signaling data Firestoreକୁ ପହଞ୍ଚିବା ପୂର୍ବରୁ AES-256-GCM ସହ encrypt ହୁଏ। Firestore deviceଗୁଡ଼ିକୁ negotiationରେ ସାହାଯ୍ୟ କରେ; ଏଠାରେ cleartext video, audio କିମ୍ବା cleartext signaling ରହିବା ପାଇଁ ନୁହେଁ।
Timmy ତଥାପି କଣ ଦାବି କରେ ନାହିଁ
କୌଣସି ଗମ୍ଭୀର baby monitor ନିଜକୁ hack କରିହେବ ନାହିଁ ବୋଲି ଦାବି କରିବା ଉଚିତ ନୁହେଁ। ଫୋନ୍ compromise ହେଲେ, ଯେକୌଣସି app ଉପରେ ଆକ୍ରମଣ ହୋଇପାରେ। ଦୁଷ୍ଟ ଉଦ୍ଦେଶ୍ୟର app build ଝୁମ୍ପର ଧାରଣାକୁ ବଦଳାଇଦିଏ। Server configuration ସଠିକ୍ ରହିବା ଦରକାର। Timmyର ସୀମିତ ଦାବିଟି architectural: ଏହା backend ପଢ଼ିପାରୁଥିବା ନର୍ସରୀ media artifactକୁ ଏଡ଼ାଏ ଏବଂ ସୁରକ୍ଷା-ଗୁରୁତ୍ୱପୂର୍ଣ୍ଣ pairing logicକୁ public core projectରେ ଯାଞ୍ଚଯୋଗ୍ୟ କରେ।
ଯେକୌଣସି ବେବି କ୍ୟାମେରା ବିଷୟରେ ପଚାରିବା ପ୍ରଶ୍ନ
- ନିର୍ମାତା image କିମ୍ବା clip ସଞ୍ଚୟ କରନ୍ତି କି?
- Media URLଗୁଡ଼ିକ କି private, ଅଳ୍ପ ସମୟ ପାଇଁ ବୈଧ ଏବଂ ପ୍ରତି device ପାଇଁ authorized?
- Keyଗୁଡ଼ିକ app ଭିତରେ static ରଖିବା ପରିବର୍ତ୍ତେ ପ୍ରତି device କିମ୍ବା pairing ପାଇଁ ତିଆରି ହୁଏ କି?
- Broker କି କେବଳ ଆପଣଙ୍କର ନିଜ device ପାଇଁ message ପଠାଇପାରେ?
- Pairing ଜଣେ ଲୋକଙ୍କୁ man-in-the-middle ଚେଷ୍ଟା ଧରିବାର ସୁଯୋଗ ଦିଏ କି?
କୋଡ୍ ପଢ଼ନ୍ତୁ
- Timmy Coreରେ ECDH ଏବଂ SAS
- Meeting key, document key ଏବଂ AES-GCM
- Session ଏବଂ pairing ପାଇଁ Firestore rules
- Core projectରେ ସୁରକ୍ଷା documentation
ସୂତ୍ର
- ବେବି କ୍ୟାମେରାର recording ମୁକ୍ତ ଭାବେ ଉପଲବ୍ଧ · Galaxus
- ଦଶ ଲକ୍ଷ ବେବି monitor ଏବଂ security cameraକୁ hackerମାନେ ସହଜରେ ଦେଖିପାରୁଥିଲେ · The Verge
- କେହି babyକୁ କୋଣରେ ରଖେ ନାହିଁ · Sammy Azdoufal
- ଏହି ଏକେ ଘଟଣା ପାଇଁ ଅଭିଭାବକ ଗାଇଡ୍ · Baby Monitor Timmy