C.W.K.
Stream
Lesson 03 of 04 · published

엉뚱한 스피커는 프라이버시 버그야

~9 min · device, fail-loud, privacy

Level 0침묵
0 XP0/36 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete
"맞는 스피커가 없으면, 그렇다고 말해. 마침 있는 아무 스피커에서 사적 오디오를 조용히 재생하지 마."

출력엔 이름 붙은 목적지가 있어

Bellows는 특정 출력에 재생해 — 이름 붙은 오디오 인터페이스, 작은 gain 트림과 함께 48 kHz 스테레오 스트림으로 열림. 그 특정성은 의도적이야: 소리가 특정 방의 특정 디바이스로 가. 그래서 흥미로운 질문은 happy path가 아니라, 재생 시점에 그 디바이스를 못 찾을 때 뭐가 일어나냐야 — 뽑힘, rename됨, 잠듦.

리라우팅은 graceful degradation이 아냐

많은 오디오 코드에 박힌 본능은 뭔가 재생되게 시스템 기본 출력으로 fallback하는 거야. 알림 챙 소리엔 괜찮아. 사적인 말을 하는 목소리 엔진엔, 그 fallback이 누출이야: 특정 스피커를 위한 문장이 이제 OS 기본이 가리키는 데면 어디든 재생돼 — 공유된 방일 수도, 화면 공유일 수도, 남의 주머니에서 다시 연결된 블루투스 헤드셋일 수도. 아무것도 아무도 안 경고했어. Bellows는 이걸 거부해. 디바이스 해석은 사적 오디오를 딴 데로 조용히 옮기는 대신 loud-fail해.

없는 목소리와 같은 본능

이 모양은 이미 트랙 3에서 봤어: 없는 voice binding은 편한 엉뚱한 목소리로 대체하는 대신 loud-fail해. 없는 디바이스는 한 레이어 아래의 같은 원리야. 둘 다에서 '친절한' 대체가 요청을 배신하는 자신 있는 성공을 내 — 엉뚱한 목소리, 아니면 엉뚱한 방의 맞는 목소리. 없는 전제 조건에 대한 안전한 답은, binding이든 스피커든, 추측이 아니라 명시적 에러야.

Code

정확한 디바이스를 해석하거나 실패해 -- 절대 리라우팅 마·python
def open_output(preferred: str) -> Stream:
    dev = find_device(preferred)          # e.g. the named studio interface
    if dev is None:
        # DO NOT fall back to the system default. Private audio could play
        # on the wrong speaker, in the wrong room, with no warning at all.
        raise AudioDeviceUnavailable(preferred)
    return dev.open(samplerate=48000, channels=2, gain_db=-3.0)

# A wrong-speaker success is a PRIVACY failure, not a graceful degradation.
# Same instinct as a missing voice binding: stop by name, never substitute.

External links

Exercise

네가 아는 시스템에서 없는 대상이 기본으로 조용히 대체되는 'graceful degradation'을 찾아 — fallback 출력, 기본 수신자, 최근접 리전, catch-all 채널. 그 대체가 뭔가를 엉뚱한 청중에 노출할 수 있는지 물어. 그럴 수 있으면, 누출을 묘사하고, 허용되는 fallback이랑 프라이버시 침해 사이의 선이 어디인지 정해.
Hint
graceful degradation은 어떤 대상이든 괜찮을 때 안전해. 특정 대상이 프라이버시를 위해 중요했던 순간 침해가 돼. '어디든 재생'은 챙 소리엔 괜찮고 한 방을 위한 문장엔 위험해.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.