1 of 1 people found this helpful
First of all, its not a "hardware implementation" if you use a MCU BTW. Its still a software implementation.
AES is simple so you can use any microcontroller.
Don't know what your experience is, but Arduino would work. Chipkit Products are good (FAST!). PSOC is good.
All can user serial communication. All can use C/C++.
I am not sure sending a complete file is wise, most MCU have small storage. I would do it more like a stream or block send. That is send it blocks of data, get back the encrypted blocks. Since AES is a block cipher this works well.
Send your key to the MCU, have it perform the key expansion, then send it a block , get a the block back. A small protocol will be needed to accomplish this but then again a protocol is always needed.
I don't know your exact details needed, a bit more information would help. Using this method you will need software running on a PC to send the file to the device, unless its a device that encrypts on the fly like a USB drive.
Thanks for response.
By hardware I mean a device which can be connected to a computer to encrypt data whatever implementation it may use.
I am considering sending data as one block from one serial port, encrypt data and receive it from the other. Should i use two different ports for sending and receiving or one will suffice?
I am doing UG project on the basis of which I may score a job. Thatswhy i dont want to use arduino because in my country Arduino is not taken seriously and thought as a easy solution. Which other will be better or should I use arduino.?
Also I want to store the Key in the Controller.
Which protocol will be better to use or should I design my own for sending and receiving data.?
I would just design a quick protocol or use. It can be real simple like having a start a stop sequence, send 2 blocks. One block is data, the other is a check of some sort, in worse case a checksum.
A single serial port is fine, which will be a USB port in today's terms.
I assume your country is ok with AVR just not Arduino? If so, check out AVRUSB
Another commone one is the ATTiny USB
I cant say if that is the exact one you should use but you need something that can either be a USB client OR has a usb->serial converter like the Arduino.
Keep in mind you will need software for the PC, written by you, to function as a "Driver". This software would allow you to drag and drop a file and it would take care of sending the device the data and saving the file. There may be some generic functionality you can use if you are a Windows person where it detects it as an "Encryption Device".
You can store the key in the controller but keep in mind that it can be extracted. I recommend the device prompt for a password (through the driver) and compute a key or decrypt the key stored in EEPROM. One of the issues with Symmetrical methods is key transfer as I am sure you are aware.
I don't see that you would want to implement anything too complex such as data compression etc..
Pick a device to use and I can help you from there.
Our adviser is urging us to use some derivative of 8051. Do you know any of them which can be used for implementation of AES-256 as it has very low memory. In pakistan, Nothing is available. We will have to import it. Kindly guide me to select a chip or kit.
I never used the 8051 in an embedded or micro system. It is a CISC architecture and not necessary for the AES-256 which is designed for a RISC system. So I find that requirement to be odd, but none the less.
With that said here are a list of chips:
2KB of flash will suffice for your code,
This chip has a UART. Personally I would look for something that is designed for USB development. I think you would want this to look like a flash drive where you plug it in and it installs the software.
if you connect a FT232R to the Rxd (p3.0) and Txd (p3.1) pins of a 8051 you have a 8051 with USB capabilities.
I am currently using a AT89C51ED2 micro (64K Flash / 2K EEPROM) connected to a FT232R : works great.
By adding three MSOFET's an three resistors I can also use the USB port for programming the AT89C51ED2.
I am going to Implement a AES-256 using some controller. I need suggestions for road-map and a decent choices of controllers.
Should I send complete file to controller for encryption because this implementation limits my range of file sizes.
Any help will be appreciated.