JJANG-JOON
article thumbnail
반응형

 

 

 

 

 

 

네트워크가 서로 연결되고 모바일 통신이 급속히 확장되면서 기업의 보안 도전은 증가했다. 모바일 운영체제인 iOS와 안드로이드는 PC 운영체제와 유사한 기능을 갖추고 있으며, 모바일 보안 솔루션은 주로 다음과 같이 분류된다

 

 

 

 

  1. 안티바이러스: 악성코드 및 피싱 공격 탐지 및 제거
  2. 앱 위변조 방지: 악의적으로 변경된 앱 탐지 및 처리
  3. 암호화: 중요 데이터 전송 시 암호화를 통한 보안 강화
  4. 보안 키패드: 중요 입력 정보의 가상 키패드를 통한 보안 강화
  5. 인증서 중계: 전자서명의 검증 및 관리를 위한 공인인증서 기반 시스템
  6. 모바일 SSO: 통합된 아이디 관리를 통한 접근 권한 및 보안 강화

 

 

 

 

 

암호화는 정보를 획득하지 않는 한 무가치하게 만들어 중요 정보 보호에 중요한 역할을 한다. 특히 개인 정보와 같은 중요한 데이터를 처리하는 분야에서는 공인인증서를 사용하여 전자서명을 검증하고 관리하는 것이 필요하다.

모바일 기기의 휴대성과 블루투스의 사용은 보안 취약성을 증가시키며, 이에 대한 대응책으로는 충분한 수준의 암호화와 인증 절차가 필요하다. 또한, 모바일 기기가 손상되거나 잃어버린 경우를 대비하여 원격으로 데이터를 삭제하거나 잠금을 걸 수 있는 기능을 활용해야 한다.

 

 

 

 

 

 

 

 

 

보안솔루션 분류에 따른 종류 및 설명

 

 

 

 

 

 

앱 안티바이러스 솔루션 종류

 

앱 안티바이러스 솔루션은 크게 무료유료 버전으로 나눌 수 있다.

 

무료 솔루션

  • 기본적인 악성코드 탐지 및 차단 기능 제공
  • 광고 포함
  • 기능 제한

대표적인 무료 앱 안티바이러스 솔루션

  • Avast Mobile Security
  • AVG Antivirus Free
  • Bitdefender Antivirus Free
  • Kaspersky Mobile Security
  • Sophos Intercept X for Mobile

유료 솔루션

  • 프리미엄 기능 제공
  • 광고 없음
  • 다양한 부가 기능 제공

대표적인 유료 앱 안티바이러스 솔루션

  • ESET Mobile Security
  • F-Secure Mobile Security
  • G DATA Mobile Security
  • McAfee Mobile Security
  • Norton Mobile Security

앱 안티바이러스 솔루션 선택 시 고려 사항

  • 앱의 특성 및 위협 모델
  • 솔루션의 효율성 및 성능
  • 솔루션의 도입 및 유지 관리 비용
  • 추가 기능 (VPN, 개인정보 보호 등)

앱 안티바이러스 솔루션 사용 시 주의 사항

  • 앱 안티바이러스 솔루션은 100% 완벽한 보안을 제공하지 않는다.
  • 앱 안티바이러스 솔루션을 사용하더라도 다른 보안도 함께 해야 한다.
  • 앱 안티바이러스 솔루션을 최신 버전으로 유지해야 한다.

참고자료

  • 앱 안티바이러스 솔루션 비교
  • 모바일 안티바이러스 어플 추천

추가 정보

  • 안드로이드 기기에는 기본적으로 구글 플레이 프로텍트 기능이 내장되어 있다. 구글 플레이 프로텍트는 악성코드가 포함된 앱의 설치를 차단하는 기능이다.
  • 앱 안티바이러스 솔루션 외에도 모바일 방화벽, VPN, 개인정보 보호 앱 등 다양한 보안 솔루션을 함께 사용하면 더욱 안전하게 모바일 기기를 사용할 수 있다.

 

 

 

 

앱 위변조 방지 솔루션 종류

 

앱 위변조 방지 솔루션은 크게 무결성 검증 방식난독화 방식으로 분류할 수 있다.

 

1. 무결성 검증 방식

  • 앱의 무결성을 검증하여 위변조 여부를 확인하는 방식이다.
  • 앱 서명 검증: 앱 서명은 앱의 개발자를 식별하고 앱이 위변조되지 않았는지 확인하는 데 사용되는 디지털 서명이다. 앱 서명 검증은 앱이 설치되고 실행될 때마다 수행된다.
  • 코드 해시 검증: 앱의 코드를 해시하여 해시값을 저장하고, 앱 실행 시 해시값을 다시 계산하여 비교한다. 해시값이 일치하지 않으면 앱이 위변조된 것으로 판단한다.
  • 루팅/탈옥 감지: 루팅 또는 탈옥된 단말기는 보안 취약점이 존재하기 때문에 앱 위변조에 취약하다. 앱 실행 전에 단말기가 루팅/탈옥되었는지 확인하여 위험한 단말기에서 앱 실행을 차단한다.
  • 런타임 검증: 앱 실행 중에 앱의 무결성을 지속적으로 검증한다. 앱 코드, 데이터, 리소스 등을 실시간으로 검사하여 위변조 시도를 감지한다.

2. 난독화 방식

  • 앱 코드를 난독화하여 역엔지니어링을 어렵게 만드는 방식이다.
  • 프로가드: 자바 코드를 난독화하는 오픈소스 도구이다. 코드를 변형하고 불필요한 코드를 제거하여 역엔지니어링을 어렵게 만든다.
  • 난독화 알고리즘: 코드를 난독화하는 다양한 알고리즘이 사용된다. 코드 구조 변경, 명령어 삽입, 문자열 암호화 등의 방식으로 코드를 이해하기 어렵게 만든다.

3. 기타 방식

  • 앱 사용자 권한 제어: 앱 사용자에게 부여하는 권한을 최소화하여 앱 위변조 공격의 표면적을 줄인다.
  • 보안 교육: 앱 개발자 및 사용자에게 앱 위변조 공격에 대한 교육을 제공하여 공격을 예방한다.

앱 위변조 방지 솔루션 선택 시 고려 사항

  • 앱의 특성 및 위협 모델
  • 솔루션의 효율성 및 성능
  • 솔루션의 도입 및 유지 관리 비용

대표적인 앱 위변조 방지 솔루션

 

 

앱 암호화 솔루션 종류

 

앱 암호화 솔루션은 크게 데이터 암호화앱 자체 암호화로 분류할 수 있다.

 

1. 데이터 암호화

  • 앱 내 저장된 데이터를 암호화하여 무단 접근을 방지하는 방식
  • 데이터베이스 암호화: SQLite, Realm 등 모바일 앱에서 사용되는 다양한 데이터베이스를 암호화한다.
  • 파일 암호화: 중요한 파일들을 AES, RSA 등의 암호화 알고리즘을 사용하여 암호화한다.
  • Shared Preferences 암호화: 안드로이드에서 사용자 설정 정보 등을 저장하는 Shared Preferences를 암호화한다.

2. 앱 자체 암호화

  • 앱 자체를 암호화하여 역엔지니어링이나 디버깅을 방지하는 방식
  • 프로가드: 자바 코드를 난독화하여 역엔지니어링을 어렵게 만드는 오픈소스 도구이다.
  • 난독화 알고리즘: 코드 구조 변경, 명령어 삽입, 문자열 암호화 등의 방식으로 코드를 이해하기 어렵게 만든다.

3. 기타 방식

  • 앱 사용자 권한 제어: 앱 사용자에게 부여하는 권한을 최소화하여 앱 암호화 공격의 표면적을 줄인다.
  • 보안 교육: 앱 개발자 및 사용자에게 앱 암호화 공격에 대한 교육을 제공하여 공격을 예방한다.

앱 암호화 솔루션 선택 시 고려 사항

  • 앱의 특성 및 위협 모델
  • 솔루션의 효율성 및 성능
  • 솔루션의 도입 및 유지 관리 비용

대표적인 앱 암호화 솔루션

 

 

 

앱 보안 키패드 솔루션 종류

앱 보안 키패드 솔루션은 크게 가상 키패드하드웨어 키패드로 분류할 수 있다.

 

 

1. 가상 키패드

  • 앱 내에 가상 키패드를 구현하여 사용자의 입력 정보를 보호하는 방식
  • 키 입력 좌표 변화: 키 입력 좌표를 무작위로 변화시켜 키로거 공격을 방지한다.
  • 키 배열 변화: 키 배열을 무작위로 변화시켜 패턴 기반 공격을 방지한다.
  • 입력 값 암호화: 입력된 값을 암호화하여 전송하여 중간자 공격을 방지한다.

대표적인 가상 키패드 솔루션

2. 하드웨어 키패드

  • 별도의 하드웨어 키패드를 사용하여 사용자의 입력 정보를 보호하는 방식
  • 키 입력 정보 분리: 키 입력 정보가 앱과 직접 연결되지 않아 키로거 공격에 취약하지 않는다.
  • 높은 보안 수준: FIPS 140-2 등의 보안 인증을 받은 하드웨어 키패드를 사용하여 높은 보안 수준을 제공한다.

대표적인 하드웨어 키패드 솔루션

앱 보안 키패드 솔루션 선택 시 고려 사항

  • 앱의 특성 및 위협 모델
  • 솔루션의 효율성 및 성능
  • 솔루션의 도입 및 유지 관리 비용
  • 사용자 편의성

 

 

앱 인증서 중계 솔루션 종류

 

앱 인증서 중계 솔루션은 크게 서버 기반클라이언트 기반으로 분류할 수 있다.

 

 

1. 서버 기반 솔루션

  • 서버에서 인증서를 관리하고 사용자 앱에 필요할 때 제공하는 방식
  • 장점:
    • 사용자 앱에서 인증서를 관리할 필요가 없어 편리하다.
    • 서버에서 인증서를 안전하게 관리할 수 있다.
  • 단점:
    • 서버에 대한 공격에 취약할 수 있다.
    • 서버 성능에 영향을 줄 수 있다.

대표적인 서버 기반 솔루션

  • Entrust IdentityGuard
  • Gemalto SafeNet Authentication Service

2. 클라이언트 기반 솔루션

  • 사용자 앱에서 인증서를 관리하는 방식이다.
  • 장점:
    • 서버에 대한 의존도가 낮다.
    • 서버 성능에 영향을 줄 수 없다.
  • 단점:
    • 사용자 앱에서 인증서를 안전하게 관리해야 한다.
    • 사용자 앱 개발에 추가적인 작업이 필요한다.

대표적인 클라이언트 기반 솔루션

앱 인증서 중계 솔루션 선택 시 고려 사항

  • 앱의 특성 및 위협 모델
  • 솔루션의 효율성 및 성능
  • 솔루션의 도입 및 유지 관리 비용
  • 사용자 편의성

 

 

모바일 SSO 솔루션 종류

모바일 SSO 솔루션은 크게 SAML 기반, OIDC 기반, JWT 기반으로 분류할 수 있다.

 

1. SAML 기반 SSO 솔루션

  • SAML (Security Assertion Markup Language) 표준을 사용하여 사용자 인증을 처리하는 방식이다.
  • 장점:
    • 업계 표준을 사용하여 다양한 서비스와 호환 가능하다.
    • 높은 보안 수준을 제공한다.
  • 단점:
    • 설정 및 관리가 복잡할 수 있다.
    • 모든 서비스가 SAML을 지원하지는 않는다.

대표적인 SAML 기반 SSO 솔루션

2. OIDC 기반 SSO 솔루션

  • OIDC (OpenID Connect) 표준을 사용하여 사용자 인증을 처리하는 방식이다.
  • 장점:
    • SAML보다 간편하게 설정 및 관리할 수 있다.
    • REST API를 사용하여 다양한 플랫폼과 호환 가능하다.
  • 단점:
    • SAML만큼 높은 보안 수준을 제공하지는 않는다.
    • 모든 서비스가 OIDC를 지원하지는 않는다.

대표적인 OIDC 기반 SSO 솔루션

3. JWT 기반 SSO 솔루션

  • JWT (JSON Web Token)를 사용하여 사용자 인증 정보를 전달하는 방식이다.
  • 장점:
    • 매우 간편하고 가볍다.
    • 서버 측 인증이 필요하지 않다.
  • 단점:
    • SAML이나 OIDC만큼 높은 보안 수준을 제공하지 않는다.
    • 모든 서비스가 JWT를 지원하지는 않는다.

대표적인 JWT 기반 SSO 솔루션

모바일 SSO 솔루션 선택 시 고려 사항

  • 앱의 특성 및 위협 모델
  • 솔루션의 효율성 및 성능
  • 솔루션의 도입 및 유지 관리 비용
  • 사용자 편의성
  • 지원되는 서비스 및 플랫폼

 

 

 

보안솔루션 적용 방법

 

 

 

 

  1. 안티바이러스 (Antivirus):
    • 안티바이러스 소프트웨어는 모바일 운영체제에 대한 API 또는 프레임워크를 사용하여 작동한다.
    • 애플리케이션 코드에 소프트웨어의 SDK를 통합하여 악성 코드 검사 및 탐지 기능을 적용할 수 있다.
    • 이를 통해 사용자가 앱을 실행할 때마다 또는 주기적으로 악성 코드 검사를 실행할 수 있다.
  2. 앱 위변조 방지 (App Integrity Protection):
    • 앱의 무결성을 보호하기 위해 코드 서명이나 해시를 사용하여 앱의 정체성을 검증하는 로직을 추가한다.
    • 앱의 런타임 중에 앱의 코드와 리소스를 검사하여 위변조 여부를 판단하는 로직을 구현한다.
    • 이를 통해 앱이 변경되었거나 위변조된 경우 적절한 조치를 취할 수 있다.
  3. 암호화 (Encryption):
    • 중요한 데이터를 암호화하기 위해 암호화 알고리즘과 키 관리 시스템을 사용하여 데이터를 보호한다.
    • 사용자의 입력 데이터나 저장 데이터를 암호화하여 저장하고, 필요할 때만 복호화하여 사용한다.
    • 암호화 및 복호화 기능을 제공하는 라이브러리를 사용하여 애플리케이션 코드에 통합한다.
  4. 보안 키패드 (Secure Keypad):
    • 중요한 정보를 입력받는 화면에 가상 키패드를 표시하여 사용자가 키패드를 터치하여 입력할 수 있도록 한다.
    • 키패드 입력에 대한 이벤트 핸들러를 구현하여 입력된 데이터를 안전하게 처리하고 보호한다.
    • 입력된 데이터를 전송하기 전에 암호화하여 보안을 강화할 수 있다.
  5. 인증서 중계 (Certificate Authority):
    • SSL/TLS 연결을 설정할 때 서버로부터 수신한 인증서를 검증하는 로직을 추가한다.
    • 인증서를 검증하고 신뢰할 수 있는 인증 기관의 목록과 비교하여 인증서의 유효성을 확인한다.
    • 인증서 검증 로직을 통합하여 사용자가 안전한 서버와의 통신을 보장한다.
  6. 모바일 SSO (Single Sign-On):
    • SSO 시스템과 통합하기 위해 사용자의 인증 정보를 관리하고 SSO 서비스에 로그인하는 로직을 추가한다.
    • SSO 시스템과의 통신을 위한 API 호출이나 라이브러리를 사용하여 인증 정보를 교환하고 인증 프로세스를 처리한다.
    • 사용자가 여러 애플리케이션에 대해 SSO를 사용할 수 있도록 각 애플리케이션에 SSO 연동 로직을 추가한다.

 

모바일 앱 보안 솔루션 설명 및 코드 적용 방법

안티바이러스

  • 설명: 악성 코드로부터 모바일 기기를 보호하는 솔루션
  • 작동 방식: 악성 코드 패턴 데이터베이스를 사용하여 악성 코드를 식별하고 차단
  • 코드 적용 방법: 안티바이러스 SDK를 앱에 포함하여 악성 코드 스캔 기능을 구현

앱 위변조 방지

  • 설명: 앱의 악성 변조를 방지하여 원본 앱의 기능 및 보안을 유지하는 솔루션
  • 작동 방식: 앱 코드 및 리소스를 암호화하거나 코드 무결성 검증을 통해 변조를 감지
  • 코드 적용 방법: 앱 위변조 방지 SDK를 앱에 포함하여 코드 암호화, 무결성 검증 기능을 구현

암호화

  • 설명: 앱 내 데이터 및 코드를 암호화하여 무단 접근 및 도용을 방지하는 솔루션
  • 작동 방식: 데이터 암호화, 코드 암호화, 키 관리 등의 방식을 사용하여 보안성을 강화
  • 코드 적용 방법: 암호화 라이브러리를 앱에 포함하여 데이터 암호화, 복호화 기능을 구현

보안 키패드

  • 설명: 키 입력 정보를 보호하여 키로거 공격으로부터 사용자를 보호하는 솔루션
  • 작동 방식: 가상 키패드 또는 하드웨어 키패드를 사용하여 키 입력 정보를 암호화
  • 코드 적용 방법: 보안 키패드 SDK를 앱에 포함하여 가상 키패드 또는 하드웨어 키패드 연동 기능을 구현

인증서 중계

  • 설명: 앱과 서버 간의 인증 과정을 안전하게 처리하는 솔루션
  • 작동 방식: 서버 인증서를 앱에 제공하여 서버와의 통신을 안전하게 수행
  • 코드 적용 방법: 인증서 중계 라이브러리를 앱에 포함하여 서버 인증서 검증, 통신 암호화 기능을 구현

모바일 SSO

  • 설명: 여러 앱에서 동일한 계정을 사용할 수 있도록 하는 솔루션
  • 작동 방식: SAML, OIDC, JWT 등의 표준을 사용하여 사용자 인증을 중앙에서 관리
  • 코드 적용 방법: 모바일 SSO SDK를 앱에 포함하여 로그인, 로그아웃, 사용자 정보 관리 기능을 구현

 

 

각 솔루션별 코드 적용 예시

안티바이러스

// 안티바이러스 SDK 초기화
Antivirus.init(context);

// 앱 스캔 수행
Antivirus.scan(file);

// 악성 코드 발견 시 처리
if (Antivirus.isMalware(file)) {
    // ...
}

앱 위변조 방지

// 앱 위변조 방지 SDK 초기화
AntiTamper.init(context);

// 앱 무결성 검증
if (!AntiTamper.verifyIntegrity()) {
    // ...
}

// 앱 코드 암호화
AntiTamper.encryptCode();

암호화

// 암호화 라이브러리 초기화
Cipher.init(key);

// 데이터 암호화
byte[] encryptedData = Cipher.encrypt(data);

// 데이터 복호화
byte[] decryptedData = Cipher.decrypt(encryptedData);

보안 키패드

// 보안 키패드 SDK 초기화
SecureKeyboard.init(context);

// 키 입력 리스너 등록
SecureKeyboard.setKeyListener(new OnKeyListener() {
    @Override
    public boolean onKey(View v, int keyCode, KeyEvent event) {
        // ...
    }
});

// 키패드 표시
SecureKeyboard.show();

 

인증서 중계

// 인증서 중계 라이브러리 초기화
CertificateMediator.init(context);

// 서버 인증서 검증
if (!CertificateMediator.verifyServerCertificate(certificate)) {
    // ...
}

// 서버와의 통신 암호화
HttpsURLConnection connection = new HttpsURLConnection(url);
connection.setSSLSocketFactory(CertificateMediator.getSSLSocketFactory());

 

모바일 SSO

// 모바일 SSO SDK 초기화
MobileSSO.init(context);

// 로그인
MobileSSO.login(provider, callback);

// 로그아웃
MobileSSO.logout();

// 사용자 정보 가져오기
MobileSSO.getUserInfo(callback);

 

반응형
profile

JJANG-JOON

@JJANG-JOON

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

profile on loading

Loading...