Commit Graph

2 Commits (6366a2f880274fdb442cb45ec6ce259cb59445b7)

Author SHA1 Message Date
RyuJongJin 63b92b6956 WIP 보안 검토 6: 설정 "SMB 서명 · 암호화 필수" (처음 끔) · 서명도 암호화도 안 되는 연결은 탐색기 탭에 ⚠ (검토 대기)
관리자 결정 (10/18):
- 설정 > SMB [SMB 서명 · 암호화 필수] (smbRequireSecure, 처음 끔 - 오래된 NAS 가 붙지 않을 수 있음, 틀린 값은 끔).
  켜면 Android 다리 (smbj) 가 서명을 요구하고 (withSigningRequired), 로그인 뒤 세션이 서명도 암호화도 안 되면 닫고 막는다
  → "서명 · 암호화가 되지 않는 연결이라 열지 않았습니다 (설정 …)". 설정을 바꾸면 열려 있던 연결을 닫는다 (다음 연결부터).
- 서버마다 처음 연결이 되면 info 를 한 번 물어 (세션의 shouldEncryptData · isSigningRequired) 서명도 암호화도 안 되면 탐색기 · Rsync 탭에 ⚠ (DavPath.mark, 꺼 두어도).
  info 의 "encrypted" 는 협상 가능 여부 (supportsEncryption) 가 아니라 이 세션이 실제로 암호화되는지로 바꿈. [연결 확인] 경고도 서명 여부를 따라 두 가지.
- 서버 목록에서 빠지거나 설정이 바뀐 서버는 ⚠ 기억도 지운다.

시험: smb_test (새 1: 처음 끔 · 틀린 값 · 연결 전 🗄 · 처음 한 번만 info · ⚠ · 서명만 되면 ⚠ 없음 · 필수를 다리에 넘김 · 막힌 이유) · smb_find · explorer_webdav 11 통과,
analyze 문제 없음, l10n 빠짐 0, APK 빌드 (Kotlin 컴파일) 성공. 실제 NAS (서명 · 암호화 켬 / 끔) 확인은 기기에서.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 03:16:57 +09:00
RyuJongJin e5a115d450 WIP 88 SMB 3/3: Android SMB (smbj 0.15.0, 플랫폼 채널) - 서버 설정 · 탭 · 받아서 열기 · 고지 (미완 - 기기 확인 안 됨)
사용자 결정 88-1 (Windows 는 운영체제 그대로) · 88-4 (SMB3 암호화는 허용 + 안 되면 경고) 대로 Android 만.
- android/.../SmbBridge.kt (채널 jj_mkvmaker/smb, 뒤 스레드): smbj (SMB2 · SMB3, SMB1 없음) · Bouncy Castle 보안 제공자
  (Android 기본에는 NTLM 의 MD4 가 없음) · 암호화 요청 (withEncryptData). 서버마다 연결 하나를 다시 씀, 파일은 손잡이로 1MB 조각.
  오류를 종류로 (auth · unreachable · noShare · smb1 · permission · notFound). R8 keep 규칙 (smbj · mbassador · bouncycastle).
- lib/core/smb.dart: SmbServer (비밀번호는 안전 저장소 smb.pw.<id> 에만) · SmbRemote (RemoteClient) · SmbRegistry.
  저장된 비밀번호 없음은 서버에 묻지 않고 알림, 게스트 (아이디 없음) 허용, info() 로 암호화 여부.
- vfs: smb:// 를 같은 원격 길로 (🗄), 재생 · 다른 앱은 받아서 (noStreamUrl = SFTP · SMB).
- 화면: 환경 설정 > 파일 탐색기 > SMB (Android 만) - 서버 · 포트 · 공유 · 시작 폴더 · 아이디 (비우면 게스트) · 비밀번호 · 도메인,
  [연결 확인] 에서 암호화 안 되면 경고. 탐색기 탭 · ⋮ 메뉴 [SMB 서버 추가] · 탭 길게 누르기 = 고치기 · 폴더 고르는 곳.
  179 바꿈: Android 에서 smb:// · \서버\공유 를 넣으면 "SMB 서버 추가로 넣으면 탭으로" 안내와 [SMB 서버 추가] (넣은 주소로 채움) · [WebDAV 서버 추가].
- 최상 · 마스터 초기화의 저장된 비밀번호 지우기에 SMB 도.
- 라이선스: SMBJ_LICENSES.txt (smbj LICENSE_HEADER · Bouncy Castle · SLF4J · MBassador 원문 + Apache 2.0 전문, smbj 는 NOTICE 파일이 없음),
  라이선스 화면 · Android 고지, 판이 바뀌면 시험이 알림.
- 시험: smb_test (가짜 채널 - 1MB 조각 쓰기 · 읽기 · 목록 · 이름 바꾸기 · 지우기 · 시작 폴더 · 오류 글 · 저장된 비밀번호 없음 · 설정 · 주소 풀기),
  179 시험 고침. 전체 837 통과 · 17 건너뜀, 새로 남은 임시 폴더 0. APK 빌드 (Kotlin 컴파일 · R8) 통과.
- 시험이 잡은 버그: 큰 조각 하나가 오면 1MB 로 나누지 않고 통째로 보냈다 → 나눔.
- 미완: 실제 smbj 연결 (Android 기기 + SMB 서버) 은 확인하지 못함 - 노트 10+ 등에서 PC 공유 폴더로 확인 필요.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 22:55:59 +09:00