2012-03-09 2 views
0

저는 CUDA 개발자입니다. 학부생에게 GPU에 AES를 구현하는 것을 돕고 있습니다. 이들은 암호에 대한 지식이 많지 않으므로 처음으로 작업하고 있습니다. 누군가가 대답 할 수 있다면 몇 가지 질문이 있습니다.CUDA를 사용하는 GPU의 고급 암호화 표준

  1. 어떻게 AES를 구현합니까? GPU에서 암호화하고 속도를 향상시키는 데 가장 적합한 데이터가 무엇이겠습니까? 우리가 CD를 암호화해야합니까? 또는 신용 카드 번호와 같은 중요한 데이터입니까? 즉, 데이터 소스는 무엇이되어야합니까?

  2. GPU에 적합한 AES의 작동 모드는 무엇입니까?

  3. 학생들은 입력 비트 스트림 속도에 대해 질문을 받았는데, 누구도이 비트를 비추 었습니까? 왜냐하면 내가 생각했던 방식대로, 그것은 데이터 크기에 의존해야합니다. 그리고 그 비교는 GPU와 CPU 사이에서 datasize를 기반으로하여 도출 될 수 있습니다.

미리 감사드립니다.

답변

1

나는 GPU를 정말 익숙하지 않은, 그래서 정말 다른 두 위해, 그러나 질문 2 대답 할 수 없습니다

포인트 1. AES는 암호화하든 상관하지 않습니다, 그냥 비트입니다. 통계적으로 유의 한 스피드 업을 보여줄 수 있도록 큰 파일을 찾으십시오. 몇 바이트를 암호화하여 구현의 (가능한) 속도 향상에 대해 많이 증명할 수는 없습니다. 물론, 이것은 "기능적"속도를위한 것입니다. 구현 속도는 실제로 RAM 또는 디스크 전송 속도에 의해 제한 될 수 있습니다. 따라서 즉시 생성하는 데이터를 암호화하는 데 걸리는 시간 (카운터처럼)을 사용하면 디스크/RAM에서 데이터를 읽을 필요가 없습니다.

포인트 3. AES는 블록 암호이며, 입력 크기는 128 비트 (16 바이트)로 고정되어 있으며이를 변경하기 위해 할 수있는 방법은 없습니다. 입력 데이터 속도는 순전히 데이터 처리 속도에 달려 있습니다.

+0

AES는 16 바이트의 청크를 사용하지만 일반적으로 큰 것을 암호화 할 때 체인을 사용할 수 있는지 여부는 사용할 수 없습니다. GPU를 사용하면 병렬화하여 동시에 많은 덩어리를 스크램블하므로 PC에서 할 수없는 일이 있습니다. 그것을 할 수 있기 위해, 가장 쉬운 방법은 ECB에 붙는 것입니다. (각 16 바이트는 독립적으로 체인을 사용하지 않습니다.) – Bruce

+0

피드백에 감사드립니다. 그래서 예를 들어 영화 나 DVD (Large one)를 사용할 수 있고 그것을 암호화하고 해독 할 수 있습니다. 데모 용 술. 충분히 좋을 까? – Bilal

+1

ECB는 완전히 안전하지 않은 모드이며 암호문에 대한 수많은 정보가 누출되므로 절대로 사용해서는 안됩니다. 일반적으로 기밀 유지가 필요한 경우 CBC 모드로 충분합니다. 그러나 CBC는 병렬 처리 할 수 ​​없습니다. 병렬 처리가 가능한 GCM 모드를 확인하고 인증 및 기밀을 제공합니다. – Darhuuk

0
  1. 당신은 걱정하지 않는다 : 일반적으로는 ISO 또는 600메가바이트 같은 큰 무언가를 무작위

  2. GPU 좋은 병렬화를 사용하여, 당신 때문에 가장 스틱 ECB에. 그렇지 않으면 알고리즘을 병렬 처리 할 수 ​​없습니다.

  3. 비율은 데이터 크기와 관련이 없습니다 : 크기/처리 시간입니다. cuda의 경우 장치/프로세스/전송으로의 이전을 고려해야합니다 (메모리 사본은 처리 기간이 짧아지는 것과는 거리가)니 다). => 병렬화를 많이하지 않으면 우승하는 대신 시간을 잃게됩니다.

+0

의견을 보내 주셔서 감사합니다. 클릭률이 CTR에서 제대로 작동하지 않습니까? 그렇다면 우리가 요금에 대해 염려해서는 안된다는 뜻입니까? 나는 우리가 집중해야 할 것들이 있어야한다는 것을 의미합니다 : 데이터 크기와 데이터 암호화 시간. 물론 당신이 말했듯이, 데이터가 충분히 크다면 대기 시간은 압도 될 것입니다. – Bilal

+1

CTR도 작동합니다. 병렬 처리를 허용하는 모든 것. 나는 보통 ECB 또는 CBC에 충실하므로 다른 모드에 대해서는 생각하지 않습니다. Wikipedia가이 주제에 도움이 될 것입니다. 당신은 단지 일부 모드가 해독을 위해서만 병렬화 될 수 있다는 점에 유의할 필요가 있습니다. – Bruce

+2

ECB는 좋지 않습니다. 아무도 그것을 사용해서는 안되므로, ECB에서 구현이 빠르다는 것을 증명하는 것은 정말로 도움이되지 않습니다. 안전하고 병렬화 될 수있는 다른 모드가 있으며, 이는 또한 메시지 인증을 제공합니다. 자세한 내용은 내 대답을 참조하십시오. – Darhuuk