7 Replies Latest reply on Oct 19, 2015 2:53 PM by jpmc01

    Hardware Encryption Module

    abubaker

      Hello everyone,

      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.
      Regards

        • Re: Hardware Encryption Module
          screamingtiger

          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.

           

          More info!

          1 of 1 people found this helpful
            • Re: Hardware Encryption Module
              abubaker

              Hi Joey,
              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.?
              Regards

                • Re: Hardware Encryption Module
                  screamingtiger

                  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.