오픈 소스 클라우드 서비스 Filen 번역 기여
저는 개인정보 보호에 관심이 많습니다. 개인적인 신념 때문이기도 하고 일종의 강박을 갖고 있기도 합니다. 평소 이용하는 서비스도 그렇습니다. 해외에서 일어난 캠페인인 'DeGoogle'을 실천 중이기도 합니다. 우리말로 풀면 '탈구글 운동' 쯤 되겠네요. 구글 관련된 서비스를 적극적으로 이용하지 않는 운동이죠.
이번에 개인정보 보호를 중점으로 설계된 클라우드 서비스인 Filen(filen.io)을 번역하여 기여했습니다. 오픈 소스이기 때문에 GitHub에서 번역을 기여할 수 있었습니다. 이 글은 기여 후기이자 제가 기여한 서비스에 대한 애정을 담은 소개문입니다.
클라우드 서비스와 개인정보 보호
클라우드 서비스는 다른 사업자에게 제 파일의 보관과 관리를 위임하는 것입니다. 그 사업자를 신뢰하지 않으면 이용하지 않는 편이 좋습니다. 개인정보 보호에 가장 좋은 방법은 로컬로 보관하든가 NAS를 사용하여 파일의 관리를 스스로 하는 것입니다. 그러나 NAS 가격 그 자체가 비싸기도 하고, 무엇보다 목돈이 한번에 나가는 것이 꽤나 뼈아픕니다. 성능 좋은 NAS를 구매해서 Invidious(invidious.io) 같은 Self-hostable한 서비스를 직접 돌려서 쓰고 싶기도 하지만 경제적인 문제가 제일 크죠.
보안과 개인정보 보호는 배타적이 아니지만, 보안을 이유로 개인정보 보호를 경시하기 쉽습니다. 침입에 대한 사후 처리를 위해서 과도한 개인정보를 보관하던가, 어뷰징 사용자를 구별하기 위해 식별자를 이용하여 사용자를 추적할 수 있습니다. 클라우드 서비스는 파일의 안전한 보관에 노력해야하기에, 자칫 개인정보 보호를 경시하기 쉽습니다.
그래서 개인정보 보호를 강조하는 클라우드 서비스가 있습니다. 최소한 종단간 암호화(E2EE; End-to-End Encryption)을 지원해야 하며 제3자 기관에 의해 검증받아야 합니다. E2EE와 기타 적용된 기술을 포함한 기술 백서도 존재해야 하며, 투명성 보고서나 영장 카나리아(Warrant canary)를 제공하는 서비스 말입니다. 그리고 클라이언트가 오픈 소스여야합니다. E2EE 특성상, 클라이언트에서 암호화가 제대로 이루어지면 서버측에서 어떻게 처리되는지는 크게 중요하지 않습니다.
Filen과 개인정보 보호
Filen은 그런 면에서 완벽한 개인정보 보호 서비스는 아닙니다. 빠른 시일 내에 검증을 준비 중이라곤 하지만, 아직 제3자 기관의 검증을 받지 않았습니다. 그럼에도 불구하고 클라이언트 소스를 보니 암호화에 관한 부분은 잘 이루어지고 있었고, 다른 조건은 제 기준에선 모두 만족합니다. 실제 얼마나 많은 취약점이 있을진 전문 기관에 검증을 해봐야 합니다. 저는 Filen측이 검증 받은 요소를 모두 수정할 것이라는 점을 신뢰하고 있습니다.
Filen은 '14개의 눈'에 속하는 독일의 서비스입니다. 독일에 서버가 위치해있고, 독일 회사가 운영합니다. 개인정보 보호에 '5개의 눈'에 속하는 나라(미국, 영국, 캐나다, 뉴질랜드, 호주)를 아무래도 기피하게 되고 14개의 눈(5개의 눈 + 덴마크, 프랑스, 네덜란드, 노르웨이, 벨기에, 독일, 이탈리아, 스페인, 스웨덴)의 서비스도 기피하게 됩니다. 물론 GDPR의 존재 때문에 유럽 국가가 상대적으로 낫습니다.
그러나 적어도 영지식이 보장되는 E2EE 클라우드 서비스의 경우엔 그 어떤 권력 앞에서도 파일 내부를 볼 순 없을 것입니다. Filen이 갖고 있는 정보는 아래와 같습니다. (이하 2023년 3월 11일 기준)
유저 정보: 이메일 주소, 마지막 접속 일시, 마지막 접속 IP 주소, 주소지(등록한 경우)
이벤트 정보: 앱으로 등록된 기기의 IP 주소, 앱으로 등록된 기기의 유저 에이전트
이 정보는 언제든지 사용자의 프로필 화면에서 클릭 한 번으로 받아볼 수 있습니다. 추가로 개인정보 보호 정책에 따르면 파일 형식에 관한 메타데이터를 수집한다고 합니다. 보유하고 있는 정보를 투명하게 공개한 점이 좋습니다. 그 외의 정보, 예를 들면 파일의 내용 등은 적법한 절차 하에서도 제공될 수 없을 것입니다.
제 기준에 Filen은 완벽한 클라우드 서비스는 아니지만 여타 서비스에 비해서 쓰기 좋은 서비스라고 생각됩니다. 실제로 지금 주로 사용하고 있는 서비스이기도 합니다. 기관이 파일에 고스란히 접근할 수 있는 여타 대기업들의 클라우드 서비스보단 훨씬 낫습니다. 저는 파일 자체를 한번 더 암호화해서 올리기도 하고요.
번역 파일의 구조
번역은 Lodash(lodash.com) 라이브러리를 이용하여 구현 되어있었습니다. 흔히 국제화(다언어화)를 i18n이라고 하는데, 이는 'internationalization'의 약자입니다. 첫 글자인 i와 마지막 글자인 n 사이에 18글자가 있기 때문에 i18n이라고 부르는 것이지요.
아무튼, 번역을 위해선 각각의 플랫폼마다 i18n 경로에 있는 en
폴더를 복사하여 ko
폴더를 만들고, 그 안의 index.ts
파일의 내용을 아래와 같이 바꿔줘야합니다.
import ko from "./ko"
export default ko
그 뒤에 en.ts
파일의 이름을 ko.ts
로 바꿔 영어 파일을 기준으로 번역하면 되었습니다.
const ko: {
[key: string]: string
} = {
Key: "번역",
....
}
export default ko
참고로, 번역 폴더(i18n 폴더)의 위치는 각 플랫폼 별 저장소에 따라 아래와 같았습니다.
웹 클라이언트:
filen-drive/src/i18n
데스크톱 클라이언트:
filen-desktop/src/renderer/lib/i18n
모바일 클라이언트:
filen-mobile/src/i18n
번역 과정
영어 파일을 기준으로 번역을 합니다. 한국에는 없는 표현이 있어서 번역에 애를 먹었습니다. redeem은 할인이나 제공된 쿠폰을 사용하는 것을 말하지만, 한 단어로 표현하기가 애매하여 'Code redeemed'는 '코드 사용됨' 정도로 번역하였습니다. 'incoming'과 'outgoing'은 수신과 송신 정도로 이야기 할 수 있지만, 서비스에 그대로 적기엔 딱딱한듯 싶어 조금 우회하여 '받은', '보낸' 정도로 번역했습니다. 'incoming shares removed'는 '받은 공유 제거됨' 정도가 됩니다.
의외로 고민했던 것은 'You/Your'의 번역입니다. 한국어와 일본어는 이인칭 높임 표현이 강하지 않습니다. 주로 상대를 지칭하며 ~님 등으로 부르는 것이죠. 생판 남에게 '당신'이라고 불렀다간 싸움 나기도 좋습니다. 어쩌면 온라인 게임에서 상대를 지칭할 때 그냥 "님." 이라고 부르는 것도 그 이유일 것입니다. 마땅한 이인칭 대명사가 없으니까요.
대신 우리나라는 문장 성분의 생략이 자유롭습니다. 조사를 적극적으로 활용하여 조사에 의해 해당 단어가 어떻게 쓰였는지 알 수 있기 때문입니다. 그래서 "You/Your"를 생략할 수 있는 경우엔 생략하고, 생략할 수 없거나 애매하면 "사용자님" 이라고 번역했습니다. 사용자에게 공손한 서비스는 호감을 사지만, 사실 원문을 살린 번역은 아닙니다.
그래서 "No files or folder shared with you yet / Once somebody shares files or folders with you they will appear here"는 위 사진처럼 번역된 것입니다.
Invoice는 흔히 송장이라고 번역되지만, 사실 우리가 '송장'이라는 단어를 택배를 보내거나 받을 때만 쓰지 온라인 서비스를 결제해서 받는 내역을 송장이라고 하진 않습니다. 요즘은 인보이스라는 단어 자체로도 많이 쓰지만, 여전히 생소한 단어이기에 "명세서"로 적당히 옮겼습니다. 사실 옳은 번역인지는 모르겠습니다. 일상에서 '명세서'는 ATM 등에서 거래가 끝난 후 받는 종이이지만, 인보이스는 거래를 마치기 전 "이만큼 돈 넣어주세요"의 의미로 그 내역이 적혀있기도 합니다.
그 외에 Enable/Disable을 활성화/비활성화로 번역할지 켜짐/꺼짐으로 번역할지, Invalid를 직역하여 '유효하지 않은'이라고 할지 '잘못된'이라고 할지 두 가지로 모두 번역할 수 있는 어휘에 대한 고민하는 부분이 많았습니다. 대부분은 한자어보단 고유어로 번역했습니다. 저는 전문 번역가가 아니고, 온라인 서비스에 맞고 최대한 헷갈리지 않게 이해하기 쉬운 말로 옮기는 것이 최선이니까요.
최종 번역된 결과물
기여 후기
오픈 소스 프로젝트에 가장 쉽게 접근할 수 있는 것이 번역 기여라고 생각합니다. 짧은 번역이라도 다른 사람의 코드를 볼 수 있어서 즐겁습니다. Filen은 개인정보 친화적이며 그 정책과 기술 백서가 (적어도 제 기준엔)명확합니다. 이런 멋진 프로젝트에 기여할 수 있어서 큰 영광이었습니다.
유수의 기업들도 개인정보 보호는 뒷전인 경우가 많습니다. "우리는 개인정보를 소중히 생각합니다."라고 말해도 실제 약관을 살펴보면 "여러분의 개인정보를 잘 처리해서 돈벌이에 써먹겠음" 정도의 의미가 적혀있는 서비스도 있습니다. 국내에도 이러한 서비스가 많이 보급되어 경쟁이 되었으면 좋겠습니다. 제가 번역한 이유도 그것입니다. 많은 국민들이 이 서비스를 이용해주어서 여타 서비스의 허술한 개인정보 처리에 경각심을 갖게 되었으면 좋겠습니다.
Filen은 기껏해야 '스타트업' 정도의 규모이고, 국내엔 인지도가 바닥을 치는 영세한 서비스입니다. 이 번역을 통해 보다 많은 사람이 Filen을 이용해주었으면 합니다.