Sunday, October 22, 2017

ChipWhisperer laughs at your AES-256 implementation. But it laughs with you, not at you.



The objective of ChipWhisperer is nothing short of revolutionizing the entire embedded security industry. Every designer who uses encryption in their design should be able to perform a side-channel attack, and understand the ramifications of these attacks on their designs. The open-source nature of the ChipWhisperer makes this possible, and my hope is that it becomes the start of a new era of hardware security research.

https://hackaday.io/project/956-chipwhisperer-security-research





Defends Against: Fault injection attacks Physical attacks Side channel attacks Differential fault analysis attacks RNG attacks Sensor and test mode attacks Dictionary attacks

Crypto.Noise.Tutorial oise is a suite of cryptographic protocols similar in spirit to NaCl's crypto_box, or network solutions like TLS, but simpler, faster, with higher-security elliptic-curve cryptography, and stronger guarantees about deniability and identity hiding.

Introduction

The noise package defines two sets of APIs: boxes and pipes. Boxes handle standalone messages, and pipes encrypt communication channels.
To begin, a sender and a receiver must create a keypair:
sender(senderPK, senderSK)       <- code="" style="line-height: 16.12px; margin: 0px; padding: 0px;">createKeypair
receiver
(receiverPK, receiverSK) <- code="" style="line-height: 16.12px; margin: 0px; padding: 0px;">createKeypair
Send the public keys around, and keep the private keys safe.

Box API

Boxes are created using seal, and opened using open:
>>> b <- 32="" ello="" pack="" receiverpk="" seal="" sender="" span="" ust="" world="">>>> print $ open receiverSK (Just senderPK) b
Just "Hello world!"
When creating a box, you specify the sending keypair, the receiving public key, the amount of random padding you want (to obscure the plaintext length), and the message. To open it, you specify the secret key of the receiving party, and the public key of the sender.
Attempting to open a box from someone other than the sender will result in failure.
Senders may also be anonymous, where the sender does not specify a long-term key pair:
>>> b <- 32="" ello="" nothing="" pack="" receiverpk="" seal="" span="" world="">>>> print $ open receiverSK Nothing b
Just "Hello world!"
In the above example, the sender of the box is anonymous without a keypair, and attempting to use a value other than Nothing as the key will error. When the sender is anonymous, they are only identified by a short-term ephemeral key, which is used only once for the corresponding box.
Once you have encrypted a value using seal, it can only be decrypted by the receiving party with the secret key. This property means that boxes are forward secret: once you are done creating them and have 'forgotten' the message, you cannot recover it. Furthermore, boxes are deniable: a recipient of a box can authenticate the sender. But they cannot produce signed evidence binding the sender to anything. Finally, boxes do not produce any evidence of who created them or who the receiver is, and resist tampering with a strong MAC.

UPK-2 - Russian Shotgun slug that destroys nearly everything

Xirance - Taser X12 Less Lethal Shotgun

The new Extended Range Electronic Projectile (XREP) is launched from a standard 12-gauge shotgun platform and is the first wireless TASER device

Editor for Protocol Buffer Binary files

Open File ScreenStandard Tree Edit screenMessage Edit ScreenTable EditSearch for Proto file that matches a binary messageProtocol Buffer Definition in the Editor

Description

This project provides an editor for Protocol Buffers Binary format (using a Proto schema).

This project is built on top of the RecordEditor

HIDDEN MESSAGES - MessageQueue.Formatter Property

The Formatter property contains an instance of a formatter object, which transforms messages when your application reads or writes to the queue.
When the application sends message to the queue, the formatter serializes the object into a stream and inserts it into the message body. When reading from a queue, the formatter deserializes the message data into the Body property of a Message.
The XmlMessageFormatter is loosely coupled, so it is not necessary to have the same object type on the sender and receiver when using this format. The ActiveXMessageFormatter and BinaryMessageFormatter serialize the data into binary representation. The ActiveXMessageFormatter is used when sending or receiving COM components.
BinaryMessageFormatter and ActiveXMessageFormatter provide faster throughput than the XmlMessageFormatter. The ActiveXMessageFormatterallows interoperability with Visual Basic 6.0 Message Queuing applications.
When your application sends messages to the queue, the MessageQueue.Formatter applies only to those messages that use the default message properties, DefaultPropertiesToSend. If you send a Message to the queue, Message Queuing uses the formatter defined in the Message.Formatterproperty to serialize the body instead.
The MessageQueue class will always use a Message to receive or peek a message from the queue. The message is deserialized using the MessageQueue.Formatter property.

An ICMP packet carrying a hidden message

Therefore, we may establish a covert channel if the initial value of the Pointer field is greater than the value of the Length field, or just greater than the length of the hidden message. Specifically, if we set the initial value of the Pointer field greater than the value of the Length field, then no router can write its IP address. In this case, we can use all the remaining 36 bytes of the IP header option to insert a hidden message. This is shown in Figure 6.a. However, if we set the initial value of the Pointer field to a value greater than the length of the hidden message, then a number of routers can still write their IP addresses in the remaining bytes of the IP header option. This is shown in Figure 6.b. Frameip packet generator [26] is used to generate an ICMP Ping packet [27] including the record route option. The value of the Pointer field in the packet is set to be greater than the value of the Length field. The IP addresses of the source and destination hosts are 172.16.16.3 and 172.16.16.20, respectively. The hidden message written in the Options field is: “ This is a covert channel ” and its length is 24 bytes. Consequently, the value of the Length field is 39 bytes. The value of the Pointer field is set to 28, in order to force any router to write its IP address in the 4-byte-field that just follows the hidden message. The contents of the Options field in the sent and received packets are decoded using the Ethereal Sniffer program. Figure 7 shows that the first router (which is the destination host in our case) has inserted its IP address just after the hidden message. Using this technique, a covert channel is established and a secure communication using hidden messages can be done. This technique has the following advantages:

https://www.researchgate.net/figure/268401309_fig3_Figure-7-An-ICMP-packet-carrying-a-hidden-message

Secret message in a ping

Cielo e terra (duet with Dante Thomas)