Base84도 파일명에 쓰일 만함

4 days ago 15

TurboCrypt가 Windows 지원을 위해 암호화된 파일명 인코딩을 Base91에서 Base84로 전환함 Base84는 공백을 제외한 출력 가능한 ASCII 문자에서 Windows 금지 문자와 마침표를 뺀 84개 문자를 사용해 Linux, macOS, Windows 파일명과 호환됨 5문자 단위 가변 비트 패킹으로 무작위 입력에서 평균 25.2%, 최악의 경우 약 29% 크기가 늘어나며, Base64의 33.3%보다 증가율이 낮음 표준 문자 집합과 출력 구조 덕분에 짧은 입력도 Windows 예약 장치명으로 인코딩되지 않아 별도 패딩이나 예외 처리가 필요 없음 대소문자를 구분하지 않는 파일시스템에서는 충돌이 가능하지만, TurboCrypt의 최소 128비트 암호문 조건과 무작위 순열 가정에서는 이름이 10억 개여도 충돌 확률 상한이 3.1 × 10⁻¹⁵ 미만임 Base91에서 Base84로 전환하는 이유 TurboCrypt는 원래 Unix용 Git 및 파일 암호화 도구로 설계됐으며, 파일명을 암호화한 뒤 암호문을 Base91로 인코딩했음 파일시스템 자체의 허용 범위만으로 파일명 호환성을 판단할 수는 없으며, 라이브러리와 애플리케이션의 제약도 고려해야 함 일부 파일시스템이 임의의 파일명을 저장할 수 있더라도 macOS Finder 등에서는 문제가 생길 수 있음 기존 Base91 방식은 Unix와 macOS의 암호화된 파일 및 디렉터리 이름에 잘 작동했음 Windows 지원 요청으로 상황이 달라졌으며, Unix 파일시스템용 문자 집합 중 여러 문자가 Windows에서는 금지됨 이에 TurboCrypt는 Base84로 전환함 Base84는 여러 파일시스템에서 안전하게 쓸 수 있는 이름에 적합하지만, 아직 정의되지 않았고 사용 사례도 없는 것으로 보임 이 암호화된 이름은 원격 저장소용 불투명 이름으로, 소프트웨어가 생성하고 사용함 사람이 직접 입력할 필요가 없으므로 목표는 파일시스템 호환성과 Base64보다 작은 크기 증가임 파일명에 안전한 84개 문자 공백을 제외한 출력 가능한 ASCII 문자 94개에서 Windows가 금지하는 다음 9개 문자를 제거하면 85개가 남음 금지 문자는 <, >, :, ", /, \, |, ?, *임 마침표도 제거하면 파일명 구성 요소의 어느 위치에나 사용할 수 있는 84개 문자가 남음 마침표로 끝나는 이름은 Windows 셸과 일반 파일 API에서 안정적으로 작동하지 않으...

Read Entire Article