2014-04-11 2 views
0

괜찮은 C 프로그래머가 주어진 대칭 암호의 VHDL 코드를 처음부터 작성하고 싶다고 가정 해보십시오. 작성자 중 지나치게 어려운 것은 아니지만 아이디어 나 팁이 있습니까? 마지막 프로젝트의 개념 증명 일뿐입니다. opencores 코어를 사용하여 AES를 성공적으로 사용할 수 있습니다.대칭 암호 HDL

기본적으로 VHDL 구현을 작성하는 데 일주일이 걸립니다. 나는 C에서 평균 이상이지만 VHDL에서 그렇게 좋지는 않을 것이다. EStream 암호에 관한 책을 읽었습니다. 누군가가 올바른 방향으로 나를 가리킬 수 있다면 ... 감사합니다!

P. 내 관심사는 FPGA로 구현하기에는 너무 어색한 과제를 다루겠습니다. 제한된 시간을 고려해야합니다!

+0

VHDL은이 구현에 필수입니까? 그렇지 않다면 Verilog를 VHDL보다 훨씬 빨리 선택할 수 있습니다 (순차적으로 병렬로 생각할 필요가 있습니다) - 하드웨어에서 신호가 나타나 자마자 발생합니다. 소프트웨어에서는 실행 순서를 제어 할 수 있습니다). 그 외에도 시간 제한이 있고 FPGA 구현에서 FPGA가 변환 및 C 코드를 직접 FPGA에로드 할 수 있는지 확인하는 경우 (대부분의 경우 수행) – wisemonkey

+0

고맙다는 응답을 보내지 않고 VHDL이 될 것입니다. 워밍업으로 성공한 좋은 '기본'VHDL 프로그램을 작성했습니다. 상대적으로 괜찮아요, 당신이 보는 것은 당신이 얻는 것입니다. 예, #C를 실행하는 FPGA로 인스턴스화 된 소프트 코어 프로세서를 발견했습니다. 목표는 VHDL을 통해 FPGA 속도를 활용하는 것입니다. 많은 암호가 거기에 있으므로 여전히 비교적 좋은 암호를 선택하려고합니다. –

+0

FPGA에서 마법의 속도가 증가 할 것이라는 점에주의하십시오 - 데이터를 가져오고 나가는 방법은 어떻습니까? 프로세서에서 데이터를 가져올 수 있습니다). 그렇게 할 수 없다면 문제를 계산 중심에서 I/O 바인딩 ([슈퍼 컴퓨터의 표준 정의] (https://groups.google.com/d/))으로 옮겼습니다. msg/comp.sys.super/QudD4KmUz-s/NemYWOvi5zcJ) :) –

답변

0

HDL은 소프트웨어 개발과는 다른 사고 방식이 필요합니다. 1 주일 안에 처음부터 다시 시작하지 않을 것입니다. 원래의 Verilog AES 구현 (Opencores에서도 가능)을 시도 할 수 있습니다. VHDL로 변환하는 과정에서 몇 가지 사항을 가르쳐 주지만 Verilog에서 부족한 VHDL 기능을 적절하게 활용하는 법을 배울 수는 없습니다.

+0

쿨하지만,별로 사용하지 않는 암호를 찾고 있습니다 ... 그물에서 다른 것들을 다운로드 할 수 있다는 것을 압니다. 어쩌면 새롭고 떠오르는 암호에 내 자신의 것을 쓰는 것을보고있었습니다. –

1

필자는 VHDL은 말할 것도없이이 특정 (그리고 현재 일자) 대칭 암호화 알고리즘을 매우 철저히 이해하고있는 1996 년 2 일 반 동안 디지털 암호화 표준 (DES)을 1996 년에 작성했습니다. 또한 VHDL 코드의 일부를 생성하는 C 프로그램을 거의 사용하지 않습니다 (테스트 벤치 용 테스트 벡터 인 S 박스). DES는 원래 하드웨어로 구현되어야했으며, RTL 레벨에서 한 IBM 특허에 설명되어 있었고 FIPS Pub 46에서는 중립적 인 방식으로 레퍼런스 구현이 문서화되어있었습니다.

참고로 사용할 수있는 구현은 직접 합성 대상이 아니며 RTL 수준의 I/O 버퍼가 제거되어야합니다. 또한 구성을 사용하여 R 및 L의 다른 네 개의 동일한 바이트 레지스터 쌍을 S 구성 요소로 지정합니다. 필자는 아직 구성을 지원하지 않은 VHDL 분석기/시뮬레이터와 함께 사용하기 전에 이들을 구별했습니다.

배포판의 가장 큰 부분은 DES 순열에 대한 PDF 문서로, 8 비트 인터페이스는 초기 순열, 역 순차 순열 및 확정 선택 1 (9 번째 와이어가 추가됨)에 대한 8 개의 전선입니다 . 또한 E의 순열은 매우 규칙적입니다. 불규칙한 순열은 Permuted Choice 2와 P 순열입니다. 물론 S 박스가 있습니다.

DES는 가장 간단한 구현에서 4,700 개의 NAND 게이트에 상응하여 구현 될 수 있으며, 예상 결과를 갖는 테스트 벡터가있다.

vhdl_des.tar.gzdes.test (테스트 벡터) Dropbox에.

교육 환경에서 임의의 키를 사용하지 못하도록 비활성화 된 자바 스크립트 DES 구현이 있습니다. 페이지를 캡처하면 실제로 실행 취소하여 비활성화하여 임의의 키를 사용할 수 있습니다. JavaScript DES Example을 참조하십시오. 여기 값은 각 라운드의 내부 값을 보여줍니다.

가 [쓰기 키 JS-DES.html의 사본은 JS-DES.html http://dpades.googlecode.com/svn/trunk/simu_js/JS-DES.html에서 찾을 수 있습니다, 프로젝트 홈 페이지 ( http://code.google.com/p/dpades/은)는 GPLv2에 말한다.]

당신은 라운드 값을 찾기 위해 자바 스크립트 구현을 사용할 수 있습니다 구현 문제 해결.

충분히 정교하지 않으면 Triple DES를 사용해보십시오.

+0

포괄적 인 답장을 보내 주셔서 감사합니다. 코드를 다운로드했습니다. 2 & 1/2 일 안에 다른 것입니다! 나는 오늘 밤 코드를 가지고 놀고 이해의 관점에서 집에 타격을 가할 것입니다. 처음에는 단순한 스트림 암호에 대한 계획이었습니다. 코드의 '많이'는 필요하지 않지만 3DES를 확실히 살펴볼 것입니다. –