[LINE Developer Meetup] 라인 개발자 밋업
플루터를 선책하지 않은 이유
플루터는 안좋은 도구냐? 아니다.
다트: 굳이 배우지 않아도 되는 언어 #1(2018) but #14(2019)
Nothing is fixed
Age of Changes === Age of Chances
RxJave -> Coroutine 전환이 고민된다면?
안드로이드 발표.
라인은 자산관리 서비스 라인 가계부, 라인 뱅크 두가지를 서비스함
어떻게 비동기 처리를 해 왔는가?
서버 API를 호출할때, 이미지 처리 또는 로드, 디비, 로컬에서 데이터 가져올떄, 기타 I/O작업 등등
쓰레드/ 어싱크 태스크를 보통 이용함.
대부분 비동기 쓰레드는 UI쓰레드랑 유기적으로.
Thread 사용시
- 자바 기능 쓰는거라 러닝커브가 크지 않음.
- 쓰레드간 데이터 동기화 처리가 편하지 않음
- 복잡해지면 코드짜기가 정말 어려워짐
어싱크태스크
- 구글이 제공
- 편리하게 썼었으나 태스크마다 객체 생성해야 하여 재사용이 어려움.
- 안드로이드 프레임워크 제공이지만 라이프 사이클과 무관하게 동작함
- 메모리 누수와 좀비 쓰레드에 주의해야함
- 복잡해지면 코드가 엄청 어려워짐
RxJava
- 콜백지옥 탈출
- 높은 가독성
- 쉬운 스렏 전환 및 제어
단점
- 너무 높은 문턱 (모르는 사람이 볼 경우 이해할 수 없음)
- 라이브러리 무거움( 일부만 사용해도 전체를 포함해야 함 )
- 미숙련시 잘못된 코드를 작성할 확률이 높음(기능을 정확히 알지 못하는경우. 에러처리가 분명하지 못함)
대체할 수 있다면 대체 해야겠다.
Coroutine
빠르다. 쉽다. 가볍다.
코틀린, 라이트 웨이트 쓰레드
코루틴은 쓰레드인가?
코루틴은
- 선점형이 아니라 협력혁 멀티태스킹: A 쓰레드에서 하다가 B 쓰레드에서 재개 가능
- 시간을 할당 받지 않고 중단지점까지 실행
- 컨텍스트 쓰위치 비용이 적다
RxJave / Coroutine 비교
빠르다.
대체 가능?
- 비동기 처리 및 이벤트 처리 용으로 가능
- RxJava Coroutine 의 사용목적이 같지가 않음
- RxJava의 라이브러리는 강력함
- RxJava 생태계가 더 강력
Mobile Banking on Security
라인 뱅크: 스마트폰에서 은행 업무를 편리하게 라인 플랫폼과 함께 글로벌 서비스
인증서 피닝
SSL 프리 인스톨드 루트 CA 약 150여개
3만여개의 루트 인증서가 부적절하게 발급됨
유저디바이스 - 어택커 - 웹서버
막기위해 서버와 SSL 통신 시 특정 도메인의 서버 인증서를 검증하는 인증서 혹은 공개키 고정
리프 인증서
- 장점: 서버가 올바른 인증서를 가지고 있는지 100 퍼 확식
- 단점: 짧은 만료 시간(1-2년)
루트 인증서
- 장점: 긴만료 시간(7-8년)
- 단점: 잘못된 인증서 발급이 발생한 경우 보안 위험
안드 24 이상은 network_security_config.xml 에서 쉽게 할 수 있음
도메인 컨피그, 도메인, 핀 셋
메니패스트에 추가
24 이하는 okhttp를 이용해 간단히 않게 적용가능
iOS는 TrustKit 을 사용해서 할 수 있음 Alamofire로도 가능 der 포맷으로 바꿔서.
웹뷰에서는 문제가 있음. 웹뷰 리퀘스트 인터셉트. http 리퀘스트 발생시 네이티브에서 피닝 체크 http 리퀘스트 처리 성능 저하
사용자 인증 보안
멀티 팩터 인증
- 소유기반: 디바이스 인증
- 지식기반: 핀코드
- 생체기반: 지문, 페이스 ID
디바이스 인증과 지식 또는 생체 기반 선택해서 적용 중
디바이스 인증
- 공개키 암호화 방식을 이용한 사용자 기기 인증
- 동일 계정은 한 기기에서만 사용하도록 제한
- 금융 거래 시 사용자 기기에서 요청한 사항인지 확인
- 디바이스 아이디
- IMEI 같은 디바이스 고유 값 X -> UUID 사용
- 앱 재설치시 재 생성
- 사용자 가입 완료
- 디바이스 인증 키쌍 생성, UUID 생성
- 기기등록 요청
- 웹서버 챌린지 생성
- UUID, 탤린지
금융거래
- 거래 요청 데이터를 디바이스 개인키로 서명
- 디바이스 서명 + 거래 요청 데이터
- 사용자 디바이스 인증 공개키 검색
- 공개키로 디바이스 서명 확인
생체 인증
- Fast Identity Online
- 공개키 암호화 방식을 활용하여 생체 정보 등을 통한 간편 인증을 제공하기 위한 인증 표준
유저 디바이스
앱 FIDO 클라이언트 ASM 어쓴티케이터 인증장치(지문, 홍채), 시큐리티 스토리지(인증키, 증명 키)
릴라잉 파티
FIDO 서버 웹 서버
퍼블릭 키 크립토
RSA vs EC?
RSA는 키사이즈가 보안성을 높일수록 아주 높아짐.
시메트릭키 사이즈가 128비트 정도면 RSA는 3072 EC키는 256
EC 알고리즘은 안드로이드는 23+ iOS는 10+
시큐어 스토리지
- 안드로이드 (키스토어 서비스 제공), 하드웨어 베이스으 온 TEE 안드로이드 6.0이상
- iOS
애디셔널
- 루트/ 탈옥 디텍션
- 디버깅 모드
- …
2023년 새해에는 성장하고 함께하고 싶다면?
Pre A 단계 이상의 스타트업 C 레벨들이 모여서 커뮤니티를 만들었습니다. 같이 스터디하고 친해질 일잘러를 찾습니다.