FPGA는 개발을 완성했을때 많은 불용게이트가 생기고
게이트를 프로그래밍 하기 위한 회로가 있어서
실지의 제품에서는 필요없는 회로가 되고
대량생산에 적용할 경우 코스트가 높아지는 원인이 됩니다.
그래서 완벽히 FPGA의 작동이 확인되면 모든 쓸모없는 회로와 게이트를
빼고 좀더 작은 면적의 웨이퍼를 사용하여
프로그램 불가능한 마스크타입의 회로로 만드는것이 ASIC입니다.
물론 FPGA도 ASIC에 속하지만 프로그램 가능한 ASIC 입니다.
원래 ASIC라 함은 FPGA,PAL,CPLD,GAL같은것도 모두 포함되지만
예전에는 ASIC를 개발할때 FPGA를 먼저 만들어 보는 과정이 없이
직접 ASIC을 타아겟으로 하여 그대로 설계하는 관습이 있었는데
그때의 관습때문에 특히 FPGA를 최적화 하여
마스크 타입의 ASIC으로 만든것을 ASIC 이라 합니다.
FPGA가 나옴으로 해서 ASCI의 개발 코스트가 아주 싸지게 된거지요.
SOC도 역시 ASIC에 속하고 개발과정은 ASIC개발 과정과 거의 유사합니다.
단지 아날로그 부분이 대폭 강화가 되어 있고 코일이나 대용량의
콘덴서 까지도 넣어서 칩한개에 필요한 제품의 모든 기능을
탑재하는것을 말합니다.
MP3칩 같은것이나 유전질병 진단을 위한 DNA칩,
CMOS 이미지 센서 같은것이 여기에 속합니다.
들어갈수 있는 부품의 제한이 없이 반도체 웨이퍼 위에 올릴수 있는 부품이라면
뭐든 사용할수 있는것이 일반 ASIC과 다릅니다.
DSP는 ASIC 과는 다른 종류로서 고속의 마이크로 프로세서에 해당합니다.
마이크로 프로세서가 단지 디지탈 신호만 처리할수 있는것에 비해
DSP는 아날로그 신호를 고속으로 처리할수 있도록 여러가지 대처가 되어 있는데
칩 내부에 곱셈기,부동소숫점 연산기가 하드웨어적으로 되어 있습니다.
물론 아날로그 신호도 직접 처리할수 있도록 아날로그 입출력 포트도
칩속에 내장되어 있습니다.
즉 DSP는 마이크로 프로세로 빠른 속도의 아날로그 신호를 디지탈적으로
처리하기 위해서 만들어진 마이크로 프로세서 입니다.
하지만 좀 옛날에 개발된 속도가 느린 DSP는
요즘의 프로세서보다도 느린경우도 많습니다.
도대체 DSP라고 볼수 없을 만큼 느리지만 DSP를 지향하여 만들어서
발표했기 때문에 DSP라고 부를 뿐입니다.
일반 마이크로 프로세서도 회로의 여러부분이 DSP처럼 하드웨어화 된것이
요즘은 많이 나오고 곱셈기 정도는 하드웨어화 하는것이 보통입니다.
하지만 시대의 조류에 따라 DSP는 마이크로프로세서보다 더욱더 빠른 속도로
아날로그 처리와 부동 소숫점 처리를 할수 있도록 설계합니다.
그렇게 일반 마이크로프로세서와 구별 시켜 DSP라는이름값을 하도록
고속의 아날로그 신호 처리를 강조하여 만든 마이크로 프로세서가
바로 DSP입니다.
그래서 DSP의 사용방법이나 프로그래밍 방법도
거의 마이크로 프로세서와 같습니다.
그러나 FPGA나 ASIC과는 완전히 다른것입니다.
DSP는 프로그램에 의해 하나하나의 명령이 페치되면서 해석되고 움직이지만
ASIC종류는 명령 해석과정이 없이 하드웨어가 직접 움직이니까요.
Posted by 응이

AES 암호화

3GPP 2009. 6. 4. 14:57

AES는 Advanced Encryption Standard의 약자로 현재 미국의 표준 암호 알고리즘에 대한 공식 명칭이다.


AES 이전에 미국의 표준알고리즘으로는 DES와 3DES가 있었습니다. 이들의 뒤를 잊는 암호 알고리즘이 바로 AES이다.

1997년 1월2일 미국의 NIST(National Institude of Standard and Technology)에서 AES 선정계획을 공고했고 이를 본 전세계의 많은 암호학자와 연구소에서 암호알고리즘을 개발하여 제출했습니다.

이때 제출된 알고리즘들은 CAST-256, CRYPTION, DEAL, DFC, E2, FROG, HPC, LOK197, MAGENTA, MARS, RC6, Rijndael, SAFER+, Serpent, Twofish 등이 있습니다. 이 중 일부는 암호분석학자들에 의해 문제점이 노출되었고 일부는 성능상의 문제로 제외되어 1999년 4월경 AES후보 알고리즘은 모두 5개 (MARS, RC6, Rijndael, Serpent, and Twofish)로 좁혀지게 됩니다. 이후 컨퍼런스를 거쳐 2000년 10월 Rijndael(리즌댈 또는 라인돌이라고 읽습니다.) 이 AES로 선정되게 됩니다.


 Rijndael은 벨기에의 암호학자인 Joan Daemen과 Vincent Rijmen이 개발한 알고리즘으로 DES와 3 DES가 Feistel network 이었던 것과는 달리 substitution permutation network 구조를 가지고 있으며 하드웨어나 소프트웨어적으로 구현했을때 모두 좋은 성능을 보이는 특성을 가지고 있습니다. 구현이 쉽고 메모리를 적게 소모하는것도 장점으로 뽀히고 있죠


Rijndael은 암호알고리즘 분류 상 대칭형암호알고리즘으로 분류됩니다. 대칭형 암호알고리즘에도 두가지 종류가 있는데 Rijndael은 이중에서  Block암호알고리즘 방식이며 128bit 블럭 단위로 암호화를 하고, 사용되는 Key의 사이즈는 128bit, 192bit, 256bit 등이 있습니다. 라운드 수는 10, 12, 14 라운드를 사용하고 각 라운드마다 SubBytes, ShiftRows, MixColumns, AddRoundKey의 4단계를 거치게 됩니다.


현재 AES의 취약점에 대한 연구가 활발하게 이루어지고 있으며 관련하여 XSL Attack이나 cache timing attack등에 관련된 논문이 발표되었다


현재 암호알고리즘들은 크게 대칭형 암호알고리즘과 비대칭형 암호알고리즘으로 구분됩니다. 대칭형 암호알고리즘은 암호화할때 사용되는 키값과 복호화할때 사용되는 키값이 동일한 알고리즘이고 비대칭형 암호알고리즘은 암호화할때 사용되는 키값과 복화화할때 사용되는 키값이 서로 다른 알고리즘입니다.


대칭형 암호알고리즘은 다음과 같은 장점 때문에 주로 통신을 통해 주고 받는 데이터를 암호화할 때 사용합니다.

1. 암호화/복호화 속도가 비대칭형 암호알고리즘보다 빠르다. (최소10 ~ 최대1000배)

2. 암호화문의 크기가 평문보다 크지 않다. (암호화시 사이즈 증가가 없다)


대칭형 암호알고리즘은 그 원리상 데이터를 송신하는 A와 데이터를 수신하는 B가 동일한 KEY를 가져야 하는데, A와 B가 어떻게 같은 KEY를 가질수 있도록 해야 하는가? 라는 문제를 해결해야만 합니다. 이를 KEY bootstraping 또는 KEY agreement problem이라고 합니다.


A가 KEY를 만들고 이 KEY를 네트워크를 통해 B에게 전달하는 식의 방법은 공격자가 중간에서 KEY값을 가로챌수 있기 때문에 사용할 수 없습니다. 이 문제를 해결하는 일반적인 방법은 두 가지가 있습니다.

1. KEY값을 뒤에서 설명할 비대칭형 암호알고리즘을 이용하여 암호화 시킨 후 전송하는 방법입니다.

2. 실제 키값을 전송하지 않고도 A와 B가 동일한 키값을 생성할 수 있도록 하는 알고리즘을 사용하는 것인데 Diff-Hellman이라는 알고리즘이 대표적입니다.


대칭형 알고리즘의 예로는 SEED, DES, DES3, AES 등이 있습니다.


비대칭형 암호알고리즘은 흔히 공개키알고리즘이라고도 불립니다.

그 이유를 설명해 드리죠


비대칭형 알고지즘을 이용하여 데이터를 전송하는 방식은 다음과 같습니다.


A는 두개의 KEY를 생성합니다. 두개의 키를 각각 private key, public key라고 부릅니다. (공개키 암호알고리즘이라는 용어는 여기에서 유래된 것입니다.) 이 때 생성된 private/public key는 수학적으로 다음과 같은 특성을 가지게 됩니다.

A의 public key를 이용하여 암호화 된 데이터는 A의 private key로만 복호화가 가능하다.

A의 private key를 이용하여 암호화 된 데이터는 A의 public key로만 복호화가 가능하다.


B역시 A와 마찬가지로 두개의 키를 생성합니다.


자 이제 A와 B가 통신을 하는 방법을 살펴보면

A와 B는 각자의 public key(공개키)를 서로에게 알려줍니다.

각자의 public key를 나눠갖게 되면

A는 PubA, PriA, PubB를 가지게 되고,

B는 PubB, PriB, PubA를 가지게 됩니다.

공격자는 물론 PubA, PubB를 가질 수 있겠죠


A는 B에게 데이터를 전송하기 위해 B의 Public Key(PubB)를 이용하여 데이터를 암호화한 후 전송합니다. 따라서 이 정보는 B의 Private Key(PriB)를 가지고 있는 B만 해독할 수 있습니다. B역시 마찬가지 방법으로 통신을 하면 됩니다.

이렇듯 Public Key가 공개되어도 안전하게 통신을 할 수 있다는 것이 Public Key의 장점입니다.
(물론 private key는 당연히 공개되어서는 안됩니다.)


비대칭형 암호알고리즘에는 RSA가 대표적이며, 비대칭형 암호알고리즘은 위에서 언급했던 것처럼 대칭형 암호알고리즘의 KEY를 암호화하는데 사용하거나, 주로 인증에 많이 사용됩니다.


실생활에서 공개키가 사용되는 예를 볼까요?

대표적인 예로 인터넷뱅킹을 들 수 있습니다.


C라는 고객이 Bank라는 은행과 인터넷뱅킹을 한다고 하죠


C는 Bank에 먼저 자신의 공개키를 보냅니다.

그러면 Bank는 대칭형암호알고리즘에서 사용할 KEY(이를 보통 비밀키라고 합니다.)를 C의 공개키를 이용하여 암호화 한다음 전송합니다. 이후 C와 Bank간의 통신은 이렇게 전송받은 비밀키를 통해 암호화 됩니다.


공격자가 중간에서 암호화된 비밀키를 획득한다 하더라도 C의 private을 알지 못하면 해독할 수 없고 따라서 비밀키로 암호화된 내용을 절대 볼 수 없습니다.


그런데 여기에는 한가지 문제점이 있습니다. 만약 공격자가 A가 Bank에 접속해서 마치 자신이 C인 것처럼 가장하고 자신의 공개키를 전송하면 어떻게 될까요? 만약 Bank가 속는다면 Bank는 A의 공개키를 이용하여 비밀키를 암호화 한 후에 전송할 것이고 A는 자신의 Private Key로 이를 해독한 후 비밀키를 획득할 수 있게 될 것입니다.


이러한 공격을 막기 위해서 Bank가 C의 공개키를 인증할 수 있는 방법이 필요합니다.

그게 바로 인증서라는 거죠.

인증서에는 인증받는자(보통 타켓이라고 합니다.)의 정보와 인증받는자의 공개키, 유효기간등 인증기관정보등이 기록되어 있습니다. 인증서는 타켓의 공개키가 인증서에 기록된 공개키가 맞다는 사실을 인증기관이 보장한다는 내용을 담고 있다. 

 

Posted by 응이
무선LAN에는 [Ad-Hoc Mode]와 [Infrastructure Mode]가 있습니다.


① 무선LAN Card만으로도 통신이 가능한 [Ad-Hoc Mode]



Ad-Hoc Mode는 Note PC끼리 데이터를 취급할 때 적합합니다. 무선LAN Card에서 전송한 Data를 상대방의 무선LAN Card로 직접 송수신이 가능합니다. 무선LAN Card만 사용하면 데이터 취급은 물론 프린터나 주변기기를 공유하여 효율적으로 이용할 수 있습니다. 각 PC의 네트워크 설정은 같게 해줌으로써 Peer-to-Peer 접속이 됩니다.


② Access Point를 사용하는 [Infrastructure Mode]


Infrastructure Mode는 Access Point라는 중계기를 통하여 무선LAN Card와 데이터 통신을 합니다. Access Point를 시야가 트인 곳에 설치하면 Data를 송수신하는 PC 주변에 장애물이 있더라도 안정된 Data통신이 가능합니다.

그외에도 Access Point를 사용하면 다음과 같은 장점이 있습니다.

HUB를 통해 유선LAN과의 상호 접속이 가능합니다.
RG(Residetial Gateway)를 사용하면 인터넷 접속이 가능합니다.
여러대의 Access Point를 일정한 간격으로 설치하면 Access Point간의 이동중에도 네트워크 접속이 가능하여 로밍기능을 이용할 수 있습니다.
MAC Address를 제한하여 보안 기능을 사용할 수 있습니다.
Posted by 응이

Bit[비트] 0과 1조합으로 된 최소단위

8 비트가 모여야 1MB

영문은 한글자 1바이트며 한글은 2바이트이며

=1024Byte

1024Byte = 1KB(킬로바이트)

1024KB = 1MB(메가바이트)

1024MB = 1GB(기가바이트)

1024GB = 1TB(테라바이트)


브로드 캐스트(Broad cast)

브로드 캐스트 전송 방식은 하나의 송신자가 불특정 다수에게 정보를 보내는 방법으로 원하든 원하지 않든 보내는 정보 사용되는 브로드캐스트, 이 용어는 때로 특정한 회원들이 아니라, 부서나 회사 전체 등과 같이 그룹의 모든 회원들에게 보내어지는 전자우편이나, 메시지 배포 등을 가리키는 데에도 사용된다. 다른 예 로는 방송 프로그램 같은 경우 원하든 원하지 않든 누가 보던 않보던 상관없이 제시간이 되면  나가는 방송 같은 형식과 같다

(예)지하철 방송 및 버스 광고 정거장 안내음 및 회사내 메일링


 

사용자 삽입 이미지

                                                       브로드 캐스트 형식



유니 캐스트 (uni cast)

유니 캐스트 전송 방식은 하나의 송신자가 다른 하나의 수신자로 데이터를 전송하는 방식으로 일반적인 인터넷 응용프로그램이 모두 유니캐스트 방식을 사용하고 있습니다.

그룹 통신을 위하여 다중 수신자들에게 동일한 데이터를 전송하고자 할 경우 유니 캐스트 전송방식을 이용한다면 전송하고자 하는 데이터 패킷을 다수의 수신자에게 각각 여러 번 전송해야 하며, 이러한 동일한 패킷의 중복전송으로 인해 네트웍 효율이 저하된다. 또한 수신자 수가 증가할 경우 이러한 문제점은 더 커지게 된다.

(예)전화 및 귓속말?


사용자 삽입 이미지

                                              유니 캐스트 형식



멀티 캐스트 (multi cast)

멀티캐스트 전송방식은 하나 이상의 송신자들이 특정한 하나 이상의 수신자들에게 데이터를 전송하는 방식으로 인터넷 화상 회의 등의 응용에서 사용한다.

반면 멀티캐스트 전송이 지원되면 송신자는 여러 수신자에게 한 번에 메시지가 전송되도록 하여, 데이터의 중복전송으로 인한 네트웍 자원의 낭비를 최소화할 수 있게 된다.

멀티캐스트 전송이 일반적인 유니 캐스트 인터넷 응용 분야와 다른 점은 우선 그 전송 패킷에 있다. 일반적으로 TCP/IP 상의 인터넷 응용 프로그램은 데이터의 송신자가 이를 수신할 수신자의 인터넷 주소를 전송 패킷의 헤더에 표시해 패킷을 전송한다. 그러나 멀티캐스트 전송을 위해서는 헤더에 수신자의 주소 대신 수신자들이 참여하고 있는 그룹 주소를 표시하여 패킷을 전송한다.

멀티캐스트 전송을 위한 그룹 주소는 D-class IP 주소 (224.0.0.0∼239.255.255.255)로 전세계 개개의 인터넷 호스트를 나타내는 A, B, C-class IP 주소와는 달리 실제의 호스트를 나타내는 주소가 아니며, 그룹 주소를 갖는 멀티캐스트 패킷을 전송받은 수신자는 자신이 패킷의 그룹에 속해있는 가를 판단해 패킷의 수용여부를 결정하게 된다.

(예) 강의


사용자 삽입 이미지

                                                        멀티 캐스트 형식

Posted by 응이
1

Dream come true.
응이

달력

태그목록