문제

이것은 제가 항상 배우고 싶었던 것입니다.여러 구성요소가 서로 통신하는 시스템(소프트웨어 또는 하드웨어)을 설계할 때 기본적인 보안을 위해 프로토콜에 간단한 암호화 또는 기타 기능을 어떻게 구현할 수 있습니까?

전송/수신되는 일련의 바이트까지 낮은 수준의 액세스 권한이 있기 때문에 어쨌든 프로토콜을 변경할 수 있습니다.

편집하다: 저는 임베디드 프로그래밍, 프로토콜 보안을 위한 간단한 무선 암호화에 관심이 있습니다.

도움이 되었습니까?

해결책

당신은 "기본 보안"이라고 말하지만 그렇다고해서 큰 의미는 없습니다. 위협 모델은 무엇입니까? 어떤 종류의 공격을 방어하고 있습니까? 신용 카드 데이터를 전송하는 경우 RSA와 같은 강력한 암호화를 사용해야합니다. 그러나 나는 "적은"보호가 필요한 예를 생각할 수 없습니다. 해커가 코드를 분해하는 것에 대해 걱정된다면 이미 게임이 끝났습니다. 흥미 롭거나 가치가 있다면 해킹 할 것입니다. 그렇지 않다면, 당신은 그것을 구현하는 데 시간을 낭비했습니다.

다른 팁

가장 간단한 솔루션은 정상적인 소켓 대신 LA HTTPS/FTPS 스타일 대신 SSL 소켓을 사용하는 것입니다.

HTTP와 HTTPS 간의 프로토콜에는 전혀 차이가 없으며, 유일한 차이점은 다른 포트에서 작동한다는 것입니다 (80 vs 443 정상)에서는 일반 소켓을 사용하고 다른 하나는 SSL 암호화 소켓을 사용한다는 것입니다.

기본 암호화를 처음부터 설계하는 기본 암호화를 구현하지 마십시오. 암호화를 올바르게 구현하는 것은 매우 어렵습니다.

대신, 플랫폼에서 사용 가능한 암호화 사용에 집중하십시오 ... 플랫폼은 무엇입니까?

편집하다:

이것 좀 봐 그래서 게시 암호화 대안 목록의 경우, 일부는 임베디드 환경에서 상당히 잘 작동해야합니다 (예 : cryptopp 그리고 Tomcrypt).

OAUTH 다양한 API 간의 액세스 제어를 허용하기 위해 흥미로울 수 있습니다.

암호화 된 데이터 채널을 순전히 원한다면 프로토콜의 온 탑을 겹치는 것이 좋습니다. SSL 또는 SSH를 넘어갑니다.

임베디드 프로그래밍을 수행하는 경우 암호화 문제는 어디에 있습니까?

예를 들어 동일한 프로세서에 머무르는 한 암호화는 쓸모가 없습니다.

장치의 프로세서 간에 관심이 있는 경우 DSP에는 복잡한 암호화를 위한 여유 공간이 반드시 필요하지 않으므로 암호화가 어려울 수 있습니다.

빠른 속도를 원한다면 대칭 알고리즘이 최선의 선택이며, Blowfish나 IDEA와 같이 할 수 있는 좋은 알고리즘이 많이 있습니다.고유한 대칭 키를 저장할 수 있으므로 장치를 분해할 수 있는 경우 하나의 키만 검색되지만 각 장치에는 자체 키가 있어야 합니다.

각 키를 일련번호에 연결하면 서버와 통신하는 경우 패킷과 함께 일련번호를 전달하고 웹서버가 올바른 대칭 키를 찾아 신속하게 해독할 수 있습니다.

빠른 하드웨어 암호화를 원하신다면 MSEE 논문을 위해 임의 순서 미적분학을 사용하는 암호화 제품군을 개발했습니다. 이는 처리가 없기 때문에 마이크로스트립을 사용하는 하드웨어 회로에 있을 수 있는 키를 결정하기 어려울 것입니다. 안테나 바로 앞에 연결되어 안테나를 통과하는 모든 것이 암호화됩니다.

안전한 시스템을 설계 할 때 고려해야 할 사항이 많이 있습니다. 몇 가지를 언급하기 위해 :

  • 대칭/암호 암호화 체계의 선택
  • 암호화 알고리즘 (AES, Blowfish, Des)
  • 알려진 프로토콜 선택 (예 : SSL)
  • 주요 관리 및 배포
    • 단일 마스터 키 (해킹 된 경우 전체 시스템이 손상됨)
    • 장치 당 키 (키 분포가 더 어려울 수 있음)
    • 키 분포 채널 보호
  • 잠재적 해커가 샘플 장치에 쉽게 액세스 할 수 있습니까? 예를 들어 X-Box vs와 같은 소비자 제품은 전화 교환에 잠겨있는 상자입니다. 해커가 물리적으로 액세스 할 경우 해킹으로부터 보호하기가 더 어렵습니다.
  • 인적 요인 - 사회 공학 등
  • 시스템은 가장 약한 링크만큼 안전합니다.

나는 당신이 읽는 것이 좋습니다 브루스 슈나이어 우선 자료.

OAuth는 확실히 고려 사항입니다.그 외에도 고려해 볼 수 있는 사항은 다음과 같습니다. WS-보안.웹 서비스를 통해 전송하면 모든 플랫폼과 언어에 구애받지 않고 유지되며 WS-Security를 ​​추가하면 암호화 및 암호 해독이 애플리케이션 계층(엔드 투 엔드)에서 이루어집니다.따라서 보낸 사람이 보낸 메시지가 안전하다고 신뢰하는 한 클라이언트가 실제로 메시지를 받을 때까지 메시지가 안전하게 유지된다는 것을 알 수 있습니다. 즉, 메시지가 서버에 의해 해독되지 않고 클라이언트에 전달된다는 의미입니다. /receiver, 그러나 수신 애플리케이션에 메시지가 있는 후에).

따라서 기본적으로 OAuth를 사용하여 다양한 애플리케이션을 보호/인증하고 WS-Security를 ​​사용하여 이들 사이에 전달되는 메시지를 보호합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top