it-swarm-korea.com

SMS 암호화에 적합한 암호)

SMS 메시지를 암호화하기위한 응용 프로그램을 만들고 싶습니다. 충분한 토론 끝에 대부분의 사용자에게 공개/개인 키 문제를 처리하기가 너무 어렵 기 때문에 대칭 암호화를 사용하기로 결정했습니다.

따라서 비밀 키는 당사자 간의 음성 상호 작용이나 다른 방법을 통해 전송되어야한다고 생각합니다.

내 질문은 : SMS 암호화에 적합한 알고리즘은 무엇입니까? 암호는 메시지의 최대 길이가 160 자이고 인쇄 가능한 기호 만 허용해야합니다. 메시지 청크 및 모든 종류의 주변 문제는 용납 할 수 없습니다. 일부 휴대 전화는 청크 메시지를 자동으로 병합 할 수 있지만 제조사/모델의 다양성을 염두에두면 작동하지 않습니다.

어떤 생각, 조언?

12
Barmaley Red Star

나는 당신이 당신의 전제를 다시 방문 할 것을 촉구합니다. 두 끝점에 앱이있는 경우 알고리즘 선택 기준이 유효하지 않습니다. 앱이 사용자가 아닌 암호화/암호 해독을 처리합니다. 공개 키 암호화는 잠재적으로 이러한 맥락에서 더 나은 보안을 제공 할 수 있습니다. 예를 들어 SSH와 유사한 키 관리를 활성화 할 수 있습니다. 또한 먼저 위협 모델에 대해 생각하는 것으로 시작하는 것이 좋습니다. 첫 번째 질문은 내가 어떤 암호화 알고리즘을 사용해야 하는가? 첫 번째 질문은 "내가 방어하려는 위협은 무엇입니까?"입니다.

SMS 텍스트에 대해 대칭 암호화를 사용해야하는 경우 암호문 도용 기능이있는 CBC 모드의 AES가 그럴듯한 선택입니다. 암호화 할 메시지가 16의 배수가 아니면 암호문 도용은 낭비를 방지합니다. 일부 공간을 차지하는 IV가 여전히 필요합니다. 공간을 절약하기 위해 카운터를 보내고 카운터의 AES 암호화를 IV로 사용할 수 있습니다.

SMS를 통한 암호문 전송을 피할 수있는 방법이 있다면 피하십시오. 160자는 매우 제한적입니다. 인터넷을 통해 메시지를 전송할 수 있습니까?

SMS를 통한 터널링을 피할 수있는 경우 앱에 자체 개인/공개 키가 있고 각 연락처에 대한 공개 키를 유지하는 모델을 탐색 할 수 있습니다. 새로운 사람에게 연락 할 때 앱은 자신의 공개 키를 보내고, 다른 사람으로부터 공개 키를 받고, 해당 공개 키를 기억하고, 해당 공개 키로 암호화 된 메시지를 보냅니다. 물론 이것은 man-in-the-middle 공격에 취약하지만 사용하기가 더 쉬울 수 있습니다.

9
D.W.

다양한 제조업체와 모델을 시도하는 경우 작동하지 않을 것입니다. 많은 스마트 폰에서 타사 소프트웨어가 인터넷 게이트웨이를 통해 SMS 메시지를 보낼 수 있지만 대부분의 개방형 전화 운영 체제는 타사 소프트웨어가 들어오는 SMS 메시지를 처리하도록 허용하지 않습니다.

그러나 불가능 성을 무시하면 128 AES가 정상적으로 작동합니다. 그러면 일반 텍스트보다 크지 않은 암호문이 제공됩니다. 그중 8 개는 140 바이트 SMS에 맞습니다. SMS의 문자 인코딩을 사용하면 여전히 146 자의 메시지가 있습니다.

대칭 암호화를 지정 하셨기 때문에 키 배포 문제를 여러분에게 맡기게되어 기쁩니다!

4
user502

AES 또는 AES + RSA 조합을 사용해야합니다. 이제 160 자 문제가 나옵니다. 실제로 사용 가능한 페이로드는 140 바이트에 불과합니다. 모바일 (GSM 또는 CDMA) 140 개의 사용 가능한 바이트가 7 비트 인코딩으로 인코딩되어 140 바이트에 160 개의 문자를 넣을 수 있습니다.

이제 SMS가 채널이므로 암호화는 통신 모드보다 더 이상 문자 메시지가 아닌 바이너리 메시지가되어야합니다. 바이너리 메시지는 UDH (User Data Header)에 대해 추가 7 바이트를 사용합니다. 따라서 작업 할 수있는 문자 수는 133 개에 불과합니다.

SMS 채널을 사용한다면 양쪽 모두 APP가 필요하다고 생각합니다. 포트 기반 메시징을 사용할 수 있습니다. 기본받은 편지함이 아닌 최종 응용 프로그램에서 메시지를 직접 처리하는 데 사용합니다.

SMS 채널의 장점 중 하나는 저장 및 전달 프로토콜로, 상대방이 메시지를 수신 할 가능성이 높고 문제는 지연 및 페이로드 제한입니다. 응용 프로그램 수준 분할을 사용하면 긴 메시지도 보낼 수 있습니다.

SMS 채널의 또 다른 장점은 양방향 통신에서 실제 신뢰할 수있는 당사자가 메시징에만 관여한다는 것을 확인할 수 있다는 것입니다. A는 C에게 SMS를 보내는 동안 B로 위장 할 수 있습니다. 그러나 C가 응답하면 항상 A로만 이동합니다. 따라서 양방향 협상을 사용하여 상호 통신을위한 키 생성 및 공유 알고리즘을 구축 할 수 있습니다.

0
Mohit Sethi