문제

나는 수정이 기존의 보안 코드입니다.사양은 매우 분명 있는 예제 코드,그러나 나는 암호화 전문가입니다.사실 예제 코드에서는 사항을 말하고,효과,"사용하지 않는 이 코드는 그대로."

을 감사하는 코드를 수정(는 가정으로 기능을 완료)나는 이 작은 보석에 사용되는 생성하는 도전 과제:

static uint16 randomSeed;

...

uint16 GetRandomValue(void)
{
  return randomSeed++;/* This is not a good example of very random generation :o) */
}

물론 내가 제일 먼저 즉시했다 주변 사무실할 수 있도록 우리는 모든 얻을 웃었습니다.

프로그래머가 생성 된 이 코드는 아니라는 것도 알았죠 좋은 알고리즘(로 표시하여 주석)하지만 나는 생각하지 않는다 그들은 이해하면 보안에 영향을 줍니다.그들려고 하지도 않았죠 그것에 메인 루프 그래서 그것은 적어도 차례로 실행 카운터는 여전히 이상적인,하지만 세계 넘어이다.

그러나,내가 알고 있는 코드를 생산하는 것을 마찬가지 원인에 진짜 보안 전문가에게 웃음거나 지진.

  • 무엇 대부분의 일반적인 보안 문제,특정을 암호화하는가를 이해할 필요가 있는가?
  • 어떤 좋은 수 있도록 설계되었습니다.게 적당한에 대한 지식이 내가 무엇을 알고 있어야를 넘어 일반적인 실수하고 있는가?

-Adam

도움이 되었습니까?

해결책

적용 암호화 암호화와 코드를 이해하는 데 도움이되는 훌륭한 책입니다. 블록 암호의 작동 방식과 같은 많은 기본 사항과 빈약 한 암호 모드를 선택하면 완벽하게 구현 된 AES 버전을 사용하더라도 코드를 쓸모 없게 만드는 이유가 있습니다.

조심해야 할 몇 가지 사항 :

  • 무작위성의 열악한 원천
  • 자신의 알고리즘이나 프로토콜을 설계하려고합니다.
  • IT 코드를 검토하지 않습니다. 바람직하게는 온라인으로 게시함으로써.
  • 잘 확립 된 라이브러리를 사용하지 않고 직접 작성하려고합니다.
  • 만병류로서의 암호화 - 암호화 데이터는 마술처럼 안전하지 않습니다.
  • 핵심 관리. 요즘에는 암호화를 공격하는 것보다 사이드 채널 공격으로 키를 훔치는 것이 종종 더 쉽습니다.

다른 팁

자신만의 롤을 시도하지 마십시오. 가능하다면 표준 라이브러리를 사용하십시오. 보안 코드의 미묘한 변화는 발견하기 쉽지 않지만 보안 구멍을 열 수있는 큰 영향을 줄 수 있습니다. 예를 들어, 두 개의 수정 된 라인 하나의 도서관에게는 꽤 오랫동안 쉽게 분명하지 않은 구멍을 열었습니다.

귀하의 질문은 가장 일반적인 것 중 하나를 보여줍니다. 비트가 무작위로 충분하지 않은 경우 256 비트 키를 사용해도 중요하지 않습니다.

2 번은 아마도 전문가보다 시스템을 더 잘 설계 할 수 있다고 가정 할 것입니다. 이것은 표준의 품질 구현이 혁신보다 거의 더 나을 수있는 영역입니다. SSL이 실제로 안전하기 전에 3 가지 주요 버전이 필요했습니다. 우리는 생각한다.

이럴 있는 네 가지 수준의 공격은 당신이 알고 있어야합니다:

  1. 사회 엔지니어링 공격입니다.당신이해야 기차의 사용자가 아는 바보 같은 짓을 작성 소프트웨어 등의 어려운 사용자를 위해 바보 같은 일을 수행합니다.모르겠어 어떤 좋은 기준에 대한 무료 세면용품 등이 있습니다.

  2. 지 않는 임의의 코드를 실행(buffer overflow,xss 공격,sql injection 은 모든 그룹 여기).최소는 것을 배우기 위해서 이에 대한 읽기 쓰기 보안 코드에서 누군가에서 MS 고 휴식하는 방법이 웹 소프트웨어는 google 기술 이야기입니다.이것은 또한 가르치는 대로 방어에는 깊이가 있습니다.

  3. 논리적 공격입니다.는 경우에는 코드는 조작하는 일반 텍스트,인증서,서명,암호-텍스트,공개 키를 또는 어떤 다른 암호화체,당신이 알고 있어야 하는 처리할 수 있도록 하는 것 나쁜 방법으로 이어질 수 있는 나쁜 것들입니다.최소 것을 알고 있어야에 대해 포함한 온라인 및 오프라인 사전 공격,재생 공격,man-in-the-middle attacks.시작점을 학습 이것에 대해 일반적으로 아주 좋은 참조를 위해 당신 http://www.soe.ucsc.edu/~abadi/논문/gep-ieee.ps

  4. 암호 공격입니다.암호화 취약점들은 다음과 같습니다:

    • 물건을 피할 수 있습니다:나쁜 random number generation,사용법의 hash function,깨진의 보안 시스템을 기본(예:엔지니어를 잊어 -1 에서 어딘가에 코드를 렌더링하는 암호화 기능을 가역)
    • 물건을 피할 수 없을 제외하고는 그대로--날짜으로 가능:새로운 공격에 대한 해시 기능 또는 암호화 기능(예보최근 MD5 이야기),새로운 공격 기술(예보최근의 공격에 대한 프로토콜을 보내는 암호화된 음성 네트워크를 통)

좋은 참조 전반에 적용되어야한 암호화를 사용합니다.

또한,그것은 아주 걱정을 나는 재료가는 모바일 장치에서는 아마도 잠 업데이트하기가 어렵습니다 누군가에 의해 쓰여지에 대해 묻는 보안에 유래.내가 믿는 당신의 경우 하나의 몇 가지해야 하는 경우는 외부(좋은)고문을 얻을 수 있도록 도와니다.심지어 경량 보안 컨설턴트는 나는 당신을 추천하는지,또한 위의 읽기(최소한)참조.

암호화와 관련하여 가장 일반적인 보안 문제는 무엇입니까?

Easy -You (1)는 자신의 알고리즘을 제시 할만 큼 똑똑하지 않습니다.

(1) 그리고 당신에 의해, 나는 당신, 나와 다른 사람들 이이 사이트를 읽는 것을 의미합니다 ... 앨런 케이 그리고 존 스키트.

나도 암호화 사람은 아니지만 S- 박스는 엉망이 될 때 번거롭게 될 수 있습니다 (그리고 차이를 만듭니다). 또한 PRNG뿐만 아니라 실제 엔트로피 소스가 필요합니다 (아무리 무작위로 보이도). PRNG는 쓸모가 없습니다. 다음으로 엔트로피 소스가 결정적이지 않고 변조 할 수 없도록해야합니다.

저의 겸손한 조언은 다음과 같습니다. 전문가가되어 위험을 이해하지 않는 한 알려진 암호화 알고리즘을 고수하십시오. 공개적으로 이용할 수있는 오픈 소스 / 공개 도메인 코드를 사용하는 것이 더 나을 수 있습니다.

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