KISA에 인턴으로 있을때 '다이하드'를 보았다.
하지만 다이하드의 내용이 기억나지 않는 것은 '나'라는 존재가 이분화 되었고 그 중 나는 다이하드를 '본' 사람이지만 ................. 왜 일까? ㅋㅋㅋㅋ

암튼 '보러 간' 이유가 발전소 해킹이었나? 그랬을 것이다. 아직 내용은 정확하게 몰라서 암튼 해킹이라는 주제가 나와서 보러간거다


자, 그럼 IEC 61850와 관련 내용이 먼지 간단하게 말해 보겠다.

발전소, 변전소, 등등등 이 있다.

전기 만들어서 각 가정에 전기를 보내주는 전체 과정은 거의 자동화 되어 있는데 문제는 이 좌식들이 너무 옛날 기술들  + 알파로 요즘 기술 몇개로 이루어져 있다. 물론 누더기식 개발이었기에...(웹처럼)  이제 슬슬 완전히 새걸로 만들 때가 되었다.



잠시 네트워크 이야기를 해보자. 100개의 노드가 있다. 최악의 경우 이 100개의 노드를 Full mesh로 연결을 한다고 생각해보자... 생각하지 말자 머리속에 넣었지만 날라간 full mesh공식은 N(N-1)/2 이다.
100 ( 100 -1 ) / 2= 100 *100 /2 - 100 / 2 = 10000/2 - 100/2 = 4950개
100개의 노드가 통신을 위해서 4950개의 선이 필요하다.
자자... '1개의 선'이니 한 종류의 통신 밖에 못한다. 적당히 해서 10 종류의 통신을 한다고 하자.
그럼 49500개의 선이 필요하다.
각 장비간 거리가 너무 이상적이어서 100 미터씩  떨어져있다. 그럼
49500 * 100m = 4950,000m = 4950Km ..... 4950Km의 선이 필요하다.
자 여기다가 선의 굵기를 곱하자..... 미친짓이다... 변전소에 기능이 추가 될 때마다 선으로 도배를 해야한다.
(아침 7시 30분에 글을쓰니.. 단순 계산이 틀린다.. 머지;;)
결국 제어선이 너무 많아져서 변전소가 너무 커지고 유지 관리에도 문제가 생겼다. 그래서 ...... 생각한게...
잘못된 말이었음

변전소에 랜선을 박아 버리고 모든 기기들은 LAN으로 통신하자...

이건 미친짓이다..

왜냐고?

멀쩡히 돌아다니던 장갑차랑 기차를 초딩이 해킹해서 티비 리모콘으로 조종하는 세상이다...

거따 랜선을 꼽겠다고?

그것도 관리를 위해서 원격에서 변전소의 정보를 볼수 있어야 한단다....

하아.......


지금 거기에 보안 문제에 대해서 논문을 쓰고 있다...

솔직히 정말 정말 재미 없다.
물론.. LAN이긴 하지만 INTERNET(대문자에 유의)에 연결 되는 일은 없을 것이다. 허나... 이런 ... 욕나오는...
자자... 통신할때 보안이 적용되어 있을 것 같은가?  천만에.. cost가 조낸 높다.
문제는 각 장비를 제어 하는 메시지 들인데.. 이것들을 조작하면 해당 변전소의 제어 하에 있는 지역은 전기가 전혀 안들어 오게 할 수있다.-_-

하하하하;....

일단 악플을 업으로 하시는 분들은 할게 없어지시며 크게는 병원에서 수술하다가 비상 발전기 돌리다 돌리다 안돼 사람 죽는 일도 발생 할 수 있다 (물론 그 지경 까지 가면 메뉴얼로 복구 시키겠지만)

지금 이 기술들은 표준화 하면서 소프트웨어로 되는지 안되는지 '타진'정도 하고 있다. 일단 검증은 아닌거 같다.. 검증 단계까지 가는데 얼마나 걸릴까.... 으... 암튼 이 타진하는 데에도 보안 문제가 여기 저기서 나오고 있는데 이건 10101011010101010101이다.

몇개의 결과가 몇 미리세컨드 이내에 들어와야 한다는 제한 조건들이 있다. ........ ASIC써야한다.... 안하면 이거 제대로 못한다..... 그런데 난 왜 이걸 소프트웨어로 구현하고 있는지 잘 모르겠다.........

이번 논문은 일단 여기서 보안이 되는지 안되는지 보고 몇몇 제한 조건을 만족하면서 얼마나 보한을 적용시킬수 있는지 결과를 보는 것이다.

아... 이거 솔직히 진짜 쉬운건데......

SISCO에서 만든 ABCD한 멍멍한 라이브러리 분석하느라 시간이 다 가고 있다.... 우리나라에 제대로 아는 사람 몇 없다며? -_- 더욱이....


난 전기과가 아니란 말야!!!!

재미도 없어!!!!
저작자 표시 비영리 동일 조건 변경 허락
크리에이티브 커먼즈 라이선스
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
Linux/일반2008/01/06 03:26




크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by dosuser(신대용) dosuser