로그인 보안 심화-안드로이드

EncrytedSharedPreferences

EncryptedSharedPreferences는 Android Jetpack Security 라이브러리에서 제공하는 보안 SharedPreferences입니다. 일반 SharedPreferences와 유사한 방식으로 사용하지만, 내부적으로 데이터를 암호화하여 보안을 강화합니다. 민감한 데이터를 로컬에 안전하게 저장하기 위해 설계되었으며, Android 6.0(Marshmallow) 이상에서 사용할 수 있습니다.

코틀린

**코틀린(Kotlin)**은 Google이 공식 지원하는 프로그래밍 언어로, 주로 안드로이드 앱 개발에 사용됩니다.

import androidx.security.crypto.EncryptedSharedPreferences

위 메서드를 사용해서 EncryptedSharedPreferences를 생성합니다.

import androidx.security.crypto.EncryptedSharedPreferences
import android.content.Context

val sharedPreferences = EncryptedSharedPreferences.create(
    "secure_shared_prefs",  // SharedPreferences 파일 이름
    masterKeyAlias,         // MasterKey alias
    context,                // 애플리케이션 컨텍스트
    EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV,   // 키 암호화 스킴
    EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM // 값 암호화 스킴
)

리액트네이티브

import * as Keychain from 'react-native-keychain';

// 1. 민감한 데이터 저장
async function storeToken() {
  await Keychain.setGenericPassword("username", "my_secure_token");
}

// 2. 저장된 데이터 가져오기
async function getToken() {
  const credentials = await Keychain.getGenericPassword();
  if (credentials) {
    console.log("Access Token:", credentials.password);
  }
}

엑스포

import * as SecureStore from 'expo-secure-store';

// 1. 민감한 데이터 저장
async function storeToken() {
  await SecureStore.setItemAsync("accessToken", "my_secure_token");
}

// 2. 저장된 데이터 가져오기
async function getToken() {
  const token = await SecureStore.getItemAsync("accessToken");
  if (token) {
    console.log("Access Token:", token);
  }
}