[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 사용
  • 앱 재설치시 재 생성
  1. 사용자 가입 완료
  2. 디바이스 인증 키쌍 생성, UUID 생성
  3. 기기등록 요청
  4. 웹서버 챌린지 생성
  5. UUID, 탤린지

금융거래

  1. 거래 요청 데이터를 디바이스 개인키로 서명
  2. 디바이스 서명 + 거래 요청 데이터
  3. 사용자 디바이스 인증 공개키 검색
  4. 공개키로 디바이스 서명 확인

생체 인증

  • Fast Identity Online
  • 공개키 암호화 방식을 활용하여 생체 정보 등을 통한 간편 인증을 제공하기 위한 인증 표준

유저 디바이스

앱 FIDO 클라이언트 ASM 어쓴티케이터 인증장치(지문, 홍채), 시큐리티 스토리지(인증키, 증명 키)

릴라잉 파티

FIDO 서버 웹 서버

퍼블릭 키 크립토

RSA vs EC?

RSA는 키사이즈가 보안성을 높일수록 아주 높아짐.

시메트릭키 사이즈가 128비트 정도면 RSA는 3072 EC키는 256

EC 알고리즘은 안드로이드는 23+ iOS는 10+

시큐어 스토리지

  • 안드로이드 (키스토어 서비스 제공), 하드웨어 베이스으 온 TEE 안드로이드 6.0이상
  • iOS

애디셔널

  • 루트/ 탈옥 디텍션
  • 디버깅 모드





© 2017. by isme2n

Powered by aiden