Android 암호화 및 취약성에 대한 정식 설명


16

참고 : 현상금이 만료되었으며 의견을 수집 할 때 해결해야 할 한 가지 이유가있을 수 있습니다. 업 보트 수를 보면 다른 사람들에게도 관심이있는 것 같습니다. 나는 아직도 답을 얻고 싶어서 여기에 내가 제안한 것이 있습니다. 한 달 안에 좋은 대답은 50의 보너스를받을 것입니다. 이것은 적절한 시간과 인센티브를주기를 바랍니다.


Android 암호화 프로세스와 그 취약점을 잠시 이해하려고 노력했습니다.

이 사이트와 자매 사이트에서이 주제의 일부 를 다루는 많은 질문 이 있습니다. 내 포인트 홈을 운전하려면 다음 질문은 해결 부분전체하지 의 (연상 " 맹인 남성과 코끼리 ?":)

내 이해 (또는 오해?)

  1. 암호화 암호는 사용자 잠금 화면 PIN과 암호화 알고리즘의 조합으로 생성됩니다 (PIN의 길이가 제한되어 있기 때문에 고유의 약점이 있습니다)
  2. 이것은 소금에 절여서 루트 위치에 저장되며 사용자가 액세스 할 수 없습니다
  3. 암호화 / 복호화 할 실제 비밀번호를 생성하는 데 사용되며 실제 비밀번호는 RAM에 저장됩니다.
  4. 이것은 1 단계를 장치 SoC에 연결함으로써 강화되었습니다 ( 어떤 Android 버전? 장치를 고유하게 식별하는 하드웨어 요소는 무엇입니까? 가짜로 대체 할 수 있습니까? ).
  5. 따라서 암호화 키 및 장치없이 데이터를 해독 할 수 없습니다 (외부 SD도 보유)
  6. 가능한 복구 방법- 무차별 대입, RAM 정보 캡처 (3 단계) 키 확보
  7. 루팅 된 장치 사용자 지정 복구 / ROM 및 커널 깜박임을 통해 2 단계 데이터에 액세스하기가 더 쉽습니다. ( 그렇다면 왜 이것이 큰 위험으로 선전되지 않습니까? )
  8. 이 정보를 얻었더라도 실제 암호를 생성하는 것이 현명 하지 않은 노력 이라고 생각 합니다.
  9. 마시멜로는 외부 SD를 "내부 저장소"또는 "휴대용 저장소"로 취급 할 수 있습니다. 논리적으로는 차이가 없어야하지만 확실하지 않습니다.

내 이해에는 차이가 있으며 아마도 다른 주요 측면에서도 빠져있을 것입니다.

따라서 사용자 관점 에서 이해 하기위한 표준 설명 을 찾고 있습니다.

  • 전체 암호화 프로세스 (외부 SD 포함)

  • KitKat에서 Marshmallow에 이르기까지 Android 버전의 구현 변형 (Marshmallow의 외부 SD에 대한 이중 옵션 포함)

  • 사용자 수준의 취약점

노트

  • 질문이 너무 광범위하게 간주 될 위험이 있음을 알고 있지만 IMO는 포괄적 인 치료를 보증합니다
  • 통신 보안에 대한 경험이 있으면 암호화 개념을 사용자 수준으로 변환하는 데 어려움을 겪고 있습니다. 더 깊이 이해하기위한 설명을 통해이 문제를 해결하기위한 대답을 선호합니다. 프로세스의 예는 엄격한 의미에서 암호화 적으로 정확할 필요는 없지만 본질을 전달 해야 합니다.

  • 가능한 이점은 관련 측면에 대한 미래의 질문을 "중지" 할 수 있습니다.

  • 반복하는 비용으로 답변은 주로 사용자 수준 이어야 하지만 더 깊이 이해하려면 적절한 설명이 있어야합니다. 답을 두 부분으로 나누는 것이 적절한 방법 일 수 있습니다.

  • 포괄적 인 답변 을 장려하기 위해 사소한 / 캐주얼 / 패치 작업 답변 투표를 중단하는 것이 중요 합니다.


1
의견은 긴 토론을위한 것이 아닙니다. 이 대화는 채팅 으로 이동 되었습니다 . 보안에// 더 적합 할 수 있습니다 . 또한 요청하는 내용의 좋은 덩어리는 특정 하드웨어와 제조업체가 하드웨어를 구현하는 방법에 달려 있기 때문에 너무 광범위하다고 생각합니다.
Matthew 읽기

답변:


3

나는 다음과 같이 작동한다고 생각합니다.

  • 저장소는 동기식 임의 키를 사용하여 암호화됩니다.
  • 사용자가 입력에 따라 비밀번호를 선택하거나 변경하는 경우 문자와 숫자 및 문자로 구성된 비밀번호이거나 핀 코드, 패턴 스 와이프 또는 지문 또는 기타 입력, 비동기 암호화 알고리즘은 마스터 키를 암호화하는 데 사용되므로 올바른 식별로 인해 입력이 해독되어 마스터 키가 생성되어 스토리지를 암호화하고 해독 할 수 있습니다.
  • 사용자가 로그 아웃하는 순간 마스터 키를 보유한 메모리를 덮어 씁니다.

여기서 가장 큰 트릭은 마스터 키의 비동기 암호화입니다. Android에 마스터 키가 있으면 스토리지와 데이터를 교환 할 수 있습니다. 사용자가 로그인 한 경우에만 해당 마스터 키가 알려져 있습니다. 비동기 암호화는 공개 키 암호화입니다. 공개 키는 데이터 (이 경우 마스터 키)를 암호화하고 개인 키는 데이터를 해독합니다. 여기서 스토리지 암호화와 혼동하지 마십시오. 스토리지는 단지 동기식 암호화입니다. 암호화 및 암호 해독에 동일한 키가 사용됩니다. 그러나 그 "마스터"키의 발견 / 검색은 가장 큰 문제입니다. 그것은 어떤 시점에서 intance "1234"와 같은 약한 로그인 방법을 핀 코드로 가지고 있고, 마음을 바꾸고, "5364"로 변경하면, 이전의 "1234"가 아니라면 추측하기 어려운 것을 의미합니다. " 도난 당하고, 스누핑되어 언제든 보안이 향상되었습니다. 로그인 방법을 추측하거나 사전 공격이 불가능한 전체 비밀번호로 변경하는 경우에도 마찬가지입니다. 스토리지 자체는 전혀 다시 암호화 할 필요가 없습니다. 내부적으로 마스터 키를 숨기는 것이 전부입니다. 사용자는 마스터 키를 볼 수 없습니다. 마스터 키는 아마도 임의의 해시 코드 일 뿐이므로 해시 코드를 "찾아"거나 "추측"할 수는 없습니다. NSA 나 지구상의 다른 보안 기관조차도 이와 같은 일치 키를 찾을 수 없었습니다. 유일한 공격 벡터는 사용자의 약점을 기대하고 있습니다. 아마도 사용자는 핀 코드 로그인을 선택했을 것입니다. 4 자리 인 경우 최대 10000 개의 가능한 핀 코드입니다. OS는 짧은 시간 내에 몇 번 시도한 후 장치를 "차단"할 수 있습니다. 해결책은 OS를 "해킹"하는 것이므로 OS가 장치를 개입시키고 차단하지 않고도 가능한 모든 핀 코드를 시도 할 수 있습니다. 나는 그것이 FBI가 결국 범죄자의 전화에 접근하는 방법이라고 믿습니다. 내가 생각하는 FBI에 대한 해킹은 제 3 자 회사 (내가 기억하는 것 중 일부 이스라엘 회사)가 해킹했습니다. 그들은 그 암호 제한을 우회했습니다. 로그인이 정식 비밀번호이고 사용자가 강력한 비밀번호를 선택한 경우 문제가 없습니다. 지구상의 모든 CPU 전력이있는 삶의 시간이 아니라면 백만 년 동안 해킹 할 것입니다. 나는 NSA를 사지 않고 소문을 해독 할 수 있습니다. 그 사람들이 흑인 영화를 너무 많이 본 것 같아요. 다양한 암호화 알고리즘 (예 : AES)에 대한 과학 문서를 살펴보면 해킹이 발생하지 않는다는 것을 알게 될 것입니다. 40 비트 키가 있던 옛날을 제외하고. 그 시절은 오랫동안 지났습니다. AES128은 이미 해킹 할 수 없다고 생각합니다. 누군가 우려가 있다면 AES256으로 점프하면 우주의 크기에 비해 훨씬 안전합니다. 아마 어느 날 양자 컴퓨터는 암호를 해독 수도 있지만 나는 회의적이다. 확률 시스템을 사용하여 솔루션을 강조 표시 할 수 있는지 확실하지 않습니다. 우리는 결국 그것에 대해 보게 될 것입니다. 어쨌든 그것은 아마도 몇 평생 떨어져있을 것입니다. 지금은 걱정할 것이 없습니다.

결국, 보안 제한은 전적으로 사용되는 로그인 방법에 달려 있습니다. 저장소를 다시 암호화하지 않고도 방법을 변경할 수 있습니다. 마스터 키의 비동기 공개 키 암호화로 인해이 모든 것이 가능합니다.


"대칭"과 "비대칭"을 의미한다고 생각합니다. "동기"및 "비동기"가 아닙니다.
Jay Sullivan

1

업데이트가 빈번하기 때문에 전화 암호화 (Android 기반 OS) 처리 방식이 빌드마다 다를 수 있습니다. 따라서 주요 관심사는 암호화 자체가 아니라 프로세스가 실행중인 위치입니다. 그리고 해당 플랫폼에 취약점이있는 경우 암호화 알고리즘 자체의 강도는 그다지 중요하지 않습니다.

기본적으로 장치가 파일을 해독하면 수퍼 유저 권한이있는 프로세스에서 직접 파일에 액세스 할 수 있습니다. 이 프로세스는 ROM (Android OS) 자체의 취약점을 악용하여 기기에 액세스 할 수 있습니다. (이것은 최근 WikiLeaks에 일부 결함이 노출되어 뉴스에 게재되었습니다)

루팅 된 장치는 사용자 지정 복구 / ROM 및 커널 깜박임을 통해 2 단계 데이터에 액세스하기가 더 쉽습니다. (그렇다면 왜 이것이 큰 위험으로 선전되지 않는가?)

루트 전 : 장치를 루팅하려면 장치의 내부 구조에 깊이 액세스 할 수있는 외부 도구를 사용해야합니다. 이러한 도구 중 일부는 사전 컴파일되어 있으며 오픈 소스가 아닙니다. 그들은 "공식적인"웹 사이트를 가지고 있지만,이 사람들은 누구입니까? (twrp.me, 예를 들어 supersu.com이지만 KingoRoot와 같은 다른 것들이 있습니다) 정말로 신뢰할 수 있습니까? 나는 다른 것보다 더 많은 것을 믿습니다. 예를 들어 KingoRoot는 바이러스와 유사한 방식으로 동작하는 PC에 프로그램을 설치했습니다 (이를 제거하려면 이중 부팅을 사용해야했습니다).

루트 액세스 : 컴파일 된 프로그램 (APK)에 SU 액세스 권한을 부여하면 제한없이 사용하거나 사용할 의도를 지정하지 않고 원하는 모든 작업을 수행 할 수 있습니다. (의도는 APK가 WiFi, 카메라 등의 항목에 액세스하는 방법입니다.) 따라서 루트 액세스 권한이 부여 된 "신뢰할 수있는 앱"은 모든 종류의 정보에 쉽게 액세스하여 서버로 다시 보낼 수 있습니다.

전체 기기 암호화는 Google 및 정부로부터 내 데이터를 보호합니까?

구글-네 잠금 해제 키는 없습니다.

정부 (또는 해커)-아니요. 정부 나 해커는 본질적으로 위에서 언급 한 것처럼 파일을 가로채는 익스플로잇을 사용할 수 있기 때문입니다.

보안 절차 / 알고리즘의 복잡성은 가로 채서 무시할 수있는 경우 거의 쓸모가 없습니다.

편집 : Google은 실제로 사용자의 허락을 받거나 업데이트가 발생했음을 알리지 않고 Android 기기에 앱을 다운로드하여 설치 / 업데이트 할 수 있다는 점을 언급 할 가치가 있습니다. 그리고 루팅 된 기기에서도 주요 기능 (Play Store, Maps, Sync 등)을 잃지 않고 이것을 막을 수있는 방법이없는 것 같습니다

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.