vmware에 제너럴리눅스로 컴퓨터 만든후
centos 5.3설치 후 arm툴체인 깔고

glibc컴파일 -펌
기본 디렉토리에서 컴파일이 안된다.
glibc를 컴파일 할 때 glibc말고 glibc와 같이 있는 linuxthread 패키지도 같이 받아서 그것 먼저 configure하고 glibc를 configure해야한다.
다른 디렉토리를 만들고 해당 디렉토리에서 소스코드가 있는 디렉토리에 있는 configure를 실행한다.
그러면 Makefile이 생성되고 이후의 방법은 같다.

../glibc-2.3.2/configure --host=arm-linux --prefix=/usr/loca/arm-linux --enable-add-ons=linuxthreads --build=i386-pc-linux-gnu


libpcap 컴파일- 펌
ac_cv_linux_vers=2 ./configure --host=arm-linux CC=arm-linux-gcc --build=i386-pc-linux-gnu --with-pcap=linux
make


openssl - 잡지 마소 펌
① www.openssl.org에서 소스를 다운받아 압축을 해제한다.
② ./Configure linux-elf-arm --prefix=/usr/local/SSL --openssldir=/usr/ local/SSL/OPENSSL no-threads no-zlib no-asm
③ Makefile에서 CC를 크로스 컴파일러(ex. arm-linux-gcc)로 변경한다. Makefile이 여러 개인데 모두 변경해 주어야 한다.
④ apps 디렉토리 안에 있는 makefile에서 LIBSSL에 ‘-ldl’을 추가시킨다. 또 test 디렉토리의 makefile에 LIBCRYPTO에 ‘-ldl’을 추가시킨다.
⑤ make; make install을 통해서 컴파일한다.
⑥ arm-linux-gcc -print-search-dirs로 라이브러리 검색 디렉토리 목록을 찾은 후 액세스 가능한 디렉토리에 생성된 라이브러리 파일 2개와 pkgconfig 디렉토리를 복사한다.
저작자 표시 비영리 동일 조건 변경 허락
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by dosuser(신대용) dosuser
대용이의 강의2009/03/25 04:11

답은 4월 1일날 공개

현재 나온 모든 암호화 알고리즘의 구현이 존재한다.
이 알고리즘의 구현들은 각각은 잘 구현 되어 있으나 함수의 인자나 호출방법들(특정한 함수를 일정 순서대로 호출해야함)이 모두 재 각각이다.

이러한 방법을 Wrapper를 만들어서 해결 할 경우 모든 암호화 알고리즘별로 만들어어야 하는 문제가 있으며 모든 알고리즘을 하나의 함수로 Generalize하기 어렵다.

이러한 문제를 해결하기 위해서 Openssl에서는 함수의 Symbol 과 lvalue 그리고 lvalue로써의 parameter의 유형들을 정형화 시켜 스크립트화 했다.

openssl소스에서 이를 찾아서 어떻게 하였는지 상세하게 기술하여 A4용지 10페이지 내로 정리한다.(간단하게 설명 할 수 있으면 간단히, 단 권교수님한테 보여줘도 PASS할 수 있을 정도로)

또한 객체지향 언어에서 어떻게 하면 이런 문제를 해결 할 수 있는지 아이디어를 구체적으로 제시하라.
저작자 표시 비영리 동일 조건 변경 허락
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by dosuser(신대용) dosuser
Linux/일반2009/03/22 22:30
이 글은  Openssl에 AES에 대한 예제파일이 없어서 작성 하였다.
Openssl에서 AES코드를 가져와 사용하는 방법에 대해서 알아 보자



C언어로 작성된 보안 알고리즘이 필요하다, 당신은 어떻게 하겠는가?
난 주저 없이 Openssl에서 필요한 알고리즘 구현을 뜯어온다.


1. Openssl에서 AES뜯어내기
http://www.openssl.org 에서 압축된 것을 받아서 압축을 풀면 아래와 같은 화면을 볼 수 있다.
암호화 알고리즘과 해쉬는 crypto 디렉토리에 있다.


해당 폴더에 들어가면 우리가 일반적으로 알고있는 주요 알고리즘 외에 많은 알고리즘을 볼 수 있다.



aes디렉토리에 들어가면 AES알고리즘의 구현을 볼 수 있다.
보통 다른 알고리즘은 이 디렉토리에 예제 파일이 있고 여기서 make를 하면 해당 알고리즘만 컴파일이 된다.
하지만 AES는 예제 파일이 없다... 다른 알고리즘은 해당 디렉토리 혹은 <Openssl디렉토리>/test에 테스트파일이 있다.


이 소스를 수정하기 위해서 aes디렉토리를 원하는 곳으로 복사를 한다.



이제 해야할 것은  컴파일을 해보는 것이다.
하지만 당연히 컴파일은 되지 않는다.  몇가지 문제가 있는데


  • Makefile이 우리가 원하는 대로 실행파일을 만드는 것이 아닌 정적라이브 러리를 만든다.
  • aes_cfb.c파일에서 e_os.h파일을 필요로 한다.
  • aes_wrap.c 파일은 openssl에서 알고리즘들의 일반화를 위해서 aes를 랩핑하는데 쓴다. 구지 필요는 없다.
  • 거의 모든 파일이 <openssl/aes.h>를 참조한다. 
  • 테스트 파일이 없어 된건지 안된건지 알 길이 없다.
위 문제들을 해결 하기 위해서



메이크 파일 작성
일단 Makefile을 수정해야 합니다. 원하시는대로 수정 하시면 될꺼 같구요 저는 아래와 같이 하였습니다.


openssl 종속성 줄이기
이제 파일들을 모두 열어서 include 종속성들을 제거 해야합니다.
#include <openssl/~~~> 형식들을 #include "~~~~"로 바꾸어야 합니다.
사실 임베디드 환경에서 사용하거나 최적화를 한다면 이런식으로 대충 하면 안되겠죠?
필요한 파일들은 e_os.h, e_os2.h, opensslv.h opensslconf.h

또한 aes_wrap.c  를 삭제 해야 합니다. 이 파일은 aes를 이용해서  키를 wrapping하는 알고리즘을 구현 하고 있습니다. 알고리즘의 rfc는 3394( http://www.ietf.org/rfc/rfc3394.txt )입니다.
만약 이 알고리즘을 사용하면서 openssl에서 떼어내기를 원한다면 crypto.h cryptolib.c cryptolib.h mem.c mem_clr.c과 연결되어 있는 종속을 해결 하면 됩니다.







저작자 표시 비영리 동일 조건 변경 허락
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by dosuser(신대용) dosuser