Contest Idea: Obfuscated Circuit Design Contest (Inspired by IOCCC) - Page 1
Forum section: electronics / general

author: GiskardReventlov
author_rank: Frequent Contributor
timestamp: February 18, 2014, 06:36:40 pm
content: Inspired by the world famous International Obfuscated C Code Contest (IOCCC)*I think it would be fun and interesting to see an International Obfuscated Circuit Design Contest (IOCDC). The question to the experts would be where would we apply the constraints? i.e. what would the rules be?Just some naive thoughts from a beginner:1. Has to fit on a 200 point breadboard/protoboard2. Must contain no more than 10 components3. Limited to 30 jumpers4. There is no constraint 4 (place clever infinite electrical loop schematic here)Maybe my suggestions are idiotic but you get the idea. The contest has to be bounded otherwise it would be hard to judge and too easy to obfuscate.What's in it for the contestant winners? Your name in lights of course! (Have a look at some of those winners of IOCCC, recognize any? I do.)What's in it for observers? You can learn a lot from seeing code like that and I think the same applies to obfuscated circuits.*Here are links to the International Obfuscated C Code Contest:http://www.ioccc.org/2013/rules.txthttp://www.ioccc.org/2013/guidelines.txtEdit: Added another C to the topic title

author: kolonelkadat
author_rank: Regular Contributor
timestamp: February 19, 2014, 01:37:11 am
content: my gut reaction wasthere is no way to obfuscate a circuit with only 10 components.My next thought wasI dont think you could obfuscate a circuit with _any_ amount of components.then I remembered this guy. this guy is clever. lol.

author: T3sl4co1l
author_rank: Super Contributor
timestamp: February 19, 2014, 02:11:07 am
content: I think a greater parts count would be better, but I don't think it's such a difficult task. Lots of things escape common understanding; a few even escape detailed analysis and simulation.You can even have many of the same "abuse" categories as the IOCCC (it's three C's, right?). Logic chips selected for marginal thresholds; strange behavior at odd temps (including using the chip itself as an oven to reach that temp, or..). Building everything out of discrete transistors, using multilevel logic thresholds, would be similar to macro expansion abuses.The real trouble I think is going to be availability: there's so damned many people using C right now that there's bound to be a lot of smart hackers working on its, shall we say, dark side. There just aren't so many hardcore analog engineers out there I feel.I'd love to be corrected on that though. I'll try my best to come up with something for sureEdit:In response to the video, and in similar fashion to the IOCCC, all details required to implement the circuit -- the source code, as it were -- must be provided. The schematic at a minimum, but also layout details if necessary (because let's be honest, a lot of *normal* microwave circuits look pretty damn crazy to begin with), components selected for properties, and so on. It can't be a contest if the judges can't construct the circuit for themselves!One interesting difference, programs can be self-modifying, or introspective (I recall one IOCCC entry which produced platform-dependent results, detecting the processor it was compiled and ran on). Whereas, the circuit is naturally static in configuration, and you have to go out of your way to change it (analog switches, muxes, etc.), in which case the purpose is apparent. Likewise, whereas debugging a program requires knowledge of the data structures in memory, all the signals are there for the probing -- the voltage signals, anyway. (One could attempt to obfuscate this by using current-mode signals with as little voltage swing as possible, or extremely high impedance signals which defy observation via conventional probes.)Tim

author: free_electron
author_rank: Super Contributor
timestamp: February 19, 2014, 02:33:52 am
content: there is that dreaded audio amplifier using cmos inverters. or the hexapod using an abused 74245 to walk the darn thing

author: GiskardReventlov
author_rank: Frequent Contributor
timestamp: February 19, 2014, 05:45:51 pm
content: Quote from: kolonelkadat on February 19, 2014, 01:37:11 amI felt obligated to put something in my post since it was I making the pitch. It just seemed flimsy not to include some thoughts. And I included the disclaimer "naive".Can you think of a better number? I'd guess if it was too large it might become cumbersome to judge and might evoke tl;dr (too long;didn't read) in the casual observer.

author: GiskardReventlov
author_rank: Frequent Contributor
timestamp: February 19, 2014, 06:01:30 pm
content: Quote from: T3sl4co1l on February 19, 2014, 02:11:07 amKnowing some of those "things escape common understanding" might help to come up with some constraints?Maybe designing the rules in reverse?QuoteThat's a self-modifying characteristic there, i.e. "using the chip itself as an oven"QuoteI have no idea on that, but some people might feel inspired just to see their name in lights.QuoteYes, and maybe the parts should be required to be easy to find. Or if they're hard to find the entrant would provide those obscure parts.QuoteSee above the "oven" example you gave.QuoteI figured there was wiggle room. I also recall a teardown and I think only two legs of a transistor were used. The IOCCC entrants sometimes looked like they should do one thing but by their devious nature did another. I think that was the inspiration for a lot of the entrants. i.e. make it look like an apple but in fact it's more like an orange.

author: kolonelkadat
author_rank: Regular Contributor
timestamp: February 19, 2014, 10:07:13 pm
content: Quote from: T3sl4co1l on February 19, 2014, 02:11:07 amthat makes more sense than the "betcha cant explain why the output of this _assembled_ circuit is what it is." The breadboard requirement had me thinking it was just a "who can assemble parts the sneakiest" kind of deal.

author: T3sl4co1l
author_rank: Super Contributor
timestamp: February 20, 2014, 12:10:48 am
content: Although breadboard layout can be quite handy, for instance jumpering adjacent rows for a few extra pF. I've been known to do that.Tim

author: GiskardReventlov
author_rank: Frequent Contributor
timestamp: February 27, 2014, 03:32:00 am
content: Regarding the video.... Did he tamper with the switches? Or are the switches unique somehow?

author: tom66
author_rank: Super Contributor
timestamp: February 28, 2014, 07:20:25 pm
content: Quote from: GiskardReventlov on February 27, 2014, 03:32:00 amThey have resonant cut and pass filters, along with the LEDs, if you are interested, you can see his solution video on this, quite fascinating stuff!

author: GiskardReventlov
author_rank: Frequent Contributor
timestamp: February 28, 2014, 08:00:26 pm
content: Quote from: tom66 on February 28, 2014, 07:20:25 pmI will look but it's fun to contemplate and maybe even ponder. Do you mean resonant-cut-and-pass filters? Or resonant-cut filters and pass filters? A filter that cuts at a prescribed resonance? Yes, yes I'll look at his video.There's much to be learned from obfuscation. It's attractive. Us humans love patterns but we love it more when the patterns are hard to see or obfuscated. (Not just us humans, e.g. curiosity killed the cat)

author: GiskardReventlov
author_rank: Frequent Contributor
timestamp: March 01, 2014, 07:26:13 pm
content: Quote from: tom66 on February 28, 2014, 07:20:25 pmThat's diabolical!!How else is he applying his craft? Gee, I wonder.

author: JoannaK
author_rank: Frequent Contributor
timestamp: March 09, 2014, 08:33:17 am
content: I'd say that the system can't contain any microcontrollers.. or, if those are used, they must be on default Erased state. (so no written code or configuration in them).

author: GiskardReventlov
author_rank: Frequent Contributor
timestamp: March 10, 2014, 10:42:08 pm
content: Quote from: JoannaK on March 09, 2014, 08:33:17 amI agree that no microcontrollers is a good idea. Then it could turn into the IOCCC.But what do you mean that if they were used "they must be on default Erased state."? Would there be a reason to use one in its erased-state? I'm curious now.

author: T3sl4co1l
author_rank: Super Contributor
timestamp: March 11, 2014, 12:01:48 am
content: Hmm... first time I ever used a Z80 (note: it's a microprocessor, not microcontroller), I set the data bus to 00h, applied power and clock, and put an LED on A15. It blinked. Overly elaborate 16 bit counter (00h = NOP), at 20.3Hz I believe it was (4MHz / 2^16, and /3 for the instruction cycles).I don't think microprocessors are all that bad an idea, just keeping programming to a minimum: nothing with Flash, EPROM, NVRAM, etc. If it's programmed, it has to be done manually (e.g., jumpers on the breadboard, hand made diode matrix, etc.), and not entered on powerup (no bootstrapping). This will make microcontrollers rather useless (they simply don't do anything at all when blank), but could still allow unintuitive uses for uPs (e.g., analog waveform > ADC > instruction fetch; uP as counter, gating, jack-in-the-box digital function block, etc.).Tim

author: katzohki
author_rank: Frequent Contributor
timestamp: July 07, 2014, 07:42:23 pm
content: My hats off to anyone who can build this:http://xkcd.com/730/