네이티브 로컬 스토리지(feat. 암호화SHA256)

정규상·2022년 12월 15일
0

고민의 흔적

목록 보기
2/4

최근 회사에서 유저에게 A서비스의 아이디, 비밀번호를 입력받고 해당 서비스에 크롤러가 로그인, 크롤링하는 것을 만드는데
유저에게 주는 Access, Refresh 토큰을 클라이언트 사이드에서 관리하고 유저가 앱에 Resume 될 때 마다 백엔드에게 토큰을 전달해 크롤링 결과값을 가져오기로 했다.

디자이너 -> 프론트엔드 개발자 테크를 타서 보안이라는 것에 대해 깊게 고민은 안해봤었는데 암호화를 하지 않으면 Bump같은거로 패킷따면 토큰 값이 그대로 나오기 때문에 큰 일 난다고한다.

현재 프론트에서 저장소를 쓰는 방법은 react-native-async-storage를 쓰고 있는데 암호화를 어떻게 할 것이냐?

찾아보니 AES, SHA256 이렇게 있는데

고급 암호 표준 - AES (Advanced Encryption Standard) 란?

라인달(Rijndael)이라고 불렸던 AES는 고급 암호 표준을 의미하며, 이는 중요 자료를 암호화 처리하는데 가장 흔하게 처리 하는 방법 중 하나이다. 대표적인 사용 기업으로는 애플, 마이크로소프트 등 미 국가안보국에서도 사용중이라고 한다. AES는 대칭 암호 방식이며, 즉 암호화와 해독 과정에서 같은 키를 사용한다. 이 때 대칭키의 특성을 보면 알 수 있듯 발송인과 수령인은 자신들이 동일한 키를 사용함에 이미 숙지하고 있어야한다.

AES의 종류

종류로는 AES-128, AES-192, AES-256 세가지가 있다.
각 128, 192, 256bit의 암호 키로 사용하여 암호 처리 및 해독을 하며 그 중 당연 256bit가 가장 안전한 방법이다. 암호화 처리의 횟수는 각 128bit는 10번, 192bit는 12번, 256bit는 14번의 암호화 처리를 거치게 된다.

SHA - 256 이란 ?

SHA -256은 SHA(Secure Hash Algorithm) 알고리즘의 한 종류로써 256비트로 구성되며 64자리 문자열을 반환한다. SHA -256은 단방향 암호화 방식이기 때문에 복호화가 불가능 하다는 것이 큰 특징이며, 복호화를 하지 않아도 되기 때문에 속도가 빠른 장점이 있다.

그러하여 해당 암호화는 사용자만 알고 있어야 하는 정보들을 관리하는 기능에서 사용되며 흔히 쓰는 부분들로는 사용자 패스워드나 인터넷뱅킹에서 사용한다 한다.

머리 아프다 그쵸?
암튼 그래서 암호화 종류가 뭐가 있는지 어떻게 해야하는지 알아봤는데

그냥 async-storage 말고 realm이나 encrypted-storage 사용하면 자동으로 암호화 된다길래 그거 쓸거같다.

++ 23.02.09 추가
이거 async-storage 쓰기로하고 적용해놨는데
Detox E2E 테스트코드 짜려고 도입중인데
안드로이드 minSdkVersion 문제로 asyncstorage 대신 realm으로 교체할듯

profile
이것 저것 다해보는 삶

0개의 댓글