2017-01-03 4 views
1

나는 스마트 폰에 탑재 된 센서에서 데이터를 읽고이 데이터를 JSON 형식으로 응용 프로그램 서버에 전송하는 Android 응용 프로그램을 만들었습니다.Android 애플리케이션 : DES 또는 RSA?

나는 서버와 안드로이드 앱이 https 프로토콜을 통해 작동하고 상호 인증 (자체 서명 된 인증서로 구성)으로 인증되도록 구성했습니다.

이제 클라이언트와 서버가 인증 프로세스를 시작하기 전에 Android 애플리케이션에 암호화를 추가하라는 메시지가 표시되었습니다.

이와 관련하여, 나는 자원 소비 관점에서 DES와 AES 사이의 최상의 알고리즘이 무엇인지 이해하고 싶다.

웹상에서 아무것도 찾을 수 없습니다. 이 논점에 대해 더 많이 이해할 수있는 리소스로 리디렉션 할 수 있습니까?

답변

3

DES는 대칭 암호화의 거의 모든 합법적 인 용도 (더 이상 사용되지 않으며 쉽게 무력 할 수 있음)에서 사용되지 않습니다. Blowfish, Twofish, RC4 (권장되지 않음) 및 3DES/TDES는 다른 옵션 인 반면 AES (128 비트 블록 크기의 Rijndael)는 표준 대칭 암호화 솔루션입니다. AES는 보편적으로 지원되며이 경우 최상의 솔루션이 될 것입니다. Android는 Java JCA (formerly JCE) 네이티브 라이브러리 및 SpongyCastle (Android 용 BouncyCastle 수정 버전)을 통해 AES 암호화를 지원합니다.

012,351,641 : 당신이 백업하기 위해 더 많은 실질적인 뭔가를해야 할 경우

, 많은 자원이있다

CSPRNG에서 생성 된 강력한 (128 비트 또는 256 비트) 키를 사용하거나 (PBKDF2, bcrypt 또는 높은 작업 계수/반복을 사용하는 강력한 암호문을 통해 강력한 암호문에서 안전하게 파생 됨), 각각에 대해 고유하고 예측할 수없는 IV를 사용해야합니다 (AEAD) cipher block mode of operation, 또는 GCM 또는 EAX와 같은 인증 된 암호화를 사용하거나 암호화 텍스트을 통해 HMAC 기반 메시지 인증 코드 (MAC) 을 삭제하고 일정 시간 임의의 복호화를 수행하기 전에 전에 동등 검사 을 검사하십시오.

2

DES를 사용하지 마십시오. 그것은 확실하게 골동품 (40 세 이상)이고 짧은 키 길이 (56 비트)는 요즘은 겸손한 하드웨어로 금방 금방 갈 수 있다는 것을 의미합니다.

약점이 얼마 전에 인식되어 더 나은 보안을 제공하기 위해 Triple DES (3DES)이 소개되었습니다 (112 비트로 키 길이 증가). 그러나 알고리즘이 각 블록의 데이터를 암호화하는 데 더 많은 작업을해야하기 때문에 계산 시간이 많이 소요됩니다.

AES는 모든면에서 3DES를 능가합니다. 디자인 상으로는 it is able to operate at high speed with low memory requirements입니다. 또한 최신 프로세서 (Intel x86 및 ARM 아키텍처 포함)에는 하드웨어에서 암호화 및 해독을 수행 할 수있는 built-in AES instructions이있어 3DES에서 가능한 것보다 훨씬 빠른 속도를 나타냅니다.

1

나는 DES와 관련하여 다른 답변에 동의해야한다. 이것은 동기를 부여받은 공격자에 대한 방어력이 거의 없다.

RSA (제목에 언급 된 다른 알고리즘)의 경우 공개 키 암호화 알고리즘은 일반적으로 개인적으로 시간을 잰 적이 없지만 일반적으로 상당히 느립니다 (내가 읽은 것에 기초하여 약 1000의 크기로 나타남). 그것).

또한 긴 메시지를 교환하기 위해 공개 키 암호화를 사용하는 것이 안전하지 않을 수도 있습니다.

일부 배경으로 공개 키 암호화는 일반적으로 어떤 종류의 trap-door function (즉, 계산하기는 비교적 쉬운 반면 역함수를 찾기는 어려운 함수)에 의존합니다. 그 기능들은 매우 찾기 힘들다는 것이 밝혀졌습니다. 현재 가장 일반적인 것 (RSA의 기반)은 integer factorization이며 "표준"컴퓨터에서는 NP-Intermediate이지만 (양자 컴퓨터의 경우 broken)

첫째, 정수 인수 분해 NP-중간 있다는 사실은 RSA 적어도 이론적 약점 - 기술적으로, 아무도 (비록 NP-중간 문제는 본질적으로 다항식 시간 알고리즘보다 더 "어렵다"입니다 실제로 을 입증 없다 컴퓨터 과학 분야에서 가장 중요한 질문 중 하나 인 P vs. NP problem을 해결해야하기 때문입니다.

많은 트랩 도어 기능이 AES 나 Twofish와 같은 좋은 대칭 키 알고리즘을 깨기 어렵 기 때문에 반대로는 찾아 내지 못합니다. 공개 키에 대한 최상의 공개 암호 해독 암호화 알고리즘은 적어도 대칭 키 알고리즘보다 다소 용이 한 경향이 있습니다. AES를 무차별 적으로 "깨뜨릴"수없는 이유는 여기에 좋은 article이 있습니다. 공격에 대한 알려진 공격도 가능하지 않습니다.

이러한 이유로 공개 키 암호화는 키 교환과 같은 경우에 주로 사용됩니다.이 시점에서 양 당사자는 대칭 키 암호화로 전환합니다.

다른 사람들은 모두 AES를 사용하고 있습니다.